diff options
3 files changed, 950 insertions, 47 deletions
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy new file mode 100644 index 0000000000..dc33bc930a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy @@ -0,0 +1,435 @@ +/*- + * ============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 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.RelationshipData +import org.onap.aai.domain.yang.RelationshipList +import org.onap.aai.domain.yang.ServiceInstance +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.RequestDBUtil +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.AAIObjectType +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.beans.OperationStatus +import org.slf4j.Logger +import org.slf4j.LoggerFactory + +import javax.ws.rs.NotFoundException + +import static org.apache.commons.lang3.StringUtils.isBlank + +class ActivateCommunicationService extends AbstractServiceTaskProcessor { + + String Prefix="ACS_" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + RequestDBUtil requestDBUtil = new RequestDBUtil() + + JsonUtils jsonUtil = new JsonUtils() + + AAIResourcesClient client = getAAIClient() + + private static final Logger logger = LoggerFactory.getLogger(ActivateCommunicationService.class) + + @Override + void preProcessRequest(DelegateExecution execution) { + logger.debug(Prefix + "preProcessRequest Start") + execution.setVariable("prefix", Prefix) + String msg + + try { + // check for incoming json message/input + String siRequest = execution.getVariable("bpmnRequest") + logger.debug(siRequest) + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + logger.info("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + logger.info(msg) + execution.setVariable("globalSubscriberId", "5GCustomer") + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "serviceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + logger.debug(msg) + execution.setVariable("subscriptionServiceType", "5G") + } else { + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + + String operationId = jsonUtil.getJsonValue(siRequest, "operationId") + execution.setVariable("operationId", operationId) + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + msg = "Exception in preProcessRequest " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + logger.debug(Prefix + "preProcessRequest Exit") + } + + + def checkAAIOrchStatus = { DelegateExecution execution -> + + logger.debug(Prefix + "checkAAIOrchStatus Start") + + String msg + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String operationType = execution.getVariable("operationType") + + logger.debug("serviceInstanceId: " + serviceInstanceId) + + //check the cms status + try { + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, + globalSubscriberId, subscriptionServiceType, serviceInstanceId) + + if (!client.exists(uri)) { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai") + } + + AAIResultWrapper wrapper = client.get(uri, NotFoundException.class) + Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) + if(si.isPresent()) { + + if (si.get().getOrchestrationStatus().toLowerCase() == "activated" && + operationType == "deactivation") { + logger.info("Service is in active state") + execution.setVariable("serviceExpectStatus", "deactivated") + execution.setVariable("isContinue", "true") + execution.setVariable("requestParam", "deactivate") + + } else if (si.get().getOrchestrationStatus().toLowerCase() == "deactivated" && + operationType == "activation"){ + logger.info("Service is in de-activated state") + execution.setVariable("serviceExpectStatus", "activated") + execution.setVariable("isContinue", "true") + execution.setVariable("requestParam", "activate") + + } else { + execution.setVariable("isContinue", "false") + } + + RelationshipList relationshipList = si.get().getRelationshipList() + List<Relationship> relationship + if (relationshipList != null && (relationship = relationshipList.getRelationship()) != null + && relationship.size() > 0) { + List<RelationshipData> relationshipDatas = relationship.get(0).getRelationshipData() + + for (RelationshipData relationshipData : relationshipDatas) { + execution.setVariable("e2e_" + relationshipData.getRelationshipKey(), + relationshipData.getRelationshipValue()) + } + } else { + msg = "the communication service has no e2e service" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + } + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + msg = "Exception in " + Prefix + "checkAAIOrchStatus: " + ex.getMessage() + logger.info( msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + logger.debug(Prefix + "checkAAIOrchStatus Exit") + } + + + def prepareInitOperationStatus = { DelegateExecution execution -> + logger.debug(Prefix + "prepareInitOperationStatus Start") + + String serviceId = execution.getVariable("serviceInstanceId") + + // 生成 operationId + String operationId = execution.getVariable("operationId") + + String operationType = execution.getVariable("operationType") + + OperationStatus initStatus = new OperationStatus() + initStatus.setServiceId(serviceId) + initStatus.setOperationId(operationId) + initStatus.setOperation(operationType) + initStatus.setUserId(execution.getVariable("globalSubscriberId") as String) + initStatus.setResult("processing") + initStatus.setProgress("0") + initStatus.setReason("") + initStatus.setOperationContent("communication service active operation start") + + requestDBUtil.prepareUpdateOperationStatus(execution, initStatus) + + logger.debug(Prefix + "prepareInitOperationStatus Exit") + } + + + def sendSyncResponse = { DelegateExecution execution -> + logger.debug(Prefix + "sendSyncResponse Start") + try { + String operationId = execution.getVariable("operationId") + + String restRequest = """{"operationId":"${operationId}"}""".trim() + logger.debug(" sendSyncResponse to APIH:" + "\n" + restRequest) + + sendWorkflowResponse(execution, 202, restRequest) + execution.setVariable("sentSyncResponse", true) + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + logger.debug(Prefix + "sendSyncResponse Exit") + } + + + def preRequestSend2NSMF = { DelegateExecution execution -> + logger.debug(Prefix + "preRequestSend2NSMF Start") + try { + + String e2eServiceInstanceId = execution.getVariable("e2e_service-instance.service-instance-id") + execution.setVariable("e2eServiceInstanceId", e2eServiceInstanceId) + + String requestParam = execution.getVariable("requestParam") + //String NSMF_endpoint = "/onap/so/infra/e2eServiceInstances/v3" + def NSMF_endpoint = UrnPropertiesReader.getVariable("mso.infra.endpoint.url", execution) + def url = NSMF_endpoint + "/e2eServiceInstances/v3/${e2eServiceInstanceId}/${requestParam}" + execution.setVariable("NSMF_endpoint", url) + + //get from model catalog inputs + String payload = """ + { + "globalSubscriberId": "${execution.getVariable("globalSubscriberId")}", + "serviceType": "${execution.getVariable("subscriptionServiceType")}" + } + """ + execution.setVariable("CSMF_NSMFRequest", payload.replaceAll("\\s+", "")) + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + String msg = "Exception in " + Prefix + "preRequestSend2NSMF. " + ex.getMessage() + logger.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + logger.debug(Prefix + "preRequestSend2NSMF Exit") + } + + + def processNSMFResponse = { DelegateExecution execution -> + logger.debug(Prefix + "processNSMFResponse Start") + //oof + try { + def CSMF_NSMFResponseCode = execution.getVariable("CSMF_NSMFResponseCode") as Integer + if (CSMF_NSMFResponseCode >= 200 && CSMF_NSMFResponseCode < 400) { + def CSMF_NSMFResponse = execution.getVariable("CSMF_NSMFResponse") as String + def e2eOperationId = jsonUtil.getJsonValue(CSMF_NSMFResponse, "operationId") + + execution.setVariable("e2eOperationId", e2eOperationId) + execution.setVariable("ProcessNsmfSuccess", "OK") + } else { + execution.setVariable("ProcessNsmfSuccess", "ERROR") + execution.setVariable("operationStatus", "error") + execution.setVariable("operationContent", + "communication service " + execution.getVariable("operationType") + + " operation error: nsmf response fail") + execution.setVariable("orchestrationStatus", "error") + } + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + String msg = "Exception in " + Prefix + "processOOFResponse. " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + logger.debug(Prefix + "processNSMFResponse Exit") + } + + + def prepareUpdateOperationStatus = { DelegateExecution execution -> + logger.debug(Prefix + "prepareUpdateOperationStatus Start") + // update status creating + OperationStatus status = new OperationStatus() + status.setServiceId(execution.getVariable("serviceInstanceId") as String) + status.setOperationId(execution.getVariable("operationId") as String) + status.setOperation(execution.getVariable("operationType") as String) + status.setResult("processing") + status.setProgress("20") + status.setOperationContent("communication service "+ execution.getVariable("operationType") + + " operation processing: waiting nsmf service create finished") + status.setUserId(execution.getVariable("globalSubscriberId") as String) + + requestDBUtil.prepareUpdateOperationStatus(execution, status) + logger.debug(Prefix + "prepareUpdateOperationStatus Exit") + } + + + //todo + def prepareCallCheckProcessStatus = { DelegateExecution execution -> + logger.debug(Prefix + "prepareCallCheckProcessStatus Start") + + def successConditions = new ArrayList<>() + successConditions.add("finished") + execution.setVariable("successConditions", successConditions) + + def errorConditions = new ArrayList<>() + errorConditions.add("error") + execution.setVariable("errorConditions", errorConditions) + + execution.setVariable("processServiceType", "communication service") + + execution.setVariable("timeOut", 3 * 60 * 60 * 1000) + + def successParamMap = new HashMap<String, Object>() + successParamMap.put("orchestrationStatus", execution.getVariable("serviceExpectStatus")) + + execution.setVariable("successParamMap", successParamMap) + + def errorParamMap = new HashMap<String, Object>() + errorParamMap.put("orchestrationStatus", "error") + + execution.setVariable("errorParamMap", errorParamMap) + + def timeOutParamMap = new HashMap<String, Object>() + timeOutParamMap.put("orchestrationStatus", "error") + + execution.setVariable("timeOutParamMap", timeOutParamMap) + + execution.setVariable("initProgress", 20) + execution.setVariable("endProgress", 90) + + logger.debug(Prefix + "prepareCallCheckProcessStatus Exit") + } + + + /** + * prepare update operation status to complete after NSMF process success + * @param execution + */ + def prepareCompleteStatus = { DelegateExecution execution -> + + logger.debug(Prefix + "prepareCompleteStatus Start") + String operationType = execution.getVariable("operationType") + OperationStatus status = new OperationStatus() + status.setServiceId(execution.getVariable("serviceInstanceId") as String) + status.setOperationId(execution.getVariable("operationId") as String) + status.setOperation(operationType) + status.setResult(execution.getVariable("operationStatus") as String) + status.setProgress("100") + status.setOperationContent(execution.getVariable("operationContent") as String) + status.setUserId(execution.getVariable("globalSubscriberId") as String) + + requestDBUtil.prepareUpdateOperationStatus(execution, status) + logger.debug("prepareCompleteStatus end, serviceInstanceId: " + execution.getVariable("serviceInstanceId") + + ", operationId: " + execution.getVariable("operationId")) + + logger.debug(Prefix + "prepareCompleteStatus Exit") + } + + + /** + * update NSMF complete status to AAI when the NSMF process finished + * @param execution + */ + def updateFinishStatusInAAI = { DelegateExecution execution -> + logger.debug(Prefix + "updateFinishStatusInAAI Start") + String msg + try { + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String orchestrationStatus = execution.getVariable("orchestrationStatus") + // create service + ServiceInstance csi = new ServiceInstance() + csi.setOrchestrationStatus(orchestrationStatus) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, + globalSubscriberId, subscriptionServiceType, serviceInstanceId) + client.update(uri, csi) + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + msg = "Exception in complete communication service " + ex.getMessage() + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + logger.debug(Prefix + "updateFinishStatusInAAI Exit") + } + + + public sendSyncError = { DelegateExecution execution -> + logger.debug("sendSyncError Start") + try { + String errorMessage + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("WorkflowException") as WorkflowException + errorMessage = wfe.getErrorMessage() + } else { + errorMessage = "Sending Sync Error." + } + + String buildWorkflowException = + """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException>""" + + logger.debug(buildWorkflowException) + sendWorkflowResponse(execution, 500, buildWorkflowException) + + } catch (Exception ex) { + logger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + logger.debug(Prefix + "sendSyncError Exit") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy index 4b3c1aa7b4..3da4161953 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy @@ -163,36 +163,20 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { String serInput = jsonUtil.getJsonValue(resourceInputTmp, "requestsInputs") switch (modelName) { - case ~/[\w\s\W]*OLT[\w\s\W]*/ : + case ~/[\w\s\W]*OLT[\w\s\W]*/ : // for backward compatibilty only, this case will be deprecated + case ~/[\w\s\W]*AccessConnectivity[\w\s\W]*/ : // get the required properties and update in resource input def resourceInput = resourceInputObj.getResourceParameters() String incomingRequest = resourceInputObj.getRequestsInputs() String serviceParameters = JsonUtils.getJsonValue(incomingRequest, "service.parameters") String requestInputs = JsonUtils.getJsonValue(serviceParameters, "requestInputs") - String cvlan - String svlan - String remoteId - - List<Metadatum> metadatum = getMetaDatum(resourceInputObj.getGlobalSubscriberId(), - resourceInputObj.getServiceType(), - resourceInputObj.getServiceInstanceId()) - for(Metadatum datum: metadatum) { - if (datum.getMetaname().equalsIgnoreCase("cvlan")) { - cvlan = datum.getMetaval() - } - - if (datum.getMetaname().equalsIgnoreCase("svlan")) { - svlan = datum.getMetaval() - } - - if (datum.getMetaname().equalsIgnoreCase("remoteId")) { - remoteId = datum.getMetaval() - } - } - - logger.debug("cvlan: "+cvlan+" | svlan: "+svlan+" | remoteId: "+remoteId) - + String cvlan = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.cvlan") + String svlan = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.svlan") + String remoteId = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_remote_id") String manufacturer = jsonUtil.getJsonValue(serInput, "service.parameters.requestInputs.ont_ont_manufacturer") String ontsn = jsonUtil.getJsonValue(serInput, @@ -209,7 +193,8 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { logger.debug("new resource Input :" + resourceInputObj.toString()) break - case ~/[\w\s\W]*EdgeInternetProfile[\w\s\W]*/ : + case ~/[\w\s\W]*EdgeInternetProfile[\w\s\W]*/ : // for backward compatibilty only, this case will be deprecated + case ~/[\w\s\W]*InternetProfile[\w\s\W]*/ : // get the required properties and update in resource input def resourceInput = resourceInputObj.getResourceParameters() String incomingRequest = resourceInputObj.getRequestsInputs() @@ -217,37 +202,34 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { String requestInputs = JsonUtils.getJsonValue(serviceParameters, "requestInputs") JSONObject inputParameters = new JSONObject(requestInputs) - String cvlan - String svlan - String remoteId + String cvlan = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.cvlan") + String svlan = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.svlan") String manufacturer = jsonUtil.getJsonValue(serInput, "service.parameters.requestInputs.ont_ont_manufacturer") - + String remoteId = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_remote_id") String ontsn = jsonUtil.getJsonValue(serInput, "service.parameters.requestInputs.ont_ont_serial_num") - - List<Metadatum> metadatum = getMetaDatum(resourceInputObj.getGlobalSubscriberId(), - resourceInputObj.getServiceType(), - resourceInputObj.getServiceInstanceId()) - for(Metadatum datum: metadatum) { - if (datum.getMetaname().equalsIgnoreCase("cvlan")) { - cvlan = datum.getMetaval() - } - - if (datum.getMetaname().equalsIgnoreCase("svlan")) { - svlan = datum.getMetaval() - } - - if (datum.getMetaname().equalsIgnoreCase("remoteId")) { - remoteId = datum.getMetaval() - } - } + String serviceType = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_service_type") + String macAddr = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_rg_mac_addr") + String upStream = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_upstream_speed") + String downStream = jsonUtil.getJsonValue(serInput, + "service.parameters.requestInputs.edgeinternetprofile_ip_downstream_speed") String uResourceInput = jsonUtil.addJsonValue(resourceInput, "requestInputs.c_vlan", cvlan) uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.s_vlan", svlan) uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.manufacturer", manufacturer) - uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_access_id", remoteId) + uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_remote_id", remoteId) uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ont_sn", ontsn) + uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_service_type", serviceType) + uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_rg_mac_addr", macAddr) + uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_upstream_speed", upStream) + uResourceInput = jsonUtil.addJsonValue(uResourceInput, "requestInputs.ip_downstream_speed", downStream) logger.debug("old resource input:" + resourceInputObj.toString()) resourceInputObj.setResourceParameters(uResourceInput) execution.setVariable(Prefix + "resourceInput", resourceInputObj.toString()) diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateCommunicationService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateCommunicationService.bpmn new file mode 100644 index 0000000000..92fd5ef52b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateCommunicationService.bpmn @@ -0,0 +1,486 @@ +<?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_1gtu09b" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1"> + <bpmn:process id="ActivateCommunicationService" name="ActivateCommunicationService" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_199lc2s</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_08alvv7" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_199lc2s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0rl5u9x</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.preProcessRequest(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_199lc2s" sourceRef="StartEvent_1" targetRef="ScriptTask_08alvv7" /> + <bpmn:scriptTask id="ScriptTask_0t2aizp" name="Init Service Operation Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0cg4k4f</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xunetn</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.prepareInitOperationStatus(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_1h8uywz" name="Init Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="ACS_init_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="ACS_init_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0xunetn</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07brvnu</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_0xunetn" sourceRef="ScriptTask_0t2aizp" targetRef="ServiceTask_1h8uywz" /> + <bpmn:scriptTask id="ScriptTask_1rshcew" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_07brvnu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0c01147</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.sendSyncResponse(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0soxu97" name="check AAI Orch Status of cs" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0rl5u9x</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0337wg2</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.checkAAIOrchStatus(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0rl5u9x" sourceRef="ScriptTask_08alvv7" targetRef="ScriptTask_0soxu97" /> + <bpmn:sequenceFlow id="SequenceFlow_07brvnu" sourceRef="ServiceTask_1h8uywz" targetRef="ScriptTask_1rshcew" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1twqa76" name="Goto Call Active Slice"> + <bpmn:incoming>SequenceFlow_0c01147</bpmn:incoming> + <bpmn:linkEventDefinition name="CallActiveSlice" /> + </bpmn:intermediateThrowEvent> + <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_15alt6m" name="CallActiveSlice"> + <bpmn:outgoing>SequenceFlow_1om5m6o</bpmn:outgoing> + <bpmn:linkEventDefinition id="LinkEventDefinition_0zbmuty" name="CallActiveSlice" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1om5m6o" sourceRef="IntermediateThrowEvent_15alt6m" targetRef="ScriptTask_0oun39f" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1j8khf8" name="Is call activate slice Successful?"> + <bpmn:incoming>SequenceFlow_1i6cshg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_176pwpd</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1r6lo31</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_0fbubvu" name="Update Finish Status In AAI " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1w1h5vl</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1r6lo31</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1b8q7l5</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.updateFinishStatusInAAI(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1seqo87" name="Prepare Complete Status in requestDB" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1b8q7l5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_103y3rz</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.prepareCompleteStatus(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_10gsfd1" name="Update Service Operation Status Completed"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="ACS_complete_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="ACS_complete_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_103y3rz</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_15dmqcp</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1b8q7l5" sourceRef="ScriptTask_0fbubvu" targetRef="ScriptTask_1seqo87" /> + <bpmn:sequenceFlow id="SequenceFlow_103y3rz" sourceRef="ScriptTask_1seqo87" targetRef="ServiceTask_10gsfd1" /> + <bpmn:sequenceFlow id="SequenceFlow_176pwpd" name="yes" sourceRef="ExclusiveGateway_1j8khf8" targetRef="ScriptTask_0zqkikf"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("ProcessNsmfSuccess") == "OK"}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_0z07q3n"> + <bpmn:incoming>SequenceFlow_15dmqcp</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_15dmqcp" sourceRef="ServiceTask_10gsfd1" targetRef="EndEvent_0z07q3n" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1g73afb" name="Is orchstatus vaild?" default="SequenceFlow_0hpybf9"> + <bpmn:incoming>SequenceFlow_0337wg2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cg4k4f</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0hpybf9</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0cg4k4f" name="yes" sourceRef="ExclusiveGateway_1g73afb" targetRef="ScriptTask_0t2aizp"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "true"}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0337wg2" sourceRef="ScriptTask_0soxu97" targetRef="ExclusiveGateway_1g73afb" /> + <bpmn:sequenceFlow id="SequenceFlow_0hpybf9" name="no" sourceRef="ExclusiveGateway_1g73afb" targetRef="EndEvent_02rugcv" /> + <bpmn:endEvent id="EndEvent_02rugcv"> + <bpmn:incoming>SequenceFlow_0hpybf9</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_1ld8i6u" /> + </bpmn:endEvent> + <bpmn:subProcess id="SubProcess_1i9i3h1" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_1f90rxc"> + <bpmn:outgoing>SequenceFlow_1dkviys</bpmn:outgoing> + <bpmn:errorEventDefinition id="ErrorEventDefinition_0iyy5ka" /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1m9nsoo"> + <bpmn:incoming>SequenceFlow_18sqlo7</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_003nbzc" name="Send Error Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dkviys</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18sqlo7</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.sendSyncError(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1dkviys" sourceRef="StartEvent_1f90rxc" targetRef="ScriptTask_003nbzc" /> + <bpmn:sequenceFlow id="SequenceFlow_18sqlo7" sourceRef="ScriptTask_003nbzc" targetRef="EndEvent_1m9nsoo" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_0zqkikf" name="Prepare Update Operation Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_176pwpd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0mruwcs</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.prepareUpdateOperationStatus(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_11v60ns" name="Update Service Operation Status processing"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="ACS_processing_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="ACS_processing_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0mruwcs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0f57hgr</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_0mruwcs" sourceRef="ScriptTask_0zqkikf" targetRef="ServiceTask_11v60ns" /> + <bpmn:scriptTask id="ScriptTask_0oun39f" name="Pre Request Send To NSMF" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1om5m6o</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_12ax52p</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.preRequestSend2NSMF(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_1pbp58s" name="Send Request To NSMF"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${NSMF_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/json</camunda:entry> + <camunda:entry key="Authorization">Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CSMF_NSMFRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CSMF_NSMFResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CSMF_NSMFResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_12ax52p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1e9r8tc</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:scriptTask id="ScriptTask_167kv01" name="Process NSMF response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1e9r8tc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1i6cshg</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.processNSMFResponse(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_12ax52p" sourceRef="ScriptTask_0oun39f" targetRef="ServiceTask_1pbp58s" /> + <bpmn:sequenceFlow id="SequenceFlow_1e9r8tc" sourceRef="ServiceTask_1pbp58s" targetRef="ScriptTask_167kv01" /> + <bpmn:sequenceFlow id="SequenceFlow_1i6cshg" sourceRef="ScriptTask_167kv01" targetRef="ExclusiveGateway_1j8khf8" /> + <bpmn:scriptTask id="ScriptTask_0iubb84" name="Prepare Call CheckServiceProcessStatus" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1hsbli0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_102nqyb</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def act= new ActivateCommunicationService() +act.prepareCallCheckProcessStatus(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_102nqyb" sourceRef="ScriptTask_0iubb84" targetRef="CallActivity_12eufsa" /> + <bpmn:sequenceFlow id="SequenceFlow_0f57hgr" sourceRef="ServiceTask_11v60ns" targetRef="IntermediateThrowEvent_1u9a1t0" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1u9a1t0" name="Goto check processing status"> + <bpmn:incoming>SequenceFlow_0f57hgr</bpmn:incoming> + <bpmn:linkEventDefinition name="CheckProcessingStatus" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_1hsbli0" sourceRef="IntermediateThrowEvent_1lcnqle" targetRef="ScriptTask_0iubb84" /> + <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_1lcnqle" name="CheckProcessingStatus"> + <bpmn:outgoing>SequenceFlow_1hsbli0</bpmn:outgoing> + <bpmn:linkEventDefinition name="CheckProcessingStatus" /> + </bpmn:intermediateCatchEvent> + <bpmn:callActivity id="CallActivity_12eufsa" name="CallCheckServiceProcessStatus" calledElement="CheckServiceProcessStatus"> + <bpmn:extensionElements> + <camunda:in source="e2eServiceInstanceId" target="serviceInstanceId" /> + <camunda:in source="e2eOperationId" target="operationId" /> + <camunda:in source="successConditions" target="successConditions" /> + <camunda:in source="processServiceType" target="processServiceType" /> + <camunda:in source="errorConditions" target="errorConditions" /> + <camunda:in source="timeOut" target="timeOut" /> + <camunda:in source="successParamMap" target="successParamMap" /> + <camunda:in source="errorParamMap" target="errorParamMap" /> + <camunda:out source="orchestrationStatus" target="orchestrationStatus" /> + <camunda:out source="operationStatus" target="operationStatus" /> + <camunda:out source="operationContent" target="operationContent" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="timeOutParamMap" target="timeOutParamMap" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="initProgress" target="initProgress" /> + <camunda:in source="endProgress" target="endProgress" /> + <camunda:in source="serviceInstanceId" target="parentServiceInstanceId" /> + <camunda:in source="operationId" target="parentOperationId" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_102nqyb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1w1h5vl</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1w1h5vl" sourceRef="CallActivity_12eufsa" targetRef="ScriptTask_0fbubvu" /> + <bpmn:sequenceFlow id="SequenceFlow_1r6lo31" name="No" sourceRef="ExclusiveGateway_1j8khf8" targetRef="ScriptTask_0fbubvu"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("ProcessNsmfSuccess") == "ERROR"}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0c01147" sourceRef="ScriptTask_1rshcew" targetRef="IntermediateThrowEvent_1twqa76" /> + </bpmn:process> + <bpmn:error id="Error_1ld8i6u" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateCommunicationService"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="179" y="159" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_08alvv7_di" bpmnElement="ScriptTask_08alvv7"> + <dc:Bounds x="310" y="137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_199lc2s_di" bpmnElement="SequenceFlow_199lc2s"> + <di:waypoint x="215" y="177" /> + <di:waypoint x="310" y="177" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0t2aizp_di" bpmnElement="ScriptTask_0t2aizp"> + <dc:Bounds x="760" y="137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1h8uywz_di" bpmnElement="ServiceTask_1h8uywz"> + <dc:Bounds x="960" y="137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xunetn_di" bpmnElement="SequenceFlow_0xunetn"> + <di:waypoint x="860" y="177" /> + <di:waypoint x="960" y="177" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1rshcew_di" bpmnElement="ScriptTask_1rshcew"> + <dc:Bounds x="1140" y="137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0soxu97_di" bpmnElement="ScriptTask_0soxu97"> + <dc:Bounds x="480" y="137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0rl5u9x_di" bpmnElement="SequenceFlow_0rl5u9x"> + <di:waypoint x="410" y="177" /> + <di:waypoint x="480" y="177" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07brvnu_di" bpmnElement="SequenceFlow_07brvnu"> + <di:waypoint x="1060" y="177" /> + <di:waypoint x="1140" y="177" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0bgd82x_di" bpmnElement="IntermediateThrowEvent_1twqa76"> + <dc:Bounds x="1332" y="159" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1314" y="202" width="79" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0qbtq4z_di" bpmnElement="IntermediateThrowEvent_15alt6m"> + <dc:Bounds x="179" y="402" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="161" y="445" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1om5m6o_di" bpmnElement="SequenceFlow_1om5m6o"> + <di:waypoint x="215" y="420" /> + <di:waypoint x="310" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1j8khf8_di" bpmnElement="ExclusiveGateway_1j8khf8" isMarkerVisible="true"> + <dc:Bounds x="815" y="395" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="799" y="358" width="85" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0fbubvu_di" bpmnElement="ScriptTask_0fbubvu"> + <dc:Bounds x="790" y="560" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1seqo87_di" bpmnElement="ScriptTask_1seqo87"> + <dc:Bounds x="960" y="560" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_10gsfd1_di" bpmnElement="ServiceTask_10gsfd1"> + <dc:Bounds x="1140" y="560" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1b8q7l5_di" bpmnElement="SequenceFlow_1b8q7l5"> + <di:waypoint x="890" y="600" /> + <di:waypoint x="960" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_103y3rz_di" bpmnElement="SequenceFlow_103y3rz"> + <di:waypoint x="1060" y="600" /> + <di:waypoint x="1140" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_176pwpd_di" bpmnElement="SequenceFlow_176pwpd"> + <di:waypoint x="865" y="420" /> + <di:waypoint x="960" y="420" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="402" width="17" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0z07q3n_di" bpmnElement="EndEvent_0z07q3n"> + <dc:Bounds x="1332" y="582" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15dmqcp_di" bpmnElement="SequenceFlow_15dmqcp"> + <di:waypoint x="1240" y="600" /> + <di:waypoint x="1332" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1g73afb_di" bpmnElement="ExclusiveGateway_1g73afb" isMarkerVisible="true"> + <dc:Bounds x="645" y="152" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="116" width="63" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0cg4k4f_di" bpmnElement="SequenceFlow_0cg4k4f"> + <di:waypoint x="695" y="177" /> + <di:waypoint x="760" y="177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="159" width="17" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0337wg2_di" bpmnElement="SequenceFlow_0337wg2"> + <di:waypoint x="580" y="177" /> + <di:waypoint x="645" y="177" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hpybf9_di" bpmnElement="SequenceFlow_0hpybf9"> + <di:waypoint x="670" y="202" /> + <di:waypoint x="670" y="262" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="229" width="13" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_118l531_di" bpmnElement="EndEvent_02rugcv"> + <dc:Bounds x="652" y="262" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1i9i3h1_di" bpmnElement="SubProcess_1i9i3h1" isExpanded="true"> + <dc:Bounds x="340" y="730" width="781" height="196" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1f90rxc_di" bpmnElement="StartEvent_1f90rxc"> + <dc:Bounds x="382" y="816" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1m9nsoo_di" bpmnElement="EndEvent_1m9nsoo"> + <dc:Bounds x="1052" y="816" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_003nbzc_di" bpmnElement="ScriptTask_003nbzc"> + <dc:Bounds x="670" y="794" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dkviys_di" bpmnElement="SequenceFlow_1dkviys"> + <di:waypoint x="418" y="834" /> + <di:waypoint x="670" y="834" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18sqlo7_di" bpmnElement="SequenceFlow_18sqlo7"> + <di:waypoint x="770" y="834" /> + <di:waypoint x="1052" y="834" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0zqkikf_di" bpmnElement="ScriptTask_0zqkikf"> + <dc:Bounds x="960" y="380" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_11v60ns_di" bpmnElement="ServiceTask_11v60ns"> + <dc:Bounds x="1140" y="380" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0mruwcs_di" bpmnElement="SequenceFlow_0mruwcs"> + <di:waypoint x="1060" y="420" /> + <di:waypoint x="1140" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0oun39f_di" bpmnElement="ScriptTask_0oun39f"> + <dc:Bounds x="310" y="380" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1pbp58s_di" bpmnElement="ServiceTask_1pbp58s"> + <dc:Bounds x="480" y="380" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_167kv01_di" bpmnElement="ScriptTask_167kv01"> + <dc:Bounds x="640" y="380" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12ax52p_di" bpmnElement="SequenceFlow_12ax52p"> + <di:waypoint x="410" y="420" /> + <di:waypoint x="480" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1e9r8tc_di" bpmnElement="SequenceFlow_1e9r8tc"> + <di:waypoint x="580" y="420" /> + <di:waypoint x="640" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1i6cshg_di" bpmnElement="SequenceFlow_1i6cshg"> + <di:waypoint x="740" y="420" /> + <di:waypoint x="815" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0iubb84_di" bpmnElement="ScriptTask_0iubb84"> + <dc:Bounds x="310" y="560" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_102nqyb_di" bpmnElement="SequenceFlow_102nqyb"> + <di:waypoint x="410" y="600" /> + <di:waypoint x="540" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0f57hgr_di" bpmnElement="SequenceFlow_0f57hgr"> + <di:waypoint x="1240" y="420" /> + <di:waypoint x="1332" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1wqbbwo_di" bpmnElement="IntermediateThrowEvent_1u9a1t0"> + <dc:Bounds x="1332" y="402" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1308" y="445" width="87" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hsbli0_di" bpmnElement="SequenceFlow_1hsbli0"> + <di:waypoint x="215" y="600" /> + <di:waypoint x="310" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_13yvtam_di" bpmnElement="IntermediateThrowEvent_1lcnqle"> + <dc:Bounds x="179" y="582" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="155" y="625" width="86" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_12eufsa_di" bpmnElement="CallActivity_12eufsa"> + <dc:Bounds x="540" y="560" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1w1h5vl_di" bpmnElement="SequenceFlow_1w1h5vl"> + <di:waypoint x="640" y="600" /> + <di:waypoint x="790" y="600" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1r6lo31_di" bpmnElement="SequenceFlow_1r6lo31"> + <di:waypoint x="840" y="445" /> + <di:waypoint x="840" y="560" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="868" y="463" width="15" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c01147_di" bpmnElement="SequenceFlow_0c01147"> + <di:waypoint x="1240" y="177" /> + <di:waypoint x="1332" y="177" /> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> |