diff options
author | Kuleshov, Elena <evn@att.com> | 2020-01-24 16:33:39 -0500 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@att.com> | 2020-01-24 16:33:40 -0500 |
commit | 2eb23f4ac862f700f0abf6f2dc5b9fa662ec9c60 (patch) | |
tree | 4f4e5ad0aa89961c4b51eaf8fd32bc9f340b8c93 /bpmn/so-bpmn-building-blocks/src | |
parent | 48cb43adc20ac10fa6f22c0e03fe2b6775d45b87 (diff) |
add manual handling to rainy day handling for bbs
Initial Manual Handling addition to Rainy Day BB handling.
Reenable task API, add task variable setup.
TaskTimeout will come from the configuration settings.
Update the base path for the APIH manual tasks junit.
Additional JUNIT tests for manual handling
Add Manual as a primary policy for Change Management BBs.
Error handling changes and robot tests for manual handling.
Correct failure data retrieval when serviceSubscription is unavailable.
Correct failure data retrieval when serviceSubscription is unavailable.
Keep WorkflowException when manual pause gets invoked; improved error
reporting.
Issue-ID: SO-2616
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I98a84c1a489bb7b24b68e567f604aeb074fd7bf9
Diffstat (limited to 'bpmn/so-bpmn-building-blocks/src')
3 files changed, 397 insertions, 50 deletions
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn index e64c44eb94..443a571312 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/ExecuteBuildingBlock.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0"> <bpmn:process id="ExecuteBuildingBlock" name="ExecuteBuildingBlock" isExecutable="true"> <bpmn:startEvent id="Start_ExecuteBuildingBlock" name="start"> <bpmn:outgoing>SequenceFlow_0rq4c5r</bpmn:outgoing> @@ -44,8 +44,12 @@ </bpmn:serviceTask> <bpmn:exclusiveGateway id="ExclusiveGateway_1aonzik" name="Check HandlingCode" default="SequenceFlow_0h8v45y"> <bpmn:incoming>SequenceFlow_0a62t4c</bpmn:incoming> + <bpmn:incoming>SequenceFlow_05le7o3</bpmn:incoming> <bpmn:outgoing>SequenceFlow_0fwsjva</bpmn:outgoing> <bpmn:outgoing>SequenceFlow_0h8v45y</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1xh5ngw</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0xyd2zl</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1g7oq3t</bpmn:outgoing> </bpmn:exclusiveGateway> <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_RetryTimer" name="RetryTimer"> <bpmn:incoming>SequenceFlow_0ndt8ft</bpmn:incoming> @@ -87,6 +91,7 @@ </bpmn:endEvent> <bpmn:serviceTask id="Task_QuerySecondaryPolicy" name="Query Secondary Policy" camunda:expression="${ExecuteBuildingBlockRainyDay.queryRainyDayTable(execution,false)}"> <bpmn:incoming>SequenceFlow_0541bid</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1g7oq3t</bpmn:incoming> <bpmn:outgoing>SequenceFlow_12ps9at</bpmn:outgoing> </bpmn:serviceTask> <bpmn:sequenceFlow id="SequenceFlow_0vdeqxv" sourceRef="Task_UpdateExtErrorSource" targetRef="Task_QueryRainyDayTable" /> @@ -99,6 +104,36 @@ <bpmn:incoming>SequenceFlow_09synl9</bpmn:incoming> <bpmn:outgoing>SequenceFlow_0vdeqxv</bpmn:outgoing> </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_05le7o3" sourceRef="PauseForManualTaskRainyDay" targetRef="ExclusiveGateway_1aonzik" /> + <bpmn:sequenceFlow id="SequenceFlow_1xh5ngw" name="Manual" sourceRef="ExclusiveGateway_1aonzik" targetRef="PauseForManualTaskRainyDay"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Manual"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0xyd2zl" name="Skip" sourceRef="ExclusiveGateway_1aonzik" targetRef="Task_setHandlingCodeSuccessOnSkip"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Skip"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:serviceTask id="Task_setHandlingCodeSuccessOnSkip" name="Set Handling Code to Success" camunda:expression="${ExecuteBuildingBlockRainyDay.setHandlingStatusSuccess(execution)}"> + <bpmn:incoming>SequenceFlow_0xyd2zl</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ynai9j</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:callActivity id="PauseForManualTaskRainyDay" name="Pause for Manual Task Rainy Day" calledElement="PauseForManualTaskRainyDay"> + <bpmn:extensionElements> + <camunda:out source="responseValueTask" target="handlingCode" /> + <camunda:in source="gBuildingBlockExecution" target="gBuildingBlockExecution" /> + <camunda:in source="rainyDayServiceType" target="rainyDayServiceType" /> + <camunda:in source="rainyDayVnfType" target="rainyDayVnfType" /> + <camunda:in source="WorkflowException" target="WorkflowException" /> + <camunda:in source="rainyDayVnfName" target="rainyDayVnfName" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1xh5ngw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_05le7o3</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_1py1er4" name="end"> + <bpmn:incoming>SequenceFlow_1ynai9j</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1ynai9j" sourceRef="Task_setHandlingCodeSuccessOnSkip" targetRef="EndEvent_1py1er4" /> + <bpmn:sequenceFlow id="SequenceFlow_1g7oq3t" name="Timeout" sourceRef="ExclusiveGateway_1aonzik" targetRef="Task_QuerySecondaryPolicy"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[${execution.getVariable("handlingCode")=="Timeout"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> </bpmn:subProcess> <bpmn:sequenceFlow id="SequenceFlow_16lmcxp" sourceRef="Task_setHandlingCodeSuccess" targetRef="End_ExecuteBuildingBlock" /> <bpmn:sequenceFlow id="SequenceFlow_1j0vskt" name="Silent Success" sourceRef="CheckOrchestrationStatusValidationResults" targetRef="Task_setHandlingCodeSuccess"> @@ -169,63 +204,63 @@ </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_0ey4zpt_di" bpmnElement="ExclusiveGateway_0ey4zpt" isMarkerVisible="true"> - <dc:Bounds x="692" y="389" width="50" height="50" /> + <dc:Bounds x="695" y="478" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="686" y="364" width="65" height="12" /> + <dc:Bounds x="691" y="453" width="62" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="IntermediateCatchEvent_0qjyidb_di" bpmnElement="IntermediateCatchEvent_RetryTimer"> - <dc:Bounds x="936" y="396" width="36" height="36" /> + <dc:Bounds x="939" y="485" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="927" y="371" width="56" height="12" /> + <dc:Bounds x="930" y="460" width="55" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ExclusiveGateway_1aonzik_di" bpmnElement="ExclusiveGateway_1aonzik" isMarkerVisible="true"> - <dc:Bounds x="539" y="389" width="50" height="50" /> + <dc:Bounds x="542" y="478" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="528" y="351" width="72" height="24" /> + <dc:Bounds x="533" y="440" width="68" height="24" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1wbevp0_di" bpmnElement="SequenceFlow_1wbevp0"> - <di:waypoint xsi:type="dc:Point" x="742" y="414" /> - <di:waypoint xsi:type="dc:Point" x="807" y="414" /> + <di:waypoint xsi:type="dc:Point" x="745" y="503" /> + <di:waypoint xsi:type="dc:Point" x="810" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="759" y="389" width="19" height="12" /> + <dc:Bounds x="763" y="478" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0fwsjva_di" bpmnElement="SequenceFlow_0fwsjva"> - <di:waypoint xsi:type="dc:Point" x="589" y="414" /> - <di:waypoint xsi:type="dc:Point" x="692" y="414" /> + <di:waypoint xsi:type="dc:Point" x="592" y="503" /> + <di:waypoint xsi:type="dc:Point" x="695" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="627" y="422" width="28" height="12" /> + <dc:Bounds x="630" y="511" width="27" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0h8v45y_di" bpmnElement="SequenceFlow_0h8v45y"> - <di:waypoint xsi:type="dc:Point" x="564" y="439" /> - <di:waypoint xsi:type="dc:Point" x="564" y="495" /> + <di:waypoint xsi:type="dc:Point" x="567" y="528" /> + <di:waypoint xsi:type="dc:Point" x="567" y="584" /> <bpmndi:BPMNLabel> - <dc:Bounds x="570" y="460" width="88" height="12" /> + <dc:Bounds x="575" y="549" width="84" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_1tifgqh_di" bpmnElement="Task_QueryRainyDayTable"> - <dc:Bounds x="396" y="374" width="100" height="80" /> + <dc:Bounds x="399" y="463" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0ndt8ft_di" bpmnElement="SequenceFlow_0ndt8ft"> - <di:waypoint xsi:type="dc:Point" x="907" y="414" /> - <di:waypoint xsi:type="dc:Point" x="936" y="414" /> + <di:waypoint xsi:type="dc:Point" x="910" y="503" /> + <di:waypoint xsi:type="dc:Point" x="939" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="877" y="393" width="90" height="12" /> + <dc:Bounds x="925" y="482" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_07a1ytc_di" bpmnElement="SequenceFlow_07a1ytc"> - <di:waypoint xsi:type="dc:Point" x="972" y="414" /> - <di:waypoint xsi:type="dc:Point" x="1010" y="414" /> + <di:waypoint xsi:type="dc:Point" x="975" y="503" /> + <di:waypoint xsi:type="dc:Point" x="1013" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="946" y="393" width="90" height="12" /> + <dc:Bounds x="994" y="482" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_1obvxht_di" bpmnElement="Task_SetRetryTimer"> - <dc:Bounds x="807" y="374" width="100" height="80" /> + <dc:Bounds x="810" y="463" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0kdjsnx_di" bpmnElement="Continue"> <di:waypoint xsi:type="dc:Point" x="508" y="180" /> @@ -251,25 +286,25 @@ </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0a62t4c_di" bpmnElement="SequenceFlow_0a62t4c"> - <di:waypoint xsi:type="dc:Point" x="496" y="414" /> - <di:waypoint xsi:type="dc:Point" x="539" y="414" /> + <di:waypoint xsi:type="dc:Point" x="499" y="503" /> + <di:waypoint xsi:type="dc:Point" x="542" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="473" y="393" width="90" height="13" /> + <dc:Bounds x="521" y="482" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="SubProcess_0tv8zda_di" bpmnElement="SubProcess_0tv8zda" isExpanded="true"> - <dc:Bounds x="171" y="298" width="922" height="295" /> + <dc:Bounds x="171" y="299" width="1020" height="432" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_0mvmk3i_di" bpmnElement="EndEvent_0mvmk3i"> - <dc:Bounds x="546" y="495" width="36" height="36" /> + <dc:Bounds x="549" y="584" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="519" y="535" width="90" height="12" /> + <dc:Bounds x="567" y="624" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_1aww7yx_di" bpmnElement="EndEvent_1sez2lh"> - <dc:Bounds x="1010" y="396" width="36" height="36" /> + <dc:Bounds x="1013" y="485" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1020" y="436" width="20" height="12" /> + <dc:Bounds x="1024" y="525" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_16lmcxp_di" bpmnElement="SequenceFlow_16lmcxp"> @@ -312,51 +347,102 @@ <dc:Bounds x="906" y="140" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0541bid_di" bpmnElement="SequenceFlow_0541bid"> - <di:waypoint xsi:type="dc:Point" x="717" y="439" /> - <di:waypoint xsi:type="dc:Point" x="717" y="463" /> + <di:waypoint xsi:type="dc:Point" x="720" y="528" /> + <di:waypoint xsi:type="dc:Point" x="720" y="552" /> <bpmndi:BPMNLabel> - <dc:Bounds x="728" y="440" width="13" height="12" /> + <dc:Bounds x="732" y="529" width="12" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_12ps9at_di" bpmnElement="SequenceFlow_12ps9at"> - <di:waypoint xsi:type="dc:Point" x="767" y="503" /> - <di:waypoint xsi:type="dc:Point" x="839" y="503" /> + <di:waypoint xsi:type="dc:Point" x="770" y="592" /> + <di:waypoint xsi:type="dc:Point" x="842" y="592" /> <bpmndi:BPMNLabel> - <dc:Bounds x="758" y="482" width="90" height="12" /> + <dc:Bounds x="806" y="571" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_05vw85n_di" bpmnElement="EndEvent_0ex9298"> - <dc:Bounds x="839" y="485" width="36" height="36" /> + <dc:Bounds x="842" y="574" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="848" y="525" width="20" height="12" /> + <dc:Bounds x="852" y="614" width="18" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ServiceTask_11f2c91_di" bpmnElement="Task_QuerySecondaryPolicy"> - <dc:Bounds x="667" y="463" width="100" height="80" /> + <dc:Bounds x="670" y="552" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_0vdeqxv_di" bpmnElement="SequenceFlow_0vdeqxv"> - <di:waypoint xsi:type="dc:Point" x="361" y="414" /> - <di:waypoint xsi:type="dc:Point" x="396" y="414" /> + <di:waypoint xsi:type="dc:Point" x="364" y="503" /> + <di:waypoint xsi:type="dc:Point" x="399" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="378.5" y="393" width="0" height="12" /> + <dc:Bounds x="382" y="482" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="StartEvent_0tmcs9g_di" bpmnElement="StartEvent_0tmcs9g"> - <dc:Bounds x="196" y="396" width="36" height="36" /> + <dc:Bounds x="199" y="485" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="79" y="432" width="90" height="12" /> + <dc:Bounds x="127" y="521" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_09synl9_di" bpmnElement="SequenceFlow_09synl9"> - <di:waypoint xsi:type="dc:Point" x="232" y="414" /> - <di:waypoint xsi:type="dc:Point" x="261" y="414" /> + <di:waypoint xsi:type="dc:Point" x="235" y="503" /> + <di:waypoint xsi:type="dc:Point" x="264" y="503" /> <bpmndi:BPMNLabel> - <dc:Bounds x="201.5" y="393" width="90" height="12" /> + <dc:Bounds x="250" y="482" width="0" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_10v49qn_di" bpmnElement="Task_UpdateExtErrorSource"> - <dc:Bounds x="261" y="374" width="100" height="80" /> + <dc:Bounds x="264" y="463" width="100" height="80" /> </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05le7o3_di" bpmnElement="SequenceFlow_05le7o3"> + <di:waypoint xsi:type="dc:Point" x="617" y="377" /> + <di:waypoint xsi:type="dc:Point" x="659" y="377" /> + <di:waypoint xsi:type="dc:Point" x="659" y="421" /> + <di:waypoint xsi:type="dc:Point" x="580" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="674" y="399" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xh5ngw_di" bpmnElement="SequenceFlow_1xh5ngw"> + <di:waypoint xsi:type="dc:Point" x="553" y="492" /> + <di:waypoint xsi:type="dc:Point" x="462" y="423" /> + <di:waypoint xsi:type="dc:Point" x="462" y="377" /> + <di:waypoint xsi:type="dc:Point" x="517" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="468" y="400" width="35" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xyd2zl_di" bpmnElement="SequenceFlow_0xyd2zl"> + <di:waypoint xsi:type="dc:Point" x="553" y="514" /> + <di:waypoint xsi:type="dc:Point" x="449" y="589" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="506" y="549.4997153461163" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0ohzi8e_di" bpmnElement="Task_setHandlingCodeSuccessOnSkip"> + <dc:Bounds x="399" y="589" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0szwp51_di" bpmnElement="PauseForManualTaskRainyDay"> + <dc:Bounds x="517" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1py1er4_di" bpmnElement="EndEvent_1py1er4"> + <dc:Bounds x="304" y="611" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313" y="647" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ynai9j_di" bpmnElement="SequenceFlow_1ynai9j"> + <di:waypoint xsi:type="dc:Point" x="399" y="629" /> + <di:waypoint xsi:type="dc:Point" x="340" y="629" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="370" y="604" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1g7oq3t_di" bpmnElement="SequenceFlow_1g7oq3t"> + <di:waypoint xsi:type="dc:Point" x="583" y="512" /> + <di:waypoint xsi:type="dc:Point" x="670" y="562" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="649" y="533" width="39" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions> diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/PauseForManualTaskRainyDay.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/PauseForManualTaskRainyDay.bpmn new file mode 100644 index 0000000000..29657e17af --- /dev/null +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/PauseForManualTaskRainyDay.bpmn @@ -0,0 +1,164 @@ +<?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="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="PauseForManualTaskRainyDay" name="PauseForManualTaskRainyDay" isExecutable="true"> + <bpmn2:startEvent id="PauseForManualTaskRainyDay_Start"> + <bpmn2:outgoing>SequenceFlow_0jav6cu</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:endEvent id="PauseForManualTaskRainyDay_End"> + <bpmn2:incoming>SequenceFlow_14cyk9v</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0jav6cu" sourceRef="PauseForManualTaskRainyDay_Start" targetRef="InitRainyDayManualHandling" /> + <bpmn2:sequenceFlow id="SequenceFlow_192yimz" sourceRef="ManualUserTask" targetRef="UpdateDbStatusToInProgress" /> + <bpmn2:userTask id="ManualUserTask" name="Manual User Task"> + <bpmn2:extensionElements> + <camunda:taskListener expression="${ManualHandlingTasks.completeTask(task)}" event="complete" /> + <camunda:properties> + <camunda:property /> + </camunda:properties> + <camunda:taskListener expression="${ManualHandlingTasks.setFalloutTaskVariables(task)}" event="create" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0igra4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_192yimz</bpmn2:outgoing> + </bpmn2:userTask> + <bpmn2:sequenceFlow id="SequenceFlow_0b84ki5" sourceRef="UpdateDbStatusToPendingManualTask" targetRef="CreateExternalTicket" /> + <bpmn2:sequenceFlow id="SequenceFlow_14cyk9v" sourceRef="UpdateDbStatusToInProgress" targetRef="PauseForManualTaskRainyDay_End" /> + <bpmn2:serviceTask id="UpdateDbStatusToPendingManualTask" name="Update Infra DB Status to PENDING_MANUAL_TASK" camunda:expression="${ManualHandlingTasks.updateRequestDbStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")),"PENDING_MANUAL_TASK")}"> + <bpmn2:incoming>SequenceFlow_1idwudp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b84ki5</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:serviceTask id="UpdateDbStatusToInProgress" name="Update Infra DB Status to IN_PROGRESS" camunda:expression="${ManualHandlingTasks.updateRequestDbStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")), "IN_PROGRESS")}"> + <bpmn2:incoming>SequenceFlow_192yimz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14cyk9v</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_0igra4l" sourceRef="CreateExternalTicket" targetRef="ManualUserTask" /> + <bpmn2:boundaryEvent id="ManualTaskTimer" name="Timer" attachedToRef="ManualUserTask"> + <bpmn2:outgoing>SequenceFlow_01k6zgt</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression"><![CDATA[${execution.getVariable("taskTimeout")}]]></bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:boundaryEvent> + <bpmn2:serviceTask id="CreateExternalTicket" name="Create ExternalTicket" camunda:expression="${ManualHandlingTasks.createExternalTicket(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn2:incoming>SequenceFlow_0b84ki5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0igra4l</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_01k6zgt" sourceRef="ManualTaskTimer" targetRef="UpdateDBStatusToTimeout" /> + <bpmn2:serviceTask id="UpdateDBStatusToTimeout" name="Update Infra DB Status To TIMEOUT" camunda:expression="${ManualHandlingTasks.updateRequestDbStatus(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")), "TIMEOUT")}"> + <bpmn2:incoming>SequenceFlow_01k6zgt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16bjdgj</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_16bjdgj" sourceRef="UpdateDBStatusToTimeout" targetRef="PauseForManualTaskRainyDay_Timeout" /> + <bpmn2:endEvent id="PauseForManualTaskRainyDay_Timeout"> + <bpmn2:incoming>SequenceFlow_16bjdgj</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1idwudp" sourceRef="InitRainyDayManualHandling" targetRef="UpdateDbStatusToPendingManualTask" /> + <bpmn2:serviceTask id="InitRainyDayManualHandling" name="Init Rainy Day Manual Handling" camunda:expression="${ManualHandlingTasks.initRainyDayManualHandling(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn2:incoming>SequenceFlow_0jav6cu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1idwudp</bpmn2:outgoing> + </bpmn2:serviceTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="PauseForManualTaskRainyDay"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="PauseForManualTaskRainyDay_Start"> + <dc:Bounds x="46" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="65" y="120" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="PauseForManualTaskRainyDay_End"> + <dc:Bounds x="919" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="937" y="120" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jav6cu_di" bpmnElement="SequenceFlow_0jav6cu"> + <di:waypoint xsi:type="dc:Point" x="82" y="97" /> + <di:waypoint xsi:type="dc:Point" x="129" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="106" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_192yimz_di" bpmnElement="SequenceFlow_192yimz"> + <di:waypoint xsi:type="dc:Point" x="688" y="97" /> + <di:waypoint xsi:type="dc:Point" x="740" y="98" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="714" y="82.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="UserTask_1krqrz1_di" bpmnElement="ManualUserTask"> + <dc:Bounds x="588" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0b84ki5_di" bpmnElement="SequenceFlow_0b84ki5"> + <di:waypoint xsi:type="dc:Point" x="370" y="97" /> + <di:waypoint xsi:type="dc:Point" x="432" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="401" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14cyk9v_di" bpmnElement="SequenceFlow_14cyk9v"> + <di:waypoint xsi:type="dc:Point" x="840" y="98" /> + <di:waypoint xsi:type="dc:Point" x="919" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="880" y="82.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0c0yopb_di" bpmnElement="UpdateDbStatusToPendingManualTask"> + <dc:Bounds x="270" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1hc2ewj_di" bpmnElement="UpdateDbStatusToInProgress"> + <dc:Bounds x="740" y="58" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0igra4l_di" bpmnElement="SequenceFlow_0igra4l"> + <di:waypoint xsi:type="dc:Point" x="532" y="97" /> + <di:waypoint xsi:type="dc:Point" x="588" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="560" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="BoundaryEvent_1g8ju6a_di" bpmnElement="ManualTaskTimer"> + <dc:Bounds x="652" y="119" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="692" y="144" width="28" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_04rimht_di" bpmnElement="CreateExternalTicket"> + <dc:Bounds x="432" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01k6zgt_di" bpmnElement="SequenceFlow_01k6zgt"> + <di:waypoint xsi:type="dc:Point" x="670" y="137" /> + <di:waypoint xsi:type="dc:Point" x="670" y="265" /> + <di:waypoint xsi:type="dc:Point" x="744" y="265" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685" y="201" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_18sdiiw_di" bpmnElement="UpdateDBStatusToTimeout"> + <dc:Bounds x="744" y="225" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16bjdgj_di" bpmnElement="SequenceFlow_16bjdgj"> + <di:waypoint xsi:type="dc:Point" x="844" y="265" /> + <di:waypoint xsi:type="dc:Point" x="919" y="265" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="882" y="250" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_172wy7j_di" bpmnElement="PauseForManualTaskRainyDay_Timeout"> + <dc:Bounds x="919" y="247" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="937" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1idwudp_di" bpmnElement="SequenceFlow_1idwudp"> + <di:waypoint xsi:type="dc:Point" x="229" y="97" /> + <di:waypoint xsi:type="dc:Point" x="270" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="250" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_06ztv9g_di" bpmnElement="InitRainyDayManualHandling"> + <dc:Bounds x="129" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/PauseForManualTaskRainyDayTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/PauseForManualTaskRainyDayTest.java new file mode 100644 index 0000000000..576f9c4f01 --- /dev/null +++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/PauseForManualTaskRainyDayTest.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.infrastructure.bpmn.subprocess; + +import static org.camunda.bpm.engine.test.assertions.ProcessEngineTests.assertThat; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doThrow; +import org.camunda.bpm.engine.ManagementService; +import org.camunda.bpm.engine.TaskService; +import org.camunda.bpm.engine.delegate.BpmnError; +import org.camunda.bpm.engine.runtime.Job; +import org.camunda.bpm.engine.runtime.ProcessInstance; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.engine.task.Task; +import org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.onap.so.bpmn.BaseBPMNTest; +import org.onap.so.bpmn.common.BuildingBlockExecution; + + +public class PauseForManualTaskRainyDayTest extends BaseBPMNTest { + private static final String TIMEOUT_10_S = "PT10S"; + + @Autowired + protected ManagementService managementService; + + @Autowired + protected TaskService taskService; + + @Test + public void sunnyDayPauseForManualTaskRainyDayTimeout_Test() throws InterruptedException { + variables.put("taskTimeout", TIMEOUT_10_S); + ProcessInstance pi = runtimeService.startProcessInstanceByKey("PauseForManualTaskRainyDay", variables); + assertThat(pi).isNotNull(); + BpmnAwareAssertions.assertThat(pi).isWaitingAt("ManualUserTask"); + Task task = taskService.createTaskQuery().active().list().get(0); + assertThat(pi).task().isNotNull(); + assertNotNull(task); + + Job job = managementService.createJobQuery().activityId("ManualTaskTimer").singleResult(); + assertNotNull(job); + managementService.executeJob(job.getId()); + + assertThat(pi).isStarted().hasPassedInOrder("PauseForManualTaskRainyDay_Start", "InitRainyDayManualHandling", + "UpdateDbStatusToPendingManualTask", "CreateExternalTicket", "ManualTaskTimer", + "UpdateDBStatusToTimeout", "PauseForManualTaskRainyDay_Timeout"); + } + + @Test + public void sunnyDayPauseForManualTaskCompleted_Test() throws InterruptedException { + variables.put("taskTimeout", TIMEOUT_10_S); + ProcessInstance pi = runtimeService.startProcessInstanceByKey("PauseForManualTaskRainyDay", variables); + assertThat(pi).isNotNull(); + BpmnAwareAssertions.assertThat(pi).isWaitingAt("ManualUserTask"); + assertThat(pi).task().isNotNull(); + Task task = taskService.createTaskQuery().active().list().get(0); + assertNotNull(task); + taskService.complete(task.getId()); + + assertThat(pi).isStarted().hasPassedInOrder("PauseForManualTaskRainyDay_Start", "InitRainyDayManualHandling", + "UpdateDbStatusToPendingManualTask", "CreateExternalTicket", "ManualUserTask", + "UpdateDbStatusToInProgress", "PauseForManualTaskRainyDay_End"); + assertThat(pi).isEnded(); + } + + @Test + public void rainyDayPauseForManualTask_Test() throws Exception { + doThrow(new BpmnError("7000", "TESTING ERRORS")).when(manualHandlingTasks) + .createExternalTicket((any(BuildingBlockExecution.class))); + ProcessInstance pi = runtimeService.startProcessInstanceByKey("PauseForManualTaskRainyDay", variables); + assertThat(pi).isNotNull().isStarted() + .hasPassedInOrder("PauseForManualTaskRainyDay_Start", "InitRainyDayManualHandling", + "UpdateDbStatusToPendingManualTask", "CreateExternalTicket") + .hasNotPassed("ManualUserTask", "UpdateDbStatusToInProgress", "PauseForManualTaskRainyDay_End"); + } + +} |