Add delete VFC NS workflow 87/14487/1
authorc00149107 <chenchuanyu@huawei.com>
Fri, 22 Sep 2017 07:06:13 +0000 (15:06 +0800)
committerc00149107 <chenchuanyu@huawei.com>
Fri, 22 Sep 2017 07:06:13 +0000 (15:06 +0800)
Add delete VFC NS workflow bpmn and groovy file

Change-Id: I9ac362ea973139663fbe8235e5ac15e980376bb6
Issue-ID:SO-57
Signed-off-by: c00149107 <chenchuanyu@huawei.com>
bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy [new file with mode: 0644]
bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn [new file with mode: 0644]

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
new file mode 100644 (file)
index 0000000..72982bb
--- /dev/null
@@ -0,0 +1,139 @@
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * OPENECOMP - SO\r
+ * ================================================================================\r
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.mso.bpmn.infrastructure.scripts;\r
+\r
+import static org.apache.commons.lang3.StringUtils.*;\r
+import groovy.xml.XmlUtil\r
+import groovy.json.*\r
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor \r
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil \r
+import org.openecomp.mso.bpmn.core.WorkflowException \r
+import org.openecomp.mso.bpmn.core.json.JsonUtils \r
+import org.openecomp.mso.rest.APIResponse\r
+\r
+import java.util.UUID;\r
+\r
+import org.camunda.bpm.engine.delegate.BpmnError \r
+import org.camunda.bpm.engine.runtime.Execution\r
+import org.apache.commons.lang3.*\r
+import org.apache.commons.codec.binary.Base64;\r
+import org.springframework.web.util.UriUtils \r
+import org.openecomp.mso.rest.RESTClient \r
+import org.openecomp.mso.rest.RESTConfig\r
+import org.openecomp.mso.rest.APIResponse;\r
+\r
+/**\r
+ * This groovy class supports the <class>DODeleteVFCNetworkServiceInstance.bpmn</class> process.\r
+ * flow for E2E ServiceInstance Delete\r
+ */\r
+public class DODeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {\r
+\r
+    String deleteUrl = "/vfc/vfcadapters/v1/ns/{nsInstanceId}"\r
+            \r
+    String terminateUrl = "/vfcvfcadatpers/v1/ns/{nsInstanceId}/terminate"\r
+    \r
+    String queryJobUrl = "/vfc/vfcadatpers/v1/jobs/{jobId}"\r
+    \r
+    ExceptionUtil exceptionUtil = new ExceptionUtil()\r
+\r
+    JsonUtils jsonUtil = new JsonUtils()\r
+\r
+    /**\r
+     * Pre Process the BPMN Flow Request\r
+     * Inclouds:\r
+     * generate the nsOperationKey\r
+     * generate the nsParameters\r
+     */\r
+    public void preProcessRequest (Execution execution) {        \r
+       }\r
+\r
+    /**\r
+     * delete NS task\r
+     */\r
+    public void deleteNetworkService(Execution execution) {\r
+                \r
+    }\r
+\r
+    /**\r
+     * instantiate NS task\r
+     */\r
+    public void terminateNetworkService(Execution execution) {\r
+\r
+    }\r
+\r
+    /**\r
+     * query NS task\r
+     */\r
+    public void queryNSProgress(Execution execution) {\r
+        String jobId = execution.getVariable("jobId")\r
+        String nsOperationKey = excution.getVariable("nsOperationKey");\r
+        String url = queryJobUrl.replaceAll("{jobId}", execution.getVariable("jobId")) \r
+        APIResponse createRsp = postRequest(url, nsOperationKey)\r
+        String returnCode = apiResponse.getStatusCode()\r
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()\r
+        String operationStatus = "error"\r
+        if(returnCode== "200"){\r
+            operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status")\r
+        }\r
+        exection.setVariable("operationStatus", operationStatus)\r
+    }\r
+\r
+    /**\r
+     * delay 5 sec \r
+     */\r
+    public void timeDelay(Execution execution) {\r
+        try {\r
+            Thread.sleep(5000);\r
+        } catch(InterruptedException e) {           \r
+            taskProcessor.utils.log("ERROR", "Time Delay exception" + e , isDebugEnabled)\r
+        }\r
+    }\r
+\r
+    /**\r
+     * finish NS task\r
+     */\r
+    public void finishNSCreate(Execution execution) {\r
+        //no need to do anything util now\r
+    }\r
+\r
+    /**\r
+     * post request\r
+     * url: the url of the request\r
+     * requestBody: the body of the request\r
+     */\r
+    private APIResponse postRequest(String url, String requestBody){\r
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
+        taskProcessor.logDebug( " ======== Started Execute VFC adapter Post Process ======== ", isDebugEnabled)\r
+        taskProcessor.logDebug( "url:"+url +"\nrequestBody:"+ requestBody, isDebugEnabled)\r
+        APIResponse apiResponse = null\r
+        try{\r
+            RESTConfig config = new RESTConfig(url);\r
+            RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/json");\r
+            apiResponse = client.httpPost(requestBody)\r
+            taskProcessor.logDebug( "response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString(), isDebugEnabled)\r
+            taskProcessor.logDebug( "======== Completed Execute VF-C adapter Post Process ======== ", isDebugEnabled)\r
+        }catch(Exception e){\r
+            taskProcessor.utils.log("ERROR", "Exception occured while executing AAI Post Call. Exception is: \n" + e, isDebugEnabled)\r
+            throw new BpmnError("MSOWorkflowException")\r
+        }        \r
+        return apiResponse\r
+    }\r
+}\r
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn
new file mode 100644 (file)
index 0000000..3cef94d
--- /dev/null
@@ -0,0 +1,257 @@
+<?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" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
+  <bpmn:process id="DoDeleteVFCNetworkServiceInstance" name="DoDeleteVFCNetworkServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="deleteNS_StartEvent" name="deleteNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="deleteNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:scriptTask id="Task_09nzhwk" name="Delete Network Service" scriptFormat="groovy">
+      <bpmn:incoming>terminateFinished_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1sjop71</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.deleteNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_150q0fo</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="terminate_NSTask" name="terminate Network Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_150q0fo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.terminateNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Delete NS Success?">
+      <bpmn:incoming>SequenceFlow_1sjop71</bpmn:incoming>
+      <bpmn:outgoing>deleteNSFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>deleteNSSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="deleteNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="deleteNSFailed_EndEvent">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  != "finished")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="terminate NS Success?">
+      <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming>
+      <bpmn:outgoing>terminateFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>terminateSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="terminate_NSTask" targetRef="ExclusiveGateway_1is7zys" />
+    <bpmn:sequenceFlow id="terminateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  == null || execution.getVariable("jobId" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="terminateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  != null && execution.getVariable("jobId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="terminate Finished?">
+      <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming>
+      <bpmn:outgoing>terminateFinished_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>terminateProcessing_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="terminateFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="Task_09nzhwk">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" )  == "100" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="terminateProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" )  != "100" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSDelete_Task" targetRef="EndEvent_1x6k78c" />
+    <bpmn:endEvent id="deleteNSFailed_EndEvent" name="deleteNSFailed">
+      <bpmn:incoming>deleteNSFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1gkvvpn">
+      <bpmn:incoming>terminateFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1x6k78c">
+      <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy">
+      <bpmn:incoming>terminateSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.queryNSProgress(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="finishNSDelete_Task" name="Finish NS Delete">
+      <bpmn:incoming>deleteNSSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.finishNSDelete(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" />
+    <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy">
+      <bpmn:incoming>terminateProcessing_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.timeDelay(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" />
+    <bpmn:sequenceFlow id="SequenceFlow_150q0fo" sourceRef="PreprocessIncomingRequest_task" targetRef="terminate_NSTask" />
+    <bpmn:sequenceFlow id="SequenceFlow_1sjop71" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" />
+    <bpmn:sequenceFlow id="deleteNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="finishNSDelete_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) == "finished")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="deleteNS_StartEvent">
+        <dc:Bounds x="175" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="147" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint xsi:type="dc:Point" x="211" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="407" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="264" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
+        <dc:Bounds x="722" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="407" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="terminate_NSTask">
+        <dc:Bounds x="694" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true">
+        <dc:Bounds x="517" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="519" y="624" width="52" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="deleteNSFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="542" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="542" y="446" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="474.11353711790395" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="105" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1032" y="159" width="65" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t">
+        <di:waypoint xsi:type="dc:Point" x="794" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="130" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="869" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="terminateFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="105" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1068" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="terminateSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="271" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="207" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="624" width="47" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="terminateFinished_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="822" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="574" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="terminateProcessing_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1131" y="607" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
+        <di:waypoint xsi:type="dc:Point" x="321" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="243.5" y="574" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="deleteNSFailed_EndEvent">
+        <dc:Bounds x="524" y="410" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="450" width="75" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn">
+        <dc:Bounds x="1041" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="37" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="220" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="148" y="617" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task">
+        <dc:Bounds x="1009" y="271" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSDelete_Task">
+        <dc:Bounds x="321" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="454.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task">
+        <dc:Bounds x="1162" y="406" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj">
+        <di:waypoint xsi:type="dc:Point" x="1212" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="311" />
+        <di:waypoint xsi:type="dc:Point" x="1109" y="311" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="352.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_150q0fo_di" bpmnElement="SequenceFlow_150q0fo">
+        <di:waypoint xsi:type="dc:Point" x="507" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="694" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="600.5" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sjop71_di" bpmnElement="SequenceFlow_1sjop71">
+        <di:waypoint xsi:type="dc:Point" x="722" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="567" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644.5" y="574" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18n2g9j_di" bpmnElement="deleteNSSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="517" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="574" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>