decision point API

ControllerRunnable interface: implemented by controller
ControllerContext: Controller Context for controller execution
ControllerPreparable interface:used to setup execution context
ControllerExecutionBB:controller execution for building block
ControllerExecutionDE:controller execution for camunda
Skeleton implementation for APPC controller
Skeleton implementation for SDNC controller
Use ControllerExecutionDE for existing PNF configuration.
Add integration tests for controllerExecutionBB/DE
Add GenericControllerExecution activity for BuildingBlockExecution based
Add GenericControllerExecutionDE activity for DelegateExecution based.
CDS controller to be implemented by SO-CDS generic buildingBlock
Actor seletion based on ingested metadata

Issue-ID: SO-2070
Change-Id: I4020c2ce21468939690e2cef78bbadbfff4bd3e4
Signed-off-by: eeginux<henry.xie@est.tech>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn
index 9a1a7ed..6d5b2a2 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ConfigurePnfResource.bpmn
@@ -16,45 +16,19 @@
     <bpmn:sequenceFlow id="SequenceFlow_157of54" name="true" sourceRef="ExclusiveGateway_079gavg" targetRef="EndEvent_0xky46v">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{SkipPostInstantiationConfiguration}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:serviceTask id="Task_0k2q5vd" name="Prepare Config Assign" camunda:delegateExpression="${PrepareConfigAssignDelegate}">
-      <bpmn:incoming>SequenceFlow_0j3pm2g</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_17llfxw</bpmn:outgoing>
-    </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="SequenceFlow_17llfxw" sourceRef="Task_0k2q5vd" targetRef="Task_1u5pka9" />
-    <bpmn:callActivity id="Task_1u5pka9" name="Config Assign&#10;CDS call&#10;" calledElement="AbstractCDSProcessingBB">
-      <bpmn:extensionElements>
-        <camunda:in source="executionObject" target="executionObject" />
-        <camunda:in businessKey="#{execution.processBusinessKey}" />
-        <camunda:out source="CDSStatus" target="CDSStatus" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_17llfxw</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0p0aqtx</bpmn:outgoing>
-    </bpmn:callActivity>
     <bpmn:exclusiveGateway id="ExclusiveGateway_0vtv1wi" default="SequenceFlow_1w4p9f7">
-      <bpmn:incoming>SequenceFlow_0p0aqtx</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_07bmtu7</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1owbpsy</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_1w4p9f7</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_0p0aqtx" sourceRef="Task_1u5pka9" targetRef="ExclusiveGateway_0vtv1wi" />
-    <bpmn:sequenceFlow id="SequenceFlow_1owbpsy" name="Success" sourceRef="ExclusiveGateway_0vtv1wi" targetRef="Task_1uvsz0c">
+    <bpmn:sequenceFlow id="SequenceFlow_1owbpsy" name="Success" sourceRef="ExclusiveGateway_0vtv1wi" targetRef="Task_14cwhgk">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0jfgn7n" sourceRef="Task_1uvsz0c" targetRef="Task_1a5w1si" />
-    <bpmn:callActivity id="Task_1a5w1si" name="Config Deploy&#10;CDS call&#10;" calledElement="AbstractCDSProcessingBB">
-      <bpmn:extensionElements>
-        <camunda:in businessKey="#{execution.processBusinessKey}" />
-        <camunda:in source="executionObject" target="executionObject" />
-        <camunda:out source="CDSStatus" target="CDSStatus" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0jfgn7n</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_08voj55</bpmn:outgoing>
-    </bpmn:callActivity>
     <bpmn:exclusiveGateway id="ExclusiveGateway_01jwwmc" default="SequenceFlow_0d24h26">
-      <bpmn:incoming>SequenceFlow_08voj55</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_02919fh</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1n080up</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_0d24h26</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_08voj55" sourceRef="Task_1a5w1si" targetRef="ExclusiveGateway_01jwwmc" />
     <bpmn:sequenceFlow id="SequenceFlow_1n080up" name="Success" sourceRef="ExclusiveGateway_01jwwmc" targetRef="EndEvent_0xky46v">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("CDSStatus").equals("Success")}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
@@ -74,12 +48,30 @@
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_069mxkg" sourceRef="ConfigurePnfResource_StartEvent" targetRef="Task_1nhh7ob" />
     <bpmn:sequenceFlow id="SequenceFlow_1u89rk8" sourceRef="Task_1nhh7ob" targetRef="ExclusiveGateway_079gavg" />
-    <bpmn:sequenceFlow id="SequenceFlow_0j3pm2g" name="false" sourceRef="ExclusiveGateway_079gavg" targetRef="Task_0k2q5vd">
+    <bpmn:sequenceFlow id="SequenceFlow_0j3pm2g" name="false" sourceRef="ExclusiveGateway_079gavg" targetRef="Task_0zivzd5">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!SkipPostInstantiationConfiguration}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:serviceTask id="Task_1uvsz0c" name="Prepare Config Deploy" camunda:delegateExpression="${PrepareConfigDeployDelegate}">
+    <bpmn:sequenceFlow id="SequenceFlow_07bmtu7" sourceRef="Task_0zivzd5" targetRef="ExclusiveGateway_0vtv1wi" />
+    <bpmn:serviceTask id="Task_0zivzd5" name="ControllerExecutionDE" camunda:delegateExpression="${ControllerExecutionDE}">
+      <bpmn:extensionElements>
+        <camunda:inputOutput>
+          <camunda:inputParameter name="action">config-assign</camunda:inputParameter>
+          <camunda:inputParameter name="scope">pnf</camunda:inputParameter>
+        </camunda:inputOutput>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0j3pm2g</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07bmtu7</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_02919fh" sourceRef="Task_14cwhgk" targetRef="ExclusiveGateway_01jwwmc" />
+    <bpmn:serviceTask id="Task_14cwhgk" name="ControllerExecutionDE" camunda:delegateExpression="${ControllerExecutionDE}">
+      <bpmn:extensionElements>
+        <camunda:inputOutput>
+          <camunda:inputParameter name="action">config-deploy</camunda:inputParameter>
+          <camunda:inputParameter name="scope">pnf</camunda:inputParameter>
+        </camunda:inputOutput>
+      </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1owbpsy</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0jfgn7n</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_02919fh</bpmn:outgoing>
     </bpmn:serviceTask>
   </bpmn:process>
   <bpmn:error id="Error_11v8tez" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
@@ -105,44 +97,19 @@
           <dc:Bounds x="918" y="158" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0h627qv_di" bpmnElement="Task_0k2q5vd">
-        <dc:Bounds x="486" y="286" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_17llfxw_di" bpmnElement="SequenceFlow_17llfxw">
-        <di:waypoint x="586" y="326" />
-        <di:waypoint x="621" y="326" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_0y8mxy4_di" bpmnElement="Task_1u5pka9">
-        <dc:Bounds x="621" y="286" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0vtv1wi_di" bpmnElement="ExclusiveGateway_0vtv1wi" isMarkerVisible="true">
         <dc:Bounds x="786" y="301" width="50" height="50" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0p0aqtx_di" bpmnElement="SequenceFlow_0p0aqtx">
-        <di:waypoint x="721" y="326" />
-        <di:waypoint x="786" y="326" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1owbpsy_di" bpmnElement="SequenceFlow_1owbpsy">
         <di:waypoint x="836" y="326" />
-        <di:waypoint x="901" y="326" />
+        <di:waypoint x="987" y="326" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="847" y="308" width="43" height="14" />
+          <dc:Bounds x="890" y="308" width="43" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0jfgn7n_di" bpmnElement="SequenceFlow_0jfgn7n">
-        <di:waypoint x="1001" y="326" />
-        <di:waypoint x="1066" y="326" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_1viph1b_di" bpmnElement="Task_1a5w1si">
-        <dc:Bounds x="1066" y="286" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_01jwwmc_di" bpmnElement="ExclusiveGateway_01jwwmc" isMarkerVisible="true">
         <dc:Bounds x="1231" y="301" width="50" height="50" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_08voj55_di" bpmnElement="SequenceFlow_08voj55">
-        <di:waypoint x="1166" y="326" />
-        <di:waypoint x="1231" y="326" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1n080up_di" bpmnElement="SequenceFlow_1n080up">
         <di:waypoint x="1256" y="301" />
         <di:waypoint x="1256" y="176" />
@@ -185,13 +152,24 @@
       <bpmndi:BPMNEdge id="SequenceFlow_0j3pm2g_di" bpmnElement="SequenceFlow_0j3pm2g">
         <di:waypoint x="426" y="201" />
         <di:waypoint x="426" y="326" />
-        <di:waypoint x="486" y="326" />
+        <di:waypoint x="551" y="326" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="429" y="261" width="24" height="14" />
+          <dc:Bounds x="471" y="308" width="24" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_0vmu4wk_di" bpmnElement="Task_1uvsz0c">
-        <dc:Bounds x="901" y="286" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_07bmtu7_di" bpmnElement="SequenceFlow_07bmtu7">
+        <di:waypoint x="651" y="326" />
+        <di:waypoint x="786" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1rqxeyq_di" bpmnElement="Task_0zivzd5">
+        <dc:Bounds x="551" y="286" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02919fh_di" bpmnElement="SequenceFlow_02919fh">
+        <di:waypoint x="1087" y="326" />
+        <di:waypoint x="1231" y="326" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0lyl5n4_di" bpmnElement="Task_14cwhgk">
+        <dc:Bounds x="987" y="286" width="100" height="80" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>