diff options
26 files changed, 2302 insertions, 721 deletions
diff --git a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java index 8d6e133a1c..24c9b0f85d 100644 --- a/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java +++ b/bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java @@ -28,7 +28,10 @@ import javax.annotation.PostConstruct; import org.camunda.bpm.application.PreUndeploy; import org.camunda.bpm.application.ProcessApplicationInfo; import org.camunda.bpm.engine.ProcessEngine; +import org.camunda.bpm.engine.RepositoryService; +import org.camunda.bpm.engine.repository.Deployment; import org.camunda.bpm.engine.repository.DeploymentBuilder; +import org.camunda.bpm.engine.repository.ProcessDefinition; import org.onap.logging.filter.spring.MDCTaskDecorator; import org.onap.so.bpmn.common.DefaultToShortClassNameBeanNameGenerator; import org.onap.so.db.catalog.beans.Workflow; @@ -76,6 +79,9 @@ public class MSOInfrastructureApplication { @Value("${mso.async.queue-capacity}") private int queueCapacity; + @Value("${mso.bpmn-history-ttl:14}") + private Integer bpmnHistoryTtl; + private static final String LOGS_DIR = "logs_dir"; private static final String BPMN_SUFFIX = ".bpmn"; private static final String SDC_SOURCE = "sdc"; @@ -102,8 +108,10 @@ public class MSOInfrastructureApplication { @PostConstruct public void postConstruct() { try { - DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment(); + RepositoryService repositoryService = processEngine.getRepositoryService(); + DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); deployCustomWorkflows(deploymentBuilder); + setBpmnTTL(repositoryService, bpmnHistoryTtl); } catch (Exception e) { logger.warn("Unable to invoke deploymentBuilder ", e); } @@ -149,4 +157,18 @@ public class MSOInfrastructureApplication { logger.warn("Unable to deploy custom workflows ", e); } } + + private void setBpmnTTL(RepositoryService repositoryService, Integer ttl) { + List<Deployment> deployments = repositoryService.createDeploymentQuery().list(); + for (Deployment deployment : deployments) { + List<ProcessDefinition> processDefinitions = + repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list(); + for (ProcessDefinition processDefinition : processDefinitions) { + if (!ttl.equals(processDefinition.getHistoryTimeToLive())) { + logger.info("Setting ttl {} for processdefinition {}", ttl, processDefinition.getName()); + repositoryService.updateProcessDefinitionHistoryTimeToLive(processDefinition.getId(), ttl); + } + } + } + } } 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 07a23481d7..f17bfc2938 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 @@ -153,6 +153,52 @@ public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfil public void createSliceProfilesInAai(DelegateExecution execution) { + String serviceCategory = execution.getVariable("serviceCategory") + if (execution.getVariable("IsRANNfAlonePresent")) { + ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance(); + String ANNF_sliceProfileInstanceId = UUID.randomUUID().toString() + String ANNF_sliceProfileId = UUID.randomUUID().toString() + execution.setVariable("ANNF_sliceProfileInstanceId", ANNF_sliceProfileInstanceId) + execution.setVariable("ANNF_sliceProfileId", ANNF_sliceProfileId) + SliceProfiles ANNF_SliceProfiles = new SliceProfiles() + SliceProfile ANNF_SliceProfile = createSliceProfile("AN_NF", execution) + ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile) + logger.debug("sliceProfiles : 1. " + ANNF_SliceProfiles.toString()) + //ANNF slice profile instance creation + ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId) + String sliceInstanceName = "sliceprofile_" + ANNF_sliceProfileId + ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName) + String serviceType = execution.getVariable("sst") as String + ANNF_sliceProfileInstance.setServiceType(serviceType) + String serviceStatus = "deactivated" + ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus) + String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "pLMNIdList") + ANNF_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0)) + String serviceRole = "slice-profile-instance" + ANNF_sliceProfileInstance.setServiceRole(serviceRole) + ArrayList<String> snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String) + String snssai = snssaiList.get(0) + ANNF_sliceProfileInstance.setEnvironmentContext(snssai) + ANNF_sliceProfileInstance.setWorkloadContext("AN_NF") + ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles) + String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "resourceSharingLevel") + ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf) + logger.debug("completed ANNF sliceprofileinstance build : " + ANNF_sliceProfileInstance.toString()) + String msg = "" + try { + + AAIResourcesClient client = new AAIResourcesClient() + AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId") as String).serviceSubscription(execution.getVariable("subscriptionServiceType") as String).serviceInstance(ANNF_sliceProfileInstanceId)) + client.create(sliceProfileUri, ANNF_sliceProfileInstance) + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } +else{ org.onap.aai.domain.yang.ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance(); org.onap.aai.domain.yang.ServiceInstance TNFH_sliceProfileInstance = new ServiceInstance(); org.onap.aai.domain.yang.ServiceInstance TNMH_sliceProfileInstance = new ServiceInstance(); @@ -163,12 +209,12 @@ public void createSliceProfilesInAai(DelegateExecution execution) { String TNFH_sliceProfileId = UUID.randomUUID().toString() String TNMH_sliceProfileInstanceId = UUID.randomUUID().toString() String TNMH_sliceProfileId = UUID.randomUUID().toString() - execution.setVariable("ANNF_sliceProfileInstanceId",ANNF_sliceProfileInstanceId) - execution.setVariable("ANNF_sliceProfileId",ANNF_sliceProfileId) - execution.setVariable("TNFH_sliceProfileInstanceId",TNFH_sliceProfileInstanceId) - execution.setVariable("TNFH_sliceProfileId",TNFH_sliceProfileId) - execution.setVariable("TNMH_sliceProfileInstanceId",TNMH_sliceProfileInstanceId) - execution.setVariable("TNMH_sliceProfileId",TNMH_sliceProfileId) + execution.setVariable("ANNF_sliceProfileInstanceId", ANNF_sliceProfileInstanceId) + execution.setVariable("ANNF_sliceProfileId", ANNF_sliceProfileId) + execution.setVariable("TNFH_sliceProfileInstanceId", TNFH_sliceProfileInstanceId) + execution.setVariable("TNFH_sliceProfileId", TNFH_sliceProfileId) + execution.setVariable("TNMH_sliceProfileInstanceId", TNMH_sliceProfileInstanceId) + execution.setVariable("TNMH_sliceProfileId", TNMH_sliceProfileId) //slice profiles assignment org.onap.aai.domain.yang.SliceProfiles ANNF_SliceProfiles = new SliceProfiles() org.onap.aai.domain.yang.SliceProfiles TNFH_SliceProfiles = new SliceProfiles() @@ -177,17 +223,17 @@ public void createSliceProfilesInAai(DelegateExecution execution) { org.onap.aai.domain.yang.SliceProfile TNFH_SliceProfile = new SliceProfile() org.onap.aai.domain.yang.SliceProfile TNMH_SliceProfile = new SliceProfile() ANNF_SliceProfile = createSliceProfile("AN_NF", execution) - TNFH_SliceProfile = createSliceProfile("TN_FH",execution) - TNMH_SliceProfile = createSliceProfile("TN_MH",execution) - + TNFH_SliceProfile = createSliceProfile("TN_FH", execution) + TNMH_SliceProfile = createSliceProfile("TN_MH", execution) + ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile) TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile) TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile) - - logger.debug("sliceProfiles : 1. "+ANNF_SliceProfiles.toString()+"\n 2. "+TNFH_SliceProfiles.toString()+"\n 3. "+TNMH_SliceProfiles.toString()) + + logger.debug("sliceProfiles : 1. " + ANNF_SliceProfiles.toString() + "\n 2. " + TNFH_SliceProfiles.toString() + "\n 3. " + TNMH_SliceProfiles.toString()) //ANNF slice profile instance creation ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId) - String sliceInstanceName = "sliceprofile_"+ANNF_sliceProfileId + String sliceInstanceName = "sliceprofile_" + ANNF_sliceProfileId ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName) String serviceType = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "sST") ANNF_sliceProfileInstance.setServiceType(serviceType) @@ -197,18 +243,18 @@ public void createSliceProfilesInAai(DelegateExecution execution) { ANNF_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0)) String serviceRole = "slice-profile-instance" ANNF_sliceProfileInstance.setServiceRole(serviceRole) - ArrayList<String> snssaiList = execution.getVariable("snssaiList") + ArrayList<String> snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String) String snssai = snssaiList.get(0) ANNF_sliceProfileInstance.setEnvironmentContext(snssai) - ANNF_sliceProfileInstance.setWorkloadContext("AN_NF") + ANNF_sliceProfileInstance.setWorkloadContext("AN_NF") ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles) String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel") ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf) - logger.debug("completed ANNF sliceprofileinstance build : "+ ANNF_sliceProfileInstance.toString()) + logger.debug("completed ANNF sliceprofileinstance build : "+ ANNF_sliceProfileInstance.toString()) //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) @@ -221,11 +267,11 @@ public void createSliceProfilesInAai(DelegateExecution execution) { TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles) String serviceFunctionTnFH = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "resourceSharingLevel") TNFH_sliceProfileInstance.setServiceFunction(serviceFunctionTnFH) - logger.debug("completed TNFH sliceprofileinstance build : "+TNFH_sliceProfileInstance) + logger.debug("completed TNFH sliceprofileinstance build : "+TNFH_sliceProfileInstance) //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) @@ -238,7 +284,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) { TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles) String serviceFunctionTnMH = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "resourceSharingLevel") TNMH_sliceProfileInstance.setServiceFunction(serviceFunctionTnMH) - logger.debug("completed TNMH sliceprofileinstance build : "+TNMH_sliceProfileInstance) + logger.debug("completed TNMH sliceprofileinstance build : "+TNMH_sliceProfileInstance) String msg = "" try { @@ -260,6 +306,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) { logger.info(msg) exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } + } } private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) { @@ -439,10 +486,10 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe String globalSubscriberId = execution.getVariable("globalSubscriberId") String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - List<String> sNssaiList = execution.getVariable("snssaiList") + List<String> sNssaiList = execution.getVariable("snssaiList") as List<String> DeAllocateNssi deallocateNssi = new DeAllocateNssi() - deallocateNssi.setNsiId(execution.getVariable("nsiId")) + deallocateNssi.setNsiId(execution.getVariable("nsiId") as String) deallocateNssi.setScriptName("TN1") deallocateNssi.setSnssaiList(sNssaiList) deallocateNssi.setTerminateNssiOption(0) @@ -457,13 +504,13 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe serviceInfo.addProperty("modifyAction", true) if(domainType.equals("TN_FH")) { - deallocateNssi.setNssiId(execution.getVariable("TNFH_NSSI")) - deallocateNssi.setSliceProfileId(execution.getVariable("TNFH_sliceProfileInstanceId")) - serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI")) + deallocateNssi.setNssiId(execution.getVariable("TNFH_NSSI") as String) + deallocateNssi.setSliceProfileId(execution.getVariable("TNFH_sliceProfileInstanceId") as String) + serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI") as String) }else if(domainType.equals("TN_MH")) { - deallocateNssi.setNssiId(execution.getVariable("TNMH_NSSI")) - deallocateNssi.setSliceProfileId(execution.getVariable("TNMH_sliceProfileInstanceId")) - serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI")) + deallocateNssi.setNssiId(execution.getVariable("TNMH_NSSI") as String) + deallocateNssi.setSliceProfileId(execution.getVariable("TNMH_sliceProfileInstanceId") as String) + serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI") as String) } JsonObject json = new JsonObject() diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy index ba87614937..e55ea13938 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy @@ -371,7 +371,9 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { String taskStatus = execution.getVariable("taskStatus") SliceTaskParamsAdapter sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - + int nsstCount=execution.getVariable("nsstCount") as int + nsstCount=nsstCount+1 + execution.setVariable("nsstCount", nsstCount) execution.setVariable("CSSOT_status", taskStatus) execution.setVariable("CSSOT_paramJson", objectMapper.writeValueAsString(sliceTaskParams)) execution.setVariable("CSSOT_requestMethod", requestMethod) 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 d5c132087c..ed1c2b24d5 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 @@ -190,6 +190,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { //RAN NSST decomposition String ranModelVersion = ranNsstServiceDecomposition.getModelInfo().getModelVersion() String ranModelName = ranNsstServiceDecomposition.getModelInfo().getModelName() + String serviceCategory=ranNsstServiceDecomposition.getServiceCategory() + logger.debug("serviceCategory : "+serviceCategory) List<ServiceProxy> serviceProxyList = ranNsstServiceDecomposition.getServiceProxy() List<String> nsstInfoList = new ArrayList<>() for(ServiceProxy serviceProxy : serviceProxyList) @@ -198,10 +200,10 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { String nsstModelInvariantUuid = serviceProxy.getModelInfo().getModelInvariantUuid() String name = serviceProxy.getModelInfo().getModelName() String nsstServiceModelInfo = """{ - "UUID":"${nsstModelUuid}", - "invariantUUID":"${nsstModelInvariantUuid}", - "name":"${name}" - }""" + "UUID":"${nsstModelUuid}", + "invariantUUID":"${nsstModelInvariantUuid}", + "name":"${name}" + }""" nsstInfoList.add(nsstServiceModelInfo) } int currentIndex=0 @@ -212,12 +214,19 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { logger.info(msg) exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } + if(maxIndex == 1) { + logger.info("RAN NSST have only RAN NF NSST") + execution.setVariable("ranNfSliceProfile", execution.getVariable("sliceProfile")) + execution.setVariable("IsRANNfAlonePresent", true) + } execution.setVariable("ranNsstInfoList", objectMapper.writeValueAsString(nsstInfoList)) - execution.setVariable("ranModelVersion", ranModelVersion) - execution.setVariable("ranModelName", ranModelName) execution.setVariable("currentIndex",currentIndex) execution.setVariable("maxIndex",maxIndex) + execution.setVariable("ranModelVersion", ranModelVersion) + execution.setVariable("ranModelName", ranModelName) logger.debug(Prefix+"processDecomposition maxIndex value - "+maxIndex) + + execution.setVariable("serviceCategory",serviceCategory) } /* @@ -428,28 +437,28 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { ServiceDecomposition decomposedNsst = execution.getVariable("nsstServiceDecomposition") logger.debug("decomposedNsst : "+decomposedNsst.toString()) - String nsstType = decomposedNsst.getServiceRole() //domainType + String nsstType = decomposedNsst.getServiceCategory() //domainType String modelVersion = decomposedNsst.getModelInfo().getModelVersion() String modelName = decomposedNsst.getModelInfo().getModelName() String modelUuid = decomposedNsst.getModelInfo().getModelUuid() String modelInvariantUuid = decomposedNsst.getModelInfo().getModelInvariantUuid() switch(nsstType) { - case "AN_NF": + case "AN NF NSST": execution.setVariable("ANNF_modelInvariantUuid", modelInvariantUuid) execution.setVariable("ANNF_modelUuid", modelUuid) execution.setVariable("ANNF_modelVersion", modelVersion) execution.setVariable("ANNF_modelName", modelName) execution.setVariable("ANNF_ServiceDecomposition", decomposedNsst) break - case "TN_FH": + case "TN FH NSST": execution.setVariable("TNFH_modelInvariantUuid", modelInvariantUuid) execution.setVariable("TNFH_modelUuid", modelUuid) execution.setVariable("TNFH_modelVersion", modelVersion) execution.setVariable("TNFH_modelName", modelName) execution.setVariable("TNFH_ServiceDecomposition", decomposedNsst) break - case "TN_MH": + case "TN MH NSST": execution.setVariable("TNMH_modelInvariantUuid", modelInvariantUuid) execution.setVariable("TNMH_modelUuid", modelUuid) execution.setVariable("TNMH_modelVersion", modelVersion) @@ -480,9 +489,12 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { //build oof request body boolean ranNfNssiPreferReuse = execution.getVariable("ranNfNssiPreferReuse"); String requestId = execution.getVariable("msoRequestId") + String serviceCategory = execution.getVariable("serviceCategory") String messageType = "NSSISelectionResponse" - List<String> ranConstituentSliceProfiles = jsonUtil.StringArrayToList(execution.getVariable("RanConstituentSliceProfiles")) - anNssmfUtils.createDomainWiseSliceProfiles(ranConstituentSliceProfiles, execution) + if(execution.getVariable("maxIndex") > 1) { + List<String> ranConstituentSliceProfiles = jsonUtil.StringArrayToList(execution.getVariable("RanConstituentSliceProfiles") as String) + anNssmfUtils.createDomainWiseSliceProfiles(ranConstituentSliceProfiles, execution) + } Map<String, Object> profileInfo = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class) profileInfo.put("sST",execution.getVariable("sst")) String modelUuid = execution.getVariable("ANNF_modelUuid") @@ -617,48 +629,45 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { //create RAN NSSI org.onap.aai.domain.yang.ServiceInstance ANServiceInstance = new org.onap.aai.domain.yang.ServiceInstance(); org.onap.aai.domain.yang.ServiceInstance ANNFServiceInstance = new org.onap.aai.domain.yang.ServiceInstance(); + String serviceCategory = execution.getVariable("serviceCategory") + String serviceStatus = "deactivated" + String serviceRole = "nssi" //AN instance creation - ANServiceInstance.setServiceInstanceId(execution.getVariable("RANServiceInstanceId")) + ANServiceInstance.setServiceInstanceId(execution.getVariable("RANServiceInstanceId") as String) String sliceInstanceName = execution.getVariable("servicename") ANServiceInstance.setServiceInstanceName(sliceInstanceName) - String serviceType = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST") - ANServiceInstance.setServiceType(execution.getVariable("sst")) - String serviceStatus = "deactivated" + ANServiceInstance.setServiceType(execution.getVariable("sst") as String) ANServiceInstance.setOrchestrationStatus(serviceStatus) - String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "pLMNIdList") + String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "pLMNIdList") as String ANServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid) - String serviceRole = "nssi" ANServiceInstance.setServiceRole(serviceRole) - List<String> snssaiList = execution.getVariable("snssaiList") + List<String> snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String) String snssai = snssaiList.get(0) - //ANServiceInstance.setEnvironmentContext(snssai) - ANServiceInstance.setEnvironmentContext(execution.getVariable("networkType")) - String modelInvariantUuid = execution.getVariable("modelInvariantUuid") - String modelUuid = execution.getVariable("modelUuid") - ANServiceInstance.setModelInvariantId(modelInvariantUuid) - ANServiceInstance.setModelVersionId(modelUuid) + ANServiceInstance.setEnvironmentContext(snssai) + String modelInvariantUuid = execution.getVariable("modelInvariantUuid") + String modelUuid = execution.getVariable("modelUuid") as String + ANServiceInstance.setModelInvariantId(modelInvariantUuid) + ANServiceInstance.setModelVersionId(modelUuid) ANServiceInstance.setWorkloadContext("AN") - String serviceFunctionAn = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "resourceSharingLevel") + String serviceFunctionAn = jsonUtil.getJsonValue(execution.getVariable("sliceProfile") as String, "resourceSharingLevel") ANServiceInstance.setServiceFunction(serviceFunctionAn) - logger.debug("completed AN service instance build "+ ANServiceInstance.toString()) + logger.debug("completed AN service instance build " + ANServiceInstance.toString()) //create RAN NF NSSI - ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId")) - String ANNF_nssiInstanceId = UUID.randomUUID().toString() - sliceInstanceName = "nssi_an_nf_"+ANNF_nssiInstanceId + ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId") as String) + sliceInstanceName = "nssi_"+execution.getVariable("ANNF_modelName") ANNFServiceInstance.setServiceInstanceName(sliceInstanceName) - ANNFServiceInstance.setServiceType(execution.getVariable("sst")) + ANNFServiceInstance.setServiceType(execution.getVariable("sst") as String) ANNFServiceInstance.setOrchestrationStatus(serviceStatus) - serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "pLMNIdList") + serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "pLMNIdList") ANNFServiceInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0)) ANNFServiceInstance.setServiceRole(serviceRole) - snssaiList = execution.getVariable("snssaiList") + snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String) snssai = snssaiList.get(0) - //ANNFServiceInstance.setEnvironmentContext(snssai) - ANNFServiceInstance.setEnvironmentContext(execution.getVariable("networkType")) + ANNFServiceInstance.setEnvironmentContext(snssai) ANNFServiceInstance.setModelInvariantId(execution.getVariable("ANNF_modelInvariantUuid")) ANNFServiceInstance.setModelVersionId(execution.getVariable("ANNF_modelUuid")) ANNFServiceInstance.setWorkloadContext("AN_NF") - String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel") + String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "resourceSharingLevel") ANNFServiceInstance.setServiceFunction(serviceFunctionAnnf) logger.debug("completed AN service instance build "+ ANNFServiceInstance.toString()) @@ -666,10 +675,10 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("RANServiceInstanceId"))) + AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId") as String).serviceSubscription(execution.getVariable("subscriptionServiceType") as String).serviceInstance(execution.getVariable("RANServiceInstanceId") as String)) client.create(nssiServiceUri, ANServiceInstance) - AAIResourceUri nssiServiceUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("RANNFServiceInstanceId"))) + AAIResourceUri nssiServiceUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId") as String).serviceSubscription(execution.getVariable("subscriptionServiceType") as String).serviceInstance(execution.getVariable("RANNFServiceInstanceId") as String)) client.create(nssiServiceUri1, ANNFServiceInstance) } catch (BpmnError e) { @@ -680,7 +689,9 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } //end point update - createEndPointsInAai(execution) + if (!execution.getVariable("IsRANNfAlonePresent")) { + createEndPointsInAai(execution) + } } def prepareTnFhRequest = { DelegateExecution execution -> logger.debug(Prefix+"prepareTnFhRequest method start") @@ -804,64 +815,96 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { def updateAairelationships = { DelegateExecution execution -> logger.debug(Prefix + "updateAairelationships Start") + String serviceCategory = execution.getVariable("serviceCategory") String msg = "" - try { - def ANNF_serviceInstanceId = execution.getVariable("RANNFServiceInstanceId") - def TNFH_serviceInstanceId = execution.getVariable("TNFH_NSSI") - def TNMH_serviceInstanceId = execution.getVariable("TNMH_NSSI") - def AN_profileInstanceId = execution.getVariable("sliceProfileId") - def AN_NSSI = execution.getVariable("RANServiceInstanceId") - def ANNF_profileInstanceId = execution.getVariable("ANNF_sliceProfileInstanceId") - def TNFH_profileInstanceId = execution.getVariable("TNFH_sliceProfileInstanceId") - def TNMH_profileInstanceId = execution.getVariable("TNMH_sliceProfileInstanceId") - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - - Relationship ANNF_relationship = new Relationship() - Relationship TNFH_relationship = new Relationship() - Relationship TNMH_relationship = new Relationship() - - String ANNF_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_profileInstanceId}" - String TNFH_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNFH_profileInstanceId}" - String TNMH_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNMH_profileInstanceId}" - - String ANNF_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_serviceInstanceId}" - String TNFH_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNFH_serviceInstanceId}" - String TNMH_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNMH_serviceInstanceId}" - - ANNF_relationship.setRelatedLink(ANNF_relatedLink) - ANNF_relationship.setRelatedTo("service-instance") - ANNF_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") - TNFH_relationship.setRelatedLink(TNFH_relatedLink) - TNFH_relationship.setRelatedTo("service-instance") - TNFH_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") - TNMH_relationship.setRelatedLink(TNMH_relatedLink) - TNMH_relationship.setRelatedTo("service-instance") - TNMH_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") - - // create SliceProfile and NSSI relationship in AAI - anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship,ANNF_serviceInstanceId) - anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship,TNFH_serviceInstanceId) - anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship,TNMH_serviceInstanceId) - anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship,AN_profileInstanceId) - anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship,AN_profileInstanceId) - anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship,AN_profileInstanceId) - - //create AN NSSI and ANNF,TNFH,TNMH relationship in AAI - ANNF_relationship.setRelatedLink(ANNF_NSSI_relatedLink) - TNFH_relationship.setRelatedLink(TNFH_NSSI_relatedLink) - TNMH_relationship.setRelatedLink(TNMH_NSSI_relatedLink) - anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship,AN_NSSI) - anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship,AN_NSSI) - anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship,AN_NSSI) + if (execution.getVariable("IsRANNfAlonePresent")) { + try { + def ANNF_serviceInstanceId = execution.getVariable("RANNFServiceInstanceId") + def AN_profileInstanceId = execution.getVariable("sliceProfileId") + def AN_NSSI = execution.getVariable("RANServiceInstanceId") + def ANNF_profileInstanceId = execution.getVariable("ANNF_sliceProfileInstanceId") + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - } catch (BpmnError e) { - throw e - } catch (Exception ex) { + Relationship ANNF_relationship = new Relationship() + String ANNF_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_profileInstanceId}" + String ANNF_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_serviceInstanceId}" + ANNF_relationship.setRelatedLink(ANNF_relatedLink) + ANNF_relationship.setRelatedTo("service-instance") + ANNF_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, ANNF_serviceInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, AN_profileInstanceId) + ANNF_relationship.setRelatedLink(ANNF_NSSI_relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, AN_NSSI) - msg = "Exception in DoCreateE2EServiceInstance.createCustomRelationship. " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + + msg = "Exception in DoCreateE2EServiceInstance.createCustomRelationship. " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + else { + try { + def ANNF_serviceInstanceId = execution.getVariable("RANNFServiceInstanceId") + def TNFH_serviceInstanceId = execution.getVariable("TNFH_NSSI") + def TNMH_serviceInstanceId = execution.getVariable("TNMH_NSSI") + def AN_profileInstanceId = execution.getVariable("sliceProfileId") + def AN_NSSI = execution.getVariable("RANServiceInstanceId") + def ANNF_profileInstanceId = execution.getVariable("ANNF_sliceProfileInstanceId") + def TNFH_profileInstanceId = execution.getVariable("TNFH_sliceProfileInstanceId") + def TNMH_profileInstanceId = execution.getVariable("TNMH_sliceProfileInstanceId") + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + Relationship ANNF_relationship = new Relationship() + Relationship TNFH_relationship = new Relationship() + Relationship TNMH_relationship = new Relationship() + + String ANNF_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_profileInstanceId}" + String TNFH_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNFH_profileInstanceId}" + String TNMH_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNMH_profileInstanceId}" + + String ANNF_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${ANNF_serviceInstanceId}" + String TNFH_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNFH_serviceInstanceId}" + String TNMH_NSSI_relatedLink = "aai/v21/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${subscriptionServiceType}/service-instances/service-instance/${TNMH_serviceInstanceId}" + + ANNF_relationship.setRelatedLink(ANNF_relatedLink) + ANNF_relationship.setRelatedTo("service-instance") + ANNF_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") + TNFH_relationship.setRelatedLink(TNFH_relatedLink) + TNFH_relationship.setRelatedTo("service-instance") + TNFH_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") + TNMH_relationship.setRelatedLink(TNMH_relatedLink) + TNMH_relationship.setRelatedTo("service-instance") + TNMH_relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") + + // create SliceProfile and NSSI relationship in AAI + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, ANNF_serviceInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship, TNFH_serviceInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship, TNMH_serviceInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, AN_profileInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship, AN_profileInstanceId) + anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship, AN_profileInstanceId) + + //create AN NSSI and ANNF,TNFH,TNMH relationship in AAI + ANNF_relationship.setRelatedLink(ANNF_NSSI_relatedLink) + TNFH_relationship.setRelatedLink(TNFH_NSSI_relatedLink) + TNMH_relationship.setRelatedLink(TNMH_NSSI_relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, ANNF_relationship, AN_NSSI) + anNssmfUtils.createRelationShipInAAI(execution, TNFH_relationship, AN_NSSI) + anNssmfUtils.createRelationShipInAAI(execution, TNMH_relationship, AN_NSSI) + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + + msg = "Exception in DoCreateE2EServiceInstance.createCustomRelationship. " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } } } 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 0088ed4e54..bc155c5943 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 @@ -34,6 +34,7 @@ import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.Relationship import org.onap.aai.domain.yang.ServiceInstance import org.onap.aai.domain.yang.SliceProfile +import org.onap.aaiclient.client.aai.AAINamespaceConstants import org.onap.aaiclient.client.aai.AAIResourcesClient import org.onap.aaiclient.client.aai.entities.AAIResultWrapper import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri @@ -53,6 +54,7 @@ import org.onap.so.bpmn.core.json.JsonUtils import org.slf4j.Logger import org.slf4j.LoggerFactory import static org.apache.commons.lang3.StringUtils.isBlank +import org.onap.aaiclient.client.aai.AAIObjectType class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ @@ -62,6 +64,8 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ JsonUtils jsonUtil = new JsonUtils() + AnNssmfUtils anNssmfUtils = new AnNssmfUtils() + AAIResourcesClient client = getAAIClient() /** @@ -75,6 +79,13 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ String msg = "" logger.trace("Enter preProcessRequest()") Map<String, Object> nssiMap = new HashMap<>() + int nsstCount=execution.getVariable("nsstCount") as int + if(nsstCount==5){ + execution.setVariable("processFHandMH", true) + } + else{ + execution.setVariable("processFHandMH", false) + } execution.setVariable("nssiMap", nssiMap) boolean isMoreNSSTtoProcess = true execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess) @@ -393,26 +404,26 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ //todo: SliceTaskParamsAdapter sliceParams = execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.anSliceTaskInfo + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.getAnSliceTaskInfo() NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() AllocateAnNssi allocateAnNssi = new AllocateAnNssi() - allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile.trans2AnProfile() - allocateAnNssi.sliceProfile.sliceProfileId = sliceTaskInfo.sliceInstanceId - allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID - allocateAnNssi.nssiId = sliceTaskInfo.suggestNssiId - allocateAnNssi.nssiName = "nssi_an" + execution.getVariable("sliceServiceInstanceName") - allocateAnNssi.scriptName = sliceTaskInfo.getScriptName() + allocateAnNssi.setSliceProfile(sliceTaskInfo.getSliceProfile().trans2AnProfile()) + allocateAnNssi.getSliceProfile().setSliceProfileId(sliceTaskInfo.getSliceInstanceId()) + allocateAnNssi.setNsstId(sliceTaskInfo.getNSSTInfo().getUUID()) + allocateAnNssi.setNssiId(sliceTaskInfo.getSuggestNssiId()) + allocateAnNssi.setNssiName("nssi_an" + execution.getVariable("sliceServiceInstanceName") as String) + allocateAnNssi.setScriptName(sliceTaskInfo.getScriptName()) NsiInfo nsiInfo = new NsiInfo() - nsiInfo.nsiId = sliceParams.suggestNsiId - nsiInfo.nsiName = sliceParams.suggestNsiName - allocateAnNssi.nsiInfo = nsiInfo + nsiInfo.setNsiId(sliceParams.getSuggestNsiId()) + nsiInfo.setNsiName(sliceParams.getSuggestNsiName()) + allocateAnNssi.setNsiInfo(nsiInfo) //endPoint EndPoint endPoint = new EndPoint() - endPoint.setIpAddress(sliceTaskInfo.sliceProfile.ipAddress) - endPoint.setLogicInterfaceId(sliceTaskInfo.sliceProfile.logicInterfaceId) - endPoint.setNextHopInfo(sliceTaskInfo.sliceProfile.nextHopInfo) + endPoint.setIpAddress(sliceTaskInfo.getSliceProfile().getIpAddress()) + endPoint.setLogicInterfaceId(sliceTaskInfo.getSliceProfile().getLogicInterfaceId()) + endPoint.setNextHopInfo(sliceTaskInfo.getSliceProfile().getNextHopInfo()) allocateAnNssi.setEndPoint(endPoint) EsrInfo esrInfo = new EsrInfo() @@ -420,19 +431,20 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ esrInfo.setVendor(sliceTaskInfo.getVendor()) esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String globalSubscriberId = execution.getVariable("globalSubscriberId") as String + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") as String //todo: service info - ServiceInfo serviceInfo = new ServiceInfo() - serviceInfo.globalSubscriberId = globalSubscriberId - serviceInfo.subscriptionServiceType = subscriptionServiceType - serviceInfo.nsiId = sliceParams.suggestNsiId - serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID - serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID - serviceInfo.sST = sliceTaskInfo.sliceProfile.sST ?: sliceParams.serviceProfile.get("sST") - serviceInfo.nssiName = sliceTaskInfo.suggestNssiId ? sliceTaskInfo.NSSTInfo.name : allocateAnNssi.nssiName - serviceInfo.nssiId = sliceTaskInfo.suggestNssiId + ServiceInfo serviceInfo = ServiceInfo.builder() + .globalSubscriberId(globalSubscriberId) + .subscriptionServiceType(subscriptionServiceType) + .nsiId(sliceParams.getSuggestNsiId()) + .serviceInvariantUuid(sliceTaskInfo.getNSSTInfo().getInvariantUUID()) + .serviceUuid(sliceTaskInfo.getNSSTInfo().getUUID()) + .sST(sliceTaskInfo.getSliceProfile().getSST() ?: sliceParams.getServiceProfile().get("sST") as String) + .nssiName(sliceTaskInfo.getSuggestNssiId() ? sliceTaskInfo.getNSSTInfo().getName() : allocateAnNssi.getNssiName()) + .nssiId(sliceTaskInfo.getSuggestNssiId()) + .build() nbiRequest.setServiceInfo(serviceInfo) nbiRequest.setEsrInfo(esrInfo) @@ -956,4 +968,450 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ return rspi } + public void createTNEndPoints(DelegateExecution execution) { + String type = "endpoint" + String function = "transport_EP" + int prefixLength = 24 + String addressFamily = "ipv4" + //BH RAN end point update + //set BH end point + String sliceParams = execution.getVariable("sliceParams") + List<String> BH_endPoints = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceParams, "endPoints")) + logger.debug("BH end points list : "+BH_endPoints) + if(BH_endPoints.empty) { + String msg = "End point info is empty" + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + String bh_routeId = UUID.randomUUID().toString() + execution.setVariable("tranportEp_ID_bh", bh_routeId) + String role = "CU" + String CU_IpAddress = jsonUtil.getJsonValue(bh_endpoint, "IpAddress") + String LogicalLinkId = jsonUtil.getJsonValue(bh_endpoint, "LogicalLinkId") + String nextHopInfo = jsonUtil.getJsonValue(bh_endpoint, "nextHopInfo") + NetworkRoute bh_ep = new NetworkRoute() + bh_ep.setRouteId(bh_routeId) + bh_ep.setFunction(function) + bh_ep.setRole(role) + bh_ep.setType(type) + bh_ep.setIpAddress(CU_IpAddress) + bh_ep.setLogicalInterfaceId(LogicalLinkId) + bh_ep.setNextHop(nextHopInfo) + bh_ep.setPrefixLength(prefixLength) + bh_ep.setAddressFamily(addressFamily) + //FH RAN end points update + //RU + String RU_routeId = UUID.randomUUID().toString() + execution.setVariable("tranportEp_ID_RU", RU_routeId) + role = "RU" + NetworkRoute RU_ep = new NetworkRoute() + RU_ep.setRouteId(RU_routeId) + RU_ep.setFunction(function) + RU_ep.setRole(role) + RU_ep.setType(type) + RU_ep.setIpAddress("192.168.100.4") + RU_ep.setLogicalInterfaceId("1234") + RU_ep.setNextHop("Host1") + RU_ep.setPrefixLength(prefixLength) + RU_ep.setAddressFamily(addressFamily) + //DU Ingress + String DUIN_routeId = UUID.randomUUID().toString() + execution.setVariable("tranportEp_ID_DUIN", DUIN_routeId) + role = "DU" + NetworkRoute DU_ep = new NetworkRoute() + DU_ep.setRouteId(DUIN_routeId) + DU_ep.setFunction(function) + DU_ep.setRole(role) + DU_ep.setType(type) + DU_ep.setIpAddress("192.168.100.5") + DU_ep.setLogicalInterfaceId("1234") + DU_ep.setNextHop("Host2") + DU_ep.setPrefixLength(prefixLength) + DU_ep.setAddressFamily(addressFamily) + //MH RAN end point update + //DUEG + String DUEG_routeId = UUID.randomUUID().toString() + execution.setVariable("tranportEp_ID_DUEG", DUEG_routeId) + NetworkRoute DUEG_ep = new NetworkRoute() + DUEG_ep.setRouteId(DUEG_routeId) + DUEG_ep.setFunction(function) + DUEG_ep.setRole(role) + DUEG_ep.setType(type) + DUEG_ep.setIpAddress("192.168.100.5") + DUEG_ep.setLogicalInterfaceId("1234") + DUEG_ep.setPrefixLength(prefixLength) + DUEG_ep.setAddressFamily(addressFamily) + DUEG_ep.setNextHop("Host3") + //CUIN + String CUIN_routeId = UUID.randomUUID().toString() + execution.setVariable("tranportEp_ID_CUIN", CUIN_routeId) + NetworkRoute CUIN_ep = new NetworkRoute() + CUIN_ep.setRouteId(CUIN_routeId) + CUIN_ep.setFunction(function) + CUIN_ep.setRole(role) + CUIN_ep.setType(type) + CUIN_ep.setIpAddress("192.168.100.6") + CUIN_ep.setLogicalInterfaceId("1234") + CUIN_ep.setNextHop("Host4") + CUIN_ep.setPrefixLength(prefixLength) + CUIN_ep.setAddressFamily(addressFamily) + try { + AAIResourcesClient client = new AAIResourcesClient() + logger.debug("creating bh endpoint . ID : "+bh_routeId+" node details : "+bh_ep.toString()) + AAIResourceUri networkRouteUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkRoute(bh_routeId)) + client.create(networkRouteUri, bh_ep) + logger.debug("creating RU endpoint . ID : "+RU_routeId+" node details : "+RU_ep.toString()) + networkRouteUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkRoute(RU_routeId)) + client.create(networkRouteUri, RU_ep) + logger.debug("creating DUIN endpoint . ID : "+DUIN_routeId+" node details : "+DU_ep.toString()) + networkRouteUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkRoute(DUIN_routeId)) + client.create(networkRouteUri, DU_ep) + logger.debug("creating DUEG endpoint . ID : "+DUEG_routeId+" node details : "+DUEG_ep.toString()) + networkRouteUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkRoute(DUEG_routeId)) + client.create(networkRouteUri, DUEG_ep) + logger.debug("creating CUIN endpoint . ID : "+CUIN_routeId+" node details : "+CUIN_ep.toString()) + networkRouteUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkRoute(CUIN_routeId)) + client.create(networkRouteUri, CUIN_ep) + //relationship b/w bh_ep and RAN NSSI + def AN_NSSI = execution.getVariable("RANServiceInstanceId") + Relationship relationship = new Relationship() + String relatedLink = "aai/v21/network/network-routes/network-route/${bh_routeId}" + relationship.setRelatedLink(relatedLink) + relationship.setRelatedTo("network-route") + relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf") + anNssmfUtils.createRelationShipInAAI(execution, relationship, AN_NSSI) + def ANNF_serviceInstanceId = execution.getVariable("RANNFServiceInstanceId") + relatedLink = "aai/v21/network/network-routes/network-route/${RU_routeId}" + relationship.setRelatedLink(relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, relationship, ANNF_serviceInstanceId) + relatedLink = "aai/v21/network/network-routes/network-route/${DUIN_routeId}" + relationship.setRelatedLink(relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, relationship, ANNF_serviceInstanceId) + relatedLink = "aai/v21/network/network-routes/network-route/${DUEG_routeId}" + relationship.setRelatedLink(relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, relationship, ANNF_serviceInstanceId) + relatedLink = "aai/v21/network/network-routes/network-route/${CUIN_routeId}" + relationship.setRelatedLink(relatedLink) + anNssmfUtils.createRelationShipInAAI(execution, relationship, ANNF_serviceInstanceId) + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + String msg = "Exception in createEndPointsInAai " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + + /** + * create TN Slice Profile Instance + * @param execution + */ + void createTnFHSliceProfileInstance(DelegateExecution execution) { + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + String oStatus = "deactivated" + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.tnFHSliceTaskInfo + String serviceInstanceId = UUID.randomUUID().toString() + + sliceTaskInfo.setSliceInstanceId(serviceInstanceId) + String sliceProfileName = "tn_fh" + sliceParams.serviceName + //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo: + + // create slice profile + ServiceInstance rspi = createSliceProfileInstance(sliceTaskInfo, sliceProfileName, oStatus) + + //timestamp format YYYY-MM-DD hh:mm:ss + rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) + + execution.setVariable("communicationServiceInstance", rspi) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalSubscriberId) + .serviceSubscription(subscriptionServiceType) + .serviceInstance(serviceInstanceId)) + client.create(uri, rspi) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * create Tn Slice Profile + * @param execution + */ + void createTnFHSliceProfile(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.tnFHSliceTaskInfo + + SliceProfileAdapter tnSliceProfile = sliceTaskInfo.sliceProfile + String profileId = UUID.randomUUID().toString() + tnSliceProfile.setSliceProfileId(profileId) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(profileId) + sliceProfile.setLatency(tnSliceProfile.latency) + sliceProfile.setMaxBandwidth(tnSliceProfile.maxBandwidth) + sliceProfile.setJitter(tnSliceProfile.jitter) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalSubscriberId) + .serviceSubscription(subscriptionServiceType) + .serviceInstance(sliceTaskInfo.sliceInstanceId) + .sliceProfile(profileId)) + client.create(uri, sliceProfile) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * prepare AllocateCnNssi + * @param execution + */ + void prepareAllocateTnFHNssi(DelegateExecution execution) { + + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.getTnFHSliceTaskInfo() + + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + + AllocateTnNssi allocateTnNssi = new AllocateTnNssi() + allocateTnNssi.setNssiId(sliceTaskInfo.getSuggestNssiId()) + //todo: AllocateTnNssi + //todo: endPointId -> set into tn + List<TransportSliceNetwork> transportSliceNetworks = new ArrayList<>() + TransportSliceNetwork transportSliceNetwork = new TransportSliceNetwork() + List<ConnectionLink> connectionLinks = new ArrayList<>() + ConnectionLink connectionLink = new ConnectionLink() + connectionLink.setTransportEndpointA(execution.getVariable("tranportEp_ID_RU") as String) + connectionLink.setTransportEndpointB(execution.getVariable("tranportEp_ID_DUIN") as String) + connectionLinks.add(connectionLink) + transportSliceNetwork.setConnectionLinks(connectionLinks) + transportSliceNetworks.add(transportSliceNetwork) + allocateTnNssi.setTransportSliceNetworks(transportSliceNetworks) + + allocateTnNssi.setSliceProfile(sliceTaskInfo.getSliceProfile().trans2TnProfile()) + NsiInfo nsiInfo = new NsiInfo() + nsiInfo.setNsiId(sliceParams.getSuggestNsiId()) + nsiInfo.setNsiName(sliceParams.getSuggestNsiName()) + allocateTnNssi.setNsiInfo(nsiInfo) + + EsrInfo esrInfo = new EsrInfo() + esrInfo.setVendor(sliceTaskInfo.getVendor()) + esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") as String + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") as String + + ServiceInfo serviceInfo = ServiceInfo.builder() + .globalSubscriberId(globalSubscriberId) + .subscriptionServiceType(subscriptionServiceType) + .nsiId(sliceParams.getSuggestNsiId()) + .serviceInvariantUuid(sliceTaskInfo.getNSSTInfo().getInvariantUUID()) + .setServiceUuid(sliceTaskInfo.getNSSTInfo().getUUID()) + .nssiId(sliceTaskInfo.getSuggestNssiId()) + .sST(sliceTaskInfo.getSliceProfile().getSST() ?: sliceParams.getServiceProfile().get("sST")) + .nssiName("nssi_tn_fh_" + execution.getVariable("sliceServiceInstanceName") as String) + .build() + + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) + nbiRequest.setAllocateTnNssi(allocateTnNssi) + + execution.setVariable("TnFHAllocateNssiNbiRequest", nbiRequest) + execution.setVariable("tnFHSliceTaskInfo", sliceTaskInfo) + execution.setVariable("tnFHSubnetType", SubnetType.TN_BH) + } + + /** + * Update relationship between + * 1. NSI and NSSI + * 2. Slice Profile and Service Profile + * 3. SliceProfile and NSSI + * + * @param execution + */ + public void updateTnFHRelationship(DelegateExecution execution) { + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + NssiResponse result = execution.getVariable("tnFHNssiAllocateResult") as NssiResponse + String nssiId = result.getNssiId() + String nsiId = sliceParams.getSuggestNsiId() + String sliceProfileInstanceId = sliceParams.tnFHSliceTaskInfo.sliceInstanceId + String serviceProfileInstanceId = sliceParams.serviceId + + updateRelationship(execution, nsiId, nssiId) + + updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId) + + updateRelationship(execution,sliceProfileInstanceId, nssiId) + + sliceParams.tnFHSliceTaskInfo.suggestNssiId = nssiId + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * create TN Slice Profile Instance + * @param execution + */ + void createTnMHSliceProfileInstance(DelegateExecution execution) { + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + String oStatus = "deactivated" + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.tnMHSliceTaskInfo + String serviceInstanceId = UUID.randomUUID().toString() + + sliceTaskInfo.setSliceInstanceId(serviceInstanceId) + String sliceProfileName = "tn_mh_" + sliceParams.serviceName + ServiceInstance rspi = createSliceProfileInstance(sliceTaskInfo, sliceProfileName, oStatus) + + rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) + + execution.setVariable("communicationServiceInstance", rspi) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalSubscriberId) + .serviceSubscription(subscriptionServiceType) + .serviceInstance(serviceInstanceId)) + client.create(uri, rspi) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * create Tn Slice Profile + * @param execution + */ + void createTnMHSliceProfile(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.tnMHSliceTaskInfo + + SliceProfileAdapter tnSliceProfile = sliceTaskInfo.sliceProfile + String profileId = UUID.randomUUID().toString() + tnSliceProfile.setSliceProfileId(profileId) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(profileId) + sliceProfile.setLatency(tnSliceProfile.latency) + sliceProfile.setMaxBandwidth(tnSliceProfile.maxBandwidth) + sliceProfile.setJitter(tnSliceProfile.jitter) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalSubscriberId) + .serviceSubscription(subscriptionServiceType) + .serviceInstance(sliceTaskInfo.sliceInstanceId) + .sliceProfile(profileId)) + client.create(uri, sliceProfile) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * prepare AllocateCnNssi + * @param execution + */ + void prepareAllocateTnMHNssi(DelegateExecution execution) { + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<SliceProfileAdapter> sliceTaskInfo = sliceParams.getTnMHSliceTaskInfo() + + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + + AllocateTnNssi allocateTnNssi = new AllocateTnNssi() + allocateTnNssi.setNssiId(sliceTaskInfo.getSuggestNssiId()) + List<TransportSliceNetwork> transportSliceNetworks = new ArrayList<>() + TransportSliceNetwork transportSliceNetwork = new TransportSliceNetwork() + List<ConnectionLink> connectionLinks = new ArrayList<>() + ConnectionLink connectionLink = new ConnectionLink() + connectionLink.setTransportEndpointA(execution.getVariable("tranportEp_ID_DUEG") as String) + connectionLink.setTransportEndpointB(execution.getVariable("tranportEp_ID_CUIN") as String) + connectionLinks.add(connectionLink) + transportSliceNetwork.setConnectionLinks(connectionLinks) + transportSliceNetworks.add(transportSliceNetwork) + allocateTnNssi.setTransportSliceNetworks(transportSliceNetworks) + + allocateTnNssi.setSliceProfile(sliceTaskInfo.getSliceProfile().trans2TnProfile()) + NsiInfo nsiInfo = new NsiInfo() + nsiInfo.setNsiId(sliceParams.getSuggestNsiId()) + nsiInfo.setNsiName(sliceParams.getSuggestNsiName()) + allocateTnNssi.setNsiInfo(nsiInfo) + + EsrInfo esrInfo = new EsrInfo() + esrInfo.setVendor(sliceTaskInfo.getVendor()) + esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") as String + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") as String + + ServiceInfo serviceInfo = ServiceInfo.builder() + .globalSubscriberId(globalSubscriberId) + .subscriptionServiceType(subscriptionServiceType) + .nsiId(sliceParams.getSuggestNsiId()) + .serviceInvariantUuid(sliceTaskInfo.getNSSTInfo().getInvariantUUID()) + .serviceUuid(sliceTaskInfo.getNSSTInfo().getUUID()) + .nssiId(sliceTaskInfo.getSuggestNssiId()) + .sST(sliceTaskInfo.getSliceProfile().getSST() ?: sliceParams.getServiceProfile().get("sST")) + .nssiName("nssi_tn_bh_" + execution.getVariable("sliceServiceInstanceName") as String) + .build() + + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) + nbiRequest.setAllocateTnNssi(allocateTnNssi) + + execution.setVariable("TnMHAllocateNssiNbiRequest", nbiRequest) + execution.setVariable("tnMHSliceTaskInfo", sliceTaskInfo) + execution.setVariable("tnMHSubnetType", SubnetType.TN_BH) + } + + /** + * Update relationship between + * 1. NSI and NSSI + * 2. Slice Profile and Service Profile + * 3. SliceProfile and NSSI + * + * @param execution + */ + public void updateTnMHRelationship(DelegateExecution execution) { + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + NssiResponse result = execution.getVariable("tnMHNssiAllocateResult") as NssiResponse + String nssiId = result.getNssiId() + String nsiId = sliceParams.getSuggestNsiId() + String sliceProfileInstanceId = sliceParams.tnMHSliceTaskInfo.sliceInstanceId + String serviceProfileInstanceId = sliceParams.serviceId + + updateRelationship(execution, nsiId, nssiId) + + updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId) + + updateRelationship(execution,sliceProfileInstanceId, nssiId) + + sliceParams.tnMHSliceTaskInfo.suggestNssiId = nssiId + execution.setVariable("sliceTaskParams", sliceParams) + } } 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 5476cb5afa..35b4199909 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 ac959543a2..2588d07e50 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 @@ -213,6 +213,22 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ sliceParams.tnMHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() sliceParams.tnMHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() break + case SubnetType.TN_FH: + sliceParams.tnFHSliceTaskInfo.vendor = vendor + sliceParams.tnFHSliceTaskInfo.subnetType = subnetType + sliceParams.tnFHSliceTaskInfo.networkType = subnetType.networkType + sliceParams.tnFHSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.tnFHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.tnFHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + break + case SubnetType.AN_NF: + sliceParams.anNFSliceTaskInfo.vendor = vendor + sliceParams.anNFSliceTaskInfo.subnetType = subnetType + sliceParams.anNFSliceTaskInfo.networkType = subnetType.networkType + sliceParams.anNFSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.anNFSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.anNFSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + break case SubnetType.AN: sliceParams.anSliceTaskInfo.vendor = vendor sliceParams.anSliceTaskInfo.subnetType = subnetType @@ -255,18 +271,24 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ * @return */ private SubnetType convertServiceCategory(String serviceCategory){ - if(serviceCategory ==~ /CN.*/){ + if("CN NSST".equals(serviceCategory)){ return SubnetType.CN } - if (serviceCategory ==~ /AN.*/){ + if ("AN NF NSST".equals(serviceCategory)){ + return SubnetType.AN_NF + } + if ("AN NSST".equals(serviceCategory)){ return SubnetType.AN } - if (serviceCategory ==~ /TN.*BH.*/){ + if ("TN BH NSST".equals(serviceCategory)){ return SubnetType.TN_BH } - if(serviceCategory ==~ /TN.*MH.*/){ + if("TN MH NSST".equals(serviceCategory)){ return SubnetType.TN_MH } + if("TN FH NSST".equals(serviceCategory)){ + return SubnetType.TN_FH + } return null } @@ -426,7 +448,15 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ case "tn_bh": sliceParams.tnBHSliceTaskInfo.sliceProfile = adapter break + case "tn_fh": + sliceParams.tnFHSliceTaskInfo.sliceProfile = adapter + break + case "tn_mh": + sliceParams.tnMHSliceTaskInfo.sliceProfile = adapter + break case "an_nf": + sliceParams.anNFSliceTaskInfo.sliceProfile = adapter + break case "an": sliceParams.anSliceTaskInfo.sliceProfile = adapter break 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 08c03b0dbb..e0c2b776fe 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,7 @@ 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/process/CreateSliceService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSliceService.bpmn index 290e13d05c..4d452aa57d 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSliceService.bpmn +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSliceService.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: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" id="Definitions_1wio50w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.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: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" id="Definitions_1wio50w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.8.1"> <bpmn:process id="CreateSliceService" name="CreateSliceService" isExecutable="true"> <bpmn:startEvent id="StartEvent_1nbljfd" name="Create Slice Service Creation Flow"> <bpmn:outgoing>SequenceFlow_03s744c</bpmn:outgoing> @@ -283,6 +283,7 @@ css.prepareUpdateOrchestrationTask(execution)</bpmn:script> <camunda:in source="allottedResourceId" target="allottedResourceId" /> <camunda:out source="sliceTaskParams" target="sliceTaskParams" /> <camunda:in source="allottedResourceUri" target="allottedResourceUri" /> + <camunda:in source="nsstCount" target="nsstCount" /> </bpmn:extensionElements> <bpmn:incoming>SequenceFlow_1bevt3a</bpmn:incoming> <bpmn:outgoing>SequenceFlow_0mlrlbv</bpmn:outgoing> @@ -319,6 +320,7 @@ css.prepareUpdateOrchestrationTask(execution)</bpmn:script> <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> <camunda:in source="serviceType" target="serviceType" /> + <camunda:out source="maxNsstIndex" target="nsstCount" /> </bpmn:extensionElements> <bpmn:incoming>SequenceFlow_1f6dyxo</bpmn:incoming> <bpmn:outgoing>SequenceFlow_1aaozcg</bpmn:outgoing> @@ -452,6 +454,66 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <bpmn:message id="Message_0c4b2r5" name="SliceServiceTask" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateSliceService"> + <bpmndi:BPMNEdge id="SequenceFlow_031cwkd_di" bpmnElement="SequenceFlow_031cwkd"> + <di:waypoint x="520" y="620" /> + <di:waypoint x="550" y="620" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0sub2c2_di" bpmnElement="SequenceFlow_0sub2c2"> + <di:waypoint x="213" y="620" /> + <di:waypoint x="240" y="620" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fk2cn3_di" bpmnElement="SequenceFlow_1fk2cn3"> + <di:waypoint x="372" y="718" /> + <di:waypoint x="372" y="772" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_02sve8o_di" bpmnElement="SequenceFlow_02sve8o"> + <di:waypoint x="410" y="350" /> + <di:waypoint x="520" y="350" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1r2jtal_di" bpmnElement="SequenceFlow_1r2jtal"> + <di:waypoint x="620" y="350" /> + <di:waypoint x="710" y="350" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1whq7vc_di" bpmnElement="SequenceFlow_1whq7vc"> + <di:waypoint x="788" y="620" /> + <di:waypoint x="830" y="620" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ti386y_di" bpmnElement="SequenceFlow_0ti386y"> + <di:waypoint x="650" y="620" /> + <di:waypoint x="688" y="620" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1f6dyxo_di" bpmnElement="SequenceFlow_1f6dyxo"> + <di:waypoint x="810" y="350" /> + <di:waypoint x="880" y="350" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12wo878_di" bpmnElement="SequenceFlow_12wo878"> + <di:waypoint x="1330" y="124" /> + <di:waypoint x="1402" y="124" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00kcej9_di" bpmnElement="SequenceFlow_00kcej9"> + <di:waypoint x="1320" y="350" /> + <di:waypoint x="1402" y="350" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14c2tav_di" bpmnElement="SequenceFlow_14c2tav"> + <di:waypoint x="204" y="350" /> + <di:waypoint x="310" y="350" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jhqtls_di" bpmnElement="SequenceFlow_0jhqtls"> + <di:waypoint x="1160" y="124" /> + <di:waypoint x="1230" y="124" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dfon41_di" bpmnElement="SequenceFlow_1dfon41"> + <di:waypoint x="990" y="122" /> + <di:waypoint x="1060" y="122" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x4n7an_di" bpmnElement="SequenceFlow_1x4n7an"> + <di:waypoint x="820" y="122" /> + <di:waypoint x="890" y="122" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xmvg4v_di" bpmnElement="SequenceFlow_0xmvg4v"> + <di:waypoint x="664" y="122" /> + <di:waypoint x="720" y="122" /> + </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="SequenceFlow_0kixzdj_di" bpmnElement="SequenceFlow_0kixzdj"> <di:waypoint x="684" y="965" /> <di:waypoint x="764" y="965" /> @@ -561,6 +623,9 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <dc:Bounds x="167" y="645" width="60" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1tc44ge_di" bpmnElement="ScriptTask_1tc44ge"> + <dc:Bounds x="250" y="82" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1jgtb0y_di" bpmnElement="ScriptTask_1jgtb0y"> <dc:Bounds x="830" y="580" width="100" height="80" /> </bpmndi:BPMNShape> @@ -591,15 +656,6 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <bpmndi:BPMNShape id="EndEvent_0x406rw_di" bpmnElement="EndEvent_0x406rw"> <dc:Bounds x="446" y="1090" width="36" height="36" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_1tc44ge_di" bpmnElement="ScriptTask_1tc44ge"> - <dc:Bounds x="250" y="82" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ServiceTask_0kd6p6p_di" bpmnElement="ServiceTask_0kd6p6p"> - <dc:Bounds x="564" y="82" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_1xxag1o_di" bpmnElement="ScriptTask_1xxag1o"> - <dc:Bounds x="410" y="82" width="100" height="80" /> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="SubProcess_1yv9i68_di" bpmnElement="SubProcess_1yv9i68" isExpanded="true"> <dc:Bounds x="688" y="1072" width="781" height="196" /> </bpmndi:BPMNShape> @@ -629,9 +685,15 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <dc:Bounds x="1404" y="990" width="20" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1xxag1o_di" bpmnElement="ScriptTask_1xxag1o"> + <dc:Bounds x="410" y="82" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1ssh2l9_di" bpmnElement="ScriptTask_1ssh2l9"> <dc:Bounds x="1074" y="925" width="100" height="80" /> </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0kd6p6p_di" bpmnElement="ServiceTask_0kd6p6p"> + <dc:Bounds x="564" y="82" width="100" height="80" /> + </bpmndi:BPMNShape> <bpmndi:BPMNShape id="CallActivity_0h88mep_di" bpmnElement="CallActivity_0h88mep"> <dc:Bounds x="890" y="82" width="100" height="80" /> </bpmndi:BPMNShape> @@ -689,93 +751,47 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <bpmndi:BPMNShape id="ScriptTask_1ac05ww_di" bpmnElement="ScriptTask_1ac05ww"> <dc:Bounds x="720" y="82" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0xmvg4v_di" bpmnElement="SequenceFlow_0xmvg4v"> - <di:waypoint x="664" y="122" /> - <di:waypoint x="720" y="122" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1x4n7an_di" bpmnElement="SequenceFlow_1x4n7an"> - <di:waypoint x="820" y="122" /> - <di:waypoint x="890" y="122" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1dfon41_di" bpmnElement="SequenceFlow_1dfon41"> - <di:waypoint x="990" y="122" /> - <di:waypoint x="1060" y="122" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0jhqtls_di" bpmnElement="SequenceFlow_0jhqtls"> - <di:waypoint x="1160" y="124" /> - <di:waypoint x="1230" y="124" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="IntermediateCatchEvent_0gceuxu_di" bpmnElement="IntermediateCatchEvent_0gceuxu"> <dc:Bounds x="168" y="332" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="161" y="375" width="60" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_14c2tav_di" bpmnElement="SequenceFlow_14c2tav"> - <di:waypoint x="204" y="350" /> - <di:waypoint x="310" y="350" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_00kcej9_di" bpmnElement="SequenceFlow_00kcej9"> - <di:waypoint x="1320" y="350" /> - <di:waypoint x="1402" y="350" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="IntermediateThrowEvent_0lpvnze_di" bpmnElement="IntermediateThrowEvent_0lpvnze"> <dc:Bounds x="1402" y="106" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="1382" y="147" width="87" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_12wo878_di" bpmnElement="SequenceFlow_12wo878"> - <di:waypoint x="1330" y="124" /> - <di:waypoint x="1402" y="124" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_13roglo_di" bpmnElement="ScriptTask_13roglo"> <dc:Bounds x="710" y="310" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1f6dyxo_di" bpmnElement="SequenceFlow_1f6dyxo"> - <di:waypoint x="810" y="350" /> - <di:waypoint x="880" y="350" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_0bz8a65_di" bpmnElement="EndEvent_0bz8a65"> <dc:Bounds x="354" y="772" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_04qudo2_di" bpmnElement="ScriptTask_04qudo2"> <dc:Bounds x="550" y="580" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0ti386y_di" bpmnElement="SequenceFlow_0ti386y"> - <di:waypoint x="650" y="620" /> - <di:waypoint x="688" y="620" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_1vu3zcv_di" bpmnElement="CallActivity_1vu3zcv"> <dc:Bounds x="688" y="580" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1whq7vc_di" bpmnElement="SequenceFlow_1whq7vc"> - <di:waypoint x="788" y="620" /> - <di:waypoint x="830" y="620" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_0xf2g6c_di" bpmnElement="CallActivity_0xf2g6c"> <dc:Bounds x="520" y="310" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1r2jtal_di" bpmnElement="SequenceFlow_1r2jtal"> - <di:waypoint x="620" y="350" /> - <di:waypoint x="710" y="350" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1ayg9y8_di" bpmnElement="ScriptTask_1ayg9y8"> <dc:Bounds x="310" y="310" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_02sve8o_di" bpmnElement="SequenceFlow_02sve8o"> - <di:waypoint x="410" y="350" /> - <di:waypoint x="520" y="350" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="SubProcess_1sxkpqq_di" bpmnElement="SubProcess_1sxkpqq" isExpanded="true"> <dc:Bounds x="240" y="540" width="280" height="160" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="BoundaryEvent_0xqq1ch_di" bpmnElement="BoundaryEvent_0xqq1ch"> - <dc:Bounds x="354" y="682" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="395" y="712" width="40" height="14" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0recnor_di" bpmnElement="SequenceFlow_0recnor"> + <di:waypoint x="308" y="620" /> + <di:waypoint x="367" y="620" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1htsa6t_di" bpmnElement="SequenceFlow_1htsa6t"> + <di:waypoint x="403" y="620" /> + <di:waypoint x="460" y="620" /> + </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="StartEvent_1hd68zf_di" bpmnElement="StartEvent_1hd68zf"> <dc:Bounds x="272" y="602" width="36" height="36" /> </bpmndi:BPMNShape> @@ -788,26 +804,12 @@ css.prepareSelectNSTRequest(execution)</bpmn:script> <dc:Bounds x="353" y="644" width="67" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1htsa6t_di" bpmnElement="SequenceFlow_1htsa6t"> - <di:waypoint x="403" y="620" /> - <di:waypoint x="460" y="620" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0recnor_di" bpmnElement="SequenceFlow_0recnor"> - <di:waypoint x="308" y="620" /> - <di:waypoint x="367" y="620" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1fk2cn3_di" bpmnElement="SequenceFlow_1fk2cn3"> - <di:waypoint x="372" y="718" /> - <di:waypoint x="372" y="772" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0sub2c2_di" bpmnElement="SequenceFlow_0sub2c2"> - <di:waypoint x="213" y="620" /> - <di:waypoint x="240" y="620" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_031cwkd_di" bpmnElement="SequenceFlow_031cwkd"> - <di:waypoint x="520" y="620" /> - <di:waypoint x="550" y="620" /> - </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="BoundaryEvent_0xqq1ch_di" bpmnElement="BoundaryEvent_0xqq1ch"> + <dc:Bounds x="354" y="682" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="395" y="712" width="40" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateAccessNSSI.bpmn index 9df7398f8c..85aa7c2bf5 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateAccessNSSI.bpmn +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateAccessNSSI.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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_05od9yd" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_05od9yd" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0"> <bpmn:process id="DoAllocateAccessNSSI" name="DoAllocateAccessNSSI" isExecutable="true"> <bpmn:startEvent id="StartEvent_1" name="Start"> <bpmn:outgoing>Flow_163f3sq</bpmn:outgoing> @@ -12,14 +12,14 @@ def nss = new DoAllocateAccessNSSI() nss.preProcessRequest(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:scriptTask id="Activity_0vhvubq" name="Get Subnet capabilities" scriptFormat="groovy"> - <bpmn:incoming>Flow_00f37fu</bpmn:incoming> + <bpmn:incoming>Flow_1xcjj1m</bpmn:incoming> <bpmn:outgoing>Flow_1w8whur</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() nss.getSubnetCapabilities(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:scriptTask id="Activity_11vdo22" name="Prepare Resource Operation Status Update" scriptFormat="groovy"> - <bpmn:incoming>Flow_0833cha</bpmn:incoming> + <bpmn:incoming>Flow_1gxbsoi</bpmn:incoming> <bpmn:outgoing>Flow_1xw4abx</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() @@ -50,12 +50,12 @@ nss.prepareOperationStatusUpdate(execution)</bpmn:script> <bpmn:endEvent id="Event_0vh1hs2"> <bpmn:incoming>Flow_0ll5x3u</bpmn:incoming> </bpmn:endEvent> - <bpmn:sequenceFlow id="Flow_0833cha" sourceRef="Event_05jtdqp" targetRef="Activity_11vdo22" /> + <bpmn:sequenceFlow id="Flow_0833cha" sourceRef="Event_05jtdqp" targetRef="Activity_0vf28ld" /> <bpmn:sequenceFlow id="Flow_1xw4abx" sourceRef="Activity_11vdo22" targetRef="Activity_1nfx154" /> <bpmn:sequenceFlow id="Flow_0ll5x3u" sourceRef="Activity_1nfx154" targetRef="Event_0vh1hs2" /> <bpmn:sequenceFlow id="Flow_1x3y2tg" sourceRef="Event_18r5xkz" targetRef="Activity_03dgcg5" /> <bpmn:scriptTask id="Activity_19laorl" name="prepare OOF request for RAN NF NSSI selection" scriptFormat="groovy"> - <bpmn:incoming>Flow_0rb4j9r</bpmn:incoming> + <bpmn:incoming>Flow_1eo3bed</bpmn:incoming> <bpmn:outgoing>Flow_0d0f3ie</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() @@ -80,7 +80,7 @@ nss.prepareTnMhRequest(execution)</bpmn:script> <bpmn:linkEventDefinition id="LinkEventDefinition_05sogjc" name="OperationStatusUpdate" /> </bpmn:intermediateCatchEvent> <bpmn:intermediateThrowEvent id="Event_0u9308h" name="Go to start  operation status update"> - <bpmn:incoming>Flow_0kcvava</bpmn:incoming> + <bpmn:incoming>Flow_0bd6dhi</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_1o9trjv" name="OperationStatusUpdate" /> </bpmn:intermediateThrowEvent> <bpmn:intermediateCatchEvent id="Event_18r5xkz" name="start TN allocate"> @@ -120,7 +120,7 @@ nss.prepareOofRequestForRanNSS(execution)</bpmn:script> <bpmn:linkEventDefinition id="LinkEventDefinition_08wuatj" name="OperationStatusUpdate" /> </bpmn:intermediateThrowEvent> <bpmn:intermediateThrowEvent id="Event_15zn4zi" name="Goto start TN allocate"> - <bpmn:incoming>Flow_1exjm0h</bpmn:incoming> + <bpmn:incoming>Flow_0d40k12</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_13crcza" name="startTnAllocate" /> </bpmn:intermediateThrowEvent> <bpmn:scriptTask id="Activity_1pxd5wf" name="Process OOF response" scriptFormat="groovy"> @@ -256,12 +256,11 @@ nss.processMhAllocateNssiJobStatusRsp(execution)</bpmn:script> <bpmn:sequenceFlow id="Flow_1v3wpa2" sourceRef="Activity_0c0cq9d" targetRef="Activity_0zn4e4n" /> <bpmn:scriptTask id="Activity_1ll0nr1" name="Process Decomposition" scriptFormat="groovy"> <bpmn:incoming>Flow_1i10qog</bpmn:incoming> - <bpmn:outgoing>Flow_00f37fu</bpmn:outgoing> + <bpmn:outgoing>Flow_1f0furp</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() nss.processDecomposition(execution)</bpmn:script> </bpmn:scriptTask> - <bpmn:sequenceFlow id="Flow_00f37fu" sourceRef="Activity_1ll0nr1" targetRef="Activity_0vhvubq" /> <bpmn:callActivity id="Activity_06hcbu6" name="Call Decompose Service" calledElement="DecomposeService"> <bpmn:extensionElements> <camunda:in source="msoRequestId" target="msoRequestId" /> @@ -278,7 +277,7 @@ nss.processDecomposition(execution)</bpmn:script> <bpmn:sequenceFlow id="Flow_1i10qog" sourceRef="Activity_06hcbu6" targetRef="Activity_1ll0nr1" /> <bpmn:scriptTask id="Activity_1aweui4" name="post process RAN NF NSSI modify" scriptFormat="groovy"> <bpmn:incoming>Flow_1k3vqxg</bpmn:incoming> - <bpmn:outgoing>Flow_0n1mh5c</bpmn:outgoing> + <bpmn:outgoing>Flow_1tx240t</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() nss.processRanNfModifyRsp(execution)</bpmn:script> @@ -395,7 +394,7 @@ nss.processNsstDecomposition(execution)</bpmn:script> <bpmn:sequenceFlow id="Flow_0reg6l5" sourceRef="Activity_0fdm3in" targetRef="Activity_0a7a04p" /> <bpmn:sequenceFlow id="Flow_0jdjta3" sourceRef="Activity_0a7a04p" targetRef="Activity_1nmk2rt" /> <bpmn:sequenceFlow id="Flow_0y78v1q" sourceRef="Activity_1nmk2rt" targetRef="Gateway_1cmraqs" /> - <bpmn:sequenceFlow id="Flow_0rb4j9r" name="yes" sourceRef="Gateway_1cmraqs" targetRef="Activity_19laorl"> + <bpmn:sequenceFlow id="Flow_0rb4j9r" name="yes" sourceRef="Gateway_1cmraqs" targetRef="Event_0lx9qhs"> <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isAllNsstsDecomposed" ) == true)}</bpmn:conditionExpression> </bpmn:sequenceFlow> <bpmn:sequenceFlow id="Flow_0d0f3ie" sourceRef="Activity_19laorl" targetRef="Activity_0y9xgkl" /> @@ -432,12 +431,11 @@ def nss = new DoAllocateAccessNSSI() nss.updateAaiWithRANInstances(execution)</bpmn:script> </bpmn:scriptTask> <bpmn:sequenceFlow id="Flow_0ikdlkf" sourceRef="Activity_118je0o" targetRef="Activity_0pa8al6" /> - <bpmn:sequenceFlow id="Flow_1exjm0h" sourceRef="Activity_0pa8al6" targetRef="Event_15zn4zi" /> - <bpmn:sequenceFlow id="Flow_0bd6dhi" sourceRef="Activity_0zn4e4n" targetRef="Activity_0vf28ld" /> - <bpmn:sequenceFlow id="Flow_0kcvava" sourceRef="Activity_0vf28ld" targetRef="Event_0u9308h" /> + <bpmn:sequenceFlow id="Flow_1exjm0h" sourceRef="Activity_0pa8al6" targetRef="Gateway_1832fz7" /> + <bpmn:sequenceFlow id="Flow_0bd6dhi" sourceRef="Activity_0zn4e4n" targetRef="Event_0u9308h" /> <bpmn:scriptTask id="Activity_0vf28ld" name="update AAI relationships" scriptFormat="groovy"> - <bpmn:incoming>Flow_0bd6dhi</bpmn:incoming> - <bpmn:outgoing>Flow_0kcvava</bpmn:outgoing> + <bpmn:incoming>Flow_0833cha</bpmn:incoming> + <bpmn:outgoing>Flow_1gxbsoi</bpmn:outgoing> <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* def nss = new DoAllocateAccessNSSI() nss.updateAairelationships(execution)</bpmn:script> @@ -492,10 +490,9 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <bpmn:sequenceFlow id="Flow_0umohws" sourceRef="Activity_0p0mwue" targetRef="Activity_084fqbd" /> </bpmn:subProcess> <bpmn:intermediateThrowEvent id="Event_1cqde7p" name="Goto start TN allocate"> - <bpmn:incoming>Flow_0n1mh5c</bpmn:incoming> + <bpmn:incoming>Flow_15uux8j</bpmn:incoming> <bpmn:linkEventDefinition id="LinkEventDefinition_0da795k" name="startTnAllocate" /> </bpmn:intermediateThrowEvent> - <bpmn:sequenceFlow id="Flow_0n1mh5c" sourceRef="Activity_1aweui4" targetRef="Event_1cqde7p" /> <bpmn:callActivity id="Activity_08i0hzk" name="DoModifyRanNfNssi" calledElement="DoModifyRanNfNssi"> <bpmn:extensionElements> <camunda:in source="msoRequestId" target="msoRequestId" /> @@ -513,52 +510,125 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> </bpmn:callActivity> <bpmn:sequenceFlow id="Flow_1k3vqxg" sourceRef="Activity_08i0hzk" targetRef="Activity_1aweui4" /> <bpmn:sequenceFlow id="Flow_083bb3k" sourceRef="Gateway_1cmraqs" targetRef="Activity_0fdm3in" /> + <bpmn:sequenceFlow id="Flow_1gxbsoi" sourceRef="Activity_0vf28ld" targetRef="Activity_11vdo22" /> + <bpmn:intermediateThrowEvent id="Event_0lx9qhs" name="Goto start RANNF Allocate"> + <bpmn:incoming>Flow_0rb4j9r</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_0s0j5kx" name="startRANNFAllocate" /> + </bpmn:intermediateThrowEvent> + <bpmn:intermediateCatchEvent id="Event_0idp63x" name="start RANNF Allocate"> + <bpmn:outgoing>Flow_1eo3bed</bpmn:outgoing> + <bpmn:linkEventDefinition id="LinkEventDefinition_0zk2eis" name="startRANNFAllocate" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="Flow_1eo3bed" sourceRef="Event_0idp63x" targetRef="Activity_19laorl" /> + <bpmn:exclusiveGateway id="Gateway_1832fz7" name="Is TN Present?" default="Flow_0d40k12"> + <bpmn:incoming>Flow_1exjm0h</bpmn:incoming> + <bpmn:outgoing>Flow_0d40k12</bpmn:outgoing> + <bpmn:outgoing>Flow_024x74t</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_0d40k12" name="Yes" sourceRef="Gateway_1832fz7" targetRef="Event_15zn4zi" /> + <bpmn:intermediateThrowEvent id="Event_11t655f" name="Go to start  operation status update"> + <bpmn:incoming>Flow_024x74t</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_0f0lmkf" name="OperationStatusUpdate" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_024x74t" name="No" sourceRef="Gateway_1832fz7" targetRef="Event_11t655f"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="Gateway_0qnxawk" name="Is TOP RAN has TN NSSTs?" default="Flow_1xcjj1m"> + <bpmn:incoming>Flow_1f0furp</bpmn:incoming> + <bpmn:outgoing>Flow_1xcjj1m</bpmn:outgoing> + <bpmn:outgoing>Flow_0twvyso</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_1xcjj1m" name="yes" sourceRef="Gateway_0qnxawk" targetRef="Activity_0vhvubq" /> + <bpmn:intermediateThrowEvent id="Event_0htr86v" name="Go to start NSSI allocate"> + <bpmn:incoming>Flow_0twvyso</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_02ffzy2" name="NSSIAllocate" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_0twvyso" name="No" sourceRef="Gateway_0qnxawk" targetRef="Event_0htr86v"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="Flow_1f0furp" sourceRef="Activity_1ll0nr1" targetRef="Gateway_0qnxawk" /> + <bpmn:exclusiveGateway id="Gateway_0rm6svp" name="Is TN present?" default="Flow_15uux8j"> + <bpmn:incoming>Flow_1tx240t</bpmn:incoming> + <bpmn:outgoing>Flow_15uux8j</bpmn:outgoing> + <bpmn:outgoing>Flow_1ryf352</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="Flow_1tx240t" sourceRef="Activity_1aweui4" targetRef="Gateway_0rm6svp" /> + <bpmn:sequenceFlow id="Flow_15uux8j" name="Yes" sourceRef="Gateway_0rm6svp" targetRef="Event_1cqde7p" /> + <bpmn:intermediateThrowEvent id="Event_0f7ueve" name="Go to start  operation status update"> + <bpmn:incoming>Flow_1ryf352</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_1qz179m" name="OperationStatusUpdate" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_1ryf352" name="No" sourceRef="Gateway_0rm6svp" targetRef="Event_0f7ueve"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> </bpmn:process> <bpmn:message id="Message_1r7nv8u" name="WorkflowMessage" /> <bpmn:error id="Error_047rteq" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateAccessNSSI"> - <bpmndi:BPMNEdge id="Flow_0kcvava_di" bpmnElement="Flow_0kcvava"> - <di:waypoint x="1800" y="820" /> - <di:waypoint x="1882" y="820" /> + <bpmndi:BPMNEdge id="Flow_1f0furp_di" bpmnElement="Flow_1f0furp"> + <di:waypoint x="790" y="120" /> + <di:waypoint x="875" y="120" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0bd6dhi_di" bpmnElement="Flow_0bd6dhi"> - <di:waypoint x="1620" y="820" /> - <di:waypoint x="1700" y="820" /> + <bpmndi:BPMNEdge id="Flow_0twvyso_di" bpmnElement="Flow_0twvyso"> + <di:waypoint x="900" y="145" /> + <di:waypoint x="900" y="192" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="908" y="166" width="15" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1exjm0h_di" bpmnElement="Flow_1exjm0h"> - <di:waypoint x="1850" y="680" /> - <di:waypoint x="1882" y="680" /> + <bpmndi:BPMNEdge id="Flow_1xcjj1m_di" bpmnElement="Flow_1xcjj1m"> + <di:waypoint x="925" y="120" /> + <di:waypoint x="1030" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="970" y="102" width="17" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0ikdlkf_di" bpmnElement="Flow_0ikdlkf"> - <di:waypoint x="1720" y="680" /> - <di:waypoint x="1750" y="680" /> + <bpmndi:BPMNEdge id="Flow_1eo3bed_di" bpmnElement="Flow_1eo3bed"> + <di:waypoint x="228" y="819" /> + <di:waypoint x="300" y="819" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1gxbsoi_di" bpmnElement="Flow_1gxbsoi"> + <di:waypoint x="430" y="1440" /> + <di:waypoint x="490" y="1440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_083bb3k_di" bpmnElement="Flow_083bb3k"> + <di:waypoint x="790" y="554" /> + <di:waypoint x="790" y="660" /> + <di:waypoint x="420" y="660" /> + <di:waypoint x="420" y="569" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1k3vqxg_di" bpmnElement="Flow_1k3vqxg"> + <di:waypoint x="1010" y="818" /> + <di:waypoint x="1040" y="818" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0bd6dhi_di" bpmnElement="Flow_0bd6dhi"> + <di:waypoint x="1620" y="1260" /> + <di:waypoint x="1722" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0fdetmo_di" bpmnElement="Flow_0fdetmo"> - <di:waypoint x="1260" y="820" /> - <di:waypoint x="1340" y="820" /> + <di:waypoint x="1260" y="1260" /> + <di:waypoint x="1340" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1p48xbl_di" bpmnElement="Flow_1p48xbl"> - <di:waypoint x="580" y="820" /> - <di:waypoint x="640" y="820" /> + <di:waypoint x="580" y="1260" /> + <di:waypoint x="640" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1ryi6ym_di" bpmnElement="Flow_1ryi6ym"> - <di:waypoint x="1330" y="531" /> - <di:waypoint x="1355" y="531" /> + <di:waypoint x="780" y="820" /> + <di:waypoint x="805" y="820" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1f9rw3m_di" bpmnElement="Flow_1f9rw3m"> - <di:waypoint x="1210" y="531" /> - <di:waypoint x="1230" y="531" /> + <di:waypoint x="660" y="820" /> + <di:waypoint x="680" y="820" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0d0f3ie_di" bpmnElement="Flow_0d0f3ie"> - <di:waypoint x="950" y="530" /> - <di:waypoint x="980" y="530" /> + <di:waypoint x="400" y="819" /> + <di:waypoint x="430" y="819" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0rb4j9r_di" bpmnElement="Flow_0rb4j9r"> <di:waypoint x="815" y="529" /> - <di:waypoint x="833" y="529" /> - <di:waypoint x="833" y="530" /> - <di:waypoint x="850" y="530" /> + <di:waypoint x="882" y="529" /> <bpmndi:BPMNLabel> <dc:Bounds x="824" y="543" width="17" height="14" /> </bpmndi:BPMNLabel> @@ -609,48 +679,36 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <di:waypoint x="480" y="120" /> <di:waypoint x="530" y="120" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_00f37fu_di" bpmnElement="Flow_00f37fu"> - <di:waypoint x="790" y="120" /> - <di:waypoint x="830" y="120" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1v3wpa2_di" bpmnElement="Flow_1v3wpa2"> - <di:waypoint x="1440" y="820" /> - <di:waypoint x="1520" y="820" /> + <di:waypoint x="1440" y="1260" /> + <di:waypoint x="1520" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_04thflx_di" bpmnElement="Flow_04thflx"> - <di:waypoint x="1100" y="820" /> - <di:waypoint x="1160" y="820" /> + <di:waypoint x="1100" y="1260" /> + <di:waypoint x="1160" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0qhjtre_di" bpmnElement="Flow_0qhjtre"> - <di:waypoint x="410" y="820" /> - <di:waypoint x="480" y="820" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_05yqmnj_di" bpmnElement="Flow_05yqmnj"> - <di:waypoint x="1580" y="680" /> - <di:waypoint x="1620" y="680" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1pbiznt_di" bpmnElement="Flow_1pbiznt"> - <di:waypoint x="1430" y="680" /> - <di:waypoint x="1480" y="680" /> + <di:waypoint x="410" y="1260" /> + <di:waypoint x="480" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0kn30g3_di" bpmnElement="Flow_0kn30g3"> - <di:waypoint x="1403" y="529" /> - <di:waypoint x="1460" y="529" /> + <di:waypoint x="853" y="818" /> + <di:waypoint x="910" y="818" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1413" y="513" width="17" height="14" /> + <dc:Bounds x="863" y="802" width="17" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1nkqrpd_di" bpmnElement="Flow_1nkqrpd"> - <di:waypoint x="1080" y="531" /> - <di:waypoint x="1110" y="531" /> + <di:waypoint x="530" y="820" /> + <di:waypoint x="560" y="820" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_16z59pu_di" bpmnElement="Flow_16z59pu"> - <di:waypoint x="740" y="820" /> - <di:waypoint x="810" y="820" /> + <di:waypoint x="740" y="1260" /> + <di:waypoint x="810" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1b14415_di" bpmnElement="Flow_1b14415"> - <di:waypoint x="1200" y="120" /> - <di:waypoint x="1240" y="120" /> + <di:waypoint x="1400" y="120" /> + <di:waypoint x="1440" y="120" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0tica8m_di" bpmnElement="Flow_0tica8m"> <di:waypoint x="340" y="120" /> @@ -669,22 +727,22 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <di:waypoint x="245" y="380" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1h7iq8l_di" bpmnElement="Flow_1h7iq8l"> - <di:waypoint x="1340" y="120" /> - <di:waypoint x="1372" y="120" /> + <di:waypoint x="1540" y="120" /> + <di:waypoint x="1572" y="120" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0tkzfhb_di" bpmnElement="Flow_0tkzfhb"> - <di:waypoint x="1060" y="120" /> - <di:waypoint x="1100" y="120" /> + <di:waypoint x="1260" y="120" /> + <di:waypoint x="1300" y="120" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1w8whur_di" bpmnElement="Flow_1w8whur"> - <di:waypoint x="930" y="120" /> - <di:waypoint x="960" y="120" /> + <di:waypoint x="1130" y="120" /> + <di:waypoint x="1160" y="120" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_178fenq_di" bpmnElement="Flow_178fenq"> - <di:waypoint x="1380" y="556" /> - <di:waypoint x="1380" y="640" /> + <di:waypoint x="830" y="845" /> + <di:waypoint x="830" y="977" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1386" y="574" width="15" height="14" /> + <dc:Bounds x="836" y="863" width="15" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1ipsxgh_di" bpmnElement="Flow_1ipsxgh"> @@ -699,38 +757,72 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <di:waypoint x="240" y="120" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0zhr499_di" bpmnElement="Flow_0zhr499"> - <di:waypoint x="910" y="820" /> - <di:waypoint x="1000" y="820" /> + <di:waypoint x="910" y="1260" /> + <di:waypoint x="1000" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1x3y2tg_di" bpmnElement="Flow_1x3y2tg"> - <di:waypoint x="228" y="820" /> - <di:waypoint x="310" y="820" /> + <di:waypoint x="228" y="1260" /> + <di:waypoint x="310" y="1260" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0ll5x3u_di" bpmnElement="Flow_0ll5x3u"> - <di:waypoint x="600" y="1010" /> - <di:waypoint x="692" y="1010" /> + <di:waypoint x="760" y="1440" /> + <di:waypoint x="862" y="1440" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_1xw4abx_di" bpmnElement="Flow_1xw4abx"> - <di:waypoint x="420" y="1010" /> - <di:waypoint x="500" y="1010" /> + <di:waypoint x="590" y="1440" /> + <di:waypoint x="660" y="1440" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0833cha_di" bpmnElement="Flow_0833cha"> - <di:waypoint x="228" y="1010" /> - <di:waypoint x="320" y="1010" /> + <di:waypoint x="228" y="1440" /> + <di:waypoint x="330" y="1440" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_0n1mh5c_di" bpmnElement="Flow_0n1mh5c"> - <di:waypoint x="1690" y="529" /> - <di:waypoint x="1742" y="529" /> + <bpmndi:BPMNEdge id="Flow_1tx240t_di" bpmnElement="Flow_1tx240t"> + <di:waypoint x="1140" y="818" /> + <di:waypoint x="1245" y="818" /> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_1k3vqxg_di" bpmnElement="Flow_1k3vqxg"> - <di:waypoint x="1560" y="529" /> - <di:waypoint x="1590" y="529" /> + <bpmndi:BPMNEdge id="Flow_15uux8j_di" bpmnElement="Flow_15uux8j"> + <di:waypoint x="1295" y="818" /> + <di:waypoint x="1392" y="818" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1335" y="800" width="18" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="Flow_083bb3k_di" bpmnElement="Flow_083bb3k"> - <di:waypoint x="790" y="554" /> - <di:waypoint x="790" y="730" /> - <di:waypoint x="420" y="730" /> - <di:waypoint x="420" y="569" /> + <bpmndi:BPMNEdge id="Flow_0d40k12_di" bpmnElement="Flow_0d40k12"> + <di:waypoint x="1375" y="1017" /> + <di:waypoint x="1452" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1406" y="999" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1pbiznt_di" bpmnElement="Flow_1pbiznt"> + <di:waypoint x="880" y="1017" /> + <di:waypoint x="930" y="1017" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_05yqmnj_di" bpmnElement="Flow_05yqmnj"> + <di:waypoint x="1030" y="1017" /> + <di:waypoint x="1070" y="1017" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0ikdlkf_di" bpmnElement="Flow_0ikdlkf"> + <di:waypoint x="1170" y="1017" /> + <di:waypoint x="1200" y="1017" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1exjm0h_di" bpmnElement="Flow_1exjm0h"> + <di:waypoint x="1300" y="1017" /> + <di:waypoint x="1325" y="1017" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_024x74t_di" bpmnElement="Flow_024x74t"> + <di:waypoint x="1350" y="1042" /> + <di:waypoint x="1350" y="1100" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1358" y="1068" width="15" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1ryf352_di" bpmnElement="Flow_1ryf352"> + <di:waypoint x="1270" y="843" /> + <di:waypoint x="1270" y="865" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1278" y="851" width="15" height="14" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> <dc:Bounds x="162" y="102" width="36" height="36" /> @@ -742,52 +834,52 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <dc:Bounds x="240" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1gdi5bo_di" bpmnElement="Activity_0vhvubq"> - <dc:Bounds x="830" y="80" width="100" height="80" /> + <dc:Bounds x="1030" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_11vdo22_di" bpmnElement="Activity_11vdo22"> - <dc:Bounds x="320" y="970" width="100" height="80" /> + <dc:Bounds x="490" y="1400" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1nfx154_di" bpmnElement="Activity_1nfx154"> - <dc:Bounds x="500" y="970" width="100" height="80" /> + <dc:Bounds x="660" y="1400" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0vh1hs2_di" bpmnElement="Event_0vh1hs2"> - <dc:Bounds x="692" y="992" width="36" height="36" /> + <dc:Bounds x="862" y="1422" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0icw8wt_di" bpmnElement="Activity_19laorl"> - <dc:Bounds x="850" y="490" width="100" height="80" /> + <dc:Bounds x="300" y="779" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_10z6k5t_di" bpmnElement="Activity_03dgcg5"> - <dc:Bounds x="310" y="780" width="100" height="80" /> + <dc:Bounds x="310" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1dracjc_di" bpmnElement="Activity_18y4ijb"> - <dc:Bounds x="1000" y="780" width="100" height="80" /> + <dc:Bounds x="1000" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0g0i472_di" bpmnElement="Event_05jtdqp"> - <dc:Bounds x="192" y="992" width="36" height="36" /> + <dc:Bounds x="192" y="1422" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="174" y="1035" width="73" height="27" /> + <dc:Bounds x="174" y="1465" width="73" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1ea1h0i_di" bpmnElement="Event_0u9308h"> - <dc:Bounds x="1882" y="802" width="36" height="36" /> + <dc:Bounds x="1722" y="1242" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1860" y="850" width="79" height="40" /> + <dc:Bounds x="1700" y="1290" width="79" height="40" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1fj3anx_di" bpmnElement="Event_18r5xkz"> - <dc:Bounds x="192" y="802" width="36" height="36" /> + <dc:Bounds x="192" y="1242" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="170" y="845" width="81" height="14" /> + <dc:Bounds x="170" y="1285" width="81" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0nm8unl_di" bpmnElement="Activity_0qn2fvh"> - <dc:Bounds x="810" y="780" width="100" height="80" /> + <dc:Bounds x="810" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_12szahe_di" bpmnElement="Activity_12szahe"> - <dc:Bounds x="1240" y="80" width="100" height="80" /> + <dc:Bounds x="1440" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1oepxwk_di" bpmnElement="Activity_0vwhzem"> - <dc:Bounds x="960" y="80" width="100" height="80" /> + <dc:Bounds x="1160" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_1aesepd_di" bpmnElement="Gateway_1aesepd" isMarkerVisible="true"> <dc:Bounds x="245" y="355" width="50" height="50" /> @@ -801,31 +893,19 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <dc:Bounds x="1220" y="397" width="79" height="40" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Event_15zn4zi_di" bpmnElement="Event_15zn4zi"> - <dc:Bounds x="1882" y="662" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1868" y="705" width="67" height="27" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1pxd5wf_di" bpmnElement="Activity_1pxd5wf"> - <dc:Bounds x="1110" y="491" width="100" height="80" /> + <dc:Bounds x="560" y="780" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Gateway_0en9ki5_di" bpmnElement="Gateway_0en9ki5" isMarkerVisible="true"> - <dc:Bounds x="1355" y="506" width="50" height="50" /> + <dc:Bounds x="805" y="795" width="50" height="50" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1349" y="476" width="62" height="27" /> + <dc:Bounds x="799" y="765" width="62" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0a95zgv_di" bpmnElement="Activity_0a95zgv"> - <dc:Bounds x="1330" y="640" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_118je0o_di" bpmnElement="Activity_118je0o"> - <dc:Bounds x="1620" y="640" width="100" height="80" /> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_0qwruv5_di" bpmnElement="Event_0s8t1ji"> - <dc:Bounds x="1372" y="102" width="36" height="36" /> + <dc:Bounds x="1572" y="102" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1351" y="145" width="81" height="27" /> + <dc:Bounds x="1551" y="145" width="81" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1vfrb2l_di" bpmnElement="Event_1glt41l"> @@ -838,22 +918,19 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <dc:Bounds x="380" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1u28lyv_di" bpmnElement="Activity_1u28lyv"> - <dc:Bounds x="1100" y="80" width="100" height="80" /> + <dc:Bounds x="1300" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1ux83hz_di" bpmnElement="Activity_1ux83hz"> - <dc:Bounds x="640" y="780" width="100" height="80" /> + <dc:Bounds x="640" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0c0cq9d_di" bpmnElement="Activity_0c0cq9d"> - <dc:Bounds x="1340" y="780" width="100" height="80" /> + <dc:Bounds x="1340" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0y9xgkl_di" bpmnElement="Activity_0y9xgkl"> - <dc:Bounds x="980" y="491" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0vbzhej_di" bpmnElement="Activity_0vbzhej"> - <dc:Bounds x="1480" y="640" width="100" height="80" /> + <dc:Bounds x="430" y="780" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0zn4e4n_di" bpmnElement="Activity_0zn4e4n"> - <dc:Bounds x="1520" y="780" width="100" height="80" /> + <dc:Bounds x="1520" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1ll0nr1_di" bpmnElement="Activity_1ll0nr1"> <dc:Bounds x="690" y="80" width="100" height="80" /> @@ -861,9 +938,6 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <bpmndi:BPMNShape id="Activity_06hcbu6_di" bpmnElement="Activity_06hcbu6"> <dc:Bounds x="530" y="80" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_1xke4xc_di" bpmnElement="Activity_1aweui4"> - <dc:Bounds x="1590" y="489" width="100" height="80" /> - </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1bjike9_di" bpmnElement="Activity_1bjike9"> <dc:Bounds x="530" y="340" width="100" height="80" /> </bpmndi:BPMNShape> @@ -898,62 +972,128 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script> <dc:Bounds x="620" y="489" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_027ic3j_di" bpmnElement="Activity_027ic3j"> - <dc:Bounds x="1230" y="491" width="100" height="80" /> + <dc:Bounds x="680" y="780" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_12vtq69_di" bpmnElement="Activity_12vtq69"> - <dc:Bounds x="480" y="780" width="100" height="80" /> + <dc:Bounds x="480" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0qpy2sg_di" bpmnElement="Activity_0qpy2sg"> - <dc:Bounds x="1160" y="780" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_0pa8al6_di" bpmnElement="Activity_0pa8al6"> - <dc:Bounds x="1750" y="640" width="100" height="80" /> + <dc:Bounds x="1160" y="1220" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1riw9uv_di" bpmnElement="Activity_0vf28ld"> - <dc:Bounds x="1700" y="780" width="100" height="80" /> + <dc:Bounds x="330" y="1400" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1cqde7p_di" bpmnElement="Event_1cqde7p"> - <dc:Bounds x="1742" y="511" width="36" height="36" /> + <dc:Bounds x="1392" y="800" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1728" y="554" width="67" height="27" /> + <dc:Bounds x="1378" y="843" width="67" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="Activity_08i0hzk_di" bpmnElement="Activity_08i0hzk"> - <dc:Bounds x="1460" y="489" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_1xke4xc_di" bpmnElement="Activity_1aweui4"> + <dc:Bounds x="1040" y="778" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_0rm6svp_di" bpmnElement="Gateway_0rm6svp" isMarkerVisible="true"> + <dc:Bounds x="1245" y="793" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1235" y="763" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_15zn4zi_di" bpmnElement="Event_15zn4zi"> + <dc:Bounds x="1452" y="999" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1438" y="1042" width="67" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0a95zgv_di" bpmnElement="Activity_0a95zgv"> + <dc:Bounds x="780" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_118je0o_di" bpmnElement="Activity_118je0o"> + <dc:Bounds x="1070" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0vbzhej_di" bpmnElement="Activity_0vbzhej"> + <dc:Bounds x="930" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0pa8al6_di" bpmnElement="Activity_0pa8al6"> + <dc:Bounds x="1200" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_1832fz7_di" bpmnElement="Gateway_1832fz7" isMarkerVisible="true"> + <dc:Bounds x="1325" y="992" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1313" y="971" width="74" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_11t655f_di" bpmnElement="Event_11t655f"> + <dc:Bounds x="1332" y="1100" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1310" y="1148" width="79" height="40" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0f7ueve_di" bpmnElement="Event_0f7ueve"> + <dc:Bounds x="1252" y="865" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1230" y="913" width="79" height="40" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0bcs8g1_di" bpmnElement="Activity_0bcs8g1" isExpanded="true"> - <dc:Bounds x="410" y="1160" width="781" height="196" /> + <dc:Bounds x="390" y="1530" width="781" height="196" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="Flow_0umohws_di" bpmnElement="Flow_0umohws"> - <di:waypoint x="800" y="1264" /> - <di:waypoint x="870" y="1264" /> + <di:waypoint x="780" y="1634" /> + <di:waypoint x="850" y="1634" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_11qgtdm_di" bpmnElement="Flow_11qgtdm"> - <di:waypoint x="640" y="1264" /> - <di:waypoint x="700" y="1264" /> + <di:waypoint x="620" y="1634" /> + <di:waypoint x="680" y="1634" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_18rrdsq_di" bpmnElement="Flow_18rrdsq"> - <di:waypoint x="476" y="1264" /> - <di:waypoint x="540" y="1264" /> + <di:waypoint x="456" y="1634" /> + <di:waypoint x="520" y="1634" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="Flow_0c9dr7z_di" bpmnElement="Flow_0c9dr7z"> - <di:waypoint x="970" y="1264" /> - <di:waypoint x="1078" y="1264" /> + <di:waypoint x="950" y="1634" /> + <di:waypoint x="1058" y="1634" /> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="Event_077lf7i_di" bpmnElement="Event_077lf7i"> - <dc:Bounds x="440" y="1246" width="36" height="36" /> + <dc:Bounds x="420" y="1616" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Event_1p00v8c_di" bpmnElement="Event_1p00v8c"> - <dc:Bounds x="1078" y="1246" width="36" height="36" /> + <dc:Bounds x="1058" y="1616" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_084fqbd_di" bpmnElement="Activity_084fqbd"> - <dc:Bounds x="870" y="1224" width="100" height="80" /> + <dc:Bounds x="850" y="1594" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_1adxijg_di" bpmnElement="Activity_1adxijg"> - <dc:Bounds x="540" y="1224" width="100" height="80" /> + <dc:Bounds x="520" y="1594" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="Activity_0p0mwue_di" bpmnElement="Activity_0p0mwue"> - <dc:Bounds x="700" y="1224" width="100" height="80" /> + <dc:Bounds x="680" y="1594" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_08i0hzk_di" bpmnElement="Activity_08i0hzk"> + <dc:Bounds x="910" y="778" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0lx9qhs_di" bpmnElement="Event_0lx9qhs"> + <dc:Bounds x="882" y="511" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="855" y="546" width="90" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0idp63x_di" bpmnElement="Event_0idp63x"> + <dc:Bounds x="192" y="801" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="180" y="844" width="63" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_0qnxawk_di" bpmnElement="Gateway_0qnxawk" isMarkerVisible="true"> + <dc:Bounds x="875" y="95" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="860" y="65" width="82" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0htr86v_di" bpmnElement="Event_0htr86v"> + <dc:Bounds x="882" y="192" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="860" y="227" width="81" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSI.bpmn index c6268d3638..51f96ee8a9 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSI.bpmn +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSI.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1"> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.8.1"> <bpmn:process id="DoAllocateNSIandNSSI" name="DoAllocateNSIandNSSI" isExecutable="true"> <bpmn:startEvent id="StartEvent_1ym3sha" name="Start"> <bpmn:outgoing>SequenceFlow_0xgfj7z</bpmn:outgoing> @@ -155,7 +155,7 @@ dcnsio.createCnSliceProfileInstance(execution)</bpmn:script> def dcnsio = new DoAllocateNSIandNSSI() dcnsio.createCnSliceProfile(execution)</bpmn:script> </bpmn:scriptTask> - <bpmn:sequenceFlow id="SequenceFlow_0ax2c4p" sourceRef="ExclusiveGateway_19ru3hp" targetRef="EndEvent_02c8wsp" /> + <bpmn:sequenceFlow id="SequenceFlow_0ax2c4p" sourceRef="ExclusiveGateway_19ru3hp" targetRef="Gateway_0tpcoai" /> <bpmn:scriptTask id="ScriptTask_0stnvp3" name="Create TN (BH) Slice Profile" scriptFormat="groovy"> <bpmn:incoming>SequenceFlow_0paqrtx</bpmn:incoming> <bpmn:outgoing>SequenceFlow_1d48cil</bpmn:outgoing> @@ -230,7 +230,7 @@ dcnsio.updateCnRelationship(execution)</bpmn:script> <bpmn:incoming>SequenceFlow_150xio1</bpmn:incoming> </bpmn:endEvent> <bpmn:intermediateThrowEvent id="EndEvent_02c8wsp" name="GoTo Create Tn SliceProfile"> - <bpmn:incoming>SequenceFlow_0ax2c4p</bpmn:incoming> + <bpmn:incoming>Flow_0ehx22x</bpmn:incoming> <bpmn:linkEventDefinition name="CreateTnSliceProfile" /> </bpmn:intermediateThrowEvent> <bpmn:scriptTask id="ScriptTask_0s8vhha" name="prepare Allocate An Nssi" scriptFormat="groovy"> @@ -274,56 +274,363 @@ dcnsio.createANEndpoint(execution)</bpmn:script> def dcnsio = new DoAllocateNSIandNSSI() dcnsio.createCNEndpoint(execution)</bpmn:script> </bpmn:scriptTask> + <bpmn:intermediateCatchEvent id="Event_0mxnhe0" name="Create Tn FH SliceProfile"> + <bpmn:outgoing>Flow_19564hj</bpmn:outgoing> + <bpmn:linkEventDefinition id="LinkEventDefinition_03yk2ml" name="CreateTnFHSliceProfile" /> + </bpmn:intermediateCatchEvent> + <bpmn:scriptTask id="Activity_0z1ympd" name="Create TN (FH) Slice Profile" scriptFormat="groovy"> + <bpmn:incoming>Flow_19564hj</bpmn:incoming> + <bpmn:outgoing>Flow_1j649ha</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.createTnFHSliceProfileInstance(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Activity_1xwl7x0" name="Create TN(FH) Slice Profile" scriptFormat="groovy"> + <bpmn:incoming>Flow_1j649ha</bpmn:incoming> + <bpmn:outgoing>Flow_1hhipma</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.createTnFHSliceProfile(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Activity_14td7ux" name="prepare Allocate Tn-FH Nssi" scriptFormat="groovy"> + <bpmn:incoming>Flow_1hhipma</bpmn:incoming> + <bpmn:outgoing>Flow_00n25jt</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.prepareAllocateTnFHNssi(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Activity_129ztck" name="Call DoAllocateNSSI(TN)" calledElement="DoAllocateNSSI"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="nsstInput" target="nsstInput" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:in source="sliceTaskParams" target="sliceTaskParams" /> + <camunda:in source="taskId" target="CSSOT_taskId" /> + <camunda:in source="taskName" target="CSSOT_name" /> + <camunda:in source="taskStatus" target="CSSOT_status" /> + <camunda:in source="isManual" target="CSSOT_isManual" /> + <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" /> + <camunda:in source="tnFHSliceTaskInfo" target="sliceTaskInfo" /> + <camunda:out source="nssiAllocateResult" target="tnFHNssiAllocateResult" /> + <camunda:in source="TnFHAllocateNssiNbiRequest" target="nbiRequest" /> + <camunda:out source="sliceTaskParams" target="sliceTaskParams" /> + <camunda:in source="tnFHSubnetType" target="subnetType" /> + </bpmn:extensionElements> + <bpmn:incoming>Flow_00n25jt</bpmn:incoming> + <bpmn:outgoing>Flow_1b3a4vn</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Activity_0e7x5rm" name="Update relationship between NSI and NSSI" scriptFormat="groovy"> + <bpmn:incoming>Flow_1b3a4vn</bpmn:incoming> + <bpmn:outgoing>Flow_0dpbero</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.updateTnFHRelationship(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="Flow_19564hj" sourceRef="Event_0mxnhe0" targetRef="Activity_0z1ympd" /> + <bpmn:sequenceFlow id="Flow_1j649ha" sourceRef="Activity_0z1ympd" targetRef="Activity_1xwl7x0" /> + <bpmn:sequenceFlow id="Flow_1hhipma" sourceRef="Activity_1xwl7x0" targetRef="Activity_14td7ux" /> + <bpmn:sequenceFlow id="Flow_00n25jt" sourceRef="Activity_14td7ux" targetRef="Activity_129ztck" /> + <bpmn:sequenceFlow id="Flow_1b3a4vn" sourceRef="Activity_129ztck" targetRef="Activity_0e7x5rm" /> + <bpmn:intermediateCatchEvent id="Event_0grj24z" name="Create Tn MH SliceProfile"> + <bpmn:outgoing>Flow_0bu5pc9</bpmn:outgoing> + <bpmn:linkEventDefinition id="LinkEventDefinition_0vmyjtc" name="CreateTnMHSliceProfile" /> + </bpmn:intermediateCatchEvent> + <bpmn:scriptTask id="Activity_0zlfgf5" name="Create TN (MH) Slice Profile" scriptFormat="groovy"> + <bpmn:incoming>Flow_0bu5pc9</bpmn:incoming> + <bpmn:outgoing>Flow_04gnit7</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.createTnMHSliceProfileInstance(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Activity_0j9tjaf" name="Create TN(MH) Slice Profile" scriptFormat="groovy"> + <bpmn:incoming>Flow_04gnit7</bpmn:incoming> + <bpmn:outgoing>Flow_1i02ybs</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.createTnMHSliceProfile(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Activity_147twno" name="prepare Allocate Tn-MH Nssi" scriptFormat="groovy"> + <bpmn:incoming>Flow_1i02ybs</bpmn:incoming> + <bpmn:outgoing>Flow_0shgflm</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.prepareAllocateTnMHNssi(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Activity_0fvj9vy" name="Call DoAllocateNSSI(TN)" calledElement="DoAllocateNSSI"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="nsstInput" target="nsstInput" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:in source="sliceTaskParams" target="sliceTaskParams" /> + <camunda:in source="taskId" target="CSSOT_taskId" /> + <camunda:in source="taskName" target="CSSOT_name" /> + <camunda:in source="taskStatus" target="CSSOT_status" /> + <camunda:in source="isManual" target="CSSOT_isManual" /> + <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" /> + <camunda:in source="tnMHSliceTaskInfo" target="sliceTaskInfo" /> + <camunda:out source="nssiAllocateResult" target="tnMHNssiAllocateResult" /> + <camunda:in source="TnMHAllocateNssiNbiRequest" target="nbiRequest" /> + <camunda:out source="sliceTaskParams" target="sliceTaskParams" /> + <camunda:in source="tnMHSubnetType" target="subnetType" /> + </bpmn:extensionElements> + <bpmn:incoming>Flow_0shgflm</bpmn:incoming> + <bpmn:outgoing>Flow_05lgxne</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Activity_08n2y6k" name="Update relationship between NSI and NSSI" scriptFormat="groovy"> + <bpmn:incoming>Flow_05lgxne</bpmn:incoming> + <bpmn:outgoing>Flow_0imtsjm</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcnsio = new DoAllocateNSIandNSSI() +dcnsio.updateTnMHRelationship(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="Flow_0bu5pc9" sourceRef="Event_0grj24z" targetRef="Activity_0zlfgf5" /> + <bpmn:sequenceFlow id="Flow_04gnit7" sourceRef="Activity_0zlfgf5" targetRef="Activity_0j9tjaf" /> + <bpmn:sequenceFlow id="Flow_1i02ybs" sourceRef="Activity_0j9tjaf" targetRef="Activity_147twno" /> + <bpmn:sequenceFlow id="Flow_0shgflm" sourceRef="Activity_147twno" targetRef="Activity_0fvj9vy" /> + <bpmn:sequenceFlow id="Flow_05lgxne" sourceRef="Activity_0fvj9vy" targetRef="Activity_08n2y6k" /> + <bpmn:sequenceFlow id="Flow_0imtsjm" sourceRef="Activity_08n2y6k" targetRef="Event_09ptj1a" /> + <bpmn:intermediateThrowEvent id="Event_0th2geo" name="GoTo Create Tn MH SliceProfile"> + <bpmn:incoming>Flow_0dpbero</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_18xcdzv" name="CreateTnMHSliceProfile" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_0dpbero" sourceRef="Activity_0e7x5rm" targetRef="Event_0th2geo" /> + <bpmn:intermediateThrowEvent id="Event_09ptj1a" name="GoTo Create Tn SliceProfile"> + <bpmn:incoming>Flow_0imtsjm</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_0pcw91e" name="CreateTnSliceProfile" /> + </bpmn:intermediateThrowEvent> + <bpmn:exclusiveGateway id="Gateway_0tpcoai" name="Is FH/MH need to be process?"> + <bpmn:incoming>SequenceFlow_0ax2c4p</bpmn:incoming> + <bpmn:outgoing>Flow_0ehx22x</bpmn:outgoing> + <bpmn:outgoing>Flow_13i03hb</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:intermediateThrowEvent id="Event_1hemevb" name="GoTo Create Tn FH SliceProfile"> + <bpmn:incoming>Flow_13i03hb</bpmn:incoming> + <bpmn:linkEventDefinition id="LinkEventDefinition_1rscmuw" name="CreateTnFHSliceProfile" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="Flow_0ehx22x" sourceRef="Gateway_0tpcoai" targetRef="EndEvent_02c8wsp" /> + <bpmn:sequenceFlow id="Flow_13i03hb" name="yes" sourceRef="Gateway_0tpcoai" targetRef="Event_1hemevb"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("processFHandMH" ) == true)}</bpmn:conditionExpression> + </bpmn:sequenceFlow> </bpmn:process> <bpmn:message id="Message_1i10pf1" name="Message_2mc69tg" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSIandNSSI"> + <bpmndi:BPMNEdge id="SequenceFlow_17r1oa0_di" bpmnElement="SequenceFlow_17r1oa0"> + <di:waypoint x="750" y="630" /> + <di:waypoint x="830" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1rwy8q7_di" bpmnElement="SequenceFlow_1rwy8q7"> + <di:waypoint x="750" y="440" /> + <di:waypoint x="830" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wffel4_di" bpmnElement="SequenceFlow_1wffel4"> + <di:waypoint x="580" y="630" /> + <di:waypoint x="650" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cwbtmr_di" bpmnElement="SequenceFlow_0cwbtmr"> + <di:waypoint x="930" y="630" /> + <di:waypoint x="1030" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0npsyye_di" bpmnElement="SequenceFlow_0npsyye"> + <di:waypoint x="930" y="440" /> + <di:waypoint x="1030" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jqxxjq_di" bpmnElement="SequenceFlow_0jqxxjq"> + <di:waypoint x="1310" y="630" /> + <di:waypoint x="1430" y="630" /> + <di:waypoint x="1430" y="555" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1l74seh_di" bpmnElement="SequenceFlow_1l74seh"> + <di:waypoint x="1130" y="630" /> + <di:waypoint x="1210" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xx5bwa_di" bpmnElement="SequenceFlow_0xx5bwa"> + <di:waypoint x="1310" y="440" /> + <di:waypoint x="1430" y="440" /> + <di:waypoint x="1430" y="505" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ax2c4p_di" bpmnElement="SequenceFlow_0ax2c4p"> + <di:waypoint x="1455" y="530" /> + <di:waypoint x="1505" y="530" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zbd2tq_di" bpmnElement="SequenceFlow_0zbd2tq"> + <di:waypoint x="580" y="440" /> + <di:waypoint x="650" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05ovikm_di" bpmnElement="SequenceFlow_05ovikm"> + <di:waypoint x="1070" y="140" /> + <di:waypoint x="1412" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t0wddg_di" bpmnElement="SequenceFlow_0t0wddg"> + <di:waypoint x="1030" y="260" /> + <di:waypoint x="1430" y="260" /> + <di:waypoint x="1430" y="158" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xb5nx1_di" bpmnElement="SequenceFlow_1xb5nx1"> + <di:waypoint x="1130" y="440" /> + <di:waypoint x="1210" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0f36cu2_di" bpmnElement="SequenceFlow_0f36cu2"> + <di:waypoint x="410" y="630" /> + <di:waypoint x="480" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hfjn79_di" bpmnElement="SequenceFlow_1hfjn79"> + <di:waypoint x="410" y="440" /> + <di:waypoint x="480" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k5iu2n_di" bpmnElement="SequenceFlow_0k5iu2n"> + <di:waypoint x="264" y="545" /> + <di:waypoint x="264" y="630" /> + <di:waypoint x="310" y="630" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1m68yca_di" bpmnElement="SequenceFlow_1m68yca"> + <di:waypoint x="264" y="495" /> + <di:waypoint x="264" y="440" /> + <di:waypoint x="310" y="440" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ct8yh4_di" bpmnElement="SequenceFlow_0ct8yh4"> + <di:waypoint x="174" y="520" /> + <di:waypoint x="239" y="520" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03ye8m4_di" bpmnElement="SequenceFlow_03ye8m4"> + <di:waypoint x="634" y="165" /> + <di:waypoint x="634" y="260" /> + <di:waypoint x="930" y="260" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1k3cspv_di" bpmnElement="SequenceFlow_1k3cspv"> + <di:waypoint x="900" y="140" /> + <di:waypoint x="970" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c986i9_di" bpmnElement="SequenceFlow_0c986i9"> + <di:waypoint x="659" y="140" /> + <di:waypoint x="800" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ggo6s5_di" bpmnElement="SequenceFlow_1ggo6s5"> + <di:waypoint x="504" y="140" /> + <di:waypoint x="609" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00aukg6_di" bpmnElement="SequenceFlow_00aukg6"> + <di:waypoint x="324" y="140" /> + <di:waypoint x="404" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xgfj7z_di" bpmnElement="SequenceFlow_0xgfj7z"> + <di:waypoint x="174" y="140" /> + <di:waypoint x="224" y="140" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_19564hj_di" bpmnElement="Flow_19564hj"> + <di:waypoint x="174" y="760" /> + <di:waypoint x="310" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1j649ha_di" bpmnElement="Flow_1j649ha"> + <di:waypoint x="410" y="760" /> + <di:waypoint x="530" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1hhipma_di" bpmnElement="Flow_1hhipma"> + <di:waypoint x="630" y="760" /> + <di:waypoint x="730" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_00n25jt_di" bpmnElement="Flow_00n25jt"> + <di:waypoint x="830" y="760" /> + <di:waypoint x="930" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1b3a4vn_di" bpmnElement="Flow_1b3a4vn"> + <di:waypoint x="1030" y="760" /> + <di:waypoint x="1140" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0dpbero_di" bpmnElement="Flow_0dpbero"> + <di:waypoint x="1240" y="760" /> + <di:waypoint x="1422" y="760" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0paqrtx_di" bpmnElement="SequenceFlow_0paqrtx"> + <di:waypoint x="174" y="1060" /> + <di:waypoint x="310" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1d48cil_di" bpmnElement="SequenceFlow_1d48cil"> + <di:waypoint x="410" y="1060" /> + <di:waypoint x="530" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00dexhy_di" bpmnElement="SequenceFlow_00dexhy"> + <di:waypoint x="630" y="1060" /> + <di:waypoint x="730" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01isn2q_di" bpmnElement="SequenceFlow_01isn2q"> + <di:waypoint x="830" y="1060" /> + <di:waypoint x="930" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1omynpt_di" bpmnElement="SequenceFlow_1omynpt"> + <di:waypoint x="1030" y="1060" /> + <di:waypoint x="1140" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_150xio1_di" bpmnElement="SequenceFlow_150xio1"> + <di:waypoint x="1240" y="1060" /> + <di:waypoint x="1412" y="1060" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0bu5pc9_di" bpmnElement="Flow_0bu5pc9"> + <di:waypoint x="174" y="920" /> + <di:waypoint x="310" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_04gnit7_di" bpmnElement="Flow_04gnit7"> + <di:waypoint x="410" y="920" /> + <di:waypoint x="530" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_1i02ybs_di" bpmnElement="Flow_1i02ybs"> + <di:waypoint x="630" y="920" /> + <di:waypoint x="730" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0shgflm_di" bpmnElement="Flow_0shgflm"> + <di:waypoint x="830" y="920" /> + <di:waypoint x="930" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_05lgxne_di" bpmnElement="Flow_05lgxne"> + <di:waypoint x="1030" y="920" /> + <di:waypoint x="1140" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0imtsjm_di" bpmnElement="Flow_0imtsjm"> + <di:waypoint x="1240" y="920" /> + <di:waypoint x="1432" y="920" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_0ehx22x_di" bpmnElement="Flow_0ehx22x"> + <di:waypoint x="1555" y="530" /> + <di:waypoint x="1602" y="530" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1572" y="512" width="13" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="Flow_13i03hb_di" bpmnElement="Flow_13i03hb"> + <di:waypoint x="1530" y="555" /> + <di:waypoint x="1530" y="620" /> + <di:waypoint x="1602" y="620" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1537" y="585" width="17" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="StartEvent_1ym3sha_di" bpmnElement="StartEvent_1ym3sha"> <dc:Bounds x="138" y="122" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="144" y="165" width="25" height="14" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0xgfj7z_di" bpmnElement="SequenceFlow_0xgfj7z"> - <di:waypoint x="174" y="140" /> - <di:waypoint x="224" y="140" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_0q0td74_di" bpmnElement="Task_027u6m6"> <dc:Bounds x="224" y="100" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_0qorxd9_di" bpmnElement="ScriptTask_0qorxd9"> <dc:Bounds x="404" y="100" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_00aukg6_di" bpmnElement="SequenceFlow_00aukg6"> - <di:waypoint x="324" y="140" /> - <di:waypoint x="404" y="140" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ExclusiveGateway_00pt1ek_di" bpmnElement="ExclusiveGateway_00pt1ek" isMarkerVisible="true"> <dc:Bounds x="609" y="115" width="50" height="50" /> <bpmndi:BPMNLabel> <dc:Bounds x="604" y="78" width="59" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1ggo6s5_di" bpmnElement="SequenceFlow_1ggo6s5"> - <di:waypoint x="504" y="140" /> - <di:waypoint x="609" y="140" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0c986i9_di" bpmnElement="SequenceFlow_0c986i9"> - <di:waypoint x="659" y="140" /> - <di:waypoint x="800" y="140" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1tizl6b_di" bpmnElement="ScriptTask_1tizl6b"> <dc:Bounds x="800" y="100" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1k3cspv_di" bpmnElement="SequenceFlow_1k3cspv"> - <di:waypoint x="900" y="140" /> - <di:waypoint x="970" y="140" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_03ye8m4_di" bpmnElement="SequenceFlow_03ye8m4"> - <di:waypoint x="634" y="165" /> - <di:waypoint x="634" y="260" /> - <di:waypoint x="930" y="260" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="IntermediateThrowEvent_0zuxkap_di" bpmnElement="IntermediateThrowEvent_0fx1nyj"> <dc:Bounds x="1412" y="122" width="36" height="36" /> <bpmndi:BPMNLabel> @@ -336,184 +643,149 @@ dcnsio.createCNEndpoint(execution)</bpmn:script> <dc:Bounds x="126" y="545" width="60" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0ct8yh4_di" bpmnElement="SequenceFlow_0ct8yh4"> - <di:waypoint x="174" y="520" /> - <di:waypoint x="239" y="520" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ParallelGateway_0q9h79n_di" bpmnElement="ExclusiveGateway_00ufetn"> <dc:Bounds x="239" y="495" width="50" height="50" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1m68yca_di" bpmnElement="SequenceFlow_1m68yca"> - <di:waypoint x="264" y="495" /> - <di:waypoint x="264" y="440" /> - <di:waypoint x="310" y="440" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0k5iu2n_di" bpmnElement="SequenceFlow_0k5iu2n"> - <di:waypoint x="264" y="545" /> - <di:waypoint x="264" y="630" /> - <di:waypoint x="310" y="630" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_1yh9tiq_di" bpmnElement="CallActivity_1yh9tiq"> <dc:Bounds x="1030" y="400" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1hfjn79_di" bpmnElement="SequenceFlow_1hfjn79"> - <di:waypoint x="410" y="440" /> - <di:waypoint x="480" y="440" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="CallActivity_1ixah3o_di" bpmnElement="CallActivity_1ixah3o"> <dc:Bounds x="1030" y="590" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0f36cu2_di" bpmnElement="SequenceFlow_0f36cu2"> - <di:waypoint x="410" y="630" /> - <di:waypoint x="480" y="630" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1xb5nx1_di" bpmnElement="SequenceFlow_1xb5nx1"> - <di:waypoint x="1130" y="440" /> - <di:waypoint x="1210" y="440" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ParallelGateway_15vgf7c_di" bpmnElement="ExclusiveGateway_19ru3hp"> <dc:Bounds x="1405" y="505" width="50" height="50" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_07sgklo_di" bpmnElement="ScriptTask_07sgklo"> <dc:Bounds x="930" y="220" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0t0wddg_di" bpmnElement="SequenceFlow_0t0wddg"> - <di:waypoint x="1030" y="260" /> - <di:waypoint x="1430" y="260" /> - <di:waypoint x="1430" y="158" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_1r6kuwy_di" bpmnElement="ScriptTask_1r6kuwy"> <dc:Bounds x="970" y="100" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_05ovikm_di" bpmnElement="SequenceFlow_05ovikm"> - <di:waypoint x="1070" y="140" /> - <di:waypoint x="1412" y="140" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_17cq3xj_di" bpmnElement="Task_1tv7jy5"> <dc:Bounds x="310" y="400" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_1r2li91_di" bpmnElement="ScriptTask_1r2li91"> <dc:Bounds x="480" y="400" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0zbd2tq_di" bpmnElement="SequenceFlow_0zbd2tq"> - <di:waypoint x="580" y="440" /> - <di:waypoint x="650" y="440" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ScriptTask_01n5nmt_di" bpmnElement="Task_1en3luv"> <dc:Bounds x="310" y="590" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ScriptTask_0juh1xy_di" bpmnElement="Task_1g8n8iz"> <dc:Bounds x="480" y="590" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0ax2c4p_di" bpmnElement="SequenceFlow_0ax2c4p"> - <di:waypoint x="1455" y="530" /> - <di:waypoint x="1512" y="530" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0stnvp3_di" bpmnElement="ScriptTask_0stnvp3"> - <dc:Bounds x="310" y="840" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_0mls87v_di" bpmnElement="ScriptTask_0mls87v"> + <dc:Bounds x="1210" y="400" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_1f4o46q_di" bpmnElement="ScriptTask_1f4o46q"> - <dc:Bounds x="530" y="840" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_0z9x5uh_di" bpmnElement="ScriptTask_0z9x5uh"> + <dc:Bounds x="1210" y="590" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="CallActivity_0b28wlb_di" bpmnElement="CallActivity_0b28wlb"> - <dc:Bounds x="930" y="840" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_0s8vhha_di" bpmnElement="ScriptTask_0s8vhha"> + <dc:Bounds x="830" y="400" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0z0ec5b_di" bpmnElement="ScriptTask_0z0ec5b"> + <dc:Bounds x="830" y="590" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0x8r537_di" bpmnElement="Task_0dkfe9n"> + <dc:Bounds x="650" y="400" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mlyx1u_di" bpmnElement="Task_0fwhsq2"> + <dc:Bounds x="650" y="590" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0mxnhe0_di" bpmnElement="Event_0mxnhe0"> + <dc:Bounds x="138" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="124" y="785" width="67" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0z1ympd_di" bpmnElement="Activity_0z1ympd"> + <dc:Bounds x="310" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_1xwl7x0_di" bpmnElement="Activity_1xwl7x0"> + <dc:Bounds x="530" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_14td7ux_di" bpmnElement="Activity_14td7ux"> + <dc:Bounds x="730" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_129ztck_di" bpmnElement="Activity_129ztck"> + <dc:Bounds x="930" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Activity_0e7x5rm_di" bpmnElement="Activity_0e7x5rm"> + <dc:Bounds x="1140" y="720" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1d48cil_di" bpmnElement="SequenceFlow_1d48cil"> - <di:waypoint x="410" y="880" /> - <di:waypoint x="530" y="880" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_00dexhy_di" bpmnElement="SequenceFlow_00dexhy"> - <di:waypoint x="630" y="880" /> - <di:waypoint x="730" y="880" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="IntermediateCatchEvent_08wpvhs_di" bpmnElement="IntermediateCatchEvent_08wpvhs"> - <dc:Bounds x="138" y="862" width="36" height="36" /> + <dc:Bounds x="138" y="1042" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="129" y="905" width="56" height="27" /> + <dc:Bounds x="129" y="1085" width="56" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0paqrtx_di" bpmnElement="SequenceFlow_0paqrtx"> - <di:waypoint x="174" y="880" /> - <di:waypoint x="310" y="880" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0sssiii_di" bpmnElement="ScriptTask_0sssiii"> - <dc:Bounds x="1140" y="840" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_0stnvp3_di" bpmnElement="ScriptTask_0stnvp3"> + <dc:Bounds x="310" y="1020" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_150xio1_di" bpmnElement="SequenceFlow_150xio1"> - <di:waypoint x="1240" y="880" /> - <di:waypoint x="1412" y="880" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0mls87v_di" bpmnElement="ScriptTask_0mls87v"> - <dc:Bounds x="1210" y="400" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_1f4o46q_di" bpmnElement="ScriptTask_1f4o46q"> + <dc:Bounds x="530" y="1020" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0xx5bwa_di" bpmnElement="SequenceFlow_0xx5bwa"> - <di:waypoint x="1310" y="440" /> - <di:waypoint x="1430" y="440" /> - <di:waypoint x="1430" y="505" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0z9x5uh_di" bpmnElement="ScriptTask_0z9x5uh"> - <dc:Bounds x="1210" y="590" width="100" height="80" /> + <bpmndi:BPMNShape id="ScriptTask_0ci5g6y_di" bpmnElement="ScriptTask_0ci5g6y"> + <dc:Bounds x="730" y="1020" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0b28wlb_di" bpmnElement="CallActivity_0b28wlb"> + <dc:Bounds x="930" y="1020" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sssiii_di" bpmnElement="ScriptTask_0sssiii"> + <dc:Bounds x="1140" y="1020" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1l74seh_di" bpmnElement="SequenceFlow_1l74seh"> - <di:waypoint x="1130" y="630" /> - <di:waypoint x="1210" y="630" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0jqxxjq_di" bpmnElement="SequenceFlow_0jqxxjq"> - <di:waypoint x="1310" y="630" /> - <di:waypoint x="1430" y="630" /> - <di:waypoint x="1430" y="555" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1omynpt_di" bpmnElement="SequenceFlow_1omynpt"> - <di:waypoint x="1030" y="880" /> - <di:waypoint x="1140" y="880" /> - </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="EndEvent_0elqlhv_di" bpmnElement="EndEvent_0elqlhv"> - <dc:Bounds x="1412" y="862" width="36" height="36" /> + <dc:Bounds x="1412" y="1042" width="36" height="36" /> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="IntermediateThrowEvent_0gz4vi6_di" bpmnElement="EndEvent_02c8wsp"> - <dc:Bounds x="1512" y="512" width="36" height="36" /> + <bpmndi:BPMNShape id="Event_0grj24z_di" bpmnElement="Event_0grj24z"> + <dc:Bounds x="138" y="902" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1492" y="555" width="79" height="27" /> + <dc:Bounds x="123" y="945" width="70" height="27" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ScriptTask_0s8vhha_di" bpmnElement="ScriptTask_0s8vhha"> - <dc:Bounds x="830" y="400" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_0zlfgf5_di" bpmnElement="Activity_0zlfgf5"> + <dc:Bounds x="310" y="880" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0npsyye_di" bpmnElement="SequenceFlow_0npsyye"> - <di:waypoint x="930" y="440" /> - <di:waypoint x="1030" y="440" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0z0ec5b_di" bpmnElement="ScriptTask_0z0ec5b"> - <dc:Bounds x="830" y="590" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_0j9tjaf_di" bpmnElement="Activity_0j9tjaf"> + <dc:Bounds x="530" y="880" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0cwbtmr_di" bpmnElement="SequenceFlow_0cwbtmr"> - <di:waypoint x="930" y="630" /> - <di:waypoint x="1030" y="630" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1wffel4_di" bpmnElement="SequenceFlow_1wffel4"> - <di:waypoint x="580" y="630" /> - <di:waypoint x="650" y="630" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0ci5g6y_di" bpmnElement="ScriptTask_0ci5g6y"> - <dc:Bounds x="730" y="840" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_147twno_di" bpmnElement="Activity_147twno"> + <dc:Bounds x="730" y="880" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_01isn2q_di" bpmnElement="SequenceFlow_01isn2q"> - <di:waypoint x="830" y="880" /> - <di:waypoint x="930" y="880" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1rwy8q7_di" bpmnElement="SequenceFlow_1rwy8q7"> - <di:waypoint x="750" y="440" /> - <di:waypoint x="830" y="440" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0x8r537_di" bpmnElement="Task_0dkfe9n"> - <dc:Bounds x="650" y="400" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_0fvj9vy_di" bpmnElement="Activity_0fvj9vy"> + <dc:Bounds x="930" y="880" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_17r1oa0_di" bpmnElement="SequenceFlow_17r1oa0"> - <di:waypoint x="750" y="630" /> - <di:waypoint x="830" y="630" /> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ScriptTask_0mlyx1u_di" bpmnElement="Task_0fwhsq2"> - <dc:Bounds x="650" y="590" width="100" height="80" /> + <bpmndi:BPMNShape id="Activity_08n2y6k_di" bpmnElement="Activity_08n2y6k"> + <dc:Bounds x="1140" y="880" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_0th2geo_di" bpmnElement="Event_0th2geo"> + <dc:Bounds x="1422" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1402" y="785" width="79" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_09ptj1a_di" bpmnElement="Event_09ptj1a"> + <dc:Bounds x="1432" y="902" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1412" y="945" width="79" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Gateway_0tpcoai_di" bpmnElement="Gateway_0tpcoai" isMarkerVisible="true"> + <dc:Bounds x="1505" y="505" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1488" y="468" width="87" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0gz4vi6_di" bpmnElement="EndEvent_02c8wsp"> + <dc:Bounds x="1602" y="512" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1582" y="555" width="79" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="Event_1hemevb_di" bpmnElement="Event_1hemevb"> + <dc:Bounds x="1602" y="602" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1582" y="645" width="79" height="27" /> + </bpmndi:BPMNLabel> </bpmndi:BPMNShape> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java index f36c5a2915..10cea171ce 100755 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java @@ -289,11 +289,12 @@ public class WorkflowAction { List<Resource> resourceList = new ArrayList<>(); List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>(); - if (resourceType == WorkflowType.SERVICE || isVNFCreateOrDelete(resourceType, requestAction)) { + if (resourceType == WorkflowType.SERVICE || isVNFCreate(resourceType, requestAction)) { resourceList = serviceEBBLoader.getResourceListForService(sIRequest, requestAction, execution, serviceInstanceId, resourceId, aaiResourceIds); - } else if (resourceType == WorkflowType.VNF && (REPLACEINSTANCE.equalsIgnoreCase(requestAction) - || (RECREATE_INSTANCE.equalsIgnoreCase(requestAction)))) { + } else if (resourceType == WorkflowType.VNF + && (DELETE_INSTANCE.equalsIgnoreCase(requestAction) || REPLACEINSTANCE.equalsIgnoreCase(requestAction) + || (RECREATE_INSTANCE.equalsIgnoreCase(requestAction)))) { vnfEBBLoader.traverseAAIVnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(), workflowResourceIds.getVnfId(), aaiResourceIds); } else if (resourceType == WorkflowType.VNF && UPDATE_INSTANCE.equalsIgnoreCase(requestAction)) { @@ -363,9 +364,8 @@ public class WorkflowAction { return flowsToExecute; } - private boolean isVNFCreateOrDelete(WorkflowType resourceType, String requestAction) { - return resourceType == WorkflowType.VNF - && (CREATE_INSTANCE.equalsIgnoreCase(requestAction) || DELETE_INSTANCE.equalsIgnoreCase(requestAction)); + private boolean isVNFCreate(WorkflowType resourceType, String requestAction) { + return resourceType == WorkflowType.VNF && CREATE_INSTANCE.equalsIgnoreCase(requestAction); } private void setExecutionVariables(DelegateExecution execution, List<ExecuteBuildingBlock> flowsToExecute, 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 c000e9475c..b5ad8d8c03 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 @@ -25,6 +25,7 @@ package org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader; import com.fasterxml.jackson.core.JsonProcessingException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.javatuples.Pair; +import org.onap.aai.domain.yang.GenericVnf; import org.onap.aai.domain.yang.Relationship; import org.onap.aai.domain.yang.ServiceInstance; import org.onap.aai.domain.yang.VpnBinding; @@ -248,7 +249,9 @@ public class ServiceEBBLoader { } for (org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf : serviceInstanceMSO.getVnfs()) { aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId())); + GenericVnf genericVnf = bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()); Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource); + vnfResource.setVnfCustomizationId(genericVnf.getModelCustomizationId()); resourceList.add(vnfResource); traverseVnfModules(resourceList, vnfResource, aaiResourceIds, vnf); if (vnf.getVolumeGroups() != null) { 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 c1d1d7ad5a..b950eb41be 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,6 +40,7 @@ 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; @@ -165,6 +166,8 @@ 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); resourceList.add(vfModuleResource); findConfigurationsInsideVfModule(execution, vnf.getVnfId(), vfModule.getVfModuleId(), resourceList, vfModuleResource, aaiResourceIds); 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 021bac3a7a..52196aae49 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 @@ -66,7 +66,9 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.Spy; +import org.onap.aai.domain.yang.GenericVnf; import org.onap.aai.domain.yang.Relationship; import org.onap.aai.domain.yang.RelationshipList; import org.onap.aai.domain.yang.ServiceInstance; @@ -409,6 +411,7 @@ public class WorkflowActionTest extends BaseTaskTest { doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); + doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource, false, "my-custom-cloud-owner")).thenReturn(northBoundRequest); workflowAction.selectExecutionList(execution); @@ -931,6 +934,7 @@ public class WorkflowActionTest extends BaseTaskTest { doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); + doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource, false, "my-custom-cloud-owner")).thenReturn(northBoundRequest); workflowAction.selectExecutionList(execution); @@ -1011,6 +1015,7 @@ public class WorkflowActionTest extends BaseTaskTest { doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123"); doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); + doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any()); when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource, false, "my-custom-cloud-owner")).thenReturn(northBoundRequest); workflowAction.selectExecutionList(execution); 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 7a26422eb9..2725626c1a 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 @@ -41,6 +41,7 @@ import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource; 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.GenericVnf; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup; import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils; import org.onap.so.client.exception.ExceptionBuilder; @@ -206,13 +207,16 @@ public class ServiceEBBLoaderTest extends BaseTaskTest { serviceInstanceAAI.setServiceInstanceId(resourceId); org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance(); - setGenericVnf(); + GenericVnf genericVnf = setGenericVnf(); setVfModule(true); setVolumeGroup(); setL3Network(); setCollection(); setConfiguration(); + org.onap.aai.domain.yang.GenericVnf genericVnfAai = new org.onap.aai.domain.yang.GenericVnf(); + genericVnfAai.setModelCustomizationId(genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid()); + Configuration config = new Configuration(); config.setConfigurationId("testConfigurationId2"); serviceInstance.getConfigurations().add(config); @@ -236,6 +240,7 @@ public class ServiceEBBLoaderTest extends BaseTaskTest { aaiConfiguration2.setRelationshipList(relationshipList1); try { + doReturn(genericVnfAai).when(mockBbInputSetupUtils).getAAIGenericVnf(genericVnf.getVnfId()); doReturn(serviceInstanceAAI).when(mockBbInputSetupUtils).getAAIServiceInstanceById(resourceId); doReturn(serviceInstance).when(mockBbInputSetup).getExistingServiceInstance(serviceInstanceAAI); doReturn(Optional.of(aaiConfiguration1)).when(mockAaiConfigurationResources) 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 a9bfde9bab..78a9628243 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 @@ -32,8 +32,11 @@ import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake; import org.javatuples.Pair; import org.junit.Before; import org.junit.Test; +import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType; +import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule; +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; @@ -41,6 +44,7 @@ import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -82,4 +86,31 @@ public class VnfEBBLoaderTest { cut.traverseAAIVnf(delegateExecution, resourceList, serviceId, vnfId, aaiResourceIds); assertEquals(WorkflowType.SERVICE, resourceList.get(0).getResourceType()); } + + @Test + public void traverseAAIVnf_should_add_vnfs_and_vfmodules() throws Exception { + List<Resource> resourceList = new ArrayList<>(); + List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>(); + + GenericVnf genericVnf = mock(GenericVnf.class); + doReturn(vnfId).when(genericVnf).getVnfId(); + + VfModule vfModule = mock(VfModule.class); + ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule(); + modelInfoVfModule.setIsBaseBoolean(true); + doReturn(modelInfoVfModule).when(vfModule).getModelInfoVfModule(); + + doReturn(serviceInstanceAAI).when(bbInputSetupUtils).getAAIServiceInstanceById(serviceId); + doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI); + doReturn(List.of(genericVnf)).when(serviceInstanceMSO).getVnfs(); + doReturn(List.of(vfModule)).when(genericVnf).getVfModules(); + cut = new VnfEBBLoader(bbInputSetupUtils, bbInputSetup, workflowActionUtils, exceptionBuilder); + + cut.traverseAAIVnf(delegateExecution, resourceList, serviceId, vnfId, aaiResourceIds); + + assertEquals(3, resourceList.size()); + assertEquals(WorkflowType.VNF, resourceList.get(1).getResourceType()); + assertEquals(WorkflowType.VFMODULE, resourceList.get(2).getResourceType()); + assertTrue(resourceList.get(2).isBaseVfModule()); + } } diff --git a/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java b/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java index 81d64b592d..7cc940ddde 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/SliceProfileAdapter.java @@ -63,7 +63,7 @@ public class SliceProfileAdapter implements Serializable { private int maxBandwidth; @JsonProperty(value = "sST") - private String sST; + private String sST = "embb"; @JsonProperty(value = "activityFactor") private int activityFactor; diff --git a/common/src/main/java/org/onap/so/beans/nsmf/SliceTaskParamsAdapter.java b/common/src/main/java/org/onap/so/beans/nsmf/SliceTaskParamsAdapter.java index bfd4627b47..15dd2f791c 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/SliceTaskParamsAdapter.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/SliceTaskParamsAdapter.java @@ -67,150 +67,7 @@ public class SliceTaskParamsAdapter implements Serializable { private SliceTaskInfo<SliceProfileAdapter> anSliceTaskInfo = new SliceTaskInfo<>(); - @SuppressWarnings("unchecked") - public void convertFromJson(String jsonString) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - Map<String, String> paramMap = (Map<String, String>) mapper.readValue(jsonString, Map.class); - - this.setServiceName(paramMap.get("ServiceName")); - this.setServiceId(paramMap.get("ServiceId")); - this.setNstId(paramMap.get("NSTId")); - this.setNstName(paramMap.get("NSTName")); - this.setSuggestNsiId(paramMap.get("suggestNSIId")); - this.setSuggestNsiName(paramMap.get("suggestNSIName")); - - this.setServiceProfile(replaceHeader(paramMap, "ServiceProfile.")); - - SliceProfileAdapter tnBHSliceProfile = mapper.readValue( - mapper.writeValueAsString(replaceHeader(paramMap, "SliceProfile.TN.BH.")), SliceProfileAdapter.class); - this.tnBHSliceTaskInfo.setSliceProfile(tnBHSliceProfile); - - SliceProfileAdapter tnMHSliceProfile = mapper.readValue( - mapper.writeValueAsString(replaceHeader(paramMap, "SliceProfile.TN.MH.")), SliceProfileAdapter.class); - this.tnMHSliceTaskInfo.setSliceProfile(tnMHSliceProfile); - - SliceProfileAdapter tnFHSliceProfile = mapper.readValue( - mapper.writeValueAsString(replaceHeader(paramMap, "SliceProfile.TN.FH.")), SliceProfileAdapter.class); - this.tnFHSliceTaskInfo.setSliceProfile(tnFHSliceProfile); - - SliceProfileAdapter cnSliceProfile = mapper.readValue( - mapper.writeValueAsString(replaceHeader(paramMap, "SliceProfile.CN.")), SliceProfileAdapter.class); - this.cnSliceTaskInfo.setSliceProfile(cnSliceProfile); - - SliceProfileAdapter anSliceProfile = mapper.readValue( - mapper.writeValueAsString(replaceHeader(paramMap, "SliceProfile.AN.")), SliceProfileAdapter.class); - this.anSliceTaskInfo.setSliceProfile(anSliceProfile); - - this.tnBHSliceTaskInfo.setSuggestNssiId(paramMap.get("TN.BH.SuggestNSSIId")); - this.tnBHSliceTaskInfo.setSuggestNssiName(paramMap.get("TN.BH.SuggestNSSIName")); - this.tnBHSliceTaskInfo.setProgress(paramMap.get("TN.BH.progress")); - this.tnBHSliceTaskInfo.setStatus(paramMap.get("TN.BH.status")); - this.tnBHSliceTaskInfo.setStatusDescription(paramMap.get("TN.BH.statusDescription")); - this.tnBHSliceTaskInfo.setScriptName(paramMap.get("TN.BH.ScriptName")); - - this.tnMHSliceTaskInfo.setSuggestNssiId(paramMap.get("TN.MH.SuggestNSSIId")); - this.tnMHSliceTaskInfo.setSuggestNssiName(paramMap.get("TN.MH.SuggestNSSIName")); - this.tnMHSliceTaskInfo.setProgress(paramMap.get("TN.MH.progress")); - this.tnMHSliceTaskInfo.setStatus(paramMap.get("TN.MH.status")); - this.tnMHSliceTaskInfo.setStatusDescription(paramMap.get("TN.MH.statusDescription")); - this.tnMHSliceTaskInfo.setScriptName(paramMap.get("TN.MH.ScriptName")); - - this.tnFHSliceTaskInfo.setSuggestNssiId(paramMap.get("TN.FH.SuggestNSSIId")); - this.tnFHSliceTaskInfo.setSuggestNssiName(paramMap.get("TN.FH.SuggestNSSIName")); - this.tnFHSliceTaskInfo.setProgress(paramMap.get("TN.FH.progress")); - this.tnFHSliceTaskInfo.setStatus(paramMap.get("TN.FH.status")); - this.tnFHSliceTaskInfo.setStatusDescription(paramMap.get("TN.FH.statusDescription")); - this.tnFHSliceTaskInfo.setScriptName(paramMap.get("TN.FH.ScriptName")); - - this.cnSliceTaskInfo.setSuggestNssiId(paramMap.get("CN.SuggestNSSIId")); - this.cnSliceTaskInfo.setSuggestNssiName(paramMap.get("CN.SuggestNSSIName")); - this.cnSliceTaskInfo.setProgress(paramMap.get("CN.progress")); - this.cnSliceTaskInfo.setStatus(paramMap.get("CN.status")); - this.cnSliceTaskInfo.setStatusDescription(paramMap.get("CN.statusDescription")); - this.cnSliceTaskInfo.setScriptName(paramMap.get("CN.ScriptName")); - - this.anSliceTaskInfo.setSuggestNssiId(paramMap.get("AN.SuggestNSSIId")); - this.anSliceTaskInfo.setSuggestNssiName(paramMap.get("AN.SuggestNSSIName")); - this.anSliceTaskInfo.setProgress(paramMap.get("AN.progress")); - this.anSliceTaskInfo.setStatus(paramMap.get("AN.status")); - this.anSliceTaskInfo.setStatusDescription(paramMap.get("AN.statusDescription")); - this.anSliceTaskInfo.setScriptName(paramMap.get("AN.ScriptName")); - } - - public String convertToJson() { - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("ServiceId", serviceId); - jsonObject.addProperty("ServiceName", serviceName); - jsonObject.addProperty("NSTId", nstId); - jsonObject.addProperty("NSTName", nstName); - jsonObject.addProperty("suggestNSIId", suggestNsiId); - jsonObject.addProperty("suggestNSIName", suggestNsiName); - - for (Map.Entry<String, Object> entry : serviceProfile.entrySet()) { - jsonObject.addProperty("ServiceProfile." + entry.getKey(), entry.getValue().toString()); - } - Map<String, Object> sliceProfileAn = bean2Map(anSliceTaskInfo.getSliceProfile()); - for (Map.Entry<String, Object> entry : sliceProfileAn.entrySet()) { - String value = entry.getValue() == null ? "" : entry.getValue().toString(); - jsonObject.addProperty("SliceProfile.AN." + entry.getKey(), value); - } - Map<String, Object> sliceProfileCn = bean2Map(cnSliceTaskInfo.getSliceProfile()); - for (Map.Entry<String, Object> entry : sliceProfileCn.entrySet()) { - String value = entry.getValue() == null ? "" : entry.getValue().toString(); - jsonObject.addProperty("SliceProfile.CN." + entry.getKey(), value); - } - Map<String, Object> sliceProfileTnBH = bean2Map(tnBHSliceTaskInfo.getSliceProfile()); - for (Map.Entry<String, Object> entry : sliceProfileTnBH.entrySet()) { - String value = entry.getValue() == null ? "" : entry.getValue().toString(); - jsonObject.addProperty("SliceProfile.TN.BH." + entry.getKey(), value); - } - Map<String, Object> sliceProfileTnMH = bean2Map(tnMHSliceTaskInfo.getSliceProfile()); - for (Map.Entry<String, Object> entry : sliceProfileTnMH.entrySet()) { - String value = entry.getValue() == null ? "" : entry.getValue().toString(); - jsonObject.addProperty("SliceProfile.TN.MH." + entry.getKey(), value); - } - Map<String, Object> sliceProfileTnFH = bean2Map(tnFHSliceTaskInfo.getSliceProfile()); - for (Map.Entry<String, Object> entry : sliceProfileTnFH.entrySet()) { - String value = entry.getValue() == null ? "" : entry.getValue().toString(); - jsonObject.addProperty("SliceProfile.TN.FH." + entry.getKey(), value); - } - jsonObject.addProperty("TN.BH.SuggestNSSIId", tnBHSliceTaskInfo.getSuggestNssiId()); - jsonObject.addProperty("TN.BH.SuggestNSSIName", tnBHSliceTaskInfo.getSuggestNssiName()); - jsonObject.addProperty("TN.BH.progress", tnBHSliceTaskInfo.getProgress()); - jsonObject.addProperty("TN.BH.status", tnBHSliceTaskInfo.getStatus()); - jsonObject.addProperty("TN.BH.statusDescription", tnBHSliceTaskInfo.getStatusDescription()); - jsonObject.addProperty("TN.BH.ScriptName", tnBHSliceTaskInfo.getScriptName()); - - jsonObject.addProperty("TN.MH.SuggestNSSIId", tnMHSliceTaskInfo.getSuggestNssiId()); - jsonObject.addProperty("TN.MH.SuggestNSSIName", tnMHSliceTaskInfo.getSuggestNssiName()); - jsonObject.addProperty("TN.MH.progress", tnMHSliceTaskInfo.getProgress()); - jsonObject.addProperty("TN.MH.status", tnMHSliceTaskInfo.getStatus()); - jsonObject.addProperty("TN.MH.statusDescription", tnMHSliceTaskInfo.getStatusDescription()); - jsonObject.addProperty("TN.MH.ScriptName", tnMHSliceTaskInfo.getScriptName()); - - jsonObject.addProperty("TN.FH.SuggestNSSIId", tnFHSliceTaskInfo.getSuggestNssiId()); - jsonObject.addProperty("TN.FH.SuggestNSSIName", tnFHSliceTaskInfo.getSuggestNssiName()); - jsonObject.addProperty("TN.FH.progress", tnFHSliceTaskInfo.getProgress()); - jsonObject.addProperty("TN.FH.status", tnFHSliceTaskInfo.getStatus()); - jsonObject.addProperty("TN.FH.statusDescription", tnFHSliceTaskInfo.getStatusDescription()); - jsonObject.addProperty("TN.FH.ScriptName", tnFHSliceTaskInfo.getScriptName()); - - jsonObject.addProperty("CN.SuggestNSSIId", cnSliceTaskInfo.getSuggestNssiId()); - jsonObject.addProperty("CN.SuggestNSSIName", cnSliceTaskInfo.getSuggestNssiName()); - jsonObject.addProperty("CN.progress", cnSliceTaskInfo.getProgress()); - jsonObject.addProperty("CN.status", cnSliceTaskInfo.getStatus()); - jsonObject.addProperty("CN.statusDescription", cnSliceTaskInfo.getStatusDescription()); - jsonObject.addProperty("CN.ScriptName", cnSliceTaskInfo.getScriptName()); - - jsonObject.addProperty("AN.SuggestNSSIId", anSliceTaskInfo.getSuggestNssiId()); - jsonObject.addProperty("AN.SuggestNSSIName", anSliceTaskInfo.getSuggestNssiName()); - jsonObject.addProperty("AN.progress", anSliceTaskInfo.getProgress()); - jsonObject.addProperty("AN.status", anSliceTaskInfo.getStatus()); - jsonObject.addProperty("AN.statusDescription", anSliceTaskInfo.getStatusDescription()); - jsonObject.addProperty("AN.ScriptName", anSliceTaskInfo.getScriptName()); - - return jsonObject.toString(); - } + private SliceTaskInfo<SliceProfileAdapter> anNFSliceTaskInfo = new SliceTaskInfo<>(); /** * change T t to {@link Map} @@ -266,3 +123,4 @@ public class SliceTaskParamsAdapter implements Serializable { return sliceProfileMap; } } + diff --git a/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java b/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java index 536bb04fce..6f56a72632 100644 --- a/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java +++ b/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java @@ -26,6 +26,8 @@ import org.onap.so.beans.nsmf.NetworkType; public enum SubnetType { AN("AN", NetworkType.ACCESS), + AN_NF("AN_NF", NetworkType.ACCESS), + CN("CN", NetworkType.CORE), TN_FH("TN_FH", NetworkType.TRANSPORT), diff --git a/docs/api/apis/onap3gppServiceInstances-api.rst b/docs/api/apis/onap3gppServiceInstances-api.rst new file mode 100644 index 0000000000..c7e9dd49b6 --- /dev/null +++ b/docs/api/apis/onap3gppServiceInstances-api.rst @@ -0,0 +1,302 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright 2021 Wipro Ltd. + +onap3gppServiceInstances API +============================ + +Create a 3GPP service instance +++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/allocate | ++--------------------+------------------------------------------------------------+ +|Operation Type |POST | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=====================+=========+===========+============================+=========================================+ +|allocate3gppService |M |1 |allocate3gppService Object |Content of allocate3gppService object | ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ + +Allocate3gppService Object + ++------------------------------+-----------------+-------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+===================================================================+ +|name |String |Name of the service to allocate | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|modelInvariantUuid |String |Model Invariant UUID | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|modelUuid |String |Model UUID | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|gloabalSubscriberId |String |Customer Id | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|subscriptionServiceType |String |service Type for subscription | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|networkType |String |Network Type | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|additionalProperties |Object |Map of additional properties required for service allocation | ++------------------------------+-----------------+-------------------------------------------------------------------+ + +Response: + ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|jobId |M |1 |String |Job ID to be used to identify the status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|status |M |1 |String |Status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|statusDescription |M |1 |Object |Description on status in case of erroneous response | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ + +Terminate/Deallocate a 3GPP service instance +++++++++++++++++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/deAllocate | ++--------------------+------------------------------------------------------------+ +|Operation Type |DELETE | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++-----------------------+---------+-----------+------------------------------+-------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=======================+=========+===========+==============================+===========================================+ +|deAllocate3gppService |M |1 |deAllocate3gppService Object |Content of deAllocate3gppService object | ++-----------------------+---------+-----------+------------------------------+-------------------------------------------+ + +DeAllocate3gppService Object + ++------------------------------+-----------------+---------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+=====================================================================+ +|serviceInstanceID |String |ID of the service to terminate | ++------------------------------+-----------------+---------------------------------------------------------------------+ +|gloabalSubscriberId |String |Customer Id | ++------------------------------+-----------------+---------------------------------------------------------------------+ +|subscriptionServiceType |String |service Type for subscription | ++------------------------------+-----------------+---------------------------------------------------------------------+ +|networkType |String |Network Type | ++------------------------------+-----------------+---------------------------------------------------------------------+ +|additionalProperties |Object |Map of additional properties required for service deallocation | ++------------------------------+-----------------+---------------------------------------------------------------------+ + +Response: + ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|jobId |M |1 |String |Job ID to be used to identify the status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|status |M |1 |String |Status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|statusDescription |M |1 |Object |Description on status in case of erroneous response | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ + +Modify a 3GPP service instance +++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/modify | ++--------------------+------------------------------------------------------------+ +|Operation Type |PUT | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=====================+=========+===========+============================+=========================================+ +|modify3gppService |M |1 |modify3gppService Object |Content of modify3gppService object | ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ + +Modify3gppService Object + ++------------------------------+-----------------+-------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+===================================================================+ +|name |String |Name of the service to modify | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|serviceInstanceID |String |ID of the service to modify | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|gloabalSubscriberId |String |Customer Id | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|subscriptionServiceType |String |service Type for subscription | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|networkType |String |Network Type | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|additionalProperties |Object |Map of additional properties required for service modification | ++------------------------------+-----------------+-------------------------------------------------------------------+ + +Response: + ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|jobId |M |1 |String |Job ID to be used to identify the status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|status |M |1 |String |Status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|statusDescription |M |1 |Object |Description on status in case of erroneous response | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ + +Activate a 3GPP service instance +++++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/activate | ++--------------------+------------------------------------------------------------+ +|Operation Type |POST | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=====================+=========+===========+============================+=========================================+ +|activate3gppService |M |1 |activate3gppService Object |Content of activate3gppService object | ++---------------------+---------+-----------+----------------------------+-----------------------------------------+ + +Activate3gppService Object + ++------------------------------+-----------------+-------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+===================================================================+ +|serviceInstanceID |String |ID of the service to be activated | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|gloabalSubscriberId |String |Customer Id | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|subscriptionServiceType |String |service Type for subscription | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|networkType |String |Network Type | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|additionalProperties |Object |Map of additional properties required for service activation | ++------------------------------+-----------------+-------------------------------------------------------------------+ + +Response: + ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|jobId |M |1 |String |Job ID to be used to identify the status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|status |M |1 |String |Status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|statusDescription |M |1 |Object |Description on status in case of erroneous response | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ + +Deactivate a 3GPP service instance +++++++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/deActivate | ++--------------------+------------------------------------------------------------+ +|Operation Type |POST | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++-----------------------+---------+-----------+------------------------------+-------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=======================+=========+===========+==============================+===========================================+ +|deActivate3gppService |M |1 |deActivate3gppService Object |Content of deActivate3gppService object | ++-----------------------+---------+-----------+------------------------------+-------------------------------------------+ + +DeActivate3gppService Object + ++------------------------------+-----------------+-------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+===================================================================+ +|serviceInstanceID |String |ID of the service to be deactivated | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|gloabalSubscriberId |String |Customer Id | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|subscriptionServiceType |String |service Type for subscription | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|networkType |String |Network Type | ++------------------------------+-----------------+-------------------------------------------------------------------+ +|additionalProperties |Object |Map of additional properties required for service deactivation | ++------------------------------+-----------------+-------------------------------------------------------------------+ + +Response: + ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|jobId |M |1 |String |Job ID to be used to identify the status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|status |M |1 |String |Status of the job | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|statusDescription |M |1 |Object |Description on status in case of erroneous response | ++--------------------+---------+-----------+-------+------------------------------------------------------------------------+ + +Query subnet capability based on subnet types ++++++++++++++++++++++++++++++++++++++++++++++ + ++--------------------+------------------------------------------------------------+ +|Interface Definition|Description | ++====================+============================================================+ +|URI |/onap/so/infra/3gppservices/v1/subnetCapabilityQuery | ++--------------------+------------------------------------------------------------+ +|Operation Type |GET | ++--------------------+------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+------------------------------------------------------------+ + +Request Body: + ++-------------------------+---------+-----------+-------------------------------+-----------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++=========================+=========+===========+===============================+=========================================+ +|querySubnetCapability |M |1 |QuerySubnetCapability Object |Content of querySubnetCapability object | ++-------------------------+---------+-----------+-------------------------------+-----------------------------------------+ + +QuerySubnetCapability Object + ++------------------------------+-----------------+-----------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+=========================================+ +|SubnetTypes |List of object |This describes the subnet types info | ++------------------------------+-----------------+-----------------------------------------+ + +SubnetTypes Object + ++------------------------------+-----------------+------------------------------------------------------------------------+ +|Attribute |Content |Description | ++==============================+=================+========================================================================+ +|SubnetTypes |enum |This describes the subnet types i.e., AN,AN_NF,CN,TN_FH,TN_MH,TN_BH | ++------------------------------+-----------------+------------------------------------------------------------------------+ + +Response: + ++------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content|Description | ++------------------+---------+-----------+-------+------------------------------------------------------------------------+ +|ResponseDetails |M |1 |Object |Successful operation with capabilities for the queried subnetTypes | ++------------------+---------+-----------+-------+------------------------------------------------------------------------+ diff --git a/docs/api/apis/serviceInstances-api.rst b/docs/api/apis/serviceInstances-api.rst index 8eafe05a2e..15ed3932fd 100644 --- a/docs/api/apis/serviceInstances-api.rst +++ b/docs/api/apis/serviceInstances-api.rst @@ -13,6 +13,7 @@ This API allows to generate some requests to manage: - vfModules attached to a vnf instance (create, delete) - vnfs attached to a service instance (create, delete) - orchestrationRequests (get) +- CNF healthCheck links: @@ -26,7 +27,7 @@ links: - :ref:`delete_vnf` - :ref:`get_orchestration_request_by_id` - :ref:`get_orchestration_request_all` - +- :ref:`healthCheck` .. _create_service_instance: @@ -1293,3 +1294,108 @@ RequestStatus Object +-------------------------+------------------+-------------------------------------------------+ |percentProgress |String |percentage of progress | +-------------------------+------------------+-------------------------------------------------+ + +.. _healthCheck: + +CNF healthCheck +++++++++++++++++ + ++--------------------+---------------------------------------------------------------------------------------------------------------+ +|Interface Definition|Description | ++====================+===============================================================================================================+ +|URI |/onap/so/infra/serviceInstantiation/v7/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/healthcheck | ++--------------------+---------------------------------------------------------------------------------------------------------------+ +|Operation Type |POST | ++--------------------+---------------------------------------------------------------------------------------------------------------+ +|Content-Type |application/json | ++--------------------+---------------------------------------------------------------------------------------------------------------+ + +Request Headers: + ++-------------------+---------+-----------------------------------------------------------------------------------------+ +|Header Name |Required |Description | ++===================+=========+=========================================================================================+ +|Authorization |Y |Base64 encoded username:password | ++-------------------+---------+-----------------------------------------------------------------------------------------+ + +Request Body: + ++----------------+---------+-----------+--------------------------+-------------------------------------------+ +|Attribute |Qualifier|Cardinality|Content |Description | ++================+=========+===========+==========================+===========================================+ +|requestDetails |M |1 |requestDetails Object |Content of requestDetails object. | ++----------------+---------+-----------+--------------------------+-------------------------------------------+ + +RequestDetails Object + ++---------------------+-------------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=====================+=========================+=================================================+ +|modelInfo |modelInfo Object |Content of modelInfo object. | ++---------------------+-------------------------+-------------------------------------------------+ +|cloudConfiguration |cloudConfiguration Object|Content of cloudConfiguration object. | ++---------------------+-------------------------+-------------------------------------------------+ +|requestInfo |requestInfo Object |Content of requestInfo object. | ++---------------------+-------------------------+-------------------------------------------------+ +|relatedInstanceList |List |Content of relatedInstanceList. | ++---------------------+-------------------------+-------------------------------------------------+ + +ModelInfo Object + ++-------------------------+------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=========================+==================+=================================================+ +|ModelType |String |Type of model | ++-------------------------+------------------+-------------------------------------------------+ +|ModelInvariantId |String |The Model Invariant Id. | ++-------------------------+------------------+-------------------------------------------------+ +|ModelNameVersionId |String |The modelname Version Id | ++-------------------------+------------------+-------------------------------------------------+ +|ModelName |String |Name of the Model | ++-------------------------+------------------+-------------------------------------------------+ +|ModelVersion |String |Version of the model | ++-------------------------+------------------+-------------------------------------------------+ +|ModelCustomization Name |String |The Model Customization name | ++-------------------------+------------------+-------------------------------------------------+ + +CloudConfiguration Object + ++-------------------------+------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=========================+==================+=================================================+ +|lcpCloudRegionId |String |CloudRegion Id (in A&AI) | ++-------------------------+------------------+-------------------------------------------------+ +|tenantId |String |Name of the Subscriber | ++-------------------------+------------------+-------------------------------------------------+ + +RequestInfo Object + ++-------------------------+------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=========================+==================+=================================================+ +|InstanceName |String |The instance Name | ++-------------------------+------------------+-------------------------------------------------+ +|Source |String |source of the request | ++-------------------------+------------------+-------------------------------------------------+ +|SuppressRollback |Boolean |SuppressRollback | ++-------------------------+------------------+-------------------------------------------------+ + +relatedInstance List + ++-------------------------+------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=========================+==================+=================================================+ +|relatedInstance |Object |relatedInstance Object | ++-------------------------+------------------+-------------------------------------------------+ + +relatedInstance List + ++-------------------------+------------------+-------------------------------------------------+ +|Attribute |Content |Description | ++=========================+==================+=================================================+ +|instanceId |String |instanceId | ++-------------------------+------------------+-------------------------------------------------+ +|modelInfo |Object |Content of modelInfo object. | ++-------------------------+------------------+-------------------------------------------------+ +|instanceName |String |Name of the instance | ++-------------------------+------------------+-------------------------------------------------+
\ No newline at end of file diff --git a/docs/release-notes.rst b/docs/release-notes.rst index f3b8d45d0d..58902f3d27 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -14,16 +14,227 @@ The SO provides the highest level of service orchestration in the ONAP architect Release Notes ============= -Version: 9.0 +Version: 1.9.2 ============== + :Release Date: 2021-10-14 + +SO Release Image Versions +-------------------------- + - so-bpmn-infra + + :Version: 1.9.2 + + - so-catalog-db-adapter + + :Version: 1.9.2 + + - so-admin-cockpit + + :Version: 1.8.3 + + - so-nssmf-adapter + + :Version: 1.9.1 + + - so-openstack-adapter + + :Version: 1.9.2 + + - so-request-db-adapter + + :Version: 1.9.2 + + - so-sdc-controller + + :Version: 1.9.2 + + - so-sdnc-adapter + + :Version: 1.9.2 + + - so-sol003-adapter + + :Version: 1.8.2 + + - so-api-handler-infra + + :Version: 1.9.2 + + - so-etsi-nfvo-ns-lcm + + :Version: 1.8.2 + + - so-oof-adapter + + :Version: 1.8.3 + + - so-cnf-adapter + + :Version: 1.9.1 + Release Purpose ---------------- -SO Istanbul Release +SO Istanbul Release. +The key deliverable for this release is refactoring SO for better internal architecture. + **Epics** * `REQ-627 <https://jira.onap.org/browse/REQ-627>`_ - ONAP CNF orchestration - Istanbul Enhancements +* `SO-3649 <https://jira.onap.org/browse/SO-3649>`_ - SO impacts for E2E Network Slicing in Istanbul Release +* `SO-3637 <https://jira.onap.org/browse/SO-3637>`_ - Global Requirements Approval +* `SO-3473 <https://jira.onap.org/browse/SO-3473>`_ - Refactor SO to enhance the usability + + +**Stories** + +The full list of implemented tasks is available on `JIRA Istanbul STORY <https://jira.onap.org/issues/?jql=project%20%3D%20%22Service%20Orchestrator%22%20%20AND%20issuetype%20%3D%20story%20AND%20fixVersion%20%3D%20%22istanbul%20Release%22>`_ + + +**Tasks** + +The full list of implemented tasks is available on `JIRA Istanbul TASKS <https://jira.onap.org/issues/?jql=project%20%3D%20%22Service%20Orchestrator%22%20%20AND%20issuetype%20%3D%20Task%20AND%20fixVersion%20%3D%20%22istanbul%20Release%22>`_ + +**Bug Fixes** + +The full list of fixed bugs is available on `JIRA Istanbul BUGS +<https://jira.onap.org/issues/?jql=project%20%3D%20%22Service%20Orchestrator%22%20%20AND%20issuetype%20%3D%20Bug%20AND%20fixVersion%20%3D%20%22istanbul%20Release%22>`_ + +Security Notes +-------------- + +*Fixed Security Issues* + +* `SO-3642 <https://jira.onap.org/browse/SO-3642>`_ +* `SO-3724 <https://jira.onap.org/browse/SO-3724>`_ + + +Quick Links: + +- `SO project page <https://wiki.onap.org/display/DW/Service+Orchestrator+Project>`__ +- `Passing Badge information for SDC <https://bestpractices.coreinfrastructure.org/en/projects/1702>`__ + +**Known Issues** + +* `SO-3237 <https://jira.onap.org/browse/SO-3237>`_ - Exposed HTTP port. + + +**Upgrade Notes** + + N/A + +**Deprecation Notes** + + SO modules Ve-Vnfm-adapter and appc-orchestrator are deprectaed for the Istanbul release. + +**Other** + + N/A +*************************************************************************************** + +============= +Release Notes +============= + +Version: 1.8.3 +============== + +:Release Date: 2021-09-15 + +SO Release Image Versions +-------------------------- + - so-bpmn-infra + + :Version: 1.8.3 + + - so-catalog-db-adapter + + :Version: 1.8.3 + + - so-nssmf-adapter + + :Version: 1.8.3 + + - so-openstack-adapter + + :Version: 1.8.3 + + - so-request-db-adapter + + :Version: 1.8.3 + + - so-sdc-controller + + :Version: 1.8.3 + + - so-sdnc-adapter + + :Version: 1.8.3 + + - so-api-handler-infra + + :Version: 1.8.3 + +Release Purpose +---------------- +SO Honolulu Maintence Release. +The key delivereable for this release is fixing the known issues of H release of SO and sync up with the latest CDS client version. + + +**Epics** + + N/A + +**Stories** + + N/A + +**Tasks** + + N/A + +**Bug Fixes** + +* `SO-3626 <https://jira.onap.org/browse/SO-3626>`_ - SO does not requests CDS for skipPostInstantiation flag set to False. +* `SO-3628 <https://jira.onap.org/browse/SO-3628>`_ - SO cannot send CDS request due to grpc schema problem. +* `SO-3703 <https://jira.onap.org/browse/SO-3703>`_ - Changes in Modify and Deallocate Core NSST flows +* `SO-3721 <https://jira.onap.org/browse/SO-3721>`_ - Fix some attribute issues +* `SO-3260 <https://jira.onap.org/browse/SO-3260>`_ - Wrong additional parameter for OOF's terminateNxiRequest + + +Security Notes +-------------- + +*Fixed Security Issues* + +*Known Security Issues* + +*Known Vulnerabilities in Used Modules* + +Quick Links: + +- `SO project page <https://wiki.onap.org/display/DW/Service+Orchestrator+Project>`__ +- `Passing Badge information for SDC <https://bestpractices.coreinfrastructure.org/en/projects/1702>`__ + +**Known Issues** + +* `SO-3237 <https://jira.onap.org/browse/SO-3237>`_ - Exposed HTTP port. + + +**Upgrade Notes** + + N/A + +**Deprecation Notes** + + SO modules Ve-Vnfm-adapter and appc-orchestrator are deprectaed for the Honolulu release. + +**Other** + + N/A +*************************************************************************************** + Version: 8.0 ============== @@ -82,7 +293,7 @@ SO Release Image Versions - so-cnf-adapter - :Version: 1.8.3 + :Version: 1.9.1 Release Purpose ---------------- diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/validators/VnfDeleteValidator.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/validators/VnfDeleteValidator.java index 44bab7e087..3dc4e8e4ac 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/validators/VnfDeleteValidator.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/validators/VnfDeleteValidator.java @@ -19,7 +19,8 @@ public class VnfDeleteValidator implements RequestValidator { @Override public boolean shouldRunFor(String requestUri, ServiceInstancesRequest request, Actions action) { return Pattern.compile("[Vv][5-8]/serviceInstances/[^/]+/vnfs/[^/]+").matcher(requestUri).matches() - && action.equals(Action.deleteInstance); + && action.equals(Action.deleteInstance) + && Boolean.TRUE.equals(request.getRequestDetails().getRequestParameters().getALaCarte()); } @Override diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/infra/rest/validator/VnfDeleteValidatorTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/infra/rest/validator/VnfDeleteValidatorTest.java index 6eb6fc95d6..9b1410439e 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/infra/rest/validator/VnfDeleteValidatorTest.java +++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/infra/rest/validator/VnfDeleteValidatorTest.java @@ -15,6 +15,8 @@ import org.mockito.junit.MockitoJUnitRunner; import org.onap.so.apihandlerinfra.Action; import org.onap.so.apihandlerinfra.infra.rest.AAIDataRetrieval; import org.onap.so.apihandlerinfra.infra.rest.validators.VnfDeleteValidator; +import org.onap.so.serviceinstancebeans.RequestDetails; +import org.onap.so.serviceinstancebeans.RequestParameters; import org.onap.so.serviceinstancebeans.ServiceInstancesRequest; @@ -31,10 +33,24 @@ public class VnfDeleteValidatorTest { private Map<String, String> instanceIdMap = new HashMap<>(); + public ServiceInstancesRequest createServiceInstancesRequest(boolean alacarte) { + ServiceInstancesRequest sir = new ServiceInstancesRequest(); + sir.setRequestDetails(new RequestDetails()); + sir.getRequestDetails().setRequestParameters(new RequestParameters()); + sir.getRequestDetails().getRequestParameters().setaLaCarte(alacarte); + return sir; + } + @Test public void validateURIMatchTest() { assertEquals(true, vnfValidator.shouldRunFor("v8/serviceInstances/uasdfasdf/vnfs/asdfasdf", - new ServiceInstancesRequest(), Action.deleteInstance)); + createServiceInstancesRequest(true), Action.deleteInstance)); + } + + @Test + public void validateURIMatchNonAlacarteTest() { + assertEquals(false, vnfValidator.shouldRunFor("v8/serviceInstances/uasdfasdf/vnfs/asdfasdf", + createServiceInstancesRequest(false), Action.deleteInstance)); } @Test diff --git a/releases/1.9.2.yaml b/releases/1.9.2.yaml new file mode 100644 index 0000000000..7c04ff1cfa --- /dev/null +++ b/releases/1.9.2.yaml @@ -0,0 +1,22 @@ + +--- +distribution_type: 'container' +container_release_tag: '1.9.2' +project: 'so' +log_dir: 'so-maven-docker-stage-master/880/' +ref: 'c0c57ed8c3ca558cb09e7885a9416accd2b80a67' +containers: + - name: 'so/catalog-db-adapter' + version: '1.9.2-20211012T0420' + - name: 'so/request-db-adapter' + version: '1.9.2-20211012T0420' + - name: 'so/openstack-adapter' + version: '1.9.2-20211012T0420' + - name: 'so/sdnc-adapter' + version: '1.9.2-20211012T0420' + - name: 'so/sdc-controller' + version: '1.9.2-20211012T0420' + - name: 'so/bpmn-infra' + version: '1.9.2-20211012T0420' + - name: 'so/api-handler-infra' + version: '1.9.2-20211012T0420' |