diff options
29 files changed, 1090 insertions, 615 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java index d39da5ee37..603e11d458 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java @@ -1250,7 +1250,7 @@ public class BBInputSetup implements JavaDelegate { || requestAction.equalsIgnoreCase("activateFabricConfiguration") || requestAction.equalsIgnoreCase("recreateInstance") || requestAction.equalsIgnoreCase("replaceInstance") - || requestAction.equalsIgnoreCase("upgradeInstance")) { + || requestAction.equalsIgnoreCase("upgradeInstance") || requestAction.equalsIgnoreCase("healthCheck")) { return getGBBMacroExistingService(executeBB, lookupKeyMap, bbName, requestAction, requestDetails.getCloudConfiguration()); } @@ -1564,6 +1564,9 @@ public class BBInputSetup implements JavaDelegate { break; } } + } else if (bbName.equals("HealthCheckBB") + && (VNF).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope())) { + this.setisHelmforHealthCheckBB(service, serviceInstance, gBB); } if (executeBB.getWorkflowResourceIds() != null) { parameter.setResourceId(executeBB.getWorkflowResourceIds().getNetworkCollectionId()); @@ -2112,6 +2115,28 @@ public class BBInputSetup implements JavaDelegate { return collection; } + private void setisHelmforHealthCheckBB(Service service, ServiceInstance serviceInstance, GeneralBuildingBlock gBB) { + for (GenericVnf vnf : serviceInstance.getVnfs()) { + for (VfModule vfModule : vnf.getVfModules()) { + String vnfModelCustomizationUUID = + this.bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()).getModelCustomizationId(); + ModelInfo vnfModelInfo = new ModelInfo(); + vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID); + this.mapCatalogVnf(vnf, vnfModelInfo, service); + String vfModuleCustomizationUUID = this.bbInputSetupUtils + .getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId()).getModelCustomizationId(); + ModelInfo vfModuleModelInfo = new ModelInfo(); + vfModuleModelInfo.setModelCustomizationId(vfModuleCustomizationUUID); + this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service, vnfModelCustomizationUUID); + if (vfModule.getModelInfoVfModule() != null && vfModule.getModelInfoVfModule().getModelName() != null + && vfModule.getModelInfoVfModule().getModelName().contains("helm")) { + gBB.getRequestContext().setIsHelm(true); + break; + } + } + } + } + protected void mapL3Networks(List<AAIResourceUri> list, List<L3Network> l3Networks) { for (AAIResourceUri aaiResourceUri : list) { l3Networks.add(this.mapL3Network(aaiResourceUri)); diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn index 8272bd3750..fad2e5506c 100755 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn @@ -1,30 +1,29 @@ <?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1bvx7yi" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0"> +<bpmn:definitions xmlns:bpmn="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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0gwymqy" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.7.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.14.0"> <bpmn:process id="HealthCheckBB" name="HealthCheckBB" isExecutable="true"> - <bpmn:startEvent id="StartEvent_1" name="HealthCheckBB_start"> - <bpmn:outgoing>Flow_0gd6hy6</bpmn:outgoing> + <bpmn:startEvent id="Event_0rgusxn" name="HealthCheckBB_start"> + <bpmn:outgoing>Flow_0udh4cd</bpmn:outgoing> </bpmn:startEvent> - <bpmn:endEvent id="Event_1dklvvk" name="HealthCheckBB_end"> - <bpmn:incoming>Flow_0xiyno7</bpmn:incoming> + <bpmn:endEvent id="Event_0o1nl3y" name="HealthCheckBB_end"> + <bpmn:incoming>Flow_0n17e0q</bpmn:incoming> + <bpmn:incoming>Flow_131rwms</bpmn:incoming> </bpmn:endEvent> - <bpmn:sequenceFlow id="Flow_0gd6hy6" sourceRef="StartEvent_1" targetRef="Activity_11hkwkn" /> - <bpmn:subProcess id="Activity_1pto2qh" name="Error Handling " triggeredByEvent="true"> - <bpmn:startEvent id="Event_0929aqj"> - <bpmn:outgoing>Flow_05rbrsm</bpmn:outgoing> - <bpmn:errorEventDefinition id="ErrorEventDefinition_0k0ly65" /> + <bpmn:subProcess id="Activity_0tw4ak3" name="Error Handling " triggeredByEvent="true"> + <bpmn:startEvent id="Event_1v6jbfd"> + <bpmn:outgoing>Flow_03ogqmx</bpmn:outgoing> + <bpmn:errorEventDefinition id="ErrorEventDefinition_1xw7dq4" /> </bpmn:startEvent> - <bpmn:endEvent id="Event_1s698ql"> - <bpmn:incoming>Flow_05rbrsm</bpmn:incoming> - <bpmn:terminateEventDefinition id="TerminateEventDefinition_0mn6xgi" /> + <bpmn:endEvent id="Event_0wwzune"> + <bpmn:incoming>Flow_03ogqmx</bpmn:incoming> + <bpmn:terminateEventDefinition id="TerminateEventDefinition_0c07ott" /> </bpmn:endEvent> - <bpmn:sequenceFlow id="Flow_05rbrsm" sourceRef="Event_0929aqj" targetRef="Event_1s698ql" /> + <bpmn:sequenceFlow id="Flow_03ogqmx" sourceRef="Event_1v6jbfd" targetRef="Event_0wwzune" /> </bpmn:subProcess> - <bpmn:serviceTask id="Activity_11hkwkn" name="Prepare Cnf Adapter request" camunda:expression="${CnfHealthCheckTasks.prepareCnfAdaperRequest(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> - <bpmn:incoming>Flow_0gd6hy6</bpmn:incoming> - <bpmn:outgoing>Flow_1aqdd5k</bpmn:outgoing> + <bpmn:serviceTask id="Activity_0pnb21p" name="Prepare Cnf Adapter request" camunda:expression="${CnfHealthCheckTasks.prepareCnfAdaperRequest(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn:incoming>Flow_0jxw1lb</bpmn:incoming> + <bpmn:outgoing>Flow_0uoe9ga</bpmn:outgoing> </bpmn:serviceTask> - <bpmn:sequenceFlow id="Flow_1aqdd5k" sourceRef="Activity_11hkwkn" targetRef="Activity_08mgs1k" /> - <bpmn:callActivity id="Activity_08mgs1k" name="Call CNFAdapterAsyncCall" calledElement="CNFAdapterAsyncCall"> + <bpmn:callActivity id="Activity_07txikn" name="Call CNFAdapterAsyncCall" calledElement="CNFAdapterAsyncCall"> <bpmn:extensionElements> <camunda:in source="apiPath" target="apiPath" /> <camunda:in source="cnfRequestPayload" target="cnfRequestPayload" /> @@ -35,67 +34,100 @@ <camunda:in source="messageType" target="messageType" /> <camunda:in source="true" target="isDebugLogEnabled" /> </bpmn:extensionElements> - <bpmn:incoming>Flow_1aqdd5k</bpmn:incoming> - <bpmn:outgoing>Flow_1jeui7e</bpmn:outgoing> + <bpmn:incoming>Flow_0uoe9ga</bpmn:incoming> + <bpmn:outgoing>Flow_0t6f6l8</bpmn:outgoing> </bpmn:callActivity> - <bpmn:serviceTask id="Activity_0w4hy3d" name="Process Response" camunda:expression="${CnfHealthCheckTasks.processAsyncResponse(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> - <bpmn:incoming>Flow_1jeui7e</bpmn:incoming> - <bpmn:outgoing>Flow_0xiyno7</bpmn:outgoing> + <bpmn:serviceTask id="Activity_1qd7k3z" name="Process Response" camunda:expression="${CnfHealthCheckTasks.processAsyncResponse(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))}"> + <bpmn:incoming>Flow_0t6f6l8</bpmn:incoming> + <bpmn:outgoing>Flow_0n17e0q</bpmn:outgoing> </bpmn:serviceTask> - <bpmn:sequenceFlow id="Flow_0xiyno7" sourceRef="Activity_0w4hy3d" targetRef="Event_1dklvvk" /> - <bpmn:sequenceFlow id="Flow_1jeui7e" sourceRef="Activity_08mgs1k" targetRef="Activity_0w4hy3d" /> + <bpmn:exclusiveGateway id="Gateway_07e5xls" name="Check If Is Helm" default="Flow_131rwms"> + <bpmn:incoming>Flow_0udh4cd</bpmn:incoming> + <bpmn:outgoing>Flow_131rwms</bpmn:outgoing> + <bpmn:outgoing>Flow_0jxw1lb</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_0udh4cd" sourceRef="Event_0rgusxn" targetRef="Gateway_07e5xls" /> + <bpmn:sequenceFlow id="Flow_0n17e0q" sourceRef="Activity_1qd7k3z" targetRef="Event_0o1nl3y" /> + <bpmn:sequenceFlow id="Flow_131rwms" name="No Helm" sourceRef="Gateway_07e5xls" targetRef="Event_0o1nl3y" /> + <bpmn:sequenceFlow id="Flow_0jxw1lb" name="Yes Helm" sourceRef="Gateway_07e5xls" targetRef="Activity_0pnb21p"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("isHelm")}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="Flow_0uoe9ga" sourceRef="Activity_0pnb21p" targetRef="Activity_07txikn" /> + <bpmn:sequenceFlow id="Flow_0t6f6l8" sourceRef="Activity_07txikn" targetRef="Activity_1qd7k3z" /> </bpmn:process> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="HealthCheckBB"> - <bpmndi:BPMNEdge id="Flow_1jeui7e_di" bpmnElement="Flow_1jeui7e"> - <di:waypoint x="600" y="120" /> - <di:waypoint x="680" y="120" /> + <bpmndi:BPMNEdge id="Flow_0udh4cd_di" bpmnElement="Flow_0udh4cd"> + <di:waypoint x="218" y="150" /> + <di:waypoint x="245" y="150" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0xiyno7_di" bpmnElement="Flow_0xiyno7"> - <di:waypoint x="780" y="120" /> - <di:waypoint x="842" y="120" /> + <bpmndi:BPMNEdge id="Flow_0n17e0q_di" bpmnElement="Flow_0n17e0q"> + <di:waypoint x="780" y="150" /> + <di:waypoint x="870" y="150" /> + <di:waypoint x="870" y="202" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1aqdd5k_di" bpmnElement="Flow_1aqdd5k"> - <di:waypoint x="400" y="120" /> - <di:waypoint x="500" y="120" /> + <bpmndi:BPMNEdge id="Flow_131rwms_di" bpmnElement="Flow_131rwms"> + <di:waypoint x="270" y="175" /> + <di:waypoint x="270" y="220" /> + <di:waypoint x="852" y="220" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="264" y="195" width="43" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0jxw1lb_di" bpmnElement="Flow_0jxw1lb"> + <di:waypoint x="295" y="150" /> + <di:waypoint x="350" y="150" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="299" y="132" width="47" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0gd6hy6_di" bpmnElement="Flow_0gd6hy6"> - <di:waypoint x="218" y="120" /> - <di:waypoint x="300" y="120" /> + <bpmndi:BPMNEdge id="Flow_0uoe9ga_di" bpmnElement="Flow_0uoe9ga"> + <di:waypoint x="450" y="150" /> + <di:waypoint x="500" y="150" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_1dklvvk_di" bpmnElement="Event_1dklvvk"> - <dc:Bounds x="842" y="102" width="36" height="36" /> + <bpmndi:BPMNEdge id="Flow_0t6f6l8_di" bpmnElement="Flow_0t6f6l8"> + <di:waypoint x="600" y="150" /> + <di:waypoint x="680" y="150" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Event_0rgusxn_di" bpmnElement="Event_0rgusxn"> + <dc:Bounds x="182" y="132" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="820" y="145" width="85" height="27" /> + <dc:Bounds x="156" y="175" width="90" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> - <dc:Bounds x="182" y="102" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_0o1nl3y_di" bpmnElement="Event_0o1nl3y"> + <dc:Bounds x="852" y="202" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="156" y="145" width="90" height="27" /> + <dc:Bounds x="831" y="245" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_11hkwkn_di" bpmnElement="Activity_11hkwkn"> - <dc:Bounds x="300" y="80" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_0pnb21p_di" bpmnElement="Activity_0pnb21p"> + <dc:Bounds x="350" y="110" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_07txikn_di" bpmnElement="Activity_07txikn"> + <dc:Bounds x="500" y="110" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0f7poou_di" bpmnElement="Activity_08mgs1k"> - <dc:Bounds x="500" y="80" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_1qd7k3z_di" bpmnElement="Activity_1qd7k3z"> + <dc:Bounds x="680" y="110" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0w4hy3d_di" bpmnElement="Activity_0w4hy3d"> - <dc:Bounds x="680" y="80" width="100" height="80" /> + <bpmndi:BPMNShape id="Gateway_07e5xls_di" bpmnElement="Gateway_07e5xls" isMarkerVisible="true"> + <dc:Bounds x="245" y="125" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="230" y="95" width="81" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1pto2qh_di" bpmnElement="Activity_1pto2qh" isExpanded="true"> - <dc:Bounds x="280" y="250" width="460" height="135" /> + <bpmndi:BPMNShape id="Activity_0tw4ak3_di" bpmnElement="Activity_0tw4ak3" isExpanded="true"> + <dc:Bounds x="280" y="280" width="460" height="135" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="Flow_05rbrsm_di" bpmnElement="Flow_05rbrsm"> - <di:waypoint x="398" y="324" /> - <di:waypoint x="632" y="324" /> + <bpmndi:BPMNEdge id="Flow_03ogqmx_di" bpmnElement="Flow_03ogqmx"> + <di:waypoint x="398" y="354" /> + <di:waypoint x="632" y="354" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_0929aqj_di" bpmnElement="Event_0929aqj"> - <dc:Bounds x="362" y="306" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_1v6jbfd_di" bpmnElement="Event_1v6jbfd"> + <dc:Bounds x="362" y="336" width="36" height="36" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_1s698ql_di" bpmnElement="Event_1s698ql"> - <dc:Bounds x="632" y="306" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_0wwzune_di" bpmnElement="Event_0wwzune"> + <dc:Bounds x="632" y="336" width="36" height="36" /> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy index f17bfc2938..71dd9b1426 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy @@ -254,7 +254,7 @@ else{ //TNFH slice profile instance creation TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId) - sliceInstanceName = "sliceprofile _ "+TNFH_sliceProfileId + sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId TNFH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName) serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST") TNFH_sliceProfileInstance.setServiceType(serviceType) @@ -271,7 +271,7 @@ else{ //TNMH slice profile instance creation TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId) - sliceInstanceName = "sliceprofile _ "+TNMH_sliceProfileId + sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId TNMH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName) serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST") TNMH_sliceProfileInstance.setServiceType(serviceType) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy index 5d243437e0..2aaec9f164 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy @@ -141,7 +141,11 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor { execution.setVariable("relatedSPs", getRelatedInstancesByRole(execution, ROLE_SLICE_PROFILE,KEY_SLICE_PROFILE, anSliceProfileId)) Map<String,ServiceInstance> relatedNssis = new HashMap<>() - execution.setVariable("relatedNssis", getRelatedInstancesByRole(execution, ROLE_NSSI,KEY_NSSI, anNssiId)) + relatedNssis = getRelatedInstancesByRole(execution, ROLE_NSSI,KEY_NSSI, anNssiId) + if(relatedNssis.size() == 1) { + execution.setVariable("IsRANNfAlonePresent", true) + } + execution.setVariable("relatedNssis", relatedNssis) logger.trace("${Prefix} - Exit Get Related instances") } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy index ed1c2b24d5..9800428c68 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy @@ -654,7 +654,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { logger.debug("completed AN service instance build " + ANServiceInstance.toString()) //create RAN NF NSSI ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId") as String) - sliceInstanceName = "nssi_"+execution.getVariable("ANNF_modelName") + String ANNF_nssiInstanceId = UUID.randomUUID().toString() + sliceInstanceName = "nssi_an_nf_" + ANNF_nssiInstanceId ANNFServiceInstance.setServiceInstanceName(sliceInstanceName) ANNFServiceInstance.setServiceType(execution.getVariable("sst") as String) ANNFServiceInstance.setOrchestrationStatus(serviceStatus) @@ -663,7 +664,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { ANNFServiceInstance.setServiceRole(serviceRole) snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String) snssai = snssaiList.get(0) - ANNFServiceInstance.setEnvironmentContext(snssai) + ANNFServiceInstance.setEnvironmentContext(execution.getVariable("networkType") as String) ANNFServiceInstance.setModelInvariantId(execution.getVariable("ANNF_modelInvariantUuid")) ANNFServiceInstance.setModelVersionId(execution.getVariable("ANNF_modelUuid")) ANNFServiceInstance.setWorkloadContext("AN_NF") @@ -1032,7 +1033,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { RU_ep.setType(type) RU_ep.setIpAddress("192.168.100.4") RU_ep.setLogicalInterfaceId("1234") - RU_ep.setNextHop("Host1") + RU_ep.setNextHop("networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.1-ltpId-512") RU_ep.setPrefixLength(prefixLength) RU_ep.setAddressFamily(addressFamily) //DU Ingress @@ -1046,7 +1047,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { DU_ep.setType(type) DU_ep.setIpAddress("192.168.100.5") DU_ep.setLogicalInterfaceId("1234") - DU_ep.setNextHop("Host2") + DU_ep.setNextHop("networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512") DU_ep.setPrefixLength(prefixLength) DU_ep.setAddressFamily(addressFamily) //MH RAN end point update @@ -1062,7 +1063,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { DUEG_ep.setLogicalInterfaceId("1234") DUEG_ep.setPrefixLength(prefixLength) DUEG_ep.setAddressFamily(addressFamily) - DUEG_ep.setNextHop("Host3") + DUEG_ep.setNextHop("networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.1-ltpId-512") //CUIN String CUIN_routeId = UUID.randomUUID().toString() execution.setVariable("tranportEp_ID_CUIN", CUIN_routeId) @@ -1073,7 +1074,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { CUIN_ep.setType(type) CUIN_ep.setIpAddress("192.168.100.6") CUIN_ep.setLogicalInterfaceId("1234") - CUIN_ep.setNextHop("Host4") + CUIN_ep.setNextHop("networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512") CUIN_ep.setPrefixLength(prefixLength) CUIN_ep.setAddressFamily(addressFamily) try { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy index bc155c5943..a22819f2e9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy @@ -444,6 +444,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ .sST(sliceTaskInfo.getSliceProfile().getSST() ?: sliceParams.getServiceProfile().get("sST") as String) .nssiName(sliceTaskInfo.getSuggestNssiId() ? sliceTaskInfo.getNSSTInfo().getName() : allocateAnNssi.getNssiName()) .nssiId(sliceTaskInfo.getSuggestNssiId()) + .resourceSharingLevel(sliceParams.serviceProfile.get("resourceSharingLevel") as String) .build() nbiRequest.setServiceInfo(serviceInfo) @@ -590,6 +591,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ serviceInfo.nssiId = sliceTaskInfo.suggestNssiId //if shared serviceInfo.sST = sliceTaskInfo.sliceProfile.sST ?: sliceParams.serviceProfile.get("sST") serviceInfo.nssiName = allocateCnNssi.nssiName + serviceInfo.resourceSharingLevel = sliceParams.serviceProfile.get("resourceSharingLevel") nbiRequest.setServiceInfo(serviceInfo) nbiRequest.setEsrInfo(esrInfo) @@ -727,6 +729,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ serviceInfo.nssiId = sliceTaskInfo.suggestNssiId serviceInfo.sST = sliceTaskInfo.sliceProfile.sST ?: sliceParams.serviceProfile.get("sST") serviceInfo.nssiName = "nssi_tn" + execution.getVariable("sliceServiceInstanceName") + serviceInfo.resourceSharingLevel = sliceParams.serviceProfile.get("resourceSharingLevel") nbiRequest.setServiceInfo(serviceInfo) nbiRequest.setEsrInfo(esrInfo) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy index 35b4199909..5476cb5afa 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy @@ -117,7 +117,7 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ String modelUuid = modelInfo.getModelUuid() ss.setModelInvariantId(modelInvariantUuid) ss.setModelVersionId(modelUuid) - String serviceInstanceLocationid = serviceProfile.get("pLMNIdList") + String serviceInstanceLocationid = serviceProfile.get("plmnIdList") ss.setServiceInstanceLocationId(serviceInstanceLocationid) String snssai = serviceProfile.get("sNSSAI") ss.setEnvironmentContext(snssai) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy index 2588d07e50..7571f07081 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy @@ -21,6 +21,7 @@ package org.onap.so.bpmn.infrastructure.scripts import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.core.type.TypeReference import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.ServiceInstance import org.onap.so.beans.nsmf.EsrInfo @@ -271,24 +272,22 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ * @return */ private SubnetType convertServiceCategory(String serviceCategory){ - if("CN NSST".equals(serviceCategory)){ + if(serviceCategory ==~ /CN.*/){ return SubnetType.CN } - if ("AN NF NSST".equals(serviceCategory)){ - return SubnetType.AN_NF - } - if ("AN NSST".equals(serviceCategory)){ + if (serviceCategory ==~ /AN.*/){ return SubnetType.AN } - if ("TN BH NSST".equals(serviceCategory)){ + if (serviceCategory ==~ /TN.*BH.*/){ return SubnetType.TN_BH } - if("TN MH NSST".equals(serviceCategory)){ + if(serviceCategory ==~ /TN.*MH.*/){ return SubnetType.TN_MH } - if("TN FH NSST".equals(serviceCategory)){ + if(serviceCategory ==~ /TN.*FH.*/){ return SubnetType.TN_FH } + return null } @@ -475,7 +474,10 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ */ void getNSSISelectionCap4AN(DelegateExecution execution) { - def vendor = execution.getVariable("vendor") as String + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + def vendor = sliceParams.anSliceTaskInfo.vendor String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS) @@ -497,7 +499,10 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ */ void getNSSISelectionCap4TN(DelegateExecution execution) { - def vendor = execution.getVariable("vendor") as String + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + def vendor = sliceParams.tnBHSliceTaskInfo.vendor String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT) @@ -518,7 +523,10 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ */ void getNSSISelectionCap4CN(DelegateExecution execution) { - def vendor = execution.getVariable("vendor") as String + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + def vendor = sliceParams.cnSliceTaskInfo.vendor String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE) @@ -626,8 +634,10 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ Map nssiNeedHandlerInfo = nssiNeedHandlerInfos.get(currNssiIndex) as Map TemplateInfo nsstInfo = nssiNeedHandlerInfo.get("nsstInfo") as TemplateInfo - Map<String, Object> profileInfo = nssiNeedHandlerInfo.get("sliceProfile") as Map - //profileInfo.remove("profileId") + SliceProfileAdapter sliceProfileInfo = nssiNeedHandlerInfo.get("sliceProfile") as SliceProfileAdapter + + Map profileInfo = objectMapper.convertValue(sliceProfileInfo, new TypeReference<Map<String, Object>>() {}); + while (profileInfo.values().remove(null)); String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) logger.debug( "get NSI option OOF Url: " + urlString) @@ -641,8 +651,8 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution) execution.setVariable("nssiSelection_timeout", timeout) - String oofRequest = oofUtils.buildSelectNSSIRequest(requestId, nsstInfo, messageType, - profileInfo, 600) + String oofRequest = oofUtils.buildSelectNSSIRequest(requestId, messageType, nsstInfo.UUID, + nsstInfo.invariantUUID, nsstInfo.name, profileInfo) execution.setVariable("nssiSelection_oofRequest", oofRequest) logger.debug("Sending request to OOF: " + oofRequest) @@ -672,13 +682,10 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") - Map<String, Object> solution = nsiSolutions.get(0) - - String resourceSharingLevel = execution.getVariable("resourceSharingLevel") - Boolean isSharable = resourceSharingLevel == "shared" //todo - if (isSharable && solution != null) { - processNssiResult(sliceTaskParams, subnetType, solution) + if(nsiSolutions.size()>=1) { + Map<String,Object> solution = nsiSolutions.get(0) as Map + processNssiResult(sliceTaskParams, subnetType, solution) } execution.setVariable("sliceTaskParams", sliceTaskParams) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy index 4cc6e6d478..6fd8080ef0 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy @@ -126,7 +126,11 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { execution.setVariable("anNfSliceProfileId", getInstanceIdByWorkloadContext(execution.getVariable("relatedSPs"), AN_NF)) Map<String,ServiceInstance> relatedNssis = new HashMap<>() - execution.setVariable("relatedNssis", getRelatedInstancesByRole(execution, ROLE_NSSI, anNssiId)) + relatedNssis = getRelatedInstancesByRole(execution, ROLE_NSSI, anNssiId) + if(relatedNssis.size() == 1) { + execution.setVariable("IsRANNfAlonePresent", true) + } + execution.setVariable("relatedNssis", relatedNssis) } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy index e0c2b776fe..d6e94efea1 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy @@ -377,7 +377,6 @@ class TnNssmfUtils { logger.debug("mso.workflow.TnNssmf.enableSDNCNetworkConfig is undefined, so use default value (true)") enableSdnc = "true" } - enableSdnc = "false" logger.debug("setEnableSdncConfig: enableSdnc=" + enableSdnc) execution.setVariable("enableSdnc", enableSdnc) diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn index 841a23b3eb..b1561357ae 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0rh5ux5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.1.1"> +<bpmn:definitions xmlns:bpmn="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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0rh5ux5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0"> <bpmn:process id="DoActivateAccessNSSI" name="DoActivateAccessNSSI" isExecutable="true"> <bpmn:startEvent id="Event_055gbp2" name="Start"> <bpmn:outgoing>Flow_0rh43xe</bpmn:outgoing> @@ -16,7 +16,7 @@ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("shouldChangeAN_NF_SPStatus") == true}</bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:intermediateThrowEvent id="Event_1n5z71a" name="Goto TN NSSI Activation"> - <bpmn:incoming>Flow_0mtkhmv</bpmn:incoming> + <bpmn:incoming>Flow_0umba3p</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_0x6han6" name="TNNSSIActivation" /> </bpmn:intermediateThrowEvent> <bpmn:intermediateCatchEvent id="Event_0kkeo9m" name="TN NSSI Activation"> @@ -27,9 +27,9 @@ <bpmn:incoming>Flow_1b6vtso</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_05qiudr" name="AN_NSSI_Activation" /> </bpmn:intermediateThrowEvent> - <bpmn:sequenceFlow id="Flow_0523saw" sourceRef="Gateway_12oq1sa" targetRef="Event_0rzo7gj" /> + <bpmn:sequenceFlow id="Flow_0523saw" sourceRef="Gateway_12oq1sa" targetRef="Gateway_0ci374j" /> <bpmn:intermediateThrowEvent id="Event_0rzo7gj" name="Check TN NSSI Activation"> - <bpmn:incoming>Flow_0523saw</bpmn:incoming> + <bpmn:incoming>Flow_1vyktdh</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_0s7s95j" name="TNNSSIActivation" /> </bpmn:intermediateThrowEvent> <bpmn:sequenceFlow id="Flow_1cnfilb" sourceRef="Event_1azfo77" targetRef="Activity_1j0xkqc" /> @@ -260,7 +260,7 @@ ex.processJavaException(execution)</bpmn:script> def activator = new DoActivateAccessNSSI() activator.updateAnNfStatus(execution)</bpmn:script> </bpmn:scriptTask> - <bpmn:sequenceFlow id="Flow_0mtkhmv" sourceRef="Activity_08yj5gq" targetRef="Event_1n5z71a" /> + <bpmn:sequenceFlow id="Flow_0mtkhmv" sourceRef="Activity_08yj5gq" targetRef="Gateway_0n3zhxo" /> <bpmn:scriptTask id="Activity_1fzg56b" name="Check TN FH Slice profile status" scriptFormat="groovy"> <bpmn:incoming>Flow_1q7frye</bpmn:incoming> <bpmn:outgoing>Flow_1yd57bl</bpmn:outgoing> @@ -519,494 +519,573 @@ activator.prepareUpdateJobStatus(execution,"finished","100","AN NSSI activation <bpmn:incoming>Flow_0g9k299</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_1h9r8pc" name="AN_NSSI_Activation" /> </bpmn:intermediateThrowEvent> + <bpmn:exclusiveGateway id="Gateway_0ci374j" name="Is TN NSSI present?" default="Flow_1vyktdh"> + <bpmn:incoming>Flow_0523saw</bpmn:incoming> + <bpmn:outgoing>Flow_1vyktdh</bpmn:outgoing> + <bpmn:outgoing>Flow_1buy9ji</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_1vyktdh" name="Yes" sourceRef="Gateway_0ci374j" targetRef="Event_0rzo7gj" /> + <bpmn:intermediateThrowEvent id="Event_04dd3u6" name="Goto AN NSSI Activation"> + <bpmn:incoming>Flow_1buy9ji</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_1x4z9d9" name="AN_NSSI_Activation" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_1buy9ji" name="No" sourceRef="Gateway_0ci374j" targetRef="Event_04dd3u6"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="Gateway_0n3zhxo" name="Is TN present?" default="Flow_0umba3p"> + <bpmn:incoming>Flow_0mtkhmv</bpmn:incoming> + <bpmn:outgoing>Flow_0umba3p</bpmn:outgoing> + <bpmn:outgoing>Flow_1xrbneh</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_0umba3p" name="Yes" sourceRef="Gateway_0n3zhxo" targetRef="Event_1n5z71a" /> + <bpmn:intermediateThrowEvent id="Event_1akyxj9" name="Goto AN NSSI Activation"> + <bpmn:incoming>Flow_1xrbneh</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_1inqa6n" name="AN_NSSI_Activation" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_1xrbneh" name="No" sourceRef="Gateway_0n3zhxo" targetRef="Event_1akyxj9"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> </bpmn:process> <bpmn:error id="Error_1beg2za" name="ActivationWorkflowError" errorCode="2500" /> <bpmn:error id="Error_0vgjqok" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoActivateAccessNSSI"> <bpmndi:BPMNEdge id="Flow_1876ml0_di" bpmnElement="Flow_1876ml0"> - <di:waypoint x="660" y="940" /> - <di:waypoint x="712" y="940" /> + <di:waypoint x="660" y="1050" /> + <di:waypoint x="712" y="1050" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0cblklk_di" bpmnElement="Flow_0cblklk"> - <di:waypoint x="350" y="940" /> - <di:waypoint x="390" y="940" /> + <di:waypoint x="350" y="1050" /> + <di:waypoint x="390" y="1050" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_06nfip0_di" bpmnElement="Flow_06nfip0"> - <di:waypoint x="490" y="940" /> - <di:waypoint x="560" y="940" /> + <di:waypoint x="490" y="1050" /> + <di:waypoint x="560" y="1050" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0k5cyz7_di" bpmnElement="Flow_0k5cyz7"> - <di:waypoint x="1330" y="690" /> - <di:waypoint x="1410" y="690" /> + <di:waypoint x="1330" y="800" /> + <di:waypoint x="1410" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1b95clk_di" bpmnElement="Flow_1b95clk"> - <di:waypoint x="1320" y="450" /> - <di:waypoint x="1410" y="450" /> + <di:waypoint x="1320" y="560" /> + <di:waypoint x="1410" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1b6vtso_di" bpmnElement="Flow_1b6vtso"> - <di:waypoint x="1680" y="690" /> - <di:waypoint x="1742" y="690" /> + <di:waypoint x="1680" y="800" /> + <di:waypoint x="1742" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1s0xcf5_di" bpmnElement="Flow_1s0xcf5"> - <di:waypoint x="580" y="690" /> - <di:waypoint x="640" y="690" /> + <di:waypoint x="580" y="800" /> + <di:waypoint x="640" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1wx5w6i_di" bpmnElement="Flow_1wx5w6i"> - <di:waypoint x="1510" y="690" /> - <di:waypoint x="1580" y="690" /> + <di:waypoint x="1510" y="800" /> + <di:waypoint x="1580" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0rzuxa0_di" bpmnElement="Flow_0rzuxa0"> - <di:waypoint x="1140" y="715" /> - <di:waypoint x="1140" y="762" /> + <di:waypoint x="1140" y="825" /> + <di:waypoint x="1140" y="872" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1i4cc7e_di" bpmnElement="Flow_1i4cc7e"> - <di:waypoint x="1165" y="690" /> - <di:waypoint x="1230" y="690" /> + <di:waypoint x="1165" y="800" /> + <di:waypoint x="1230" y="800" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1168" y="672" width="18" height="14" /> + <dc:Bounds x="1168" y="782" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0to1idt_di" bpmnElement="Flow_0to1idt"> - <di:waypoint x="1070" y="690" /> - <di:waypoint x="1115" y="690" /> + <di:waypoint x="1070" y="800" /> + <di:waypoint x="1115" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0b7aq1k_di" bpmnElement="Flow_0b7aq1k"> - <di:waypoint x="900" y="690" /> - <di:waypoint x="970" y="690" /> + <di:waypoint x="900" y="800" /> + <di:waypoint x="970" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0sqsq1x_di" bpmnElement="Flow_0sqsq1x"> - <di:waypoint x="740" y="690" /> - <di:waypoint x="800" y="690" /> + <di:waypoint x="740" y="800" /> + <di:waypoint x="800" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1qszzfv_di" bpmnElement="Flow_1qszzfv"> - <di:waypoint x="1680" y="450" /> - <di:waypoint x="1732" y="450" /> + <di:waypoint x="1680" y="560" /> + <di:waypoint x="1732" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1ldkgyg_di" bpmnElement="Flow_1ldkgyg"> - <di:waypoint x="1510" y="450" /> - <di:waypoint x="1580" y="450" /> + <di:waypoint x="1510" y="560" /> + <di:waypoint x="1580" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0ajre96_di" bpmnElement="Flow_0ajre96"> - <di:waypoint x="1130" y="475" /> - <di:waypoint x="1130" y="522" /> + <di:waypoint x="1130" y="585" /> + <di:waypoint x="1130" y="632" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0bukcmf_di" bpmnElement="Flow_0bukcmf"> - <di:waypoint x="1155" y="450" /> - <di:waypoint x="1220" y="450" /> + <di:waypoint x="1155" y="560" /> + <di:waypoint x="1220" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1158" y="432" width="18" height="14" /> + <dc:Bounds x="1158" y="542" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0heuc95_di" bpmnElement="Flow_0heuc95"> - <di:waypoint x="580" y="450" /> - <di:waypoint x="630" y="450" /> + <di:waypoint x="580" y="560" /> + <di:waypoint x="630" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1i0s8nu_di" bpmnElement="Flow_1i0s8nu"> - <di:waypoint x="1060" y="450" /> - <di:waypoint x="1105" y="450" /> + <di:waypoint x="1060" y="560" /> + <di:waypoint x="1105" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_16pqv7g_di" bpmnElement="Flow_16pqv7g"> - <di:waypoint x="890" y="450" /> - <di:waypoint x="960" y="450" /> + <di:waypoint x="890" y="560" /> + <di:waypoint x="960" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1w3h345_di" bpmnElement="Flow_1w3h345"> - <di:waypoint x="730" y="450" /> - <di:waypoint x="790" y="450" /> + <di:waypoint x="730" y="560" /> + <di:waypoint x="790" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0mtkhmv_di" bpmnElement="Flow_0mtkhmv"> - <di:waypoint x="2110" y="230" /> - <di:waypoint x="2152" y="230" /> + <di:waypoint x="2110" y="340" /> + <di:waypoint x="2180" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1sroz8o_di" bpmnElement="Flow_1sroz8o"> - <di:waypoint x="1800" y="230" /> - <di:waypoint x="1870" y="230" /> + <di:waypoint x="1800" y="340" /> + <di:waypoint x="1870" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1myzbqw_di" bpmnElement="Flow_1myzbqw"> - <di:waypoint x="1500" y="230" /> - <di:waypoint x="1565" y="230" /> + <di:waypoint x="1500" y="340" /> + <di:waypoint x="1565" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0o7xomf_di" bpmnElement="Flow_0o7xomf"> - <di:waypoint x="1340" y="230" /> - <di:waypoint x="1400" y="230" /> + <di:waypoint x="1340" y="340" /> + <di:waypoint x="1400" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0rizzsm_di" bpmnElement="Flow_0rizzsm"> - <di:waypoint x="1970" y="230" /> - <di:waypoint x="2010" y="230" /> + <di:waypoint x="1970" y="340" /> + <di:waypoint x="2010" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1v4zg98_di" bpmnElement="Flow_1v4zg98"> - <di:waypoint x="1590" y="255" /> - <di:waypoint x="1590" y="302" /> + <di:waypoint x="1590" y="365" /> + <di:waypoint x="1590" y="412" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1yrel0t_di" bpmnElement="Flow_1yrel0t"> - <di:waypoint x="1615" y="230" /> - <di:waypoint x="1700" y="230" /> + <di:waypoint x="1615" y="340" /> + <di:waypoint x="1700" y="340" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1649" y="212" width="18" height="14" /> + <dc:Bounds x="1649" y="322" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1gxv9id_di" bpmnElement="Flow_1gxv9id"> - <di:waypoint x="1180" y="230" /> - <di:waypoint x="1240" y="230" /> + <di:waypoint x="1180" y="340" /> + <di:waypoint x="1240" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_147tw7h_di" bpmnElement="Flow_147tw7h"> - <di:waypoint x="435" y="690" /> - <di:waypoint x="480" y="690" /> + <di:waypoint x="435" y="800" /> + <di:waypoint x="480" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0wvzz2r_di" bpmnElement="Flow_0wvzz2r"> - <di:waypoint x="198" y="690" /> - <di:waypoint x="240" y="690" /> + <di:waypoint x="198" y="800" /> + <di:waypoint x="240" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_00clpwn_di" bpmnElement="Flow_00clpwn"> - <di:waypoint x="410" y="715" /> - <di:waypoint x="410" y="800" /> - <di:waypoint x="482" y="800" /> + <di:waypoint x="410" y="825" /> + <di:waypoint x="410" y="910" /> + <di:waypoint x="482" y="910" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0q02qno_di" bpmnElement="Flow_0q02qno"> - <di:waypoint x="340" y="690" /> - <di:waypoint x="385" y="690" /> + <di:waypoint x="340" y="800" /> + <di:waypoint x="385" y="800" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_10b15um_di" bpmnElement="Flow_10b15um"> - <di:waypoint x="410" y="475" /> - <di:waypoint x="410" y="560" /> - <di:waypoint x="482" y="560" /> + <di:waypoint x="410" y="585" /> + <di:waypoint x="410" y="670" /> + <di:waypoint x="482" y="670" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0zjaac9_di" bpmnElement="Flow_0zjaac9"> - <di:waypoint x="435" y="450" /> - <di:waypoint x="480" y="450" /> + <di:waypoint x="435" y="560" /> + <di:waypoint x="480" y="560" /> <bpmndi:BPMNLabel> - <dc:Bounds x="449" y="432" width="18" height="14" /> + <dc:Bounds x="449" y="542" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1q7frye_di" bpmnElement="Flow_1q7frye"> - <di:waypoint x="198" y="450" /> - <di:waypoint x="240" y="450" /> + <di:waypoint x="198" y="560" /> + <di:waypoint x="240" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1yd57bl_di" bpmnElement="Flow_1yd57bl"> - <di:waypoint x="340" y="450" /> - <di:waypoint x="385" y="450" /> + <di:waypoint x="340" y="560" /> + <di:waypoint x="385" y="560" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0g9k299_di" bpmnElement="Flow_0g9k299"> - <di:waypoint x="690" y="205" /> - <di:waypoint x="690" y="100" /> - <di:waypoint x="752" y="100" /> + <di:waypoint x="690" y="315" /> + <di:waypoint x="690" y="210" /> + <di:waypoint x="752" y="210" /> <bpmndi:BPMNLabel> - <dc:Bounds x="698" y="150" width="15" height="14" /> + <dc:Bounds x="698" y="260" width="15" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_00vt4gf_di" bpmnElement="Flow_00vt4gf"> - <di:waypoint x="715" y="230" /> - <di:waypoint x="800" y="230" /> + <di:waypoint x="715" y="340" /> + <di:waypoint x="800" y="340" /> <bpmndi:BPMNLabel> - <dc:Bounds x="749" y="212" width="18" height="14" /> + <dc:Bounds x="749" y="322" width="18" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0uxerfg_di" bpmnElement="Flow_0uxerfg"> - <di:waypoint x="620" y="230" /> - <di:waypoint x="665" y="230" /> + <di:waypoint x="620" y="340" /> + <di:waypoint x="665" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_10f44ab_di" bpmnElement="Flow_10f44ab"> - <di:waypoint x="480" y="230" /> - <di:waypoint x="520" y="230" /> + <di:waypoint x="480" y="340" /> + <di:waypoint x="520" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1cnfilb_di" bpmnElement="Flow_1cnfilb"> - <di:waypoint x="198" y="940" /> - <di:waypoint x="250" y="940" /> + <di:waypoint x="198" y="1050" /> + <di:waypoint x="250" y="1050" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0523saw_di" bpmnElement="Flow_0523saw"> - <di:waypoint x="990" y="205" /> - <di:waypoint x="990" y="130" /> - <di:waypoint x="1062" y="130" /> + <di:waypoint x="990" y="315" /> + <di:waypoint x="990" y="190" /> + <di:waypoint x="1065" y="190" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_00fb28f_di" bpmnElement="Flow_00fb28f"> - <di:waypoint x="1015" y="230" /> - <di:waypoint x="1080" y="230" /> + <di:waypoint x="1015" y="340" /> + <di:waypoint x="1080" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_00yl2jk_di" bpmnElement="Flow_00yl2jk"> - <di:waypoint x="900" y="230" /> - <di:waypoint x="965" y="230" /> + <di:waypoint x="900" y="340" /> + <di:waypoint x="965" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_14z4acw_di" bpmnElement="Flow_14z4acw"> - <di:waypoint x="340" y="230" /> - <di:waypoint x="380" y="230" /> + <di:waypoint x="340" y="340" /> + <di:waypoint x="380" y="340" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0rh43xe_di" bpmnElement="Flow_0rh43xe"> - <di:waypoint x="198" y="230" /> - <di:waypoint x="240" y="230" /> + <di:waypoint x="198" y="340" /> + <di:waypoint x="240" y="340" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_055gbp2_di" bpmnElement="Event_055gbp2"> - <dc:Bounds x="162" y="212" width="36" height="36" /> + <bpmndi:BPMNEdge id="Flow_1vyktdh_di" bpmnElement="Flow_1vyktdh"> + <di:waypoint x="1115" y="190" /> + <di:waypoint x="1222" y="190" /> <bpmndi:BPMNLabel> - <dc:Bounds x="168" y="255" width="24" height="14" /> + <dc:Bounds x="1160" y="172" width="18" height="14" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Gateway_12oq1sa_di" bpmnElement="Gateway_12oq1sa" isMarkerVisible="true"> - <dc:Bounds x="965" y="205" width="50" height="50" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1buy9ji_di" bpmnElement="Flow_1buy9ji"> + <di:waypoint x="1090" y="165" /> + <di:waypoint x="1090" y="100" /> + <di:waypoint x="1222" y="100" /> <bpmndi:BPMNLabel> - <dc:Bounds x="945" y="265" width="90" height="27" /> + <dc:Bounds x="1098" y="130" width="15" height="14" /> </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_1v7p5kl_di" bpmnElement="Event_1n5z71a"> - <dc:Bounds x="2152" y="212" width="36" height="36" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0umba3p_di" bpmnElement="Flow_0umba3p"> + <di:waypoint x="2230" y="340" /> + <di:waypoint x="2297" y="340" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2255" y="322" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1xrbneh_di" bpmnElement="Flow_1xrbneh"> + <di:waypoint x="2205" y="365" /> + <di:waypoint x="2205" y="412" /> <bpmndi:BPMNLabel> - <dc:Bounds x="2137" y="255" width="71" height="27" /> + <dc:Bounds x="2213" y="386" width="15" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Event_055gbp2_di" bpmnElement="Event_055gbp2"> + <dc:Bounds x="162" y="322" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="365" width="25" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_01vyapf_di" bpmnElement="Event_0kkeo9m"> - <dc:Bounds x="162" y="432" width="36" height="36" /> + <bpmndi:BPMNShape id="Gateway_12oq1sa_di" bpmnElement="Gateway_12oq1sa" isMarkerVisible="true"> + <dc:Bounds x="965" y="315" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="157" y="475" width="48" height="27" /> + <dc:Bounds x="945" y="375" width="90" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_1u3s42m_di" bpmnElement="Event_09ey569"> - <dc:Bounds x="1742" y="672" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_01vyapf_di" bpmnElement="Event_0kkeo9m"> + <dc:Bounds x="162" y="542" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1728" y="715" width="71" height="27" /> + <dc:Bounds x="158" y="585" width="47" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_01fudey_di" bpmnElement="Event_0rzo7gj"> - <dc:Bounds x="1062" y="112" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_1u3s42m_di" bpmnElement="Event_09ey569"> + <dc:Bounds x="1742" y="782" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1042" y="155" width="78" height="27" /> + <dc:Bounds x="1728" y="825" width="71" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0gx3ps0_di" bpmnElement="Event_0gx3ps0"> - <dc:Bounds x="712" y="922" width="36" height="36" /> + <dc:Bounds x="712" y="1032" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="720" y="965" width="20" height="14" /> + <dc:Bounds x="720" y="1075" width="20" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_0xcg677_di" bpmnElement="Gateway_0xcg677" isMarkerVisible="true"> - <dc:Bounds x="665" y="205" width="50" height="50" /> + <dc:Bounds x="665" y="315" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="647" y="262" width="86" height="27" /> + <dc:Bounds x="647" y="372" width="87" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_0nr3me0_di" bpmnElement="Gateway_0nr3me0" isMarkerVisible="true"> - <dc:Bounds x="385" y="425" width="50" height="50" /> + <dc:Bounds x="385" y="535" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="370" y="395" width="84" height="27" /> + <dc:Bounds x="370" y="505" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0j998yp_di" bpmnElement="Event_0j998yp"> - <dc:Bounds x="162" y="672" width="36" height="36" /> + <dc:Bounds x="162" y="782" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="150" y="715" width="64" height="27" /> + <dc:Bounds x="151" y="825" width="63" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_05lm9ln_di" bpmnElement="Event_1nqpg0o"> - <dc:Bounds x="482" y="542" width="36" height="36" /> + <dc:Bounds x="482" y="652" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="457" y="585" width="86" height="27" /> + <dc:Bounds x="457" y="695" width="86" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0wv22e3_di" bpmnElement="Event_0ki3ncn"> - <dc:Bounds x="1732" y="432" width="36" height="36" /> + <dc:Bounds x="1732" y="542" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1706" y="475" width="88" height="27" /> + <dc:Bounds x="1706" y="585" width="88" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1djcl9x_di" bpmnElement="Event_1djcl9x"> - <dc:Bounds x="482" y="782" width="36" height="36" /> + <dc:Bounds x="482" y="892" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="469" y="825" width="62" height="27" /> + <dc:Bounds x="469" y="935" width="62" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_0cemhjv_di" bpmnElement="Gateway_0cemhjv" isMarkerVisible="true"> - <dc:Bounds x="385" y="665" width="50" height="50" /> + <dc:Bounds x="385" y="775" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="368" y="635" width="84" height="27" /> + <dc:Bounds x="368" y="745" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_00e6sqq_di" bpmnElement="Activity_089t9fj"> - <dc:Bounds x="380" y="190" width="100" height="80" /> + <dc:Bounds x="380" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_147vycg_di" bpmnElement="Activity_1fv6ljk"> - <dc:Bounds x="240" y="190" width="100" height="80" /> + <dc:Bounds x="240" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1465ih9_di" bpmnElement="Activity_19myg2v"> - <dc:Bounds x="520" y="190" width="100" height="80" /> + <dc:Bounds x="520" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_16l1ykw_di" bpmnElement="Activity_1atych2"> - <dc:Bounds x="800" y="190" width="100" height="80" /> + <dc:Bounds x="800" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_10uophi_di" bpmnElement="Activity_0iluozh"> - <dc:Bounds x="1080" y="190" width="100" height="80" /> + <dc:Bounds x="1080" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0u2aqld_di" bpmnElement="Activity_0u2aqld"> - <dc:Bounds x="1240" y="190" width="100" height="80" /> + <dc:Bounds x="1240" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1hr68mt_di" bpmnElement="Activity_1hr68mt"> - <dc:Bounds x="1400" y="190" width="100" height="80" /> + <dc:Bounds x="1400" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1xwu5f0_di" bpmnElement="Gateway_1xwu5f0" isMarkerVisible="true"> - <dc:Bounds x="1565" y="205" width="50" height="50" /> + <dc:Bounds x="1565" y="315" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1564" y="175" width="54" height="27" /> + <dc:Bounds x="1564" y="285" width="54" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0yfi3mj_di" bpmnElement="Event_0yfi3mj"> - <dc:Bounds x="1572" y="302" width="36" height="36" /> + <dc:Bounds x="1572" y="412" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1607" y="286" width="85" height="27" /> + <dc:Bounds x="1608" y="396" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_03sbng2_di" bpmnElement="Activity_03sbng2"> - <dc:Bounds x="1870" y="190" width="100" height="80" /> + <dc:Bounds x="1870" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_08yj5gq_di" bpmnElement="Activity_08yj5gq"> - <dc:Bounds x="2010" y="190" width="100" height="80" /> + <dc:Bounds x="2010" y="300" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1aesimf_di" bpmnElement="Activity_1aesimf" isExpanded="true"> - <dc:Bounds x="210" y="1130" width="770" height="170" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="Flow_1bqk5yt_di" bpmnElement="Flow_1bqk5yt"> - <di:waypoint x="630" y="1234" /> - <di:waypoint x="710" y="1234" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0tw7xsp_di" bpmnElement="Flow_0tw7xsp"> - <di:waypoint x="278" y="1234" /> - <di:waypoint x="380" y="1234" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_075rb1i_di" bpmnElement="Flow_075rb1i"> - <di:waypoint x="480" y="1234" /> - <di:waypoint x="530" y="1234" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0y0r82m_di" bpmnElement="Flow_0y0r82m"> - <di:waypoint x="810" y="1234" /> - <di:waypoint x="892" y="1234" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_156ogc4_di" bpmnElement="Event_156ogc4"> - <dc:Bounds x="242" y="1216" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_1n2qjvx_di" bpmnElement="Event_1n2qjvx"> - <dc:Bounds x="892" y="1216" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1eedm9e_di" bpmnElement="Activity_1eedm9e"> - <dc:Bounds x="710" y="1194" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1szd5yp_di" bpmnElement="Activity_1szd5yp"> - <dc:Bounds x="530" y="1194" width="100" height="80" /> + <bpmndi:BPMNShape id="Event_01fudey_di" bpmnElement="Event_0rzo7gj"> + <dc:Bounds x="1222" y="172" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1202" y="215" width="78" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0lpw3j7_di" bpmnElement="Activity_0lpw3j7"> - <dc:Bounds x="380" y="1194" width="100" height="80" /> + <bpmndi:BPMNShape id="Gateway_0ci374j_di" bpmnElement="Gateway_0ci374j" isMarkerVisible="true"> + <dc:Bounds x="1065" y="165" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1063" y="222" width="56" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0hioign_di" bpmnElement="Activity_0hioign" isExpanded="true"> - <dc:Bounds x="320" y="1420" width="440" height="140" /> + <bpmndi:BPMNShape id="Event_04dd3u6_di" bpmnElement="Event_04dd3u6"> + <dc:Bounds x="1222" y="82" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1206" y="125" width="71" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="Flow_0cvs8zk_di" bpmnElement="Flow_0cvs8zk"> - <di:waypoint x="408" y="1481" /> - <di:waypoint x="473" y="1481" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_01jdnrt_di" bpmnElement="Flow_01jdnrt"> - <di:waypoint x="573" y="1481" /> - <di:waypoint x="672" y="1481" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Activity_1f3cipf_di" bpmnElement="Activity_1f3cipf"> - <dc:Bounds x="473" y="1441" width="100" height="80" /> + <bpmndi:BPMNShape id="Event_1v7p5kl_di" bpmnElement="Event_1n5z71a"> + <dc:Bounds x="2297" y="322" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2282" y="365" width="71" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_18qzt1n_di" bpmnElement="Event_18qzt1n"> - <dc:Bounds x="672" y="1463" width="36" height="36" /> + <bpmndi:BPMNShape id="Gateway_0n3zhxo_di" bpmnElement="Gateway_0n3zhxo" isMarkerVisible="true"> + <dc:Bounds x="2180" y="315" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2169" y="285" width="73" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_0lvvn7i_di" bpmnElement="Event_0lvvn7i"> - <dc:Bounds x="372" y="1463" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_1akyxj9_di" bpmnElement="Event_1akyxj9"> + <dc:Bounds x="2187" y="412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2171" y="455" width="71" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1u5yry2_di" bpmnElement="Activity_09e5oh6"> - <dc:Bounds x="1700" y="190" width="100" height="80" /> + <dc:Bounds x="1700" y="300" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1ng1vyl_di" bpmnElement="Activity_1fzg56b"> - <dc:Bounds x="240" y="410" width="100" height="80" /> + <dc:Bounds x="240" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1vabe3f_di" bpmnElement="Activity_0gtw2p7"> - <dc:Bounds x="480" y="410" width="100" height="80" /> + <dc:Bounds x="480" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_07cr1m2_di" bpmnElement="Activity_07cr1m2"> - <dc:Bounds x="630" y="410" width="100" height="80" /> + <dc:Bounds x="630" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_03hbxfi_di" bpmnElement="Activity_03hbxfi"> - <dc:Bounds x="790" y="410" width="100" height="80" /> + <dc:Bounds x="790" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0br2i5b_di" bpmnElement="Activity_0br2i5b"> - <dc:Bounds x="960" y="410" width="100" height="80" /> + <dc:Bounds x="960" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1ot96tc_di" bpmnElement="Gateway_1ot96tc" isMarkerVisible="true"> - <dc:Bounds x="1105" y="425" width="50" height="50" /> + <dc:Bounds x="1105" y="535" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1088" y="395" width="84" height="14" /> + <dc:Bounds x="1088" y="505" width="84" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0h9nwqd_di" bpmnElement="Event_0uco28x"> - <dc:Bounds x="1112" y="522" width="36" height="36" /> + <dc:Bounds x="1112" y="632" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1088" y="565" width="85" height="27" /> + <dc:Bounds x="1089" y="675" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1t28p4r_di" bpmnElement="Activity_1t28p4r"> - <dc:Bounds x="1580" y="410" width="100" height="80" /> + <dc:Bounds x="1580" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_03o12kw_di" bpmnElement="Activity_1o0a55b"> - <dc:Bounds x="1410" y="410" width="100" height="80" /> + <dc:Bounds x="1410" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1hkx6j5_di" bpmnElement="Activity_068a0cy"> - <dc:Bounds x="240" y="650" width="100" height="80" /> + <dc:Bounds x="240" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_18xtkyi_di" bpmnElement="Event_1azfo77"> - <dc:Bounds x="162" y="922" width="36" height="36" /> + <dc:Bounds x="162" y="1032" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="156" y="965" width="48" height="27" /> + <dc:Bounds x="157" y="1075" width="47" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1wvru6z_di" bpmnElement="Activity_02vl5kt"> - <dc:Bounds x="480" y="650" width="100" height="80" /> + <dc:Bounds x="480" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1kszh5k_di" bpmnElement="Activity_1kszh5k"> - <dc:Bounds x="640" y="650" width="100" height="80" /> + <dc:Bounds x="640" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_09jt4b0_di" bpmnElement="Activity_09jt4b0"> - <dc:Bounds x="800" y="650" width="100" height="80" /> + <dc:Bounds x="800" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1su25xm_di" bpmnElement="Activity_1su25xm"> - <dc:Bounds x="970" y="650" width="100" height="80" /> + <dc:Bounds x="970" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_114io6q_di" bpmnElement="Gateway_114io6q" isMarkerVisible="true"> - <dc:Bounds x="1115" y="665" width="50" height="50" /> + <dc:Bounds x="1115" y="775" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1098" y="641" width="84" height="14" /> + <dc:Bounds x="1098" y="751" width="84" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_08ecfyj_di" bpmnElement="Event_08ecfyj"> - <dc:Bounds x="1122" y="762" width="36" height="36" /> + <dc:Bounds x="1122" y="872" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1098" y="805" width="85" height="27" /> + <dc:Bounds x="1099" y="915" width="84" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0ftm8b6_di" bpmnElement="Activity_0ftm8b6"> - <dc:Bounds x="1410" y="650" width="100" height="80" /> + <dc:Bounds x="1410" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1xnstqr_di" bpmnElement="Activity_1xnstqr"> - <dc:Bounds x="1580" y="650" width="100" height="80" /> + <dc:Bounds x="1580" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_15f8u0i_di" bpmnElement="Activity_1xirwg3"> - <dc:Bounds x="1220" y="410" width="100" height="80" /> + <dc:Bounds x="1220" y="520" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0xmezab_di" bpmnElement="Activity_0xmezab"> - <dc:Bounds x="1230" y="650" width="100" height="80" /> + <dc:Bounds x="1230" y="760" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_17abdcy_di" bpmnElement="Activity_1j0xkqc"> - <dc:Bounds x="250" y="900" width="100" height="80" /> + <dc:Bounds x="250" y="1010" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0huy5ph_di" bpmnElement="Activity_0huy5ph"> - <dc:Bounds x="390" y="900" width="100" height="80" /> + <dc:Bounds x="390" y="1010" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1tbardv_di" bpmnElement="Activity_1tbardv"> - <dc:Bounds x="560" y="900" width="100" height="80" /> + <dc:Bounds x="560" y="1010" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0kp0sqc_di" bpmnElement="Event_0ocuo1o"> - <dc:Bounds x="752" y="82" width="36" height="36" /> + <dc:Bounds x="752" y="192" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="735" y="125" width="71" height="27" /> + <dc:Bounds x="735" y="235" width="71" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1aesimf_di" bpmnElement="Activity_1aesimf" isExpanded="true"> + <dc:Bounds x="210" y="1240" width="770" height="170" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Flow_1bqk5yt_di" bpmnElement="Flow_1bqk5yt"> + <di:waypoint x="630" y="1344" /> + <di:waypoint x="710" y="1344" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0tw7xsp_di" bpmnElement="Flow_0tw7xsp"> + <di:waypoint x="278" y="1344" /> + <di:waypoint x="380" y="1344" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_075rb1i_di" bpmnElement="Flow_075rb1i"> + <di:waypoint x="480" y="1344" /> + <di:waypoint x="530" y="1344" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0y0r82m_di" bpmnElement="Flow_0y0r82m"> + <di:waypoint x="810" y="1344" /> + <di:waypoint x="892" y="1344" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Event_156ogc4_di" bpmnElement="Event_156ogc4"> + <dc:Bounds x="242" y="1326" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_1n2qjvx_di" bpmnElement="Event_1n2qjvx"> + <dc:Bounds x="892" y="1326" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1eedm9e_di" bpmnElement="Activity_1eedm9e"> + <dc:Bounds x="710" y="1304" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1szd5yp_di" bpmnElement="Activity_1szd5yp"> + <dc:Bounds x="530" y="1304" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0lpw3j7_di" bpmnElement="Activity_0lpw3j7"> + <dc:Bounds x="380" y="1304" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0hioign_di" bpmnElement="Activity_0hioign" isExpanded="true"> + <dc:Bounds x="320" y="1530" width="440" height="140" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Flow_0cvs8zk_di" bpmnElement="Flow_0cvs8zk"> + <di:waypoint x="408" y="1591" /> + <di:waypoint x="473" y="1591" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_01jdnrt_di" bpmnElement="Flow_01jdnrt"> + <di:waypoint x="573" y="1591" /> + <di:waypoint x="672" y="1591" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Activity_1f3cipf_di" bpmnElement="Activity_1f3cipf"> + <dc:Bounds x="473" y="1551" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_18qzt1n_di" bpmnElement="Event_18qzt1n"> + <dc:Bounds x="672" y="1573" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0lvvn7i_di" bpmnElement="Event_0lvvn7i"> + <dc:Bounds x="372" y="1573" width="36" height="36" /> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn index 4debe1fe21..ae81364f90 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17amn3o" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.1.1"> +<bpmn:definitions xmlns:bpmn="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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17amn3o" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0"> <bpmn:process id="DoDeallocateAccessNSSI" name="DoDeallocateAccessNSSI" isExecutable="true"> <bpmn:startEvent id="Event_0seox25" name="Start"> <bpmn:outgoing>Flow_14g5p2j</bpmn:outgoing> @@ -37,7 +37,7 @@ deallocator.preProcessRequest(execution)</bpmn:script> <bpmn:sequenceFlow id="Flow_16hk034" name="No" sourceRef="Gateway_1ypyzn3" targetRef="Activity_0umktii" /> <bpmn:sequenceFlow id="Flow_1she7i5" sourceRef="Activity_0szls0v" targetRef="Activity_0tbndh6" /> <bpmn:intermediateThrowEvent id="Event_0vthuwp" name="Goto Terminate TN FH/MH NSSI"> - <bpmn:incoming>Flow_1lfvp5s</bpmn:incoming> + <bpmn:incoming>Flow_01ssl7f</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_0dpa9td" name="TerminateTnNSSI" /> </bpmn:intermediateThrowEvent> <bpmn:intermediateCatchEvent id="Event_0opsm2p" name="TN FH/MH Termination"> @@ -45,9 +45,8 @@ deallocator.preProcessRequest(execution)</bpmn:script> <bpmn:linkEventDefinition id="LinkEventDefinition_1gactc9" name="TerminateTnNSSI" /> </bpmn:intermediateCatchEvent> <bpmn:sequenceFlow id="Flow_0cj22bs" sourceRef="Event_0opsm2p" targetRef="Activity_0uul9fb" /> - <bpmn:sequenceFlow id="Flow_0412ven" sourceRef="Activity_0qho4pw" targetRef="Activity_03zg1pp" /> - <bpmn:sequenceFlow id="Flow_0tlog6y" sourceRef="Activity_03zg1pp" targetRef="Activity_1ri9jrn" /> - <bpmn:sequenceFlow id="Flow_1lfvp5s" sourceRef="Activity_1v1ra2k" targetRef="Event_0vthuwp" /> + <bpmn:sequenceFlow id="Flow_0412ven" sourceRef="Activity_0qho4pw" targetRef="Gateway_11aiy0x" /> + <bpmn:sequenceFlow id="Flow_1lfvp5s" sourceRef="Activity_1v1ra2k" targetRef="Gateway_0qsknv5" /> <bpmn:scriptTask id="Activity_1i58rru" name="Fetch Related NSSI and Slice profile details" scriptFormat="groovy"> <bpmn:incoming>Flow_1hm17vz</bpmn:incoming> <bpmn:outgoing>Flow_0kt6k2i</bpmn:outgoing> @@ -84,7 +83,7 @@ def deallocator = new DoDeAllocateAccessNSSI() deallocator.performOofAnNfNSSITerminationCall(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:intermediateThrowEvent id="Event_18fpd51" name="Goto Terminate TN FH/MH NSSI"> - <bpmn:incoming>Flow_1x4e0k3</bpmn:incoming> + <bpmn:incoming>Flow_0b3qqvw</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_07j10pb" name="TerminateTnNSSI" /> </bpmn:intermediateThrowEvent> <bpmn:scriptTask id="Activity_1v1ra2k" name="Delete RAN NF NSSI" scriptFormat="groovy"> @@ -117,7 +116,7 @@ deallocator.deallocateAnNfNssi(execution)</bpmn:script> <bpmn:outgoing>Flow_1x4e0k3</bpmn:outgoing> </bpmn:serviceTask> <bpmn:sequenceFlow id="Flow_1bgguw0" sourceRef="Activity_17w3onz" targetRef="Activity_05frw6w" /> - <bpmn:sequenceFlow id="Flow_1x4e0k3" sourceRef="Activity_05frw6w" targetRef="Event_18fpd51" /> + <bpmn:sequenceFlow id="Flow_1x4e0k3" sourceRef="Activity_05frw6w" targetRef="Gateway_0jjou51" /> <bpmn:scriptTask id="Activity_17w3onz" name="Update Job status" scriptFormat="groovy"> <bpmn:incoming>Flow_0vcn5tl</bpmn:incoming> <bpmn:outgoing>Flow_1bgguw0</bpmn:outgoing> @@ -623,14 +622,14 @@ def deallocator = new DoDeAllocateAccessNSSI() deallocator.deleteRanNfSliceProfileInAAI(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:scriptTask id="Activity_03zg1pp" name="Delete TN Slice profiles" scriptFormat="groovy"> - <bpmn:incoming>Flow_0412ven</bpmn:incoming> - <bpmn:outgoing>Flow_0tlog6y</bpmn:outgoing> + <bpmn:incoming>Flow_12wqmdr</bpmn:incoming> + <bpmn:outgoing>Flow_15ok12u</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def deallocator = new DoDeAllocateAccessNSSI() deallocator.deleteTNSliceProfileInAAI(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:scriptTask id="Activity_1ri9jrn" name="Delete RAN NSSI" scriptFormat="groovy"> - <bpmn:incoming>Flow_0tlog6y</bpmn:incoming> + <bpmn:incoming>Flow_183aijy</bpmn:incoming> <bpmn:outgoing>Flow_1nh3x4j</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def deallocator = new DoDeAllocateAccessNSSI() @@ -639,7 +638,7 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmn:callActivity id="Activity_0umktii" name="Modify RAN NF NSSI" calledElement="DoModifyRanNfNssi"> <bpmn:extensionElements> <camunda:in source="anNfNssiId" target="serviceInstanceID" /> - <camunda:in source="anNfSliceProfileId" target="sliceProfileId" /> + <camunda:in source="anNfSliceProfileId" target="SliceProfileId" /> <camunda:in source="msoRequestId" target="msoRequestId" /> <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> @@ -665,13 +664,78 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmn:errorEventDefinition id="ErrorEventDefinition_031y5kl" errorRef="Error_0i5gql0" /> </bpmn:endEvent> <bpmn:sequenceFlow id="Flow_0x71rer" sourceRef="Activity_1wu2d9y" targetRef="Activity_0drkoau" /> + <bpmn:exclusiveGateway id="Gateway_0jjou51" name="Is TN present?" default="Flow_0b3qqvw"> + <bpmn:incoming>Flow_1x4e0k3</bpmn:incoming> + <bpmn:outgoing>Flow_0b3qqvw</bpmn:outgoing> + <bpmn:outgoing>Flow_1yewqtt</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_0b3qqvw" name="Yes" sourceRef="Gateway_0jjou51" targetRef="Event_18fpd51" /> + <bpmn:intermediateThrowEvent id="Event_05q1nj2" name="Goto AAI Updates"> + <bpmn:incoming>Flow_1yewqtt</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_1tasi5v" name="UpdateAAI" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_1yewqtt" name="No" sourceRef="Gateway_0jjou51" targetRef="Event_05q1nj2"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="Gateway_0qsknv5" name="Is TN present?" default="Flow_01ssl7f"> + <bpmn:incoming>Flow_1lfvp5s</bpmn:incoming> + <bpmn:outgoing>Flow_01ssl7f</bpmn:outgoing> + <bpmn:outgoing>Flow_1scubfn</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_01ssl7f" name="Yes" sourceRef="Gateway_0qsknv5" targetRef="Event_0vthuwp" /> + <bpmn:intermediateThrowEvent id="Event_0y39bzp" name="Goto AAI Updates"> + <bpmn:incoming>Flow_1scubfn</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_01g0uqc" name="UpdateAAI" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_1scubfn" name="No" sourceRef="Gateway_0qsknv5" targetRef="Event_0y39bzp"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="Gateway_11aiy0x" name="Is TN present?" default="Flow_12wqmdr"> + <bpmn:incoming>Flow_0412ven</bpmn:incoming> + <bpmn:outgoing>Flow_12wqmdr</bpmn:outgoing> + <bpmn:outgoing>Flow_0r8ldai</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_12wqmdr" name="Yes" sourceRef="Gateway_11aiy0x" targetRef="Activity_03zg1pp" /> + <bpmn:sequenceFlow id="Flow_0r8ldai" name="No" sourceRef="Gateway_11aiy0x" targetRef="Gateway_187nc60"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="Flow_183aijy" sourceRef="Gateway_187nc60" targetRef="Activity_1ri9jrn" /> + <bpmn:parallelGateway id="Gateway_187nc60"> + <bpmn:incoming>Flow_0r8ldai</bpmn:incoming> + <bpmn:incoming>Flow_15ok12u</bpmn:incoming> + <bpmn:outgoing>Flow_183aijy</bpmn:outgoing> + </bpmn:parallelGateway> + <bpmn:sequenceFlow id="Flow_15ok12u" sourceRef="Activity_03zg1pp" targetRef="Gateway_187nc60" /> </bpmn:process> <bpmn:error id="Error_0i5gql0" name="DeallocateWorkflowError" errorCode="2500" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeallocateAccessNSSI"> + <bpmndi:BPMNEdge id="Flow_0x71rer_di" bpmnElement="Flow_0x71rer"> + <di:waypoint x="1275" y="650" /> + <di:waypoint x="1320" y="650" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0k55zuy_di" bpmnElement="Flow_0k55zuy"> + <di:waypoint x="1650" y="215" /> + <di:waypoint x="1650" y="100" /> + <di:waypoint x="1822" y="100" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1658" y="155" width="15" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0vcn5tl_di" bpmnElement="Flow_0vcn5tl"> + <di:waypoint x="1675" y="240" /> + <di:waypoint x="1820" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1739" y="222" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_18y4ab2_di" bpmnElement="Flow_18y4ab2"> + <di:waypoint x="1500" y="240" /> + <di:waypoint x="1625" y="240" /> + </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0omhxaj_di" bpmnElement="Flow_0omhxaj"> <di:waypoint x="238" y="1110" /> - <di:waypoint x="360" y="1110" /> + <di:waypoint x="290" y="1110" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_03fig6p_di" bpmnElement="Flow_03fig6p"> <di:waypoint x="2085" y="880" /> @@ -767,10 +831,6 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <di:waypoint x="1420" y="650" /> <di:waypoint x="1460" y="650" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0x71rer_di" bpmnElement="Flow_0x71rer"> - <di:waypoint x="1275" y="650" /> - <di:waypoint x="1320" y="650" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1s5fdmz_di" bpmnElement="Flow_1s5fdmz"> <di:waypoint x="1130" y="650" /> <di:waypoint x="1175" y="650" /> @@ -810,7 +870,7 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <di:waypoint x="1207" y="1110" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1nh3x4j_di" bpmnElement="Flow_1nh3x4j"> - <di:waypoint x="810" y="1110" /> + <di:waypoint x="840" y="1110" /> <di:waypoint x="880" y="1110" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_15bkzm7_di" bpmnElement="Flow_15bkzm7"> @@ -844,7 +904,7 @@ deallocator.deleteANNSSI(execution)</bpmn:script> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1x4e0k3_di" bpmnElement="Flow_1x4e0k3"> <di:waypoint x="2130" y="240" /> - <di:waypoint x="2232" y="240" /> + <di:waypoint x="2235" y="240" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1bgguw0_di" bpmnElement="Flow_1bgguw0"> <di:waypoint x="1920" y="240" /> @@ -852,15 +912,11 @@ deallocator.deleteANNSSI(execution)</bpmn:script> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1lfvp5s_di" bpmnElement="Flow_1lfvp5s"> <di:waypoint x="2380" y="410" /> - <di:waypoint x="2422" y="410" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0tlog6y_di" bpmnElement="Flow_0tlog6y"> - <di:waypoint x="630" y="1110" /> - <di:waypoint x="710" y="1110" /> + <di:waypoint x="2435" y="410" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0412ven_di" bpmnElement="Flow_0412ven"> - <di:waypoint x="460" y="1110" /> - <di:waypoint x="530" y="1110" /> + <di:waypoint x="390" y="1110" /> + <di:waypoint x="435" y="1110" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0cj22bs_di" bpmnElement="Flow_0cj22bs"> <di:waypoint x="238" y="880" /> @@ -920,25 +976,58 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <di:waypoint x="238" y="410" /> <di:waypoint x="290" y="410" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_18y4ab2_di" bpmnElement="Flow_18y4ab2"> - <di:waypoint x="1500" y="240" /> - <di:waypoint x="1625" y="240" /> + <bpmndi:BPMNEdge id="Flow_0b3qqvw_di" bpmnElement="Flow_0b3qqvw"> + <di:waypoint x="2285" y="240" /> + <di:waypoint x="2362" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2315" y="222" width="18" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0vcn5tl_di" bpmnElement="Flow_0vcn5tl"> - <di:waypoint x="1675" y="240" /> - <di:waypoint x="1820" y="240" /> + <bpmndi:BPMNEdge id="Flow_1yewqtt_di" bpmnElement="Flow_1yewqtt"> + <di:waypoint x="2260" y="265" /> + <di:waypoint x="2260" y="282" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1739" y="222" width="18" height="14" /> + <dc:Bounds x="2268" y="271" width="15" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0k55zuy_di" bpmnElement="Flow_0k55zuy"> - <di:waypoint x="1650" y="215" /> - <di:waypoint x="1650" y="100" /> - <di:waypoint x="1822" y="100" /> + <bpmndi:BPMNEdge id="Flow_01ssl7f_di" bpmnElement="Flow_01ssl7f"> + <di:waypoint x="2485" y="410" /> + <di:waypoint x="2552" y="410" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1658" y="155" width="15" height="14" /> + <dc:Bounds x="2510" y="392" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1scubfn_di" bpmnElement="Flow_1scubfn"> + <di:waypoint x="2460" y="435" /> + <di:waypoint x="2460" y="482" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2468" y="456" width="15" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_12wqmdr_di" bpmnElement="Flow_12wqmdr"> + <di:waypoint x="460" y="1135" /> + <di:waypoint x="460" y="1260" /> + <di:waypoint x="520" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="466" y="1199" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0r8ldai_di" bpmnElement="Flow_0r8ldai"> + <di:waypoint x="485" y="1110" /> + <di:waypoint x="655" y="1110" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="1092" width="15" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_183aijy_di" bpmnElement="Flow_183aijy"> + <di:waypoint x="705" y="1110" /> + <di:waypoint x="740" y="1110" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_15ok12u_di" bpmnElement="Flow_15ok12u"> + <di:waypoint x="620" y="1260" /> + <di:waypoint x="680" y="1260" /> + <di:waypoint x="680" y="1135" /> + </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="Event_0seox25_di" bpmnElement="Event_0seox25"> <dc:Bounds x="202" y="392" width="36" height="36" /> <bpmndi:BPMNLabel> @@ -957,12 +1046,6 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmndi:BPMNShape id="Gateway_1ypyzn3_di" bpmnElement="Gateway_1ypyzn3" isMarkerVisible="true"> <dc:Bounds x="1265" y="385" width="50" height="50" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_1dvx4n9_di" bpmnElement="Event_0vthuwp"> - <dc:Bounds x="2422" y="392" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="2399" y="438" width="82" height="27" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1ekryu8_di" bpmnElement="Event_0opsm2p"> <dc:Bounds x="202" y="862" width="36" height="36" /> <bpmndi:BPMNLabel> @@ -984,15 +1067,15 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmndi:BPMNShape id="Activity_1h4jup8_di" bpmnElement="Activity_0gzrekf"> <dc:Bounds x="1100" y="370" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_18fpd51_di" bpmnElement="Event_18fpd51"> - <dc:Bounds x="2232" y="222" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="2209" y="268" width="82" height="27" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0m43umg_di" bpmnElement="Activity_1v1ra2k"> <dc:Bounds x="2280" y="370" width="100" height="80" /> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_05frw6w_di" bpmnElement="Activity_05frw6w"> + <dc:Bounds x="2030" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0njdei2_di" bpmnElement="Activity_17w3onz"> + <dc:Bounds x="1820" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1i1fknn_di" bpmnElement="Activity_1irtrgt"> <dc:Bounds x="1970" y="370" width="100" height="80" /> </bpmndi:BPMNShape> @@ -1029,21 +1112,94 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmndi:BPMNShape id="Activity_1i9b3oi_di" bpmnElement="Activity_114fx71"> <dc:Bounds x="1330" y="840" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_01s2lve_di" bpmnElement="Activity_0umktii"> - <dc:Bounds x="1400" y="200" width="100" height="80" /> + <bpmndi:BPMNShape id="Event_18fpd51_di" bpmnElement="Event_18fpd51"> + <dc:Bounds x="2362" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2340" y="268" width="81" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_05frw6w_di" bpmnElement="Activity_05frw6w"> - <dc:Bounds x="2030" y="200" width="100" height="80" /> + <bpmndi:BPMNShape id="Event_1dvx4n9_di" bpmnElement="Event_0vthuwp"> + <dc:Bounds x="2552" y="392" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2530" y="438" width="81" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0njdei2_di" bpmnElement="Activity_17w3onz"> - <dc:Bounds x="1820" y="200" width="100" height="80" /> + <bpmndi:BPMNShape id="Gateway_0jjou51_di" bpmnElement="Gateway_0jjou51" isMarkerVisible="true"> + <dc:Bounds x="2235" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2224" y="185" width="73" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Gateway_0g02vzi_di" bpmnElement="Gateway_0g02vzi" isMarkerVisible="true"> - <dc:Bounds x="1625" y="215" width="50" height="50" /> + <bpmndi:BPMNShape id="Event_05q1nj2_di" bpmnElement="Event_05q1nj2"> + <dc:Bounds x="2242" y="282" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1619" y="272" width="63" height="27" /> + <dc:Bounds x="2218" y="328" width="90" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_0qsknv5_di" bpmnElement="Gateway_0qsknv5" isMarkerVisible="true"> + <dc:Bounds x="2435" y="385" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2423" y="361" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0y39bzp_di" bpmnElement="Event_0y39bzp"> + <dc:Bounds x="2442" y="482" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2418" y="528" width="90" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0r4899a_di" bpmnElement="Activity_0qho4pw"> + <dc:Bounds x="290" y="1070" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_11aiy0x_di" bpmnElement="Gateway_11aiy0x" isMarkerVisible="true"> + <dc:Bounds x="435" y="1085" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="424" y="1055" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0b0pl0x_di" bpmnElement="Activity_03zg1pp"> + <dc:Bounds x="520" y="1220" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0dreslj_di" bpmnElement="Activity_1ri9jrn"> + <dc:Bounds x="740" y="1070" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_10923hr_di" bpmnElement="Gateway_187nc60"> + <dc:Bounds x="655" y="1085" width="50" height="50" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0qbd3cz_di" bpmnElement="Activity_0qbd3cz" isExpanded="true"> + <dc:Bounds x="820" y="1310" width="770" height="170" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Flow_0nsc2oc_di" bpmnElement="Flow_0nsc2oc"> + <di:waypoint x="1240" y="1414" /> + <di:waypoint x="1320" y="1414" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1q1450g_di" bpmnElement="Flow_1q1450g"> + <di:waypoint x="888" y="1414" /> + <di:waypoint x="990" y="1414" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0alqcat_di" bpmnElement="Flow_0alqcat"> + <di:waypoint x="1090" y="1414" /> + <di:waypoint x="1140" y="1414" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_035ivcv_di" bpmnElement="Flow_035ivcv"> + <di:waypoint x="1420" y="1414" /> + <di:waypoint x="1502" y="1414" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Event_13wl9ag_di" bpmnElement="Event_13wl9ag"> + <dc:Bounds x="852" y="1396" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0ugnt78_di" bpmnElement="Event_0ugnt78"> + <dc:Bounds x="1502" y="1396" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1mzoss1_di" bpmnElement="Activity_1mzoss1"> + <dc:Bounds x="1320" y="1374" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_055w5hr_di" bpmnElement="Activity_055w5hr"> + <dc:Bounds x="1140" y="1374" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1nr7xyr_di" bpmnElement="Activity_1nr7xyr"> + <dc:Bounds x="990" y="1374" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0jtob0z_di" bpmnElement="Activity_0jtob0z"> <dc:Bounds x="1780" y="610" width="100" height="80" /> </bpmndi:BPMNShape> @@ -1074,6 +1230,26 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <bpmndi:BPMNShape id="Activity_10vgzv9_di" bpmnElement="Activity_0lszayp"> <dc:Bounds x="1720" y="370" width="100" height="80" /> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0c0vkj6_di" bpmnElement="Activity_0c0vkj6" isExpanded="true"> + <dc:Bounds x="930" y="1600" width="440" height="140" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Flow_0bkcs42_di" bpmnElement="Flow_0bkcs42"> + <di:waypoint x="1018" y="1661" /> + <di:waypoint x="1083" y="1661" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1b5mtc4_di" bpmnElement="Flow_1b5mtc4"> + <di:waypoint x="1183" y="1661" /> + <di:waypoint x="1282" y="1661" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Event_1bqq1on_di" bpmnElement="Event_1bqq1on"> + <dc:Bounds x="982" y="1643" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0qb738v_di" bpmnElement="Event_0qb738v"> + <dc:Bounds x="1282" y="1643" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0187ysa_di" bpmnElement="Activity_0187ysa"> + <dc:Bounds x="1083" y="1621" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_115teb9_di" bpmnElement="Activity_115teb9"> <dc:Bounds x="1460" y="610" width="100" height="80" /> </bpmndi:BPMNShape> @@ -1155,72 +1331,18 @@ deallocator.deleteANNSSI(execution)</bpmn:script> <dc:Bounds x="189" y="1135" width="62" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0r4899a_di" bpmnElement="Activity_0qho4pw"> - <dc:Bounds x="360" y="1070" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0b0pl0x_di" bpmnElement="Activity_03zg1pp"> - <dc:Bounds x="530" y="1070" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_01s2lve_di" bpmnElement="Activity_0umktii"> + <dc:Bounds x="1400" y="200" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0dreslj_di" bpmnElement="Activity_1ri9jrn"> - <dc:Bounds x="710" y="1070" width="100" height="80" /> + <bpmndi:BPMNShape id="Gateway_0g02vzi_di" bpmnElement="Gateway_0g02vzi" isMarkerVisible="true"> + <dc:Bounds x="1625" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1619" y="272" width="63" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1m6hsxq_di" bpmnElement="Event_161u9s2"> <dc:Bounds x="1822" y="82" width="36" height="36" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0qbd3cz_di" bpmnElement="Activity_0qbd3cz" isExpanded="true"> - <dc:Bounds x="820" y="1310" width="770" height="170" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="Flow_0nsc2oc_di" bpmnElement="Flow_0nsc2oc"> - <di:waypoint x="1240" y="1414" /> - <di:waypoint x="1320" y="1414" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1q1450g_di" bpmnElement="Flow_1q1450g"> - <di:waypoint x="888" y="1414" /> - <di:waypoint x="990" y="1414" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0alqcat_di" bpmnElement="Flow_0alqcat"> - <di:waypoint x="1090" y="1414" /> - <di:waypoint x="1140" y="1414" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_035ivcv_di" bpmnElement="Flow_035ivcv"> - <di:waypoint x="1420" y="1414" /> - <di:waypoint x="1502" y="1414" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_13wl9ag_di" bpmnElement="Event_13wl9ag"> - <dc:Bounds x="852" y="1396" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_0ugnt78_di" bpmnElement="Event_0ugnt78"> - <dc:Bounds x="1502" y="1396" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1mzoss1_di" bpmnElement="Activity_1mzoss1"> - <dc:Bounds x="1320" y="1374" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_055w5hr_di" bpmnElement="Activity_055w5hr"> - <dc:Bounds x="1140" y="1374" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1nr7xyr_di" bpmnElement="Activity_1nr7xyr"> - <dc:Bounds x="990" y="1374" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0c0vkj6_di" bpmnElement="Activity_0c0vkj6" isExpanded="true"> - <dc:Bounds x="930" y="1600" width="440" height="140" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="Flow_0bkcs42_di" bpmnElement="Flow_0bkcs42"> - <di:waypoint x="1018" y="1661" /> - <di:waypoint x="1083" y="1661" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1b5mtc4_di" bpmnElement="Flow_1b5mtc4"> - <di:waypoint x="1183" y="1661" /> - <di:waypoint x="1282" y="1661" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="Event_1bqq1on_di" bpmnElement="Event_1bqq1on"> - <dc:Bounds x="982" y="1643" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_0qb738v_di" bpmnElement="Event_0qb738v"> - <dc:Bounds x="1282" y="1643" width="36" height="36" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0187ysa_di" bpmnElement="Activity_0187ysa"> - <dc:Bounds x="1083" y="1621" width="100" height="80" /> - </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions> diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java index 2a8852a4bd..57ff837740 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java @@ -40,6 +40,8 @@ public class Resource implements Serializable { private String cvnfModuleCustomizationId; private String instanceName; private String modelInvariantId; + private String modelVersionId; + private String modelCustomizationId; private int processingPriority; private Resource parent; private List<Resource> children; @@ -140,6 +142,21 @@ public class Resource implements Serializable { this.modelInvariantId = modelInvariantId; } + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelCustomizationId() { + return modelCustomizationId; + } + + public void setModelCustomizationId(String modelCustomizationId) { + this.modelCustomizationId = modelCustomizationId; + } public int getProcessingPriority() { return processingPriority == 0 ? (isBaseVfModule() ? Integer.MIN_VALUE + 1 : 0) : processingPriority; diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java index b5ad8d8c03..cb4ee014b7 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java @@ -38,6 +38,8 @@ import org.onap.so.bpmn.infrastructure.workflow.tasks.VrfBondingServiceException import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType; import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration; import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule; +import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork; +import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoPnf; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils; import org.onap.so.client.exception.ExceptionBuilder; @@ -199,6 +201,7 @@ public class ServiceEBBLoader { var serviceResource = new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false, null); serviceResource.setModelInvariantId(serviceInstanceAAI.getModelInvariantId()); + serviceResource.setModelVersionId(serviceInstanceAAI.getModelVersionId()); resourceList.add(serviceResource); traverseServiceInstanceMSOVnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO); traverseServiceInstanceMSOPnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO); @@ -206,8 +209,15 @@ public class ServiceEBBLoader { for (org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network : serviceInstanceMSO .getNetworks()) { aaiResourceIds.add(new Pair<>(WorkflowType.NETWORK, network.getNetworkId())); - resourceList - .add(new Resource(WorkflowType.NETWORK, network.getNetworkId(), false, serviceResource)); + Resource networkResource = + new Resource(WorkflowType.NETWORK, network.getNetworkId(), false, serviceResource); + ModelInfoNetwork modelInfoNetwork = network.getModelInfoNetwork(); + if (modelInfoNetwork != null) { + networkResource.setModelCustomizationId(modelInfoNetwork.getModelCustomizationUUID()); + networkResource.setModelVersionId(modelInfoNetwork.getModelUUID()); + networkResource.setModelCustomizationId(modelInfoNetwork.getModelCustomizationUUID()); + } + resourceList.add(networkResource); } } if (serviceInstanceMSO.getCollection() != null) { @@ -252,6 +262,8 @@ public class ServiceEBBLoader { GenericVnf genericVnf = bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()); Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource); vnfResource.setVnfCustomizationId(genericVnf.getModelCustomizationId()); + vnfResource.setModelCustomizationId(genericVnf.getModelCustomizationId()); + vnfResource.setModelVersionId(genericVnf.getModelVersionId()); resourceList.add(vnfResource); traverseVnfModules(resourceList, vnfResource, aaiResourceIds, vnf); if (vnf.getVolumeGroups() != null) { @@ -272,7 +284,13 @@ public class ServiceEBBLoader { } for (org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf : serviceInstanceMSO.getPnfs()) { aaiResourceIds.add(new Pair<>(WorkflowType.PNF, pnf.getPnfId())); - resourceList.add(new Resource(WorkflowType.PNF, pnf.getPnfId(), false, serviceResource)); + Resource resource = new Resource(WorkflowType.PNF, pnf.getPnfId(), false, serviceResource); + ModelInfoPnf modelInfo = pnf.getModelInfoPnf(); + if (modelInfo != null) { + resource.setModelVersionId(modelInfo.getModelUuid()); + resource.setModelCustomizationId(modelInfo.getModelCustomizationUuid()); + } + resourceList.add(resource); } } @@ -437,6 +455,10 @@ public class ServiceEBBLoader { for (VfModule vfModule : vnf.getVfModules()) { aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId())); Resource resource = new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false, vnfResource); + org.onap.aai.domain.yang.VfModule aaiVfModule = + bbInputSetupUtils.getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId()); + resource.setModelCustomizationId(aaiVfModule.getModelCustomizationId()); + resource.setModelInvariantId(aaiVfModule.getModelInvariantId()); resource.setBaseVfModule(vfModule.getModelInfoVfModule().getIsBaseBoolean()); resourceList.add(resource); } diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java index c383b4a73a..77cd65b946 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java @@ -38,6 +38,7 @@ import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization; import org.onap.so.db.catalog.beans.CvnfcCustomization; import org.onap.so.db.catalog.beans.VfModuleCustomization; import org.onap.so.db.catalog.client.CatalogDbClient; +import org.onap.so.serviceinstancebeans.ModelInfo; import org.onap.so.serviceinstancebeans.Networks; import org.onap.so.serviceinstancebeans.Pnfs; import org.onap.so.serviceinstancebeans.Service; @@ -93,6 +94,11 @@ public class UserParamsServiceTraversal { List<Resource> resourceList = new ArrayList<>(); Resource serviceResource = new Resource(WorkflowType.SERVICE, validate.getModelInfo().getModelVersionId(), false, null); + ModelInfo modelInfo = validate.getModelInfo(); + if (modelInfo != null) { + serviceResource.setModelVersionId(modelInfo.getModelVersionId()); + serviceResource.setModelInvariantId(modelInfo.getModelInvariantUuid()); + } resourceList.add(serviceResource); if (validate.getResources().getVnfs() != null) { setResourceListForVnfs(execution, resourceList, serviceResource, validate); @@ -115,6 +121,11 @@ public class UserParamsServiceTraversal { serviceResource); vnfResource.setProcessingPriority(vnf.getProcessingPriority()); vnfResource.setInstanceName(vnf.getInstanceName()); + ModelInfo modelInfo = vnf.getModelInfo(); + if (modelInfo != null) { + vnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid()); + vnfResource.setModelVersionId(modelInfo.getModelVersionId()); + } resourceList.add(vnfResource); setResourceListForVfModules(execution, resourceList, vnfResource, validate, vnf); } @@ -160,6 +171,11 @@ public class UserParamsServiceTraversal { foundVfModuleOrVG = true; Resource resource = setVfModuleWorkFlowTypeToResourceList(resourceList, vnfResource, vfModuleCustomization, vfModule); + if (vnf.getModelInfo() != null) { + resource.setModelVersionId(vnf.getModelInfo().getModelVersionId()); + } + resource.setVfModuleCustomizationId(vfModuleCustomization.getModelCustomizationUUID()); + resource.setModelCustomizationId(vfModuleCustomization.getModelCustomizationUUID()); setConfigurationWorkFlowTypeToResourceList(resourceList, vnfResource, validate, vnf, vfModule, resource); } } @@ -211,6 +227,11 @@ public class UserParamsServiceTraversal { for (Pnfs pnf : validate.getResources().getPnfs()) { Resource pnfResource = new Resource(WorkflowType.PNF, pnf.getModelInfo().getModelCustomizationId(), false, serviceResource); + ModelInfo modelInfo = pnf.getModelInfo(); + if (modelInfo != null) { + pnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid()); + pnfResource.setModelVersionId(modelInfo.getModelVersionId()); + } pnfResource.setProcessingPriority(pnf.getProcessingPriority()); resourceList.add(pnfResource); } @@ -222,6 +243,11 @@ public class UserParamsServiceTraversal { Resource networkResource = new Resource(WorkflowType.NETWORK, network.getModelInfo().getModelCustomizationId(), false, serviceResource); networkResource.setProcessingPriority(network.getProcessingPriority()); + ModelInfo modelInfo = network.getModelInfo(); + if (modelInfo != null) { + networkResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid()); + networkResource.setModelVersionId(modelInfo.getModelVersionId()); + } resourceList.add(networkResource); } if (requestAction.equals(CREATE_INSTANCE)) { diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java index b950eb41be..3778f64612 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java @@ -40,7 +40,6 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule; import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup; -import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils; import org.onap.so.client.exception.ExceptionBuilder; @@ -117,6 +116,9 @@ public class VnfEBBLoader { if (vnf.getVnfId().equals(vnfId)) { aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId())); Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource); + org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId); + vnfResource.setModelCustomizationId(aaiGenericVnf.getModelCustomizationId()); + vnfResource.setModelVersionId(aaiGenericVnf.getModelVersionId()); resourceList.add(vnfResource); processVfModules(vnf, aaiResourceIds, resourceList, vnfResource, execution); processVolumeGroups(vnf, aaiResourceIds, resourceList, vnfResource); @@ -131,8 +133,11 @@ public class VnfEBBLoader { for (GenericVnf vnf : serviceInstanceMSO.getVnfs()) { if (vnf.getVnfId().equals(vnfId)) { aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId())); - Resource vnfResource = new Resource(WorkflowType.VNF, - bbInputSetupUtils.getAAIGenericVnf(vnfId).getModelCustomizationId(), false, serviceResource); + org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId); + Resource vnfResource = + new Resource(WorkflowType.VNF, aaiGenericVnf.getModelCustomizationId(), false, serviceResource); + vnfResource.setModelCustomizationId(aaiGenericVnf.getModelCustomizationId()); + vnfResource.setModelVersionId(aaiGenericVnf.getModelVersionId()); resourceList.add(vnfResource); processVfModules(vnf, aaiResourceIds, resourceList, vnfResource, execution); processVolumeGroups(vnf, aaiResourceIds, resourceList, vnfResource); @@ -141,10 +146,10 @@ public class VnfEBBLoader { } } - private void findConfigurationsInsideVfModule(DelegateExecution execution, String vnfId, String vfModuleId, - List<Resource> resourceList, Resource vfModuleResource, List<Pair<WorkflowType, String>> aaiResourceIds) { + private void findConfigurationsInsideVfModule(DelegateExecution execution, + org.onap.aai.domain.yang.VfModule aaiVfModule, List<Resource> resourceList, Resource vfModuleResource, + List<Pair<WorkflowType, String>> aaiResourceIds) { try { - org.onap.aai.domain.yang.VfModule aaiVfModule = bbInputSetupUtils.getAAIVfModule(vnfId, vfModuleId); AAIResultWrapper vfModuleWrapper = new AAIResultWrapper( new AAICommonObjectMapperProvider().getMapper().writeValueAsString(aaiVfModule)); Optional<Relationships> relationshipsOp; @@ -166,11 +171,14 @@ public class VnfEBBLoader { aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId())); Resource vfModuleResource = new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false, vnfResource); - Optional.ofNullable(vfModule.getModelInfoVfModule()).map(ModelInfoVfModule::getIsBaseBoolean) - .ifPresent(vfModuleResource::setBaseVfModule); + org.onap.aai.domain.yang.VfModule aaiVfModule = + bbInputSetupUtils.getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId()); + vfModuleResource.setModelInvariantId(aaiVfModule.getModelInvariantId()); + vfModuleResource.setModelCustomizationId(aaiVfModule.getModelCustomizationId()); + vfModuleResource.setBaseVfModule(aaiVfModule.isIsBaseVfModule()); resourceList.add(vfModuleResource); - findConfigurationsInsideVfModule(execution, vnf.getVnfId(), vfModule.getVfModuleId(), resourceList, - vfModuleResource, aaiResourceIds); + findConfigurationsInsideVfModule(execution, aaiVfModule, resourceList, vfModuleResource, + aaiResourceIds); } } } diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java index ff6c113af3..dc77ea1f0c 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java @@ -24,12 +24,10 @@ import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; -import org.apache.logging.log4j.util.Strings; import org.onap.so.bpmn.common.BBConstants; import org.onap.so.bpmn.common.BuildingBlockExecution; -import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulatorListenerRunner; import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator; -import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; +import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource; import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock; import org.onap.so.db.catalog.beans.PnfResourceCustomization; import org.onap.so.db.catalog.beans.Service; @@ -40,7 +38,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; @Component public class SkipCDSBuildingBlockListener implements PreFlowManipulator { @@ -76,43 +73,37 @@ public class SkipCDSBuildingBlockListener implements PreFlowManipulator { @Override public void run(List<ExecuteBuildingBlock> flowsToExecute, ExecuteBuildingBlock currentBB, BuildingBlockExecution execution) { - String customizationUUID = currentBB.getBuildingBlock().getKey(); + String resourceKey = currentBB.getBuildingBlock().getKey(); + List<Resource> resources = execution.getVariable("resources"); + Resource resource = resources.stream().filter(r -> resourceKey.equals(r.getResourceId())).findFirst() + .orElseThrow(() -> new IllegalArgumentException("Resource not found for key:" + resourceKey)); - if ("SERVICE".equalsIgnoreCase(currentBB.getBuildingBlock().getBpmnScope())) { - String modelUUID = currentBB.getRequestDetails().getModelInfo().getModelUuid(); - Service service = catalogDbClient.getServiceByID(modelUUID); - currentSequenceSkipCheck(execution, service.getSkipPostInstConf()); - } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("VNF") - && containsIgnoreCaseAction(currentBB, vnfActions)) { - List<VnfResourceCustomization> vnfResourceCustomizations = - catalogDbClient.getVnfResourceCustomizationByModelUuid( - currentBB.getRequestDetails().getModelInfo().getModelUuid()); - if (!CollectionUtils.isEmpty(vnfResourceCustomizations)) { - VnfResourceCustomization vrc = catalogDbClient.findVnfResourceCustomizationInList(customizationUUID, - vnfResourceCustomizations); - if (null != vrc) { - logger.debug("getSkipPostInstConf value: " + vrc.getSkipPostInstConf().booleanValue()); - boolean skipConfigVNF = vrc.getSkipPostInstConf().booleanValue(); - currentSequenceSkipCheck(execution, skipConfigVNF); - } + String scope = currentBB.getBuildingBlock().getBpmnScope(); + if ("SERVICE".equalsIgnoreCase(scope)) { + Service service = catalogDbClient.getServiceByID(resource.getModelVersionId()); + currentSequenceSkipCheck(execution, service.getSkipPostInstConf()); + } else if ("VNF".equalsIgnoreCase(scope) && containsIgnoreCaseAction(currentBB, vnfActions)) { + VnfResourceCustomization vrc = catalogDbClient + .getVnfResourceCustomizationByModelCustomizationUUID(resource.getModelCustomizationId()); + if (vrc != null) { + logger.debug("getSkipPostInstConf value: " + vrc.getSkipPostInstConf()); + boolean skipConfigVNF = vrc.getSkipPostInstConf(); + currentSequenceSkipCheck(execution, skipConfigVNF); } } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("VFModule") && containsIgnoreCaseAction(currentBB, vFModuleAction)) { - - VfModuleCustomization vfc = - catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(customizationUUID); - + VfModuleCustomization vfc = catalogDbClient + .getVfModuleCustomizationByModelCuztomizationUUID(resource.getModelCustomizationId()); if (null != vfc) { logger.debug("getSkipPostInstConf value: " + vfc.getSkipPostInstConf().booleanValue()); boolean skipVfModule = vfc.getSkipPostInstConf(); currentSequenceSkipCheck(execution, skipVfModule); } - } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("PNF") && containsIgnoreCaseAction(currentBB, pnfActions)) { - PnfResourceCustomization pnfResourceCustomization = - catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(customizationUUID); + PnfResourceCustomization pnfResourceCustomization = catalogDbClient + .getPnfResourceCustomizationByModelCustomizationUUID(resource.getModelCustomizationId()); if (null != pnfResourceCustomization) { logger.debug("getSkipPostInstConf value: " + pnfResourceCustomization.getSkipPostInstConf()); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java index 52196aae49..a044944f29 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java @@ -409,6 +409,10 @@ public class WorkflowActionTest extends BaseTaskTest { serviceInstanceMSO.getVnfs().add(vnf); + VfModule aaiVfModule = new VfModule(); + aaiVfModule.setIsBaseVfModule(false); + + doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any()); doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); @@ -932,6 +936,10 @@ public class WorkflowActionTest extends BaseTaskTest { serviceInstanceMSO.getVnfs().add(vnf); serviceInstanceMSO.getPnfs().add(pnf); + VfModule aaiVfModule = new VfModule(); + aaiVfModule.setIsBaseVfModule(false); + + doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any()); doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); @@ -1013,6 +1021,10 @@ public class WorkflowActionTest extends BaseTaskTest { serviceInstanceMSO.getVnfs().add(vnf); + VfModule aaiVfModule = new VfModule(); + aaiVfModule.setIsBaseVfModule(false); + + doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any()); doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); @@ -1104,6 +1116,11 @@ public class WorkflowActionTest extends BaseTaskTest { serviceInstanceMSO.getVnfs().add(vnf); + org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule(); + aaiVfModule.setIsBaseVfModule(false); + + doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any()); + doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId()); doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource, @@ -1151,21 +1168,26 @@ public class WorkflowActionTest extends BaseTaskTest { vfModule2.setVfModuleId("vfModule2"); vnf.getVfModules().add(vfModule2); serviceInstanceMSO.getVnfs().add(vnf); - VfModule vfModuleAAI = new VfModule(); - vfModuleAAI.setVfModuleId("vfModule2"); + VfModule vfModuleAAI1 = new VfModule(); + vfModuleAAI1.setIsBaseVfModule(false); + VfModule vfModuleAAI2 = new VfModule(); + vfModuleAAI2.setIsBaseVfModule(false); + vfModuleAAI2.setVfModuleId("vfModule2"); RelationshipList relationshipList = new RelationshipList(); Relationship relationship = new Relationship(); relationshipList.getRelationship().add(relationship); - vfModuleAAI.setRelationshipList(relationshipList); + vfModuleAAI2.setRelationshipList(relationshipList); Relationships relationships = new Relationships("abc"); Configuration config = new Configuration(); config.setConfigurationId("configId"); Optional<Configuration> configOp = Optional.of(config); Optional<Relationships> relationshipsOp = Optional.of(relationships); + doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId()); doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class)); doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class)); - doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2"); + doReturn(vfModuleAAI1).when(bbSetupUtils).getAAIVfModule("1234", "vfModule1"); + doReturn(vfModuleAAI2).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2"); doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource, diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java index 2725626c1a..76763e8ca8 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java @@ -239,6 +239,9 @@ public class ServiceEBBLoaderTest extends BaseTaskTest { aaiConfiguration2.setConfigurationId("testConfigurationId2"); aaiConfiguration2.setRelationshipList(relationshipList1); + org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule(); + aaiVfModule.setIsBaseVfModule(true); + try { doReturn(genericVnfAai).when(mockBbInputSetupUtils).getAAIGenericVnf(genericVnf.getVnfId()); doReturn(serviceInstanceAAI).when(mockBbInputSetupUtils).getAAIServiceInstanceById(resourceId); @@ -247,6 +250,7 @@ public class ServiceEBBLoaderTest extends BaseTaskTest { .getConfiguration("testConfigurationId"); doReturn(Optional.of(aaiConfiguration2)).when(mockAaiConfigurationResources) .getConfiguration("testConfigurationId2"); + doReturn(aaiVfModule).when(mockBbInputSetupUtils).getAAIVfModule(any(), any()); serviceEBBLoader.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds); assertEquals(8, resourceCounter.size()); assertTrue(resourceCounter.get(2).isBaseVfModule()); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java index 78a9628243..2775c6d7b9 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java @@ -47,12 +47,14 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.only; public class VnfEBBLoaderTest { private String serviceId; private String vnfId; + private String vfModuleId; private BBInputSetupUtils bbInputSetupUtils; private BBInputSetup bbInputSetup; private WorkflowActionExtractResourcesAAI workflowActionUtils; @@ -67,6 +69,7 @@ public class VnfEBBLoaderTest { public void setup() { serviceId = "service123"; vnfId = "vnf123"; + vfModuleId = "vfModule123"; serviceInstanceAAI = mock(org.onap.aai.domain.yang.ServiceInstance.class); serviceInstanceMSO = mock(ServiceInstance.class); bbInputSetupUtils = mock(BBInputSetupUtils.class); @@ -95,11 +98,19 @@ public class VnfEBBLoaderTest { GenericVnf genericVnf = mock(GenericVnf.class); doReturn(vnfId).when(genericVnf).getVnfId(); + org.onap.aai.domain.yang.GenericVnf aaiVnf = mock(org.onap.aai.domain.yang.GenericVnf.class); + doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(vnfId); + VfModule vfModule = mock(VfModule.class); + doReturn(vfModuleId).when(vfModule).getVfModuleId(); ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule(); modelInfoVfModule.setIsBaseBoolean(true); doReturn(modelInfoVfModule).when(vfModule).getModelInfoVfModule(); + org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule(); + aaiVfModule.setIsBaseVfModule(true); + doReturn(aaiVfModule).when(bbInputSetupUtils).getAAIVfModule(vnfId, vfModuleId); + doReturn(serviceInstanceAAI).when(bbInputSetupUtils).getAAIServiceInstanceById(serviceId); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); doReturn(List.of(genericVnf)).when(serviceInstanceMSO).getVnfs(); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java index b23147e351..1fbee2dbc8 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java @@ -24,6 +24,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake; import org.junit.Before; import org.junit.Test; @@ -34,6 +35,8 @@ import org.mockito.junit.MockitoJUnitRunner; import org.onap.so.bpmn.common.BBConstants; import org.onap.so.bpmn.common.BuildingBlockExecution; import org.onap.so.bpmn.common.DelegateExecutionImpl; +import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource; +import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType; import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock; import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock; import org.onap.so.db.catalog.beans.PnfResourceCustomization; @@ -41,7 +44,6 @@ import org.onap.so.db.catalog.beans.Service; import org.onap.so.db.catalog.beans.VfModuleCustomization; import org.onap.so.db.catalog.beans.VnfResourceCustomization; import org.onap.so.db.catalog.client.CatalogDbClient; -import org.onap.so.serviceinstancebeans.ModelInfo; import org.onap.so.serviceinstancebeans.RequestDetails; @RunWith(MockitoJUnitRunner.Silent.class) @@ -51,25 +53,24 @@ public class SkipCDSBuildingBlockListenerTest { private static final String VNF_SCOPE = "VNF"; private static final String VF_SCOPE = "VFModule"; private static final String PNF_SCOPE = "pnf"; - private static final String TEST_MODELUUID = "123456789"; private static final String VNF_TEST_ACTION = "VnfConfigAssign"; private static final String VFModule_TEST_ACTION = "VfModuleConfigAssign"; private static final String PNFModule_TEST_ACTION = "config-assign"; - private static final String MODELCUSTOMIZATIONUUID = "123456789"; + private static final String SERVICE_MODEL_VERSION_ID = UUID.randomUUID().toString(); + private static final String VNF_MODEL_CUSTOMIZATION_ID = UUID.randomUUID().toString(); + private static final String VF_MODULE_CUSTOMIZATION_ID = UUID.randomUUID().toString(); + private static final String PNF_CUSTOMIZATION_ID = UUID.randomUUID().toString(); private static final String BBNAME = "ControllerExecutionBB"; private static final boolean ISFIRST = true; - private int actual; private List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>(); - private List<VnfResourceCustomization> vnfResourceCustomization; - private List<VfModuleCustomization> vfModuleCustomization; - private ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock(); + private ExecuteBuildingBlock executeBuildingBlock; private RequestDetails reqDetail = new RequestDetails(); private BuildingBlockExecution buildingBlockExecution = new DelegateExecutionImpl(new DelegateExecutionFake()); - private VnfResourceCustomization vnfCust = new VnfResourceCustomization(); - private VfModuleCustomization vfCust = new VfModuleCustomization(); - private PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization(); - private BuildingBlock buildingBlock = new BuildingBlock(); + private VnfResourceCustomization vnfCust; + private VfModuleCustomization vfCust; + private PnfResourceCustomization pnfResourceCustomization; + private BuildingBlock buildingBlock; @InjectMocks private SkipCDSBuildingBlockListener skipCDSBuildingBlockListener; @@ -78,10 +79,27 @@ public class SkipCDSBuildingBlockListenerTest { @Before public void before() { - ModelInfo model = new ModelInfo(); - model.setModelUuid(TEST_MODELUUID); - reqDetail.setModelInfo(model); - executeBuildingBlock.setRequestDetails(reqDetail); + executeBuildingBlock = new ExecuteBuildingBlock(); + buildingBlock = new BuildingBlock(); + + ArrayList<Resource> resources = new ArrayList<>(); + Resource service = new Resource(WorkflowType.SERVICE, SERVICE_MODEL_VERSION_ID, false, null); + service.setModelVersionId(SERVICE_MODEL_VERSION_ID); + resources.add(service); + Resource vnf = new Resource(WorkflowType.VNF, VNF_MODEL_CUSTOMIZATION_ID, false, null); + vnf.setModelCustomizationId(VNF_MODEL_CUSTOMIZATION_ID); + resources.add(vnf); + Resource vfModule = new Resource(WorkflowType.VFMODULE, VF_MODULE_CUSTOMIZATION_ID, false, null); + vfModule.setModelCustomizationId(VF_MODULE_CUSTOMIZATION_ID); + resources.add(vfModule); + Resource pnf = new Resource(WorkflowType.PNF, PNF_CUSTOMIZATION_ID, false, null); + pnf.setModelCustomizationId(PNF_CUSTOMIZATION_ID); + resources.add(pnf); + buildingBlockExecution.setVariable("resources", resources); + + vnfCust = new VnfResourceCustomization(); + vfCust = new VfModuleCustomization(); + pnfResourceCustomization = new PnfResourceCustomization(); } @Test @@ -93,133 +111,83 @@ public class SkipCDSBuildingBlockListenerTest { @Test public void testSkipCDSforService() { - setBuildingBlockAndCurrentSequence(SERVICE_SCOPE, "service-config-assign", 0); - Service service = new Service(); - when(catalogDbClient.getServiceByID(TEST_MODELUUID)).thenReturn(service); + setBuildingBlockAndCurrentSequence(SERVICE_SCOPE, "service-config-assign", SERVICE_MODEL_VERSION_ID, 0); + when(catalogDbClient.getServiceByID(SERVICE_MODEL_VERSION_ID)).thenReturn(new Service()); skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(1, actual); + assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForVNFToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0); - vnfResourceCustomization = getVnfResourceCustomizationList(true); + setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, VNF_MODEL_CUSTOMIZATION_ID, 0); + when(catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(VNF_MODEL_CUSTOMIZATION_ID)) + .thenReturn(vnfCust); - when(catalogDbClient.getVnfResourceCustomizationByModelUuid( - executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid())) - .thenReturn(vnfResourceCustomization); - when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(), - vnfResourceCustomization)).thenReturn(vnfCust); - - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(1, actual); - + assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForVNFNotToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0); - vnfResourceCustomization = getVnfResourceCustomizationList(false); - - when(catalogDbClient.getVnfResourceCustomizationByModelUuid( - executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid())) - .thenReturn(vnfResourceCustomization); - when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(), - vnfResourceCustomization)).thenReturn(vnfCust); + setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, VNF_MODEL_CUSTOMIZATION_ID, 0); + vnfCust.setSkipPostInstConf(false); + when(catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(VNF_MODEL_CUSTOMIZATION_ID)) + .thenReturn(vnfCust); - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(0, actual); - + assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForVFToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0); - vfModuleCustomization = getVfModuleCustomizationList(true); - - when(catalogDbClient - .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey())) - .thenReturn(vfCust); + setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, VF_MODULE_CUSTOMIZATION_ID, 0); + when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(VF_MODULE_CUSTOMIZATION_ID)) + .thenReturn(vfCust); - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(1, actual); - + assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForVFNotToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0); - vfModuleCustomization = getVfModuleCustomizationList(false); - + setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, VF_MODULE_CUSTOMIZATION_ID, 0); + vfCust.setSkipPostInstConf(false); when(catalogDbClient .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey())) .thenReturn(vfCust); - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(0, actual); - + assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForPNFToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0); - pnfResourceCustomization = getPnfResourceCustomization(true); - - when(catalogDbClient - .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey())) - .thenReturn(pnfResourceCustomization); + setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, PNF_CUSTOMIZATION_ID, 0); + when(catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(PNF_CUSTOMIZATION_ID)) + .thenReturn(pnfResourceCustomization); - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(1, actual); - + assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } @Test public void testProcessForPNFNotToSkipCDSBB() { - // given - setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0); - pnfResourceCustomization = getPnfResourceCustomization(false); - - when(catalogDbClient - .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey())) - .thenReturn(pnfResourceCustomization); + setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, PNF_CUSTOMIZATION_ID, 0); + pnfResourceCustomization.setSkipPostInstConf(false); + when(catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(PNF_CUSTOMIZATION_ID)) + .thenReturn(pnfResourceCustomization); - // when skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution); - // then - actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE); - assertEquals(0, actual); - + assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE)); } /** @@ -229,37 +197,13 @@ public class SkipCDSBuildingBlockListenerTest { * @param action * @param squence */ - private void setBuildingBlockAndCurrentSequence(String scope, String action, int sequence) { + private void setBuildingBlockAndCurrentSequence(String scope, String action, String key, int sequence) { buildingBlock.setBpmnScope(scope); buildingBlock.setBpmnAction(action); buildingBlock.setBpmnFlowName("ControllerExecutionBB"); - buildingBlock.setKey(MODELCUSTOMIZATIONUUID); + buildingBlock.setKey(key); executeBuildingBlock.setBuildingBlock(buildingBlock); buildingBlockExecution.setVariable(BBConstants.G_CURRENT_SEQUENCE, sequence); - - } - - private List<VnfResourceCustomization> getVnfResourceCustomizationList(boolean setSkippost) { - List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>(); - vnfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID); - vnfCust.setSkipPostInstConf(setSkippost); - vnfResourceCustomizations.add(vnfCust); - return vnfResourceCustomizations; - } - - private List<VfModuleCustomization> getVfModuleCustomizationList(boolean setSkippost) { - List<VfModuleCustomization> vfModuleCustomizations = new ArrayList<>(); - vfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID); - vfCust.setSkipPostInstConf(setSkippost); - vfModuleCustomizations.add(vfCust); - return vfModuleCustomizations; - } - - private PnfResourceCustomization getPnfResourceCustomization(boolean setSkippost) { - PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization(); - pnfResourceCustomization.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID); - pnfResourceCustomization.setSkipPostInstConf(setSkippost); - return pnfResourceCustomization; } } diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java index 5146685058..df137d0c01 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java @@ -56,4 +56,7 @@ public class ServiceInfo implements Serializable { private String pLMNIdList; private String actionType; + + private String resourceSharingLevel; + } diff --git a/docs/developer_info/E2E_Network_Slicing_Understanding.rst b/docs/developer_info/E2E_Network_Slicing_Understanding.rst new file mode 100644 index 0000000000..169dd64a79 --- /dev/null +++ b/docs/developer_info/E2E_Network_Slicing_Understanding.rst @@ -0,0 +1,111 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2021 Wipro Ltd. + +E2E Network Slicing +=================== +The objective of this use case is to realize **End-to-End 5G Network +Slicing** using ONAP. An End-to-End Network Slice consists of RAN (Radio +Access Network), Transport Network (TN) and Core Network (CN) slice +sub-nets. This use case intends to demonstrate the modeling, +orchestration (life cycle and resources) and assurance of a network +slice which are implemented in alignment with relevant standards. + +Overall High level view for ONAP-based Slice Management +======================================================= + +Architecture Choice +------------------- + +3GPP(TS 28.801) defines three layer slice management functions which include: + +CSMF(Communication Service Management Function): + +- Responsible for translating the communication service related requirement to network slice related requirements. + +- Communicate with Network Slice Management Function (NSMF). + +NSMF(Network Slice Management Function): + +- Responsible for management and orchestration of NSI. + +- Derive network slice subnet related requirements from network slice related requirements. + +- Communicate with the Network Slice Subnet Management Function (NSSMF) and Communication Service Management Function. + +NSSMF(Network Slice Subnet Management Function): + +- Responsible for management and orchestration of NSSI. + +- Communicate with the NSMF. + +.. image:: ../images/e2e-network-slicing-architecture.png + +To realize the three layers of the slice management function, we need to decide whether to implement CSMF, NSMF or NSMF within ONAP, or use the external CSMF, NSMF or NSSMF. This implies that for ONAP-based network slice management, we have different choices from an architectural perspective: + +1. Implement CSMF, NSMF, NSSMF all within ONAP; + +2. Connect an external CSMF from the Northbound, Implement NSMF and NSSMF within ONAP; + +3. Connect an external CSMF from the Northbound, Implement NSMF within ONAP, Connect a 3rd party NSSMF from the Southbound; + +4. Implement CSMF, NSMF within ONAP, Connect a 3rd party NSSMF from then Southbound. + +5. Use external CSMF and NSMF, only implement NSSMF within ONAP. + +.. image:: ../images/architecture-choices-e2e-slicing.png + +Slice Management Functions - Realization in SO +---------------------------------------------- + +- CSMF and NSMF is realized within ONAP (enhancement in Frankfurt functionality), and the NB interfaces is standardized using ExtAPI. + +- All 3 NSSMFs shall be realized within ONAP (From Guilin). + +- ONAP acting as NSMF shall also interact with external RAN and Transport NSSMF using 3GPP APIs + +- CSMF reliazed within SO receives service requirements from EXT-API, which translates service requirements to slice profile(NST selection) and sends request to NSMF for slice allocation. + +- NSMF reliazed within SO receives request for slice allocation (slice profile, S-NSSAI, NST) and determines slice instantiation/modification (with OOF) to fulfil the slice allocation request. + +- NSSMF reliazed within SO receive information from NSMF & trigger RAN/Core/Transport NSSMF for orchestration actions. + +Network Slice Instance (NSI) Life Cycle View +-------------------------------------------- + +Design and pre-provision: Creation of necessary slice/slice sub-net templates. Creation, activation, deactivation and termination of NSI, including its constituent slice sub-nets (RAN, Core and Transport) + +3GPP Specification (3GPP TS 28.530) describes management aspects of a Network Slice Instance, which can be described by the four phases: + +Preparation: The preparation phase includes network slice design, network slice capacity planning, on-boarding and evaluation of the network functions, preparing the network environment and other necessary preparations required to be done before the creation of an NSI + +Commisioning: NSI provisioning in the commissioning phase includes creation of the NSI. During NSI creation all needed resources are allocated and configured to satisfy the network slice requirements. The creation of an NSI can include creation and/or modification of the NSI constituents + +Operation: The Operation phase includes the activation, supervision, performance reporting (e.g. for KPI monitoring), resource capacity planning, modification,and de-activation of an NSI. + +Decommissioning: Network slice instance provisioning in the decommissioning phase includes decommissioning of non-shared constituents if required and removing the NSI specific configuration from the shared constituents. After the decommissioning phase, the NSI is terminated and does not exist anymore. The ONAP-based NSI lifecycle management will finally provide the demonstration of all these phases. + +The ONAP-based NSI lifecycle management will finally provide the demonstration of all these phases. + +.. image:: ../images/lifecycle-of-network-slice-instance.png + +Support for Option1 &Option2 in E2E Network Slicing +--------------------------------------------------- + +ONAP E2E Network Slicing option 1 and 2 differs on the RAN and FH/BH relationship. + +- In option 1, RAN NSSMF will decide FH/MH requirements and send to TN side, so RAN NSST will nest FH/MH NSST, and slice profile requirements will contain not only RAN side requirements but also FH/MH. + +Template design for option 1: https://wiki.onap.org/display/DW/Template+Design+for+Option+1 + +.. image:: ../images/slicing-option1.png + +- In option 2, FH and MH are independent requirments when doing E2E requirements decomposition. Detailed background of option 1 and 2, please see E2E Network Slicing Use Case in R7 Guilin. + +Template design for option 2: https://wiki.onap.org/display/DW/Template+Design+for+Option2 + +.. image:: ../images/slicing-option2.png + +3 domain combination solution -Endpoint +--------------------------------------- +In order to enable 3 subnet connectivity, making end-to-end forwarding and control plane interacting, in slicing services, we need slicing interworking identifier and information to tell how RAN and Core connect with TN. Slicing interworking identifier(in ONAP is vlan Id, allocated by NSMF) is used to isolate differerent service datas, and identify the unique slicing service across RAN, TN and Core, 1 S-NSSAI will need to be assigned with 1 slicing interworking identifier(vlan Id). The slicing interworking information is used as bridges to connect RAN/Core and TN,it should be RAN/Core side outgress and TN ingress, like port, ipAddress, next hops and etc. diff --git a/docs/images/architecture-choices-e2e-slicing.png b/docs/images/architecture-choices-e2e-slicing.png Binary files differnew file mode 100644 index 0000000000..b240215017 --- /dev/null +++ b/docs/images/architecture-choices-e2e-slicing.png diff --git a/docs/images/e2e-network-slicing-architecture.png b/docs/images/e2e-network-slicing-architecture.png Binary files differnew file mode 100644 index 0000000000..922419d0a8 --- /dev/null +++ b/docs/images/e2e-network-slicing-architecture.png diff --git a/docs/images/lifecycle-of-network-slice-instance.png b/docs/images/lifecycle-of-network-slice-instance.png Binary files differnew file mode 100644 index 0000000000..0959783b89 --- /dev/null +++ b/docs/images/lifecycle-of-network-slice-instance.png diff --git a/docs/images/slicing-option1.png b/docs/images/slicing-option1.png Binary files differnew file mode 100644 index 0000000000..e19a257828 --- /dev/null +++ b/docs/images/slicing-option1.png diff --git a/docs/images/slicing-option2.png b/docs/images/slicing-option2.png Binary files differnew file mode 100644 index 0000000000..945c7c5612 --- /dev/null +++ b/docs/images/slicing-option2.png diff --git a/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java b/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java index 5f9be78491..eaea1abeaa 100644 --- a/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java +++ b/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java @@ -20,10 +20,13 @@ package org.onap.so.client.oof; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +import org.apache.logging.log4j.util.Strings; import org.junit.Test; import org.onap.so.client.exception.BadResponseException; @@ -55,4 +58,41 @@ public class OofValidatorTest { map.put("statusMessage", "a"); new OofValidator().validateDemandsResponse(map); } + + @Test + public void validateSolution_success() throws Exception { + String json = "{\"value\" : \"test1\"}"; + new OofValidator().validateSolution(json); + } + + @Test + public void validateSolution_EmptyResponse() { + try { + new OofValidator().validateSolution(""); + } catch (BadResponseException e) { + assertThat(e.getMessage()).contains("oofs asynchronous response is empty"); + } + } + + @Test + public void validateSolution_serviceExceptionWithMessage() { + String json = "{\"serviceException\" : {\"text\" : \"serviceExceptionOccurred\"}}"; + try { + new OofValidator().validateSolution(json); + fail("Exception should be thrown"); + } catch (BadResponseException e) { + assertThat(e.getMessage()).contains("serviceExceptionOccurred"); + } + } + + @Test + public void validateSolution_serviceExceptionWithEmptyMessage() { + String json = "{\"serviceException\" : {\"text\" : \"\"}}"; + try { + new OofValidator().validateSolution(json); + fail("Exception should be thrown"); + } catch (BadResponseException e) { + assertThat(e.getMessage()).contains("error message not provided"); + } + } } |