summaryrefslogtreecommitdiffstats
path: root/bpmn
diff options
context:
space:
mode:
authorhetengjiao <hetengjiao@chinamobile.com>2020-05-13 11:14:19 +0800
committerhetengjiao <hetengjiao@chinamobile.com>2020-05-13 11:14:43 +0800
commitb5a882256f9c2ef053c9b5e90ed7420d054a8219 (patch)
treee9f75d860d8093b7d562644cc2e85362fddbc3b9 /bpmn
parentf360bafa735753e86c1fb8097594112508c46ec4 (diff)
update nsmf because the oof inteface modify
Issue-ID: SO-2919 Change-Id: I6d4b9ba0f92ed95d3d9751f1dd69b8188951e82f Signed-off-by: hetengjiao <hetengjiao@chinamobile.com>
Diffstat (limited to 'bpmn')
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy377
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn303
2 files changed, 255 insertions, 425 deletions
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 c66a89b9c6..303b8c892e 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
@@ -1,13 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2019, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
package org.onap.so.bpmn.infrastructure.scripts
import com.fasterxml.jackson.core.type.TypeReference
-import groovy.json.JsonBuilder
+import com.fasterxml.jackson.databind.ObjectMapper
import groovy.json.JsonSlurper
-import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.aai.domain.yang.Relationship
-import org.onap.aai.domain.yang.RelationshipList
-import org.onap.aai.domain.yang.ServiceInstance
import org.onap.logging.filter.base.ONAPComponents
import org.onap.so.beans.nsmf.SliceTaskParams
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
@@ -24,57 +40,43 @@ import org.onap.so.client.aai.AAIResourcesClient
import org.onap.so.client.aai.entities.AAIResultWrapper
import org.onap.so.client.aai.entities.uri.AAIResourceUri
import org.onap.so.client.aai.entities.uri.AAIUriFactory
-import org.onap.so.db.request.client.RequestsDbClient
-import org.onap.so.db.request.beans.OrchestrationTask
import org.slf4j.Logger
import org.slf4j.LoggerFactory
+
import javax.ws.rs.NotFoundException
import javax.ws.rs.core.Response
import static org.apache.commons.lang3.StringUtils.isBlank
-public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
+class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceOption.class)
-
ExceptionUtil exceptionUtil = new ExceptionUtil()
JsonUtils jsonUtil = new JsonUtils()
- RequestsDbClient requestsDbClient = new RequestsDbClient()
-
OofUtils oofUtils = new OofUtils()
- /**
- * Pre Process the BPMN Flow Request
- * Inclouds:
- * generate the nsOperationKey
- * generate the nsParameters
- */
- void preProcessRequest (DelegateExecution execution) {
- String msg = ""
- logger.trace("Enter preProcessRequest()")
- String taskID = execution.getVariable("taskID")
- Boolean isSharable = true
- String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
- if (resourceSharingLevel.equals("shared"))
- isSharable = true
- execution.setVariable("isSharable",isSharable)
- logger.trace("Exit preProcessRequest")
+ ObjectMapper objectMapper = new ObjectMapper()
+ void preProcessRequest (DelegateExecution execution) {
}
void getNSIOptionfromOOF(DelegateExecution execution) {
+ //解析sliceProfile
+ logger.debug("start parseServiceProfile")
+ parseServiceProfile(execution)
+ logger.debug("end parseServiceProfile")
+
String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
logger.debug( "get NSI option OOF Url: " + urlString)
+
boolean isNSISuggested = true
execution.setVariable("isNSISuggested",isNSISuggested)
- String nsiInstanceId = ""
- String nsiName = ""
- SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
+
//Prepare auth for OOF - Begin
def authHeader = ""
String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution)
@@ -100,117 +102,127 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
String requestId = execution.getVariable("msoRequestId")
Map<String, Object> profileInfo = execution.getVariable("serviceProfile")
- String nstModelUuid = execution.getVariable("nstModelUuid")
- String nstModelInvariantUuid = execution.getVariable("nstModelInvariantUuid")
- String nstInfo = """"NSTInfo" : {
- "invariantUUID":"${nstModelInvariantUuid}",
- "UUID":"${nstModelUuid}"
+ Map<String, Object> nstSolution = execution.getVariable("nstSolution")
+ logger.debug("Get NST selection from OOF: " + nstSolution.toString())
+ String nstInfo = """{
+ "modelInvariantId":"${nstSolution.invariantUUID}",
+ "modelVersionId":"${nstSolution.UUID}",
+ "modelName":"${nstSolution.NSTName}"
}"""
- String oofRequest = oofUtils.buildSelectNSIRequest(execution, requestId, nstInfo, profileInfo)
+ String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, profileInfo)
+ logger.debug("Sending request to OOF: " + oofRequest)
//send request to get NSI option - Begin
- URL url = new URL(urlString+"/api/oof/v1/selectnsi")
+ URL url = new URL(urlString+"/api/oof/selection/nsi/v1")
HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF)
httpClient.addAdditionalHeader("Authorization", authHeader)
Response httpResponse = httpClient.post(oofRequest)
+ processOOFResponse(httpResponse, execution)
+ }
+
+ private void processOOFResponse(Response httpResponse, DelegateExecution execution) {
int responseCode = httpResponse.getStatus()
logger.debug("OOF sync response code is: " + responseCode)
- if(responseCode != 200){
+ if (responseCode != 200) {
exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.")
- logger.debug("Info: No NSI suggested by OOF" )
+ logger.debug("Info: No NSI suggested by OOF")
}
- if(httpResponse.hasEntity()){
+ SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
+ if (httpResponse.hasEntity()) {
String OOFResponse = httpResponse.readEntity(String.class)
+ logger.debug("NSI OOFResponse is: " + OOFResponse)
execution.setVariable("OOFResponse", OOFResponse)
- int index = 0 //This needs to be changed to derive a value when we add policy to decide the solution options.
+ int index = 0
+ //This needs to be changed to derive a value when we add policy to decide the solution options.
Map OOFResponseObject = new JsonSlurper().parseText(OOFResponse)
- if(execution.getVariable("isSharable" ) == true && OOFResponseObject.get("solutions").containsKey("sharedNSIsolutions")) {
- nsiInstanceId = OOFResponseObject.get("solutions").get("sharedNSIsolutions").get(0).get("NSISolution").NSIId
- nsiName = OOFResponseObject.get("solutions").get("sharedNSIsolutions").get(0).get("NSISolution").NSIName
- sliceTaskParams.setNstId(nsiInstanceId)
- sliceTaskParams.setSuggestNsiName(nsiName)
- execution.setVariable("nsiInstanceId",nsiInstanceId)
- execution.setVariable("nsiName",nsiName)
- }else {
- if(OOFResponseObject.get("solutions").containsKey("newNSISolutions")) {
- List NSSImap = OOFResponseObject.get("solutions").get("newNSISolutions").get(index).get("NSSISolutions")
- for(Map nssi : NSSImap) {
- String nssiName = nssi.get("NSSISolution").NSSIName
- String nssiId = nssi.get("NSSISolution").NSSIId
- String domain = nssi.get("NSSISolution").domain.toUpperCase()
- switch (domain) {
- case "AN":
- sliceTaskParams.setAnSuggestNssiId(nssiId)
- sliceTaskParams.setAnSuggestNssiName(nssiName)
- break;
- case "CN":
- sliceTaskParams.setCnSuggestNssiId(nssiId)
- sliceTaskParams.setCnSuggestNssiName(nssiName)
- break;
- case "TN":
- sliceTaskParams.setTnSuggestNssiId(nssiId)
- sliceTaskParams.setTnSuggestNssiName(nssiName)
- break;
- default:
- break;
+ Map solutions = OOFResponseObject.get("solutions")
+
+ Boolean isSharable = false
+ String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
+ if (resourceSharingLevel.equals("shared"))
+ isSharable = true
+
+ if (solutions != null) {
+ if (isSharable) {
+ //sharedNSISolution
+ processSharedNSISolutions(solutions, execution)
+ } else {
+ //TODO test OOF don't implement in Frankfurt release
+ if (solutions.containsKey("newNSISolutions")) {
+ List<Map> newNSISolutions = solutions.get("newNSISolutions")
+ List<Map> NSSImap = new ArrayList<>()
+ if (newNSISolutions != null && newNSISolutions.size() > 0) {
+ NSSImap = newNSISolutions.get(index).get("NSSISolutions") as List<Map>
}
+ for (Map nssi : NSSImap) {
+ def nssiSolution = nssi.get("NSSISolution") as Map<String, ?>
+ String nssiName = nssiSolution.getOrDefault("NSSIName", "")
+ String nssiId = nssiSolution.getOrDefault("NSSIId", "")
+ String domain = nssiSolution.getOrDefault("domainName", "").toString().toUpperCase()
+ switch (domain) {
+ case "AN":
+ sliceTaskParams.setAnSuggestNssiId(nssiId)
+ sliceTaskParams.setAnSuggestNssiName(nssiName)
+ break
+ case "CN":
+ sliceTaskParams.setCnSuggestNssiId(nssiId)
+ sliceTaskParams.setCnSuggestNssiName(nssiName)
+ break
+ case "TN":
+ sliceTaskParams.setTnSuggestNssiId(nssiId)
+ sliceTaskParams.setTnSuggestNssiName(nssiName)
+ break
+ default:
+ break
+ }
+ }
+ //TODO sliceProfile
}
}
-
}
execution.setVariable("sliceTaskParams", sliceTaskParams)
- logger.debug("Info: No NSI suggested by OOF" )
+ logger.debug("Info: No NSI suggested by OOF")
}
- //send request to get NSI option - Begin
-
+ logger.debug("*** Completed options Call to OOF ***")
+ }
- //send request to get NSI service Info - Begin
-
- /***
- * Need to check whether its needed.
- */
-// logger.debug("Begin to query OOF suggetsed NSI from AAI ")
-// if(isBlank(nsiInstanceId)){
-// isNSISuggested = false
-// execution.setVariable("isNSISuggested",isNSISuggested)
-// }else
-// {
-// try {
-// String globalSubscriberId = execution.getVariable('globalSubscriberId')
-// String serviceType = execution.getVariable('subscriptionServiceType')
-// AAIResourcesClient resourceClient = new AAIResourcesClient()
-// AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nsiInstanceId)
-// AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
-// Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
-// org.onap.aai.domain.yang.ServiceInstance nsiServiceInstance = si.get()
-// execution.setVariable("nsiServiceInstance",nsiServiceInstance)
-// isNSISuggested = true
-// execution.setVariable("isNSISuggested",isNSISuggested)
-// SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-// sliceTaskParams.setSuggestNsiId(nsiInstanceId)
-// sliceTaskParams.setSuggestNsiName(si.get().getServiceInstanceName())
-// execution.setVariable("sliceTaskParams", sliceTaskParams)
-// logger.debug("Info: NSI suggested by OOF exist in AAI ")
-// }catch(BpmnError e) {
-// throw e
-// }catch(Exception ex) {
-// String msg = "Internal Error in getServiceInstance: " + ex.getMessage()
-// //exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-// logger.debug("Info: NSI suggested by OOF doesnt exist in AAI " + nsiInstanceId)
-// }
-// }
- //send request to get NSI service Info - End
- //${OrchestrationTaskHandler.createOrchestrationTask(execution.getVariable("OrchestrationTask"))}
- logger.debug( "*** Completed options Call to OOF ***")
+ private void processSharedNSISolutions(Map solutions, DelegateExecution execution) {
+ if (!solutions.containsKey("sharedNSISolutions"))
+ {
+ logger.error("OOF don't return sharedNSISolutions")
+ return
+ }
+ String nsiName, nsiInstanceId, nssiId, nssiName
+ Map sliceProfile
+ SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
+ Map sharedNSIsolution = ((List) solutions.get("sharedNSISolutions")).get(0)
+ nsiInstanceId = sharedNSIsolution.getOrDefault("NSIId", "")
+ nsiName = sharedNSIsolution.getOrDefault("NSIName", "")
+ sliceTaskParams.setNstId(nsiInstanceId)
+ sliceTaskParams.setSuggestNsiName(nsiName)
+
+ //Temporary modification
+ List NSSIs = sharedNSIsolution.get("NSSIs")
+ if(NSSIs.size()==1){
+ Map nssi = NSSIs.get(0)
+ nssiId = nssi.getOrDefault("NSSIId","")
+ nssiName = nssi.getOrDefault("NSSIName","")
+ sliceTaskParams.setCnSuggestNssiId(nssiId)
+ sliceTaskParams.setCnSuggestNssiName(nssiName)
+ sliceProfile = ((List)nssi.get("sliceProfile"))?.get(0)
+// execution.setVariable("sliceProfileCn", sliceProfile)
+// sliceTaskParams.setSliceProfileCn(sliceProfile)
+ }
+ logger.debug("OOF sharedNSISolution nsiInstanceId:${nsiInstanceId}, nsiName:${nsiName}, nssiId:${nssiId}, nssiName:${nssiName}")
+ logger.debug("OOF SliceProfile:"+sliceProfile.toString())
}
-
- public void parseServiceProfile(DelegateExecution execution) {
+ void parseServiceProfile(DelegateExecution execution) {
logger.debug("Start parseServiceProfile")
String serviceType = execution.getVariable("serviceType")
Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
@@ -230,9 +242,27 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
logger.debug("Finish parseServiceProfile")
}
- public Map getSliceProfile(String serviceType, String domain, Map<String, Object> serviceProfile) {
- String variablePath = "nsmf." + serviceType + ".profileMap" + domain
- String profileMapStr = UrnPropertiesReader.getVariable(variablePath)
+ Map getSliceProfile(String serviceType, String domain, Map<String, Object> serviceProfile) {
+ //String variablePath = "nsmf." + serviceType + ".profileMap" + domain
+ //String profileMapStr = UrnPropertiesReader.getVariable(variablePath)
+ String profileMapStr = """ {
+ "skip_post_instantiation_configuration":"skip_post_instantiation_configuration",
+ "controller_actor":"controller_actor",
+ "areaTrafficCapDL":"areaTrafficCapDL",
+ "maxNumberofUEs":"maxNumberofUEs",
+ "latency":"latency",
+ "expDataRateUL":"expDataRateUL",
+ "sNSSAI":"sNSSAI",
+ "plmnIdList":"plmnIdList",
+ "sST":"sST",
+ "areaTrafficCapUL":"areaTrafficCapUL",
+ "uEMobilityLevel":"uEMobilityLevel",
+ "expDataRateDL":"expDataRateDL",
+ "coverageAreaTAList":"coverageAreaTAList",
+ "activityFactor":"activityFactor",
+ "resourceSharingLevel":"resourceSharingLevel"
+ }
+ """.trim().replaceAll(" ", "")
logger.debug("Profile map for " + domain + " : " + profileMapStr)
Map<String, String> profileMaps = objectMapper.readValue(profileMapStr, new TypeReference<Map<String, String>>(){})
Map<String, Object> sliceProfileTn = [:]
@@ -243,92 +273,20 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
return sliceProfileTn
}
+ void processDecomposition(DelegateExecution execution){
+ logger.debug("Start processDecomposition")
- void prepareNSSIList(DelegateExecution execution)
- {
ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
- List<String> nssiAssociated = new ArrayList<>()
- Map<String, String> nssimap = new HashMap<>()
- String nsiInstanceId=execution.getVariable("nsiInstanceId")
- String globalSubscriberId = execution.getVariable("globalSubscriberId")
- String serviceType = execution.getVariable("subscriptionServiceType")
-
- try {
-
- ServiceInstance si = execution.getVariable("nsiServiceInstance")
- //List<Relationship> relationships = si.getRelationshipList().getRelationship().stream().filter(relation ->
- // relation.getRelatedTo().equalsIgnoreCase("service-instance"))
- RelationshipList relationshipList = si.getRelationshipList()
- List<Relationship> relationships = relationshipList.getRelationship()
- for(Relationship relationship in relationships)
- {
- if(relationship.getRelatedTo().equalsIgnoreCase("service-instance"))
- {
- String NSSIassociated = relationship.getRelatedLink().substring(relationship.getRelatedLink().lastIndexOf("/") + 1);
- if(!NSSIassociated.equals(nsiInstanceId))
- nssiAssociated.add(NSSIassociated)
- }
- }
- }catch(BpmnError e) {
- throw e
- }catch(Exception ex) {
- String msg = "Internal Error in getServiceInstance: " + ex.getMessage()
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
- }
- Map<String, Object> params = execution.getVariable("params")
SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
- for(String nssiID in nssiAssociated)
- {
- try {
- AAIResourcesClient resourceClient = new AAIResourcesClient()
- AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiID)
- AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
- Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
- org.onap.aai.domain.yang.ServiceInstance nssi = si.get()
-
- String domain = nssi.getEnvironmentContext().toString().toUpperCase()
- switch (domain) {
- case "AN":
- sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId())
- sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName())
- break;
- case "CN":
- sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId())
- sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName())
- break;
- case "TN":
- sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId())
- sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName())
- break;
- default:
- break;
- }
- }catch(NotFoundException e)
- {
- logger.debug("NSSI Service Instance not found in AAI: " + nssiID)
- }catch(Exception e)
- {
- logger.debug("NSSI Service Instance not found in AAI: " + nssiID)
- }
-
- }
String nstName = serviceDecomposition.getModelInfo().getModelName()
sliceTaskParams.setNstName(nstName)
String nstId = serviceDecomposition.getModelInfo().getModelUuid()
sliceTaskParams.setNstId(nstId)
- execution.setVariable("sliceTaskParams",sliceTaskParams)
+ logger.debug("End processDecomposition")
}
- void updateOptionsInDB(DelegateExecution execution) {
- logger.debug("Updating options with default value since not sharable : Begin ")
- String taskID = execution.getVariable("taskID")
- String params = execution.getVariable("params")
- logger.debug("Updating options with default value since not sharable : End ")
-
- }
-
void prepareNSTDecompose(DelegateExecution execution) {
String modelUuid = execution.getVariable("nstModelUuid")
@@ -364,14 +322,6 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
}
- void updateStatusInDB(DelegateExecution execution) {
-
- String taskID = execution.getVariable("taskID")
- //OrchestrationTask orchestrationTask = requestsDbClient.getNetworkSliceOption(taskID);
- //orchestrationTask.setTaskStage("wait to confirm")
- //requestsDbClient.updateNetworkSliceOption(orchestrationTask)
- }
-
void prepareNSSTlistfromNST(DelegateExecution execution) {
//Need to update this part from decomposition.
logger.trace("Enter prepareNSSTlistfromNST()")
@@ -400,7 +350,6 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
}
-
void getNSSTOption(DelegateExecution execution) {
ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
@@ -483,17 +432,17 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
case "AN":
sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId())
sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName())
- break;
+ break
case "CN":
sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId())
sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName())
- break;
+ break
case "TN":
sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId())
sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName())
- break;
+ break
default:
- break;
+ break
}
}catch(NotFoundException e)
{
@@ -503,22 +452,6 @@ public class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId)
}
}
-
-
- //Prepare send request to OOF - End
-
-// String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent()
-// String nsstID = jsonUtil.getJsonValue(content, "metadata.id")
-// String vendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-// String domain = jsonUtil.getJsonValue(content, "metadata.domainType")
-// String type = jsonUtil.getJsonValue(content, "metadata.type")
-// String nsstContentInfo = """{
-// "NsstID":"${nsstID}",
-// "Vendor":"${vendor}",
-// "type":"${type}"
-// }"""
-
logger.debug("Prepare NSSI option completed ")
}
-}
-
+} \ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn
index 435f91921d..8e3bada99b 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn
@@ -1,13 +1,13 @@
<?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="2.2.3">
+<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:process id="DoCreateSliceServiceOption" name="DoCreateSliceServiceOption" isExecutable="true">
<bpmn:startEvent id="createNS_StartEvent" name="createOption_StartEvent">
<bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
- <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="ExclusiveGateway_0b9d9l0" />
+ <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_09nzhwk" />
<bpmn:scriptTask id="Task_09nzhwk" name="send request to OOF for NSI options" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1h5bw41</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1utpplq</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def dcso = new DoCreateSliceServiceOption()
@@ -20,48 +20,12 @@ dcso.getNSIOptionfromOOF(execution)</bpmn:script>
def dcso = new DoCreateSliceServiceOption()
dcso.preProcessRequest(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="ScriptTask_0j3wd2o" />
<bpmn:endEvent id="EndEvent_1x6k78c">
- <bpmn:incoming>SequenceFlow_01ak5x3</bpmn:incoming>
<bpmn:incoming>SequenceFlow_1ap8kar</bpmn:incoming>
<bpmn:incoming>SequenceFlow_0hnsycl</bpmn:incoming>
</bpmn:endEvent>
- <bpmn:scriptTask id="finishNSCreate_Task" name="prepare list of NSSI associated with NSI" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_15679e8</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSSIList(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:exclusiveGateway id="ExclusiveGateway_0b9d9l0" default="SequenceFlow_0ueeeca">
- <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1h5bw41</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_0ueeeca</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="SequenceFlow_1h5bw41" name="NSI Sharable" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="Task_09nzhwk">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isSharable" ) == true)}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:scriptTask id="ScriptTask_1ehyrsg" name="update task status in request DB" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0ueeeca</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0ojueqq</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.updateStatusInDB(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:sequenceFlow id="SequenceFlow_0ueeeca" name="NSI Not Sharable" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="ScriptTask_1ehyrsg" />
- <bpmn:endEvent id="EndEvent_00n990e">
- <bpmn:incoming>SequenceFlow_0ojueqq</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:scriptTask id="ScriptTask_0j3wd2o" name="updated options in request DB" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_01ak5x3</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.updateOptionsInDB(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:sequenceFlow id="SequenceFlow_01ak5x3" sourceRef="ScriptTask_0j3wd2o" targetRef="EndEvent_1x6k78c" />
<bpmn:scriptTask id="ScriptTask_0kecvrc" name="prepare list of NSST associated with NST" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1614gtr</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0wy6oag</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0lt2cdo</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def dcso = new DoCreateSliceServiceOption()
@@ -76,7 +40,7 @@ dcso.getNSSTOption(execution)</bpmn:script>
</bpmn:scriptTask>
<bpmn:exclusiveGateway id="ExclusiveGateway_1y1wzs9">
<bpmn:incoming>SequenceFlow_0lt2cdo</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_00gq7h2</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1r9n9ef</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1ap8kar</bpmn:outgoing>
<bpmn:outgoing>SequenceFlow_0m2mr0o</bpmn:outgoing>
</bpmn:exclusiveGateway>
@@ -87,44 +51,7 @@ dcso.getNSSTOption(execution)</bpmn:script>
<bpmn:sequenceFlow id="SequenceFlow_0m2mr0o" sourceRef="ExclusiveGateway_1y1wzs9" targetRef="ScriptTask_1e5ysya">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isMoreNSSTtoProcess" ) == true)}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
- <bpmn:scriptTask id="ScriptTask_0ojz4lj" name="save NSI and NSSI options in DB" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1r9n9ef</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_00gq7h2</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.updateOptionsInDB(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:sequenceFlow id="SequenceFlow_1r9n9ef" sourceRef="ScriptTask_1mlytov" targetRef="ScriptTask_0ojz4lj" />
- <bpmn:sequenceFlow id="SequenceFlow_00gq7h2" sourceRef="ScriptTask_0ojz4lj" targetRef="ExclusiveGateway_1y1wzs9" />
- <bpmn:sequenceFlow id="SequenceFlow_0ojueqq" sourceRef="ScriptTask_1ehyrsg" targetRef="EndEvent_00n990e" />
- <bpmn:exclusiveGateway id="ExclusiveGateway_1mdr1l2" default="SequenceFlow_1614gtr">
- <bpmn:incoming>SequenceFlow_041f5ne</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_15679e8</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1614gtr</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="SequenceFlow_15679e8" sourceRef="ExclusiveGateway_1mdr1l2" targetRef="finishNSCreate_Task">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSISuggested" ) == true)}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1614gtr" sourceRef="ExclusiveGateway_1mdr1l2" targetRef="ScriptTask_0kecvrc" />
- <bpmn:scriptTask id="ScriptTask_0uu3j3h" name="prepare NST decomposition" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0wy6oag</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1jnsyix</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSTDecompose(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:callActivity id="CallActivity_1qs8xd5" name="Call Decompose Service" calledElement="DecomposeService">
- <bpmn:extensionElements>
- <camunda:in source="msoRequestId" target="msoRequestId" />
- <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
- <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
- <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
- <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
- <camunda:out source="WorkflowException" target="WorkflowException" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_1jnsyix</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_041f5ne</bpmn:outgoing>
- </bpmn:callActivity>
+ <bpmn:sequenceFlow id="SequenceFlow_1r9n9ef" sourceRef="ScriptTask_1mlytov" targetRef="ExclusiveGateway_1y1wzs9" />
<bpmn:scriptTask id="ScriptTask_1e5ysya" name="prepare NSST decomposition" scriptFormat="groovy">
<bpmn:incoming>SequenceFlow_0m2mr0o</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_016vi3s</bpmn:outgoing>
@@ -146,193 +73,163 @@ dcso.prepareNSSTDecompose(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_0a5f5y6</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:sequenceFlow id="SequenceFlow_0a5f5y6" sourceRef="CallActivity_1rfnoe2" targetRef="ScriptTask_1mlytov" />
- <bpmn:sequenceFlow id="SequenceFlow_1utpplq" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_1skfk7w" />
- <bpmn:sequenceFlow id="SequenceFlow_1jnsyix" sourceRef="ScriptTask_0uu3j3h" targetRef="CallActivity_1qs8xd5" />
- <bpmn:sequenceFlow id="SequenceFlow_041f5ne" sourceRef="CallActivity_1qs8xd5" targetRef="ExclusiveGateway_1mdr1l2" />
+ <bpmn:sequenceFlow id="SequenceFlow_1utpplq" sourceRef="Task_09nzhwk" targetRef="ScriptTask_1umbyel" />
<bpmn:exclusiveGateway id="ExclusiveGateway_1skfk7w" default="SequenceFlow_0wy6oag">
- <bpmn:incoming>SequenceFlow_1utpplq</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0d774n5</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0wy6oag</bpmn:outgoing>
<bpmn:outgoing>SequenceFlow_0hnsycl</bpmn:outgoing>
</bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="SequenceFlow_0wy6oag" sourceRef="ExclusiveGateway_1skfk7w" targetRef="ScriptTask_0uu3j3h" />
+ <bpmn:sequenceFlow id="SequenceFlow_0wy6oag" sourceRef="ExclusiveGateway_1skfk7w" targetRef="ScriptTask_0kecvrc" />
<bpmn:sequenceFlow id="SequenceFlow_0hnsycl" sourceRef="ExclusiveGateway_1skfk7w" targetRef="EndEvent_1x6k78c">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSISuggested" ) == true)}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
+ <bpmn:scriptTask id="ScriptTask_1umbyel" name="prepare NST decomposition" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1utpplq</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0piifl1</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.prepareNSTDecompose(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0piifl1" sourceRef="ScriptTask_1umbyel" targetRef="CallActivity_0ly8xiw" />
+ <bpmn:callActivity id="CallActivity_0ly8xiw" name="Call Decompose Service" calledElement="DecomposeService">
+ <bpmn:extensionElements>
+ <camunda:in source="msoRequestId" target="msoRequestId" />
+ <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+ <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+ <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+ <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+ <camunda:out source="WorkflowException" target="WorkflowException" />
+ </bpmn:extensionElements>
+ <bpmn:incoming>SequenceFlow_0piifl1</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_086yszq</bpmn:outgoing>
+ </bpmn:callActivity>
+ <bpmn:sequenceFlow id="SequenceFlow_086yszq" sourceRef="CallActivity_0ly8xiw" targetRef="Task_1k2ypj0" />
+ <bpmn:sequenceFlow id="SequenceFlow_0d774n5" sourceRef="Task_1k2ypj0" targetRef="ExclusiveGateway_1skfk7w" />
+ <bpmn:scriptTask id="Task_1k2ypj0" name="Process Decomposition" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_086yszq</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0d774n5</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.processDecomposition(execution)</bpmn:script>
+ </bpmn:scriptTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateSliceServiceOption">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
- <dc:Bounds x="175" y="187" width="36" height="36" />
+ <dc:Bounds x="175" y="107" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="150" y="223" width="87" height="27" />
+ <dc:Bounds x="151" y="143" width="86" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
- <di:waypoint x="211" y="205" />
- <di:waypoint x="251" y="205" />
- <di:waypoint x="251" y="205" />
- <di:waypoint x="293" y="205" />
+ <di:waypoint x="211" y="125" />
+ <di:waypoint x="251" y="125" />
+ <di:waypoint x="251" y="125" />
+ <di:waypoint x="293" y="125" />
<bpmndi:BPMNLabel>
<dc:Bounds x="266" y="123" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
- <di:waypoint x="393" y="205" />
- <di:waypoint x="448" y="205" />
+ <di:waypoint x="393" y="125" />
+ <di:waypoint x="460" y="125" />
<bpmndi:BPMNLabel>
<dc:Bounds x="436" y="108" width="0" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
- <dc:Bounds x="594" y="165" width="100" height="80" />
+ <dc:Bounds x="460" y="85" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
- <dc:Bounds x="293" y="165" width="100" height="80" />
+ <dc:Bounds x="293" y="85" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
- <di:waypoint x="1536" y="205" />
- <di:waypoint x="1592" y="205" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="556.5" y="574" width="90" height="12" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
- <dc:Bounds x="1813" y="187" width="36" height="36" />
+ <dc:Bounds x="1813" y="107" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="412" y="617" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task">
- <dc:Bounds x="1436" y="165" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_0b9d9l0_di" bpmnElement="ExclusiveGateway_0b9d9l0" isMarkerVisible="true">
- <dc:Bounds x="448" y="180" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1h5bw41_di" bpmnElement="SequenceFlow_1h5bw41">
- <di:waypoint x="498" y="205" />
- <di:waypoint x="594" y="205" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="514" y="187" width="66" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_1ehyrsg_di" bpmnElement="ScriptTask_1ehyrsg">
- <dc:Bounds x="602" y="-197" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0ueeeca_di" bpmnElement="SequenceFlow_0ueeeca">
- <di:waypoint x="473" y="180" />
- <di:waypoint x="473" y="-157" />
- <di:waypoint x="602" y="-157" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="415" y="14" width="86" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="EndEvent_00n990e_di" bpmnElement="EndEvent_00n990e">
- <dc:Bounds x="785" y="-175" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0j3wd2o_di" bpmnElement="ScriptTask_0j3wd2o">
- <dc:Bounds x="1592" y="165" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_01ak5x3_di" bpmnElement="SequenceFlow_01ak5x3">
- <di:waypoint x="1692" y="205" />
- <di:waypoint x="1813" y="205" />
- </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ScriptTask_0kecvrc_di" bpmnElement="ScriptTask_0kecvrc">
- <dc:Bounds x="1297" y="391" width="100" height="80" />
+ <dc:Bounds x="1250" y="311" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ScriptTask_1mlytov_di" bpmnElement="ScriptTask_1mlytov">
- <dc:Bounds x="1781" y="533" width="100" height="80" />
+ <dc:Bounds x="1680" y="453" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ExclusiveGateway_1y1wzs9_di" bpmnElement="ExclusiveGateway_1y1wzs9" isMarkerVisible="true">
- <dc:Bounds x="1461" y="406" width="50" height="50" />
+ <dc:Bounds x="1461" y="326" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1ap8kar_di" bpmnElement="SequenceFlow_1ap8kar">
- <di:waypoint x="1486" y="406" />
- <di:waypoint x="1486" y="315" />
- <di:waypoint x="1831" y="315" />
- <di:waypoint x="1831" y="223" />
+ <di:waypoint x="1486" y="326" />
+ <di:waypoint x="1486" y="235" />
+ <di:waypoint x="1831" y="235" />
+ <di:waypoint x="1831" y="143" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0lt2cdo_di" bpmnElement="SequenceFlow_0lt2cdo">
- <di:waypoint x="1397" y="431" />
- <di:waypoint x="1461" y="431" />
+ <di:waypoint x="1350" y="351" />
+ <di:waypoint x="1461" y="351" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0m2mr0o_di" bpmnElement="SequenceFlow_0m2mr0o">
- <di:waypoint x="1511" y="431" />
- <di:waypoint x="1592" y="431" />
+ <di:waypoint x="1511" y="351" />
+ <di:waypoint x="1592" y="351" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_0ojz4lj_di" bpmnElement="ScriptTask_0ojz4lj">
- <dc:Bounds x="1592" y="533" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_1r9n9ef_di" bpmnElement="SequenceFlow_1r9n9ef">
- <di:waypoint x="1781" y="573" />
- <di:waypoint x="1692" y="573" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_00gq7h2_di" bpmnElement="SequenceFlow_00gq7h2">
- <di:waypoint x="1592" y="573" />
- <di:waypoint x="1486" y="573" />
- <di:waypoint x="1486" y="456" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0ojueqq_di" bpmnElement="SequenceFlow_0ojueqq">
- <di:waypoint x="702" y="-157" />
- <di:waypoint x="785" y="-157" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ExclusiveGateway_1mdr1l2_di" bpmnElement="ExclusiveGateway_1mdr1l2" isMarkerVisible="true">
- <dc:Bounds x="1322" y="180" width="50" height="50" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_15679e8_di" bpmnElement="SequenceFlow_15679e8">
- <di:waypoint x="1372" y="205" />
- <di:waypoint x="1436" y="205" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1614gtr_di" bpmnElement="SequenceFlow_1614gtr">
- <di:waypoint x="1347" y="230" />
- <di:waypoint x="1347" y="391" />
+ <di:waypoint x="1680" y="493" />
+ <di:waypoint x="1486" y="493" />
+ <di:waypoint x="1486" y="376" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_0uu3j3h_di" bpmnElement="ScriptTask_0uu3j3h">
- <dc:Bounds x="967" y="165" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="CallActivity_1qs8xd5_di" bpmnElement="CallActivity_1qs8xd5">
- <dc:Bounds x="1136" y="165" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ScriptTask_1e5ysya_di" bpmnElement="ScriptTask_1e5ysya">
- <dc:Bounds x="1592" y="391" width="100" height="80" />
+ <dc:Bounds x="1592" y="311" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_016vi3s_di" bpmnElement="SequenceFlow_016vi3s">
- <di:waypoint x="1692" y="431" />
- <di:waypoint x="1781" y="431" />
+ <di:waypoint x="1692" y="351" />
+ <di:waypoint x="1781" y="351" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="CallActivity_1rfnoe2_di" bpmnElement="CallActivity_1rfnoe2">
- <dc:Bounds x="1781" y="391" width="100" height="80" />
+ <dc:Bounds x="1781" y="311" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0a5f5y6_di" bpmnElement="SequenceFlow_0a5f5y6">
- <di:waypoint x="1881" y="431" />
- <di:waypoint x="1968" y="431" />
- <di:waypoint x="1968" y="573" />
- <di:waypoint x="1881" y="573" />
+ <di:waypoint x="1881" y="351" />
+ <di:waypoint x="1968" y="351" />
+ <di:waypoint x="1968" y="493" />
+ <di:waypoint x="1780" y="493" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1utpplq_di" bpmnElement="SequenceFlow_1utpplq">
- <di:waypoint x="694" y="205" />
- <di:waypoint x="796" y="205" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1jnsyix_di" bpmnElement="SequenceFlow_1jnsyix">
- <di:waypoint x="1067" y="205" />
- <di:waypoint x="1136" y="205" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_041f5ne_di" bpmnElement="SequenceFlow_041f5ne">
- <di:waypoint x="1236" y="205" />
- <di:waypoint x="1322" y="205" />
+ <di:waypoint x="560" y="125" />
+ <di:waypoint x="620" y="125" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="ExclusiveGateway_1skfk7w_di" bpmnElement="ExclusiveGateway_1skfk7w" isMarkerVisible="true">
- <dc:Bounds x="796" y="180" width="50" height="50" />
+ <dc:Bounds x="1095" y="100" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="SequenceFlow_0wy6oag_di" bpmnElement="SequenceFlow_0wy6oag">
- <di:waypoint x="846" y="205" />
- <di:waypoint x="967" y="205" />
+ <di:waypoint x="1120" y="150" />
+ <di:waypoint x="1120" y="351" />
+ <di:waypoint x="1250" y="351" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_0hnsycl_di" bpmnElement="SequenceFlow_0hnsycl">
- <di:waypoint x="821" y="180" />
- <di:waypoint x="821" y="90" />
- <di:waypoint x="1831" y="90" />
- <di:waypoint x="1831" y="187" />
+ <di:waypoint x="1145" y="125" />
+ <di:waypoint x="1813" y="125" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1umbyel_di" bpmnElement="ScriptTask_1umbyel">
+ <dc:Bounds x="620" y="85" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0piifl1_di" bpmnElement="SequenceFlow_0piifl1">
+ <di:waypoint x="720" y="125" />
+ <di:waypoint x="780" y="125" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="CallActivity_0ly8xiw_di" bpmnElement="CallActivity_0ly8xiw">
+ <dc:Bounds x="780" y="85" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_086yszq_di" bpmnElement="SequenceFlow_086yszq">
+ <di:waypoint x="880" y="125" />
+ <di:waypoint x="940" y="125" />
</bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0d774n5_di" bpmnElement="SequenceFlow_0d774n5">
+ <di:waypoint x="1040" y="125" />
+ <di:waypoint x="1095" y="125" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1895p18_di" bpmnElement="Task_1k2ypj0">
+ <dc:Bounds x="940" y="85" width="100" height="80" />
+ </bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>