During the implementation of https://jira.onap.org/browse/POLICY-2883 noticed that few of the limitations such as need for unique concepts per ToscaPolicy cannot be solved because of the usage of static fields in ModelService class.
Also, in case if some messed up ToscaPolicy is deployed that can result in StackOverflow exception, then the whole engine will go down as the JVM is affected.
To solve such issues and completely avoid any conflict between execution of multiple policies, and improve the overall robustness of the APEX engine, spinning up new process per ToscaPolicy seems to be a viable option.
But by doing this, the part where APEX engine send statistics would be affected, since the way processes are spun up doesn't easily allow accessing the instance of the engine.
This Jira covers the investigation and implementation of this.