summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexis de Talhouët <adetalhouet89@gmail.com>2018-10-26 09:54:46 -0400
committerAlexis de Talhouët <adetalhouet89@gmail.com>2018-11-07 14:11:44 +0000
commit5ca364a5e975877244ee51796602043a4b078a23 (patch)
tree51f66aa51d92fb864bd232cbd4d9930c5560e81b
parent16aa0b6cc42c7287fc080c81451e301c0acc14cf (diff)
Make homingBB optinal and fix homing process
Properly defined whether or not to call homing at AssignVnfBB where by default homing doesn't get called, but if a homing solution is provided, then we resolve the solutions. The goal is to change the BPMN definition to use serviceTask rather than a scriptTask, allowing to use the Srping component to inject logic. Also we create a new HomingV2 component that is agnostic of the homing implementation, which goal is to route the homing request to the proper bbackend implementation; e.g. oof vs homing. Finally, we remove the un-needed variables set in the execution context. Change-Id: Ic9fb2a599c6375617c92a6d3462b62921ee47a6f Issue-ID: SO-1168 Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
-rw-r--r--bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy5
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn12
-rw-r--r--bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HomingBB.bpmn124
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java59
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java32
5 files changed, 138 insertions, 94 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy
index c8736b8f0e..806a144a48 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofHoming.groovy
@@ -18,13 +18,11 @@
* ============LICENSE_END=========================================================
*/
package org.onap.so.bpmn.common.scripts
+
import org.onap.so.bpmn.core.UrnPropertiesReader
import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.bpmn.common.scripts.AaiUtil
-import org.onap.so.bpmn.common.scripts.ExceptionUtil
-
import org.onap.so.bpmn.core.domain.InventoryType
import org.onap.so.bpmn.core.domain.Resource
import org.onap.so.bpmn.core.domain.ResourceType
@@ -37,7 +35,6 @@ import org.onap.so.db.catalog.beans.CloudSite
import org.onap.so.rest.APIResponse
import org.onap.so.rest.RESTClient
import org.onap.so.rest.RESTConfig
-import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.json.JSONArray
import org.json.JSONObject
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn
index 3355e627c3..9118b0ab5e 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignVnfBB.bpmn
@@ -28,9 +28,11 @@
</bpmn:serviceTask>
<bpmn:sequenceFlow id="SequenceFlow_1jwsja5" sourceRef="Task_CreateVnf" targetRef="Task_createPlatform" />
<bpmn:sequenceFlow id="SequenceFlow_1nle8kc" sourceRef="Task_createInstanceGroups" targetRef="ExclusiveGateway_02tchpp" />
- <bpmn:sequenceFlow id="SequenceFlow_11jum90" name="no" sourceRef="ExclusiveGateway_02tchpp" targetRef="ExclusiveGateway_1blf52g" />
+ <bpmn:sequenceFlow id="SequenceFlow_11jum90" name="no" sourceRef="ExclusiveGateway_02tchpp" targetRef="ExclusiveGateway_1blf52g">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("callHoming") == false}]]></bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
<bpmn:sequenceFlow id="SequenceFlow_1uiok7v" name="yes" sourceRef="ExclusiveGateway_02tchpp" targetRef="Task_callHoming">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("callHoming")}]]></bpmn:conditionExpression>
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("callHoming") == true}]]></bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="SequenceFlow_0v8d14a" sourceRef="Task_callHoming" targetRef="ExclusiveGateway_1blf52g" />
<bpmn:callActivity id="Task_callHoming" name="Call Homing" calledElement="HomingBB">
@@ -65,7 +67,7 @@
<bpmn:sequenceFlow id="SequenceFlow_1i52a7x" sourceRef="StartEvent_1c3cyuv" targetRef="EndEvent_1bywujf" />
</bpmn:subProcess>
<bpmn:sequenceFlow id="SequenceFlow_14mpqit" sourceRef="ExclusiveGateway_1blf52g" targetRef="Task_SDNCAdapterVnfTopologyAssign" />
- <bpmn:inclusiveGateway id="ExclusiveGateway_02tchpp" name="Call Homing?" default="SequenceFlow_11jum90">
+ <bpmn:inclusiveGateway id="ExclusiveGateway_02tchpp" name="Call Homing?">
<bpmn:incoming>SequenceFlow_1nle8kc</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_11jum90</bpmn:outgoing>
<bpmn:outgoing>SequenceFlow_1uiok7v</bpmn:outgoing>
@@ -218,7 +220,7 @@
<bpmndi:BPMNShape id="InclusiveGateway_0x0c3kk_di" bpmnElement="ExclusiveGateway_02tchpp">
<dc:Bounds x="679" y="109" width="50" height="50" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="732" y="128" width="64" height="12" />
+ <dc:Bounds x="731" y="128" width="67" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="InclusiveGateway_0ijggth_di" bpmnElement="ExclusiveGateway_1blf52g">
@@ -229,4 +231,4 @@
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
-</bpmn:definitions>
+</bpmn:definitions> \ No newline at end of file
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HomingBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HomingBB.bpmn
index 344b7d8761..f775c96db0 100644
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HomingBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HomingBB.bpmn
@@ -1,22 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_vwRmIBsREeeIQtzUKIjH4g" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_vwRmIBsREeeIQtzUKIjH4g" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
<bpmn2:process id="HomingBB" name="Homing" isExecutable="true">
<bpmn2:startEvent id="StartEvent_1">
<bpmn2:outgoing>SequenceFlow_1x9usa6</bpmn2:outgoing>
</bpmn2:startEvent>
- <bpmn2:scriptTask id="callSniro" name="&#10;Call&#10;Sniro/Oof&#10;" scriptFormat="groovy">
- <bpmn2:incoming>SequenceFlow_1x9usa6</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_0lc15i7</bpmn2:outgoing>
- <bpmn2:script>import org.onap.so.bpmn.common.scripts.*
-if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")).getVariable("homingService") == "oof"){
- OofHoming oofHoming = new OofHoming()
- oofHoming.callOof(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))
-}else{
- SniroHomingV2 sniroHoming = new SniroHomingV2()
- SniroHoming.callSniro(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))
-}</bpmn2:script>
- </bpmn2:scriptTask>
- <bpmn2:sequenceFlow id="SequenceFlow_1x9usa6" sourceRef="StartEvent_1" targetRef="callSniro" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1x9usa6" sourceRef="StartEvent_1" targetRef="task" />
<bpmn2:subProcess id="bpmnErrorSubprocess" name="Error Handling Subprocess" triggeredByEvent="true">
<bpmn2:endEvent id="EndEvent_07tjq3v">
<bpmn2:incoming>SequenceFlow_1rf4vs8</bpmn2:incoming>
@@ -29,9 +17,9 @@ if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecu
<bpmn2:scriptTask id="processMsoWorkflowException" name="Process Error" scriptFormat="groovy">
<bpmn2:incoming>SequenceFlow_00nlh7l</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_1rf4vs8</bpmn2:outgoing>
- <bpmn2:script>import org.onap.so.bpmn.common.scripts.*
+ <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
ExceptionUtil ex = new ExceptionUtil()
-ex.processSubflowsBPMNException(execution)</bpmn2:script>
+ex.processSubflowsBPMNException(execution)]]></bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:sequenceFlow id="SequenceFlow_1rf4vs8" sourceRef="processMsoWorkflowException" targetRef="EndEvent_07tjq3v" />
<bpmn2:sequenceFlow id="SequenceFlow_00nlh7l" sourceRef="StartEvent_1qiitb2" targetRef="processMsoWorkflowException" />
@@ -40,9 +28,9 @@ ex.processSubflowsBPMNException(execution)</bpmn2:script>
<bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy">
<bpmn2:incoming>SequenceFlow_0kamg53</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_1o7154s</bpmn2:outgoing>
- <bpmn2:script>import org.onap.so.bpmn.common.scripts.*
+ <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
ExceptionUtil ex = new ExceptionUtil()
-ex.processJavaException(execution)</bpmn2:script>
+ex.processJavaException(execution)]]></bpmn2:script>
</bpmn2:scriptTask>
<bpmn2:startEvent id="StartEvent_1fbpeuw">
<bpmn2:outgoing>SequenceFlow_0kamg53</bpmn2:outgoing>
@@ -55,18 +43,6 @@ ex.processJavaException(execution)</bpmn2:script>
<bpmn2:sequenceFlow id="SequenceFlow_0kamg53" name="" sourceRef="StartEvent_1fbpeuw" targetRef="processJavaException" />
<bpmn2:sequenceFlow id="SequenceFlow_1o7154s" name="" sourceRef="processJavaException" targetRef="EndEvent_0jbvnr0" />
</bpmn2:subProcess>
- <bpmn2:scriptTask id="processSniroHomingSolution" name="&#10;Process Solution&#10;" scriptFormat="groovy">
- <bpmn2:incoming>SequenceFlow_1fipbmk</bpmn2:incoming>
- <bpmn2:outgoing>SequenceFlow_01apjvo</bpmn2:outgoing>
- <bpmn2:script>import org.onap.so.bpmn.common.scripts.*
-if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")).getVariable("homingService") == "oof"){
- OofHoming oofHoming = new OofHoming()
- oofHoming.processHomingSolution(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))
-}else{
- SniroHomingV2 sniroHoming = new SniroHomingV2 ()
- sniroHoming.processSolution(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")), asyncResponse)
-}</bpmn2:script>
- </bpmn2:scriptTask>
<bpmn2:callActivity id="receiveAsyncCallback" name="Receive Async Callback" camunda:modelerTemplate="receiveWorkflowMessage" calledElement="ReceiveWorkflowMessage">
<bpmn2:extensionElements>
<camunda:in source="true" target="isDebugLogEnabled" />
@@ -76,32 +52,37 @@ if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecu
<camunda:in source="asyncTimeout" target="RCVWFMSG_timeout" />
<camunda:out source="WorkflowResponse" target="asyncCallbackResponse" />
</bpmn2:extensionElements>
- <bpmn2:incoming>SequenceFlow_0lc15i7</bpmn2:incoming>
+ <bpmn2:incoming>SequenceFlow_1a2sya6</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_1fipbmk</bpmn2:outgoing>
</bpmn2:callActivity>
- <bpmn2:sequenceFlow id="SequenceFlow_1fipbmk" sourceRef="receiveAsyncCallback" targetRef="processSniroHomingSolution" />
- <bpmn2:sequenceFlow id="SequenceFlow_01apjvo" sourceRef="processSniroHomingSolution" targetRef="EndEvent_0rrbz2a" />
+ <bpmn2:sequenceFlow id="SequenceFlow_1fipbmk" sourceRef="receiveAsyncCallback" targetRef="ServiceTask_1smgtjf" />
<bpmn2:endEvent id="EndEvent_0rrbz2a">
- <bpmn2:incoming>SequenceFlow_01apjvo</bpmn2:incoming>
+ <bpmn2:incoming>SequenceFlow_1yfelf5</bpmn2:incoming>
<bpmn2:terminateEventDefinition />
</bpmn2:endEvent>
- <bpmn2:sequenceFlow id="SequenceFlow_0lc15i7" sourceRef="callSniro" targetRef="receiveAsyncCallback" />
+ <bpmn2:serviceTask id="task" name="Call Homing" camunda:expression="${HomingV2.callHoming(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+ <bpmn2:incoming>SequenceFlow_1x9usa6</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_1a2sya6</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_1a2sya6" sourceRef="task" targetRef="receiveAsyncCallback" />
+ <bpmn2:serviceTask id="ServiceTask_1smgtjf" name="Process Solution" camunda:expression="${HomingV2.processSolution(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)), asyncCallbackResponse)}">
+ <bpmn2:incoming>SequenceFlow_1fipbmk</bpmn2:incoming>
+ <bpmn2:outgoing>SequenceFlow_1yfelf5</bpmn2:outgoing>
+ </bpmn2:serviceTask>
+ <bpmn2:sequenceFlow id="SequenceFlow_1yfelf5" sourceRef="ServiceTask_1smgtjf" targetRef="EndEvent_0rrbz2a" />
</bpmn2:process>
<bpmn2:error id="Error_10hit0u" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
<bpmn2:error id="Error_1lwpypa" name="Java Lang Exception" errorCode="java.lang.Exception" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Homing">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="HomingBB">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="147" y="275" width="36" height="36" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0qmfpdr_di" bpmnElement="callSniro">
- <dc:Bounds x="313" y="253" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1x9usa6_di" bpmnElement="SequenceFlow_1x9usa6">
- <di:waypoint x="183" y="293" />
- <di:waypoint x="313" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="183" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="285" y="293" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="203" y="278" width="90" height="0" />
+ <dc:Bounds x="189" y="278" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="SubProcess_16p12qo_di" bpmnElement="bpmnErrorSubprocess" isExpanded="true">
@@ -141,53 +122,43 @@ if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecu
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1rf4vs8_di" bpmnElement="SequenceFlow_1rf4vs8">
- <di:waypoint x="506" y="541" />
- <di:waypoint x="579" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="506" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="579" y="541" />
<bpmndi:BPMNLabel>
<dc:Bounds x="498" y="526" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_00nlh7l_di" bpmnElement="SequenceFlow_00nlh7l">
- <di:waypoint x="335" y="541" />
- <di:waypoint x="363" y="541" />
- <di:waypoint x="363" y="541" />
- <di:waypoint x="406" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="335" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="363" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="363" y="541" />
+ <di:waypoint xsi:type="dc:Point" x="406" y="541" />
<bpmndi:BPMNLabel>
<dc:Bounds x="333" y="541" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0kamg53_di" bpmnElement="SequenceFlow_0kamg53">
- <di:waypoint x="354" y="720" />
- <di:waypoint x="410" y="720" />
+ <di:waypoint xsi:type="dc:Point" x="354" y="720" />
+ <di:waypoint xsi:type="dc:Point" x="410" y="720" />
<bpmndi:BPMNLabel>
<dc:Bounds x="337" y="705" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1o7154s_di" bpmnElement="SequenceFlow_1o7154s">
- <di:waypoint x="510" y="720" />
- <di:waypoint x="567" y="720" />
+ <di:waypoint xsi:type="dc:Point" x="510" y="720" />
+ <di:waypoint xsi:type="dc:Point" x="567" y="720" />
<bpmndi:BPMNLabel>
<dc:Bounds x="494" y="705" width="90" height="0" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_1aapkvq_di" bpmnElement="processSniroHomingSolution">
- <dc:Bounds x="597" y="253" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="CallActivity_031b5m3_di" bpmnElement="receiveAsyncCallback">
<dc:Bounds x="455" y="253" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1fipbmk_di" bpmnElement="SequenceFlow_1fipbmk">
- <di:waypoint x="555" y="293" />
- <di:waypoint x="597" y="293" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="531" y="272" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_01apjvo_di" bpmnElement="SequenceFlow_01apjvo">
- <di:waypoint x="697" y="293" />
- <di:waypoint x="860" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="555" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="625" y="293" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="778.5" y="272" width="0" height="12" />
+ <dc:Bounds x="545" y="272" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_07i1a5x_di" bpmnElement="EndEvent_0rrbz2a">
@@ -196,13 +167,26 @@ if(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecu
<dc:Bounds x="877.17" y="315" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0lc15i7_di" bpmnElement="SequenceFlow_0lc15i7">
- <di:waypoint x="413" y="293" />
- <di:waypoint x="455" y="293" />
+ <bpmndi:BPMNShape id="ServiceTask_06dtzr3_di" bpmnElement="task">
+ <dc:Bounds x="285" y="253" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1a2sya6_di" bpmnElement="SequenceFlow_1a2sya6">
+ <di:waypoint xsi:type="dc:Point" x="385" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="455" y="293" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="420" y="271" width="0" height="13" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1smgtjp_di" bpmnElement="ServiceTask_1smgtjf">
+ <dc:Bounds x="625" y="253" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1yfelf5_di" bpmnElement="SequenceFlow_1yfelf5">
+ <di:waypoint xsi:type="dc:Point" x="725" y="293" />
+ <di:waypoint xsi:type="dc:Point" x="860" y="293" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="434" y="272" width="0" height="12" />
+ <dc:Bounds x="792.5" y="271.5" width="0" height="13" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
-</bpmn2:definitions>
+</bpmn2:definitions> \ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java
new file mode 100644
index 0000000000..612051f903
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/buildingblock/HomingV2.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2018 Bell Canada.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.so.bpmn.buildingblock;
+
+import java.util.Map;
+import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class HomingV2 {
+
+ @Autowired
+ private OofHomingV2 oofHomingV2;
+ @Autowired
+ private SniroHomingV2 sniroHomingV2;
+
+ private static final String HOMINGSOLUTION = "Homing_Solution";
+
+ public void callHoming(BuildingBlockExecution execution) {
+ if (isOof(execution)) {
+ oofHomingV2.callOof(execution);
+ } else {
+ sniroHomingV2.callSniro(execution);
+ }
+ }
+
+ public void processSolution(BuildingBlockExecution execution, String asyncResponse) {
+ if (isOof(execution)) {
+ oofHomingV2.processSolution(execution, asyncResponse);
+ } else {
+ sniroHomingV2.processSolution(execution, asyncResponse);
+ }
+ }
+
+ // Default solution is SNIRO. OOF gets called only if specified.
+ private boolean isOof(BuildingBlockExecution execution) {
+ for (Map<String, Object> params : execution.getGeneralBuildingBlock().getRequestContext().getRequestParameters()
+ .getUserParams()) {
+ if (params.containsKey(HOMINGSOLUTION) && params.get(HOMINGSOLUTION).equals("oof")) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
index d8a6fc2e1d..e9dcdade9f 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
@@ -163,19 +163,6 @@ public class WorkflowAction {
execution.setVariable("resourceId", resourceId);
execution.setVariable("resourceType", resourceType);
- if (sIRequest.getRequestDetails().getRequestParameters().getUserParams() != null) {
- List<Map<String, Object>> userParams = sIRequest.getRequestDetails().getRequestParameters()
- .getUserParams();
- for (Map<String, Object> params : userParams) {
- if (params.containsKey(HOMINGSOLUTION)) {
- execution.setVariable("homing", true);
- execution.setVariable("callHoming", true);
- execution.setVariable("homingSolution", params.get(HOMINGSOLUTION));
- execution.setVariable("homingService", params.get(HOMINGSOLUTION));
- }
- }
- }
-
if (aLaCarte) {
if (orchFlows == null || orchFlows.isEmpty()) {
orchFlows = queryNorthBoundRequestCatalogDb(execution, requestAction, resourceType, aLaCarte);
@@ -270,9 +257,10 @@ public class WorkflowAction {
logger.info("Sorting for Vlan Tagging");
flowsToExecute = sortExecutionPathByObjectForVlanTagging(flowsToExecute, requestAction);
}
+ // By default, enable homing at VNF level for CREATEINSTANCE and ASSIGNINSTANCE
if (resourceType == WorkflowType.SERVICE
- && (requestAction.equals(CREATEINSTANCE) || requestAction.equals(ASSIGNINSTANCE))
- && !resourceCounter.stream().filter(x -> WorkflowType.VNF.equals(x.getResourceType())).collect(Collectors.toList()).isEmpty()) {
+ && (requestAction.equals(CREATEINSTANCE) || requestAction.equals(ASSIGNINSTANCE))
+ && !resourceCounter.stream().filter(x -> WorkflowType.VNF.equals(x.getResourceType())).collect(Collectors.toList()).isEmpty()) {
execution.setVariable("homing", true);
execution.setVariable("calledHoming", false);
}
@@ -283,6 +271,20 @@ public class WorkflowAction {
}
}
+ // If the user set "Homing_Solution" to "none", disable homing, else if "Homing_Solution" is specified, enable it.
+ if (sIRequest.getRequestDetails().getRequestParameters().getUserParams() != null) {
+ List<Map<String, Object>> userParams = sIRequest.getRequestDetails().getRequestParameters().getUserParams();
+ for (Map<String, Object> params : userParams) {
+ if (params.containsKey(HOMINGSOLUTION)) {
+ if (params.get(HOMINGSOLUTION).equals("none")) {
+ execution.setVariable("homing", false);
+ } else {
+ execution.setVariable("homing", true);
+ }
+ }
+ }
+ }
+
if (flowsToExecute.isEmpty()) {
throw new IllegalStateException("Macro did not come up with a valid execution path.");
}