diff options
author | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-30 15:56:09 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-31 11:09:25 -0400 |
commit | 5a6a6de6f1a26a1897e4917a0df613e25a24eb70 (patch) | |
tree | 59a968f27b4b603aacc9d5e7b51fb598aeec5321 /bpmn/so-bpmn-infrastructure-flows/src/main | |
parent | b6dc38501f3b746426b42d9de4cc883d894149e8 (diff) |
Containerization feature of SO
Change-Id: I95381232eeefcd247a66a5cec370a8ce1c288e18
Issue-ID: SO-670
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'bpmn/so-bpmn-infrastructure-flows/src/main')
165 files changed, 85783 insertions, 0 deletions
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy new file mode 100644 index 0000000000..880a44c1b2 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy @@ -0,0 +1,256 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.CompareModelsResult +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger + +import groovy.json.* + + +/** + * This groovy class supports the <class>CompareModelofE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId + * @param - subscriptionServiceType + * @param - serviceInstanceId + * @param - modelInvariantIdTarget + * @param - modelVersionIdTarget + + * + * Outputs: + * @param - WorkflowException + */ +public class CompareModelofE2EServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CompareModelofE2EServiceInstance.class); + + String Prefix="CMPMDSI_" + private static final String DebugFlag = "isDebugEnabled" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils() + + public void preProcessRequest (DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + String msg = "" + + msoLogger.trace("preProcessRequest Request ") + + try { + // check for incoming json message/input + String siRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(siRequest) + + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.info("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + utils.log("INFO", msg, isDebugEnabled) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //subscriptionServiceType + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "serviceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("serviceType", subscriptionServiceType) + } + + //modelInvariantIdTarget + String modelInvariantIdTarget = jsonUtil.getJsonValue(siRequest, "modelInvariantIdTarget") + if (isBlank(modelInvariantIdTarget)) { + msg = "Input modelInvariantIdTarget' is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("modelInvariantIdTarget", modelInvariantIdTarget) + } + + //modelVersionIdTarget + String modelVersionIdTarget = jsonUtil.getJsonValue(siRequest, "modelVersionIdTarget") + if (isBlank(modelVersionIdTarget)) { + msg = "Input modelVersionIdTarget is null" + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("modelVersionIdTarget", modelVersionIdTarget) + } + + execution.setVariable("operationType", "CompareModel") + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void sendSyncResponse (DelegateExecution execution) { + msoLogger.trace("sendSyncResponse ") + + try { + CompareModelsResult compareModelsResult = execution.getVariable("compareModelsResult") + + // RESTResponse (for API Handler(APIH) Reply Task) + String syncResponse = compareModelsResult.toJsonStringNoRootName() + msoLogger.info(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse) + sendWorkflowResponse(execution, 202, syncResponse) + + } catch (Exception ex) { + String msg = "Exception in sendSyncResponse: " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit sendSyncResopnse ") + } + + public void sendSyncError (DelegateExecution execution) { + msoLogger.trace("sendSyncError ") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.info(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + + } + + public void prepareCompletionRequest (DelegateExecution execution) { + msoLogger.trace("prepareCompletion ") + + try { + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>COMPAREMODEL</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>E2E Service Instance Compare model successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>CompareModelofE2EServiceInstance</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + msoLogger.info(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit prepareCompletionRequest ") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + msoLogger.trace("prepareFalloutRequest ") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.info(" Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>COMPAREMODEL</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.info("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in CompareModelofE2EServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>COMPAREMODEL</action> + <source>UUI</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("Exit prepareFalloutRequest ") + } + +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy new file mode 100644 index 0000000000..1034fa2d4d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy @@ -0,0 +1,331 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils + +import groovy.json.* + +/** + * This groovy class supports the <class>CreateServiceInstance.bpmn</class> process. + * AlaCarte flow for 1702 ServiceInstance Create + * + */ +public class CreateCustomE2EServiceInstance extends AbstractServiceTaskProcessor { + String Prefix="CRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateCustomE2EServiceInstance.class); + + + public void preProcessRequest (DelegateExecution execution) { + msoLogger.trace("start preProcessRequest") + execution.setVariable("prefix",Prefix) + String msg = "" + + try { + String siRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(siRequest) + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + serviceInstanceId = UUID.randomUUID().toString() + } + msoLogger.debug("Generated new Service Instance:" + serviceInstanceId) + serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //requestInfo + execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source")) + execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName")) + execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback")) + String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId") + if (isBlank(productFamilyId)) + { + msg = "Input productFamilyId is null" + msoLogger.debug(msg) + //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("productFamilyId", productFamilyId) + } + + //modelInfo + String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo") + if (isBlank(serviceModelInfo)) { + msg = "Input serviceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else + { + execution.setVariable("serviceModelInfo", serviceModelInfo) + } + + msoLogger.debug("modelInfo: " + serviceModelInfo) + + //requestParameters + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(siRequest) + + //InputParams + def userParamsList = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParamsList) { + for (def i=0; i<userParamsList.size(); i++) { + def userParams1 = userParamsList.get(i) + userParams1.each { param -> inputMap.put(param.key, param.value)} + } + } + + msoLogger.debug("User Input Parameters map: " + inputMap.toString()) + execution.setVariable("serviceInputParams", inputMap) + execution.setVariable("uuiRequest", inputMap.get("UUIRequest")) + execution.setVariable("mso.adapters.openecomp.db.endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + //TODO + //execution.setVariable("serviceInputParams", jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams")) + //execution.setVariable("failExists", true) + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("finished preProcessRequest") + } + + public void sendSyncResponse (DelegateExecution execution) { + msoLogger.trace("start sendSyncResponse") + try { + String operationId = execution.getVariable("operationId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + // RESTResponse for API Handler (APIH) Reply Task + String createServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim() + msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + createServiceRestRequest) + sendWorkflowResponse(execution, 202, createServiceRestRequest) + execution.setVariable("sentSyncResponse", true) + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("finished sendSyncResponse") + } + + + public void sendSyncError (DelegateExecution execution) { + msoLogger.trace("start sendSyncError") + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + msoLogger.trace("finished sendSyncError") + } + + public void prepareCompletionRequest (DelegateExecution execution) { + msoLogger.trace("start prepareCompletionRequest") + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String source = execution.getVariable("source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <status-message>Service Instance was created successfully.</status-message> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + msoLogger.debug("Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("finished prepareCompletionRequest") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + msoLogger.trace("start prepareFalloutRequest") + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug("Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>UUI</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("finished prepareFalloutRequest") + } + + /** + * Init the service Operation Status + */ + public void prepareInitServiceOperationStatus(DelegateExecution execution){ + msoLogger.trace("start prepareInitServiceOperationStatus") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = UUID.randomUUID().toString() + String operationType = "CREATE" + String userId = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + msoLogger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution) + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + msoLogger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload) + msoLogger.debug("CreateVfModuleInfra Outgoing updateServiceOperStatusRequest Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("finished prepareInitServiceOperationStatus") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy new file mode 100644 index 0000000000..4405718c57 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy @@ -0,0 +1,357 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONException; +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.core.WorkflowException +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils + +import groovy.json.* + +/** + * This groovy class supports the <class>CreateGenericALaCarteServiceInstance.bpmn</class> process. + * AlaCarte flow for 1702 ServiceInstance Create + * + */ +public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskProcessor { + String Prefix="CRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateGenericALaCarteServiceInstance.class); + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + + try { + + String siRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(siRequest) + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + serviceInstanceId = UUID.randomUUID().toString() + msoLogger.debug("Generated new Service Instance ID:" + serviceInstanceId) + } else { + msoLogger.debug("Using provided Service Instance ID:" + serviceInstanceId) + } + + serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //requestInfo + execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source")) + execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName")) + execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback")) + String productFamilyId = null; + try { + productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId") + } catch (JSONException e) { + productFamilyId = null; + } + if (isBlank(productFamilyId)) + { + msg = "Input productFamilyId is null" + msoLogger.debug(msg) + //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("productFamilyId", productFamilyId) + } + + //modelInfo + String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo") + if (isBlank(serviceModelInfo)) { + msg = "Input serviceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else + { + execution.setVariable("serviceModelInfo", serviceModelInfo) + } + + msoLogger.debug("modelInfo" + serviceModelInfo) + + //requestParameters + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(siRequest) + + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParams) { + userParams.each { + userParam -> inputMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug("User Input Parameters map: " + userParams.toString()) + execution.setVariable("serviceInputParams", inputMap) + + //TODO + //execution.setVariable("failExists", true) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start sendSyncResponse") + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + // RESTResponse for API Handler (APIH) Reply Task + String createServiceRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + createServiceRestRequest) + sendWorkflowResponse(execution, 202, createServiceRestRequest) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit sendSyncResopnse") + } + + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start sendSyncError") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + + } + + // ******************************* + // + // ******************************* + public void prepareDecomposeService(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Inside prepareDecomposeService of CreateGenericALaCarteServiceInstance ") + try { + String siRequest = execution.getVariable("bpmnRequest") + String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo") + execution.setVariable("serviceModelInfo", serviceModelInfo) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.trace("Completed prepareDecomposeService of CreateGenericALaCarteServiceInstance") + } + + + // ******************************* + // + // ******************************* + public void prepareCreateServiceInstance(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + try { + msoLogger.trace("Inside prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance") + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + def siRequest = execution.getVariable("bpmnRequest") + Map reqMap = jsonSlurper.parseText(siRequest) + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + Map<String, String> inputMap = [:] + if (userParams != null) { + userParams.each { + userParam -> inputMap.put(userParam.name, userParam.value) + } + } + + msoLogger.debug("User Input Parameters map: " + userParams.toString()) + execution.setVariable("serviceInputParams", inputMap) + + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + serviceDecomposition.getServiceInstance().setInstanceId(serviceInstanceId) + + String serviceInstanceName = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName") + serviceDecomposition.getServiceInstance().setInstanceName(serviceInstanceName) + execution.setVariable("serviceInstanceName", serviceInstanceName) + execution.setVariable("serviceDecomposition", serviceDecomposition) + execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonString()) + msoLogger.debug("serviceDecomposition.serviceInstanceName: " + serviceDecomposition.getServiceInstance().getInstanceName()) + + msoLogger.trace("Completed prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance ***** ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + + public void prepareCompletionRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("prepareCompletion *** ") + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String source = execution.getVariable("source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <status-message>Service Instance was created successfully.</status-message> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit prepareCompletionRequest") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("prepareFalloutRequest") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("Exit prepareFalloutRequest") + } +}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy new file mode 100644 index 0000000000..d665de2ba7 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy @@ -0,0 +1,455 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger + +import groovy.json.* + +/** + * This groovy class supports the <class>CreateNetworkInstance.bpmn</class> process. + * + */ +public class CreateNetworkInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateNetworkInstance.class); + + String Prefix="CRENI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public InitializeProcessVariables(DelegateExecution execution){ + + execution.setVariable(Prefix + "source", "") + execution.setVariable(Prefix + "Success", false) + + execution.setVariable(Prefix + "CompleteMsoProcessRequest", "") + execution.setVariable(Prefix + "FalloutHandlerRequest", "") + execution.setVariable(Prefix + "isSilentSuccess", false) + + } + + + /** + * This method is executed during the preProcessRequest task of the <class>CreateNetworkInstance.bpmn</class> process. + * @param execution + */ + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>CreateNetworkInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Start preProcessRequest") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null || sdncVersion == '1610') { + // 'a-la-cart' default, sdncVersion = '1610' + execution.setVariable("sdncVersion", "1610") + String bpmnRequest = execution.getVariable("bpmnRequest") + // set 'disableRollback' + if (bpmnRequest != null) { + String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback") + if (disableRollback != null) { + execution.setVariable("disableRollback", disableRollback) + msoLogger.debug("Received 'suppressRollback': " + disableRollback ) + } else { + execution.setVariable("disableRollback", false) + } + msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") ) + } else { + String dataErrorMessage = " Invalid 'bpmnRequest' request." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + } else { + // 'macro' TEST ONLY, sdncVersion = '1702' + msoLogger.debug(" 'disableRollback' : " + execution.getVariable("disableRollback") ) + } + + // get/set 'msoRequestId' and 'mso-request-id' + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + + // get/set 'requestId' + if (execution.getVariable("requestId") == null) { + execution.setVariable("requestId", requestId) + } + + //Place holder for additional code. + + // TODO ??? + // userParams??? 1) pre-loads indicator, 2) 'auto-activation' + // Tag/Value parameters + // + // Map: 'networkInputParams': 'auto-activation'' + // Sample format? + // "requestParameters": { + // "userParams": [ + // { + // "name": "someUserParam1", + // "value": "someValue1" + // } + // ] + // } + // + // String userParams = //use json util to extract "userParams"// + // execution.setVariable("networkInputParams", userParams) + // else: execution.setVariable("networkInputParams", null) + // + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex){ + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in CreateNetworkInstance, PreProcessRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Start sendSyncResponse") + + try { + String requestId = execution.getVariable("mso-request-id") + + // RESTResponse (for API Handler (APIH) Reply Task) + String createNetworkRestRequest = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim() + + msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + createNetworkRestRequest) + sendWorkflowResponse(execution, 202, createNetworkRestRequest) + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in CreateNetworkInstance flow. sendSyncResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + public void getNetworkModelInfo (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Start getNetworkModelInfo") + + try { + + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network). + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) + + } catch (Exception ex) { + sendSyncError(execution) + String exceptionMessage = "Bpmn error encountered in CreateNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Start sendSyncError") + + try { + + String requestId = execution.getVariable("mso-request-id") + + // REST Error (for API Handler (APIH) Reply Task) + String syncError = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 500, syncError) + + } catch (Exception ex) { + msoLogger.debug(" Bpmn error encountered in CreateNetworkInstance flow. sendSyncError() - " + ex.getMessage()) + } + + } + + public void prepareDBRequestError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + try { + msoLogger.trace("Start prepareDBRequestError") + + // set DB Header Authorization + setBasicDBAuthHeader(execution, isDebugEnabled) + + String statusMessage = "" + WorkflowException wfe = null + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + wfe = execution.getVariable("WorkflowException") + statusMessage = wfe.getErrorMessage() + } + + String requestId = execution.getVariable(Prefix + "requestId") + String networkName = execution.getVariable("networkName") !=null ? execution.getVariable("networkName") : "" + String networkId = execution.getVariable("networkId") !=null ? execution.getVariable("networkId") : "" + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>FAILED</requestStatus> + <vnfOutputs><network-id>${MsoUtils.xmlEscape(networkId)}</network-id><network-name>${MsoUtils.xmlEscape(networkName)}</network-names></vnfOutputs> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + execution.setVariable(Prefix + "createDBRequest", dbRequest) + msoLogger.debug(" DB Adapter Request - " + "\n" + dbRequest) + msoLogger.debug(dbRequest) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareDBRequestError() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareCompletion (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Start prepareCompletion") + + try { + + String requestId = execution.getVariable("mso-request-id") + String source = execution.getVariable(Prefix + "source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>VID</source> + </request-info> + <aetgt:status-message>Network has been created successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + // normal path + execution.setVariable(Prefix + "Success", true) + execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareCompletion() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + + + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void postProcessResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Start postProcessResponse") + + try { + + if (execution.getVariable("CMSO_ResponseCode") == "200") { + execution.setVariable(Prefix + "Success", true) + msoLogger.trace("CreateNetworkInstance Success ****") + // Place holder for additional code. + + } else { + execution.setVariable(Prefix + "Success", false) + msoLogger.trace("CreateNetworkInstance Failed in CompletionMsoProces flow!. ****") + + } + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + public void processRollbackData (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Start processRollbackData") + + try { + //execution.getVariable("orchestrationStatus") + //execution.getVariable("networkId") + //execution.getVariable("networkName") + //networkOutputParams + //rollbackData + //rolledBack + + } catch (Exception ex) { + msoLogger.debug(" Bpmn error encountered in CreateNetworkInstance flow. callDBCatalog() - " + ex.getMessage()) + } + + } + + // Prepare for FalloutHandler + public void buildErrorResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.debug("DB updateInfraRequest ResponseCode: " + execution.getVariable(Prefix + "dbReturnCode")) + msoLogger.debug("DB updateInfraRequest Response: " + execution.getVariable(Prefix + "createDBResponse")) + + msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler.") + + String falloutHandlerRequest = "" + String requestId = execution.getVariable("mso-request-id") + + try { + + WorkflowException wfe = execution.getVariable("WorkflowException") + String errorCode = String.valueOf(wfe.getErrorCode()) + String errorMessage = wfe.getErrorMessage() + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + msoLogger.debug(falloutHandlerRequest) + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.debug(" Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest) + + } catch (Exception ex) { + String errorException = " Bpmn error encountered in CreateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse()" + msoLogger.debug("Exception error in CreateNetworkInstance flow, buildErrorResponse(): " + ex.getMessage()) + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.debug(" Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest) + + } + + } + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy new file mode 100644 index 0000000000..1c0975f8c4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy @@ -0,0 +1,327 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject +import org.json.XML; +import org.onap.so.bpmn.common.recipe.ResourceInput; +import org.onap.so.bpmn.common.resource.ResourceRequestBuilder +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.core.json.JsonUtils +import org.onap.so.logger.MsoLogger + +import groovy.json.* + +/** + * This groovy class supports the <class>CreateSDNCCNetworkResource.bpmn</class> process. + * flow for SDNC Network Resource Create + */ +public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateSDNCNetworkResource.class); + + String Prefix="CRESDNCRES_" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest(DelegateExecution execution){ + msoLogger.trace("Started preProcessRequest ") + try { + + //get bpmn inputs from resource request. + String requestId = execution.getVariable("mso-request-id") + String requestAction = execution.getVariable("requestAction") + msoLogger.info("The requestAction is: " + requestAction) + String recipeParamsFromRequest = execution.getVariable("recipeParams") + msoLogger.info("The recipeParams is: " + recipeParamsFromRequest) + String resourceInput = execution.getVariable("resourceInput") + msoLogger.info("The resourceInput is: " + resourceInput) + //Get ResourceInput Object + ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(resourceInput, ResourceInput.class) + execution.setVariable(Prefix + "resourceInput", resourceInputObj) + + //Deal with recipeParams + String recipeParamsFromWf = execution.getVariable("recipeParamXsd") + String resourceName = resourceInputObj.getResourceInstanceName() + //For sdnc requestAction default is "createNetworkInstance" + String operationType = "Network" + if(!StringUtils.isBlank(recipeParamsFromRequest)){ + //the operationType from worflow(first node) is second priority. + operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType") + } + if(!StringUtils.isBlank(recipeParamsFromWf)){ + //the operationType from worflow(first node) is highest priority. + operationType = jsonUtil.getJsonValue(recipeParamsFromWf, "operationType") + } + + + //For sdnc, generate svc_action and request_action + String sdnc_svcAction = "create" + if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "overlay")){ + //This will be resolved in R3. + sdnc_svcAction ="activate" + operationType = "NCINetwork" + } + if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "underlay")){ + //This will be resolved in R3. + operationType ="Network" + } + String sdnc_requestAction = StringUtils.capitalize(sdnc_svcAction) + operationType +"Instance" + execution.setVariable(Prefix + "svcAction", sdnc_svcAction) + execution.setVariable(Prefix + "requestAction", sdnc_requestAction) + execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId()) + execution.setVariable("mso-request-id", requestId) + execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId()) + //TODO Here build networkrequest + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + + String customizeResourceParam(String netowrkInputParametersJson) { + List<Map<String, Object>> paramList = new ArrayList(); + JSONObject jsonObject = new JSONObject(netowrkInputParametersJson); + Iterator iterator = jsonObject.keys(); + while (iterator.hasNext()) { + String key = iterator.next(); + HashMap<String, String> hashMap = new HashMap(); + hashMap.put("name", key); + hashMap.put("value", jsonObject.get(key)) + paramList.add(hashMap) + } + Map<String, List<Map<String, Object>>> paramMap = new HashMap(); + paramMap.put("param", paramList); + + return new JSONObject(paramMap).toString(); + } + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void prepareSDNCRequest (DelegateExecution execution) { + msoLogger.trace("Started prepareSDNCRequest ") + + try { + // get variables + String sdnc_svcAction = execution.getVariable(Prefix + "svcAction") + String sdnc_requestAction = execution.getVariable(Prefix + "requestAction") + String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback") + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String hdrRequestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + String source = execution.getVariable("source") + String sdnc_service_id = execution.getVariable(Prefix + "sdncServiceId") + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String serviceType = resourceInputObj.getServiceType() + String serviceModelInvariantUuid = resourceInputObj.getServiceModelInfo().getModelInvariantUuid() + String serviceModelUuid = resourceInputObj.getServiceModelInfo().getModelUuid() + String serviceModelVersion = resourceInputObj.getServiceModelInfo().getModelVersion() + String serviceModelName = resourceInputObj.getServiceModelInfo().getModelName() + String globalCustomerId = resourceInputObj.getGlobalSubscriberId() + String modelInvariantUuid = resourceInputObj.getResourceModelInfo().getModelInvariantUuid(); + String modelCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String modelUuid = resourceInputObj.getResourceModelInfo().getModelUuid() + String modelName = resourceInputObj.getResourceModelInfo().getModelName() + String modelVersion = resourceInputObj.getResourceModelInfo().getModelVersion() + String resourceInputPrameters = resourceInputObj.getResourceParameters() + String netowrkInputParametersJson = jsonUtil.getJsonValue(resourceInputPrameters, "requestInputs") + //here convert json string to xml string + String netowrkInputParameters = XML.toString(new JSONObject(customizeResourceParam(netowrkInputParametersJson))) + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyCreateRequest = + """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id> + <request-action>${MsoUtils.xmlEscape(sdnc_requestAction)}</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url></notification-url> + <order-number></order-number> + <order-version></order-version> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <network-information> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </network-information> + <network-request-input> + <network-input-parameters>${MsoUtils.xmlEscape(netowrkInputParameters)}</network-input-parameters> + </network-request-input> + </sdncadapterworkflow:SDNCRequestData> + </aetgt:SDNCAdapterWorkflowRequest>""".trim() + + String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) + msoLogger.debug(sndcTopologyCreateRequesAsString) + execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyCreateRequesAsString) + msoLogger.debug("sdncAdapterWorkflowRequest - " + "\n" + sndcTopologyCreateRequesAsString) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in CreateSDNCCNetworkResource flow. prepareSDNCRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + msoLogger.trace("Exit prepareSDNCRequest ") + } + + private void setProgressUpdateVariables(DelegateExecution execution, String body) { + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + execution.setVariable("CVFMI_updateResOperStatusRequest", body) + } + + public void prepareUpdateBeforeCreateSDNCResource(DelegateExecution execution) { + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String operType = resourceInputObj.getOperationType() + String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String ServiceInstanceId = resourceInputObj.getServiceInstanceId() + String operationId = resourceInputObj.getOperationId() + String progress = "20" + String status = "processing" + String statusDescription = "SDCN resource creation invoked" + + execution.getVariable("operationId") + + String body = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateResourceOperationStatus> + <operType>${MsoUtils.xmlEscape(operType)}</operType> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID> + <serviceId>${MsoUtils.xmlEscape(ServiceInstanceId)}</serviceId> + <status>${MsoUtils.xmlEscape(status)}</status> + <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription> + </ns:updateResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>"""; + + setProgressUpdateVariables(execution, body) + + } + + public void prepareUpdateAfterCreateSDNCResource(execution) { + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String operType = resourceInputObj.getOperationType() + String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String ServiceInstanceId = resourceInputObj.getServiceInstanceId() + String operationId = resourceInputObj.getOperationId() + String progress = "100" + String status = "finished" + String statusDescription = "SDCN resource creation completed" + + execution.getVariable("operationId") + + String body = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateResourceOperationStatus> + <operType>${MsoUtils.xmlEscape(operType)}</operType> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID> + <serviceId>${MsoUtils.xmlEscape(ServiceInstanceId)}</serviceId> + <status>${MsoUtils.xmlEscape(status)}</status> + <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription> + </ns:updateResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>"""; + + setProgressUpdateVariables(execution, body) + } + + public void postCreateSDNCCall(DelegateExecution execution){ + msoLogger.trace("Started prepareSDNCRequest ") + String responseCode = execution.getVariable(Prefix + "sdncCreateReturnCode") + String responseObj = execution.getVariable(Prefix + "SuccessIndicator") + + msoLogger.info("response from sdnc, response code :" + responseCode + " response object :" + responseObj) + msoLogger.trace("Exit prepareSDNCRequest ") + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled) + + try { + String operationStatus = "finished" + // RESTResponse for main flow + String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim() + utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled) + sendWorkflowResponse(execution, 202, resourceOperationResp) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit sendSyncResopnse *****", isDebugEnabled) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy new file mode 100644 index 0000000000..26f12831bd --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy @@ -0,0 +1,326 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import groovy.json.* + +/** + * This groovy class supports the <class>DoCreateVFCNetworkServiceInstance.bpmn</class> process. + * flow for VFC Network Service Create + */ +public class CreateVFCNSResource extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVFCNSResource.class); + + + String vfcUrl = "/vfc/rest/v1/vfcadapter" + + String host = "http://mso.mso.testlab.openecomp.org:8080" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + /** + * CreateVFCNSResource + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void preProcessRequest (DelegateExecution execution) { + JsonUtils jsonUtil = new JsonUtils() + + String msg = "" + msoLogger.trace("preProcessRequest() ") + try { + //deal with nsName and Description + String resourceInput = execution.getVariable("resourceInput") + + String resourceParameters = jsonUtil.getJsonValue(resourceInput, "resourceParameters") + // get service name + String resourceName = jsonUtil.getJsonValue(resourceInput, "resourceInstanceName") + execution.setVariable("nsServiceName", resourceName) + + String nsServiceDescription = execution.getVariable("nsServiceDescription") + msoLogger.info("nsServiceName:" + resourceName + " nsServiceDescription:" + nsServiceDescription) + //deal with operation key + String globalSubscriberId = jsonUtil.getJsonValue(resourceInput, "globalSubscriberId") + msoLogger.info("globalSubscriberId:" + globalSubscriberId) + //set local globalSubscriberId variable + execution.setVariable("globalSubscriberId", globalSubscriberId); + String serviceType = execution.getVariable("serviceType") + msoLogger.info("serviceType:" + serviceType) + + String serviceId = execution.getVariable("serviceInstanceId") + msoLogger.info("serviceId:" + serviceId) + + String operationId = jsonUtil.getJsonValue(resourceInput, "operationId") + msoLogger.info("serviceType:" + serviceType) + + String nodeTemplateUUID = jsonUtil.getJsonValue(resourceInput, "resourceModelInfo.modelCustomizationUuid") + String nsServiceModelUUID = jsonUtil.getJsonValue(resourceParameters, "requestInputs.nsd0_providing_service_uuid") + msoLogger.info("nodeTemplateUUID:" + nodeTemplateUUID) + /* + * segmentInformation needed as a object of segment + * { + * "domain":"", + * "nodeTemplateName":"", + * "nodeType":"", + * "nsParameters":{ + * //this is the nsParameters sent to VF-C + * } + * } + */ + String nsParameters = jsonUtil.getJsonValue(resourceInput, "resourceParameters") + msoLogger.info("nsParameters:" + nsParameters) + String nsOperationKey = """{ + "globalSubscriberId":"${globalSubscriberId}", + "serviceType":"${serviceType}", + "serviceId":"${serviceId}", + "operationId":"${operationId}", + "nodeTemplateUUID":"${nodeTemplateUUID}" + }""" + execution.setVariable("nsOperationKey", nsOperationKey); + execution.setVariable("nsParameters", nsParameters) + execution.setVariable("nsServiceModelUUID", nsServiceModelUUID); + + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + /** + * create NS task + */ + public void createNetworkService(DelegateExecution execution) { + msoLogger.trace("createNetworkService ") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String nsServiceModelUUID = execution.getVariable("nsServiceModelUUID"); + String nsParameters = execution.getVariable("nsParameters"); + String nsServiceName = execution.getVariable("nsServiceName") + String nsServiceDescription = execution.getVariable("nsServiceDescription") + String locationConstraints = jsonUtil.getJsonValue(nsParameters, "locationConstraints") + String requestInputs = jsonUtil.getJsonValue(nsParameters, "requestInputs") + String reqBody ="""{ + "nsServiceName":"${nsServiceName}", + "nsServiceDescription":"${nsServiceDescription}", + "nsServiceModelUUID":"${nsServiceModelUUID}", + "nsOperationKey":${nsOperationKey}, + "nsParameters":{ + "locationConstraints":${locationConstraints}, + "additionalParamForNs":${requestInputs} + } + }""" + APIResponse apiResponse = postRequest(execution, host + vfcUrl + "/ns", reqBody) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String nsInstanceId = ""; + if(returnCode== "200" || returnCode == "201"){ + nsInstanceId = jsonUtil.getJsonValue(aaiResponseAsString, "nsInstanceId") + } + execution.setVariable("nsInstanceId", nsInstanceId) + msoLogger.info(" *****Exit createNetworkService *****") + } + + /** + * instantiate NS task + */ + public void instantiateNetworkService(DelegateExecution execution) { + msoLogger.trace("instantiateNetworkService ") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String nsParameters = execution.getVariable("nsParameters"); + String nsServiceName = execution.getVariable("nsServiceName") + String nsServiceDescription = execution.getVariable("nsServiceDescription") + String reqBody ="""{ + "nsServiceName":"${nsServiceName}", + "nsServiceDescription":"${nsServiceDescription}", + "nsOperationKey":${nsOperationKey}, + "nsParameters":${nsParameters} + }""" + String nsInstanceId = execution.getVariable("nsInstanceId") + String url = host + vfcUrl + "/ns/" +nsInstanceId + "/instantiate" + APIResponse apiResponse = postRequest(execution, url, reqBody) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String jobId = ""; + if(returnCode== "200"|| returnCode == "201"){ + jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId") + } + execution.setVariable("jobId", jobId) + msoLogger.info(" *****Exit instantiateNetworkService *****") + } + + /** + * query NS task + */ + public void queryNSProgress(DelegateExecution execution) { + msoLogger.trace("queryNSProgress ") + String jobId = execution.getVariable("jobId") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String url = host + vfcUrl + "/jobs/" + jobId + APIResponse apiResponse = postRequest(execution, url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String operationStatus = "error" + if(returnCode== "200"|| returnCode == "201"){ + operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status") + } + execution.setVariable("operationStatus", operationStatus) + msoLogger.info(" *****Exit queryNSProgress *****") + } + + /** + * delay 5 sec + */ + public void timeDelay(DelegateExecution execution) { + try { + Thread.sleep(5000); + } catch(InterruptedException e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Time Delay exception" + e , "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + } + } + + /** + * finish NS task + */ + public void addNSRelationship(DelegateExecution execution) { + msoLogger.trace("addNSRelationship ") + String nsInstanceId = execution.getVariable("nsInstanceId") + if(nsInstanceId == null || nsInstanceId == ""){ + msoLogger.info(" create NS failed, so do not need to add relationship") + return + } + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("serviceType") + String serviceId = execution.getVariable("serviceInstanceId") + String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11"> + <related-to>service-instance</related-to> + <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link> + <relationship-data> + <relationship-key>customer.global-customer-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-subscription.service-type</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-instance.service-instance-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value> + </relationship-data> + </relationship>""" + String endpoint = execution.getVariable("URN_aai_endpoint") + msoLogger.info("Add Relationship req:\n" + addRelationPayload) + String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship" + APIResponse aaiRsp = executeAAIPutCall(execution, url, addRelationPayload) + msoLogger.info("aai response status code:" + aaiRsp.getStatusCode()) + msoLogger.info("aai response content:" + aaiRsp.getResponseBodyAsString()) + msoLogger.info(" *****Exit addNSRelationship *****") + } + + public APIResponse executeAAIPutCall(DelegateExecution execution, String url, String payload){ + msoLogger.trace("Started Execute AAI Put Process ") + APIResponse apiResponse = null + try{ + String uuid = utils.getRequestID() + msoLogger.info("Generated uuid is: " + uuid) + msoLogger.info("URL to be used is: " + url) + String userName = execution.getVariable("URN_aai_auth") + String password = execution.getVariable("URN_mso_msoKey") + String basicAuthCred = utils.getBasicAuth(userName,password) + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml"); + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.httpPut(payload) + msoLogger.trace("Completed Execute AAI Put Process ") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Put Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + + /** + * post request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){ + msoLogger.trace("Started Execute VFC adapter Post Process ") + msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk"); + apiResponse = client.httpPost(requestBody) + msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) + msoLogger.trace("Completed Execute VF-C adapter Post Process ") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Post Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled) + + try { + String operationStatus = execution.getVariable("operationStatus") + // RESTResponse for main flow + String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim() + utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled) + sendWorkflowResponse(execution, 202, resourceOperationResp) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit sendSyncResopnse *****", isDebugEnabled) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy new file mode 100644 index 0000000000..308c93540f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy @@ -0,0 +1,620 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.aai.domain.yang.v12.GenericVnf; +import org.onap.appc.client.lcm.model.Action +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.SDNCAdapterUtils; +import org.onap.so.bpmn.core.RollbackData +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.bpmn.infrastructure.aai.AAICreateResources; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class CreateVfModuleInfra extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVfModuleInfra.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + private AbstractServiceTaskProcessor taskProcessor + + public SDNCAdapterUtils(AbstractServiceTaskProcessor taskProcessor) { + this.taskProcessor = taskProcessor + } + + /** + * Validates the request message and sets up the workflow. + * @param execution the execution + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.debug('Started ' + method) + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + + execution.setVariable("CVFMI_sentSyncResponse", false) + + def prefix = 'CVFMI_' + execution.setVariable('prefix', prefix) + execution.setVariable("isVidRequest", "false") + + def rollbackData = execution.getVariable("RollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } + execution.setVariable("RollbackData", rollbackData) + + def incomingRequest = execution.getVariable('bpmnRequest') + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + msoLogger.debug("CreateVfModule Infra incoming Request: " + incomingRequest) + + setBasicDBAuthHeader(execution, isDebugLogEnabled) + + // check if request is xml or json + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + + execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId) + execution.setVariable(prefix+'vnfId', vnfId) + execution.setVariable("isVidRequest", "true") + + def vnfName = '' + def asdcServiceModelVersion = '' + def serviceModelInfo = null + def vnfModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + + } + if (it.relatedInstance.modelInfo.modelType == 'vnf') { + vnfName = it.relatedInstance.instanceName ?: '' + vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + } + } + } + + execution.setVariable(prefix + 'vnfName', vnfName) + execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo) + execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo) + + + def vnfType = execution.getVariable('vnfType') + execution.setVariable(prefix + 'vnfType', vnfType) + def vfModuleId = execution.getVariable('vfModuleId') + execution.setVariable(prefix + 'vfModuleId', vfModuleId) + def volumeGroupId = execution.getVariable('volumeGroupId') + execution.setVariable(prefix + 'volumeGroupId', volumeGroupId) + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug('Processed user params: ' + userParamsMap) + + execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap) + + def isBaseVfModule = "false" + if (execution.getVariable('isBaseVfModule') == true) { + isBaseVfModule = "true" + } + + execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable(prefix + 'requestId', requestId) + + def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo) + + def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback + + + def backoutOnFailure = "" + if(suppressRollback != null){ + if ( suppressRollback == true) { + backoutOnFailure = "false" + } else if ( suppressRollback == false) { + backoutOnFailure = "true" + } + } + + execution.setVariable('disableRollback', suppressRollback) + + def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable(prefix + 'vfModuleName', vfModuleName) + + def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: '' + execution.setVariable(prefix + 'serviceId', serviceId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable(prefix + 'usePreload', usePreload) + + // This is aLaCarte flow, so aLaCarte flag is always on + execution.setVariable(prefix + 'aLaCarte', true) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable(prefix + 'tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId) + + execution.setVariable(prefix + 'sdncVersion', '1702') + + execution.setVariable("CreateVfModuleInfraSuccessIndicator", false) + execution.setVariable("RollbackCompleted", false) + + execution.setVariable("isDebugLogEnabled", isDebugLogEnabled) + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable("CVFMI_source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("CVFMI_requestInfo", requestInfo) + + //backoutOnFailure + + execution.setVariable("CVFMI_originalWorkflowException", null) + + + def newVfModuleId = UUID.randomUUID().toString() + execution.setVariable("newVfModuleId", newVfModuleId) + execution.setVariable(prefix + 'vfModuleId', newVfModuleId) + execution.setVariable('actionHealthCheck', Action.HealthCheck) + execution.setVariable('actionConfigScaleOut', Action.ConfigScaleOut) + execution.setVariable('controllerType', "APPC") + def controllerType = execution.getVariable('controllerType') + execution.setVariable(prefix + 'controllerType', controllerType) + execution.setVariable('healthCheckIndex0', 0) + + msoLogger.debug('RequestInfo: ' + execution.getVariable("CVFMI_requestInfo")) + + msoLogger.debug('rollbackEnabled: ' + execution.getVariable("CVFMI_rollbackEnabled")) + + msoLogger.trace('Finished ' + method) + } catch (BpmnError bpmnError) { + throw bpmnError + } + catch(groovy.json.JsonException je) { + msoLogger.debug("Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - During PreProcessRequest") + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + //execution.setVariable("CVFMODVOL2_RESTFault", restFaultMessage) + //execution.setVariable("CVFMODVOL2_isDataOk", false) + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - During PreProcessRequest") + } + + } + + /** + * Validates a workflow response. + * @param execution the execution + * @param responseVar the execution variable in which the response is stored + * @param responseCodeVar the execution variable in which the response code is stored + * @param errorResponseVar the execution variable in which the error response is stored + */ + public void validateWorkflowResponse(DelegateExecution execution, String responseVar, + String responseCodeVar, String errorResponseVar) { + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar) + } + + + /** + * Sends the empty, synchronous response back to the API Handler. + * @param execution the execution + */ + public void sendResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Started ' + method) + + try { + def requestInfo = execution.getVariable('CVFMI_requestInfo') + def requestId = execution.getVariable('CVFMI_requestId') + def source = execution.getVariable('CVFMI_source') + + // RESTResponse (for API Handler (APIH) Reply Task) + def newVfModuleId = execution.getVariable("newVfModuleId") + String synchResponse = """{"requestReferences":{"instanceId":"${newVfModuleId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + execution.setVariable("CVFMI_sentSyncResponse", true) + msoLogger.debug("CreateVfModule Infra Response: " + synchResponse) + msoLogger.trace('Finished ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered ", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + /** + * Query AAI for vnf orchestration status to determine if health check and config scaling should be run + */ + public void queryAAIForVnfOrchestrationStatus(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + def vnfId = execution.getVariable("CVFMI_vnfId") + execution.setVariable("runHealthCheck", false); + execution.setVariable("runConfigScaleOut", false); + AAICreateResources aaiCreateResources = new AAICreateResources(); + Optional<GenericVnf> vnf = aaiCreateResources.getVnfInstance(vnfId); + if(vnf.isPresent()){ + def vnfOrchestrationStatus = vnf.get().getOrchestrationStatus(); + if("active".equalsIgnoreCase(vnfOrchestrationStatus)){ + execution.setVariable("runHealthCheck", false); + execution.setVariable("runConfigScaleOut", true); + } + } + } + + /** + * Retrieve data for ConfigScaleOut from SDNC topology + */ + + public void retreiveConfigScaleOutData(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + def vfModuleId = execution.getVariable("CVFMI_vfModuleId") + String ipAddress = ""; + String oamIpAddress = ""; + String vnfHostIpAddress = ""; + + String vnfGetSDNC = execution.getVariable("DCVFM_getSDNCAdapterResponse"); + + String data = utils.getNodeXml(vnfGetSDNC, "response-data") + data = data.replaceAll("<", "<") + data = data.replaceAll(">", ">") + + InputSource source = new InputSource(new StringReader(data)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setNamespaceAware(true) + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document responseXml = docBuilder.parse(source) + + NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters") + for (int z = 0; z < paramsList.getLength(); z++) { + Node node = paramsList.item(z) + Element eElement = (Element) node + String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name") + String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value") + if (vnfParameterName.equals("vlb_private_ip_1")) { + vnfHostIpAddress = vnfParameterValue + } + else if (vnfParameterName.equals("vdns_private_ip_0")) { + ipAddress = vnfParameterValue + } + else if (vnfParameterName.equals("vdns_private_ip_1")) { + oamIpAddress = vnfParameterValue + } + } + + String payload = "{\"request-parameters\":{\"vnf-host-ip-address\":\"" + vnfHostIpAddress + "\",\"vf-module-id\":\"" + vfModuleId + "\"},\"configuration-parameters\":{\"ip-addr\":\"" + ipAddress +"\", \"oam-ip-addr\":\""+ oamIpAddress +"\",\"enabled\":\"true\"}}" + execution.setVariable("payload", payload); + } + + /** + * + * @param execution the execution + */ + public void postProcessResponse(DelegateExecution execution){ + msoLogger.trace("STARTED PostProcessResponse Process") + try{ + def requestInfo = execution.getVariable("CVFMI_requestInfo") + def action = utils.getNodeText(requestInfo, "action") + + msoLogger.debug("requestInfo is: " + requestInfo) + msoLogger.debug("action is: " + action) + + String payload = + """ <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:ns8="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + ${requestInfo} + </request-info> + <ns8:status-message>Vf Module has been created successfully.</ns8:status-message> + <ns8:mso-bpel-name>BPMN</ns8:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_SuccessFlag", true) + execution.setVariable("CVFMI_msoCompletionRequest", payload) + msoLogger.debug("CreateVfModuleInfra completion request: " + payload) + msoLogger.debug("Outgoing MsoCompletionRequest: \n" + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Occured Processing PostProcessResponse - " + "\n", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occured during PostProcessResponse Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED PostProcessResponse Process") + } + + + + + + /** + * Validates the request, request id and service instance id. If a problem is found, + * a WorkflowException is generated and an MSOWorkflowException event is thrown. This + * method also sets up the log context for the workflow. + * @param execution the execution + * @return the validated request + */ + public String validateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Started ' + method) + + String processKey = getProcessKey(execution); + def prefix = execution.getVariable("prefix") + + if (prefix == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null") + } + + try { + def request = execution.getVariable(prefix + 'Request') + + if (request == null) { + request = execution.getVariable(processKey + 'Request') + + if (request == null) { + request = execution.getVariable('bpmnRequest') + } + + setVariable(execution, processKey + 'Request', null); + setVariable(execution, 'bpmnRequest', null); + setVariable(execution, prefix + 'Request', request); + } + + if (request == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null") + } + + /* + + def requestId = execution.getVariable("mso-request-id") + + if (requestId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id") + } + + setVariable(execution, prefix + 'requestId', requestId) + + def serviceInstanceId = execution.getVariable("mso-service-instance-id") + + if (serviceInstanceId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id") + } + + utils.logContext(requestId, serviceInstanceId) + */ + msoLogger.debug("CreateVfModule incoming request: " + request) + msoLogger.debug('Incoming message: ' + System.lineSeparator() + request) + msoLogger.trace('Finished ' + method) + return request + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message") + } + } + + public void prepareUpdateInfraRequest(DelegateExecution execution){ + msoLogger.trace("STARTED prepareUpdateInfraRequest Process") + try{ + + String requestInfo = execution.getVariable("CVFMI_requestInfo") + def aicCloudRegion = execution.getVariable("CVFMI_lcpCloudRegionId") + def tenantId = execution.getVariable("CVFMI_tenantId") + def requestId = utils.getNodeText(requestInfo, "request-id") + def vnfId = execution.getVariable("CVFMI_vnfId") + def vfModuleId = execution.getVariable("CVFMI_vfModuleId") + // vfModuleName may be generated by DoCreateVfModule subprocess if it is not specified on the input + def vfModuleName = execution.getVariable("CVFMI_vfModuleName") + + def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution) + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>VF Module successfully created</statusMessage> + <responseBody></responseBody> + <requestStatus>COMPLETE</requestStatus> + <progress>100</progress> + <vnfOutputs><vnf-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"><vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id><vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id></vnf-outputs></vnfOutputs> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vfModuleName>${MsoUtils.xmlEscape(vfModuleName)}</vfModuleName> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateInfraRequest", payload) + msoLogger.debug("Outgoing UpdateInfraRequest: \n" + payload) + msoLogger.debug("CreateVfModuleInfra Outgoing UpdateInfra Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareUpdateInfraRequest.", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareUpdateInfraRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED prepareUpdateInfraRequest Process") + } + + /** + * Builds a "FalloutHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void falloutHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.falloutHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace("Started " + method) + + + try { + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def requestInformation = execution.getVariable("CVFMI_requestInfo") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInformation} + <aetgt:WorkflowException> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest> + """ + + msoLogger.debug("CONTENT before translation: " + content) + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + msoLogger.debug("CreateVfModuleInfra FallOutHander Request: " + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error') + } + } + + public void logAndSaveOriginalException(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateRollbackResponse(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + logWorkflowException(execution, 'CreateVfModuleInfra caught an event') + saveWorkflowException(execution, 'CVFMI_originalWorkflowException') + } + + public void validateRollbackResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateRollbackResponse(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + def originalException = execution.getVariable("CVFMI_originalWorkflowException") + execution.setVariable("WorkflowException", originalException) + + execution.setVariable("RollbackCompleted", true) + + } + + public void sendErrorResponse(DelegateExecution execution){ + msoLogger.trace("STARTED CreateVfModulenfra sendErrorResponse Process") + try { + def sentSyncResponse = execution.getVariable("CVFMI_sentSyncResponse") + if(sentSyncResponse == false){ + WorkflowException wfex = execution.getVariable("WorkflowException") + String response = exceptionUtil.buildErrorResponseXml(wfex) + msoLogger.debug(response) + sendWorkflowResponse(execution, 500, response) + }else{ + msoLogger.debug("Not Sending Error Response. Sync Response Already Sent") + } + + } catch (Exception ex) { + msoLogger.debug("Error Occured in CreateVfModuleInfra sendErrorResponse Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVfModuleInfra sendErrorResponse Process") + } + msoLogger.trace("COMPLETED CreateVfModuleInfra sendErrorResponse Process") + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy new file mode 100644 index 0000000000..aa569655f4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy @@ -0,0 +1,356 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.onap.so.bpmn.common.scripts.AaiUtil; +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.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVfModuleVolumeInfraV1.class); + public static final String prefix='CVMVINFRAV1_' + + /** + * Perform initial processing, such as request validation, initialization of variables, etc. + * * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + setBasicDBAuthHeader(execution, isDebugEnabled) + preProcessRequest(execution, isDebugEnabled) + } + + + /** + * Perform initial processing, such as request validation, initialization of variables, etc. + * @param execution + * @param isDebugEnabled + */ + public void preProcessRequest (DelegateExecution execution, isDebugEnabled) { + + execution.setVariable("prefix",prefix) + setSuccessIndicator(execution, false) + execution.setVariable(prefix+'syncResponseSent', false) + + String createVolumeIncoming = validateRequest(execution, 'vnfId') + msoLogger.debug(createVolumeIncoming) + + try { + def jsonSlurper = new JsonSlurper() + Map reqMap = jsonSlurper.parseText(createVolumeIncoming) + setupVariables(execution, reqMap, isDebugEnabled) + msoLogger.debug("XML request:\n" + createVolumeIncoming) + } + catch(groovy.json.JsonException je) { + (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'Request is not a valid JSON document') + } + + // For rollback in this flow + setBasicDBAuthHeader(execution, isDebugEnabled) + setRollbackEnabled(execution, isDebugEnabled) + } + + + /** + * Set up variables that will be passed to the BB DoCreatevfModuleVolume flow + * @param execution + * @param requestMap + * @param serviceInstanceId + * @param isDebugLogEnabled + */ + public void setupVariables(DelegateExecution execution, Map requestMap, isDebugLogEnabled) { + + def jsonOutput = new JsonOutput() + + // volumeGroupId - is generated + String volumeGroupId = UUID.randomUUID() + execution.setVariable('volumeGroupId', volumeGroupId) + msoLogger.debug("Generated volumeGroupId: " + volumeGroupId) + + // volumeGroupName + def volGrpName = requestMap.requestDetails.requestInfo?.instanceName ?: '' + execution.setVariable('volumeGroupName', volGrpName) + + // vfModuleModelInfo + def vfModuleModelInfo = jsonOutput.toJson(requestMap.requestDetails?.modelInfo) + execution.setVariable('vfModuleModelInfo', vfModuleModelInfo) + + // lcpCloudRegonId + def lcpCloudRegionId = requestMap.requestDetails.cloudConfiguration.lcpCloudRegionId + execution.setVariable('lcpCloudRegionId', lcpCloudRegionId) + + // tenant + def tenantId = requestMap.requestDetails.cloudConfiguration.tenantId + execution.setVariable('tenantId', tenantId) + + // source + def source = requestMap.requestDetails.requestInfo.source + execution.setVariable(prefix+'source', source) + + // vnfType and asdcServiceModelVersion + + def serviceName = '' + def asdcServiceModelVersion = '' + def modelCustomizationName = '' + + def relatedInstanceList = requestMap.requestDetails.relatedInstanceList + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + serviceName = it.relatedInstance.modelInfo?.modelName + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + } + if (it.relatedInstance.modelInfo?.modelType == 'vnf') { + modelCustomizationName = it.relatedInstance.modelInfo?.modelCustomizationName + } + } + + def vnfType = serviceName + '/' + modelCustomizationName + execution.setVariable('vnfType', vnfType) + execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion) + + // vfModuleInputParams + def userParams = requestMap.requestDetails?.requestParameters?.userParams + Map<String, String> vfModuleInputMap = [:] + + userParams.each { userParam -> + vfModuleInputMap.put(userParam.name, userParam.value.toString()) + } + execution.setVariable('vfModuleInputParams', vfModuleInputMap) + + // disableRollback (true or false) + def disableRollback = requestMap.requestDetails.requestInfo.suppressRollback + execution.setVariable('disableRollback', disableRollback) + msoLogger.debug('disableRollback (suppressRollback) from request: ' + disableRollback) + + } + + + + public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) { + def volumeGroupId = execution.getVariable('volumeGroupId') + def requestId = execution.getVariable("mso-request-id") + def serviceInstanceId = execution.getVariable("serviceInstanceId") + + String syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug("Sync Response: " + "\n" + syncResponse) + sendWorkflowResponse(execution, 200, syncResponse) + + execution.setVariable(prefix+'syncResponseSent', true) + } + + + public void sendSyncError (DelegateExecution execution, isDebugEnabled) { + WorkflowException we = execution.getVariable('WorkflowException') + def errorCode = we?.getErrorCode() + def errorMessage = we?.getErrorMessage() + //default to 400 since only invalid request will trigger this method + sendWorkflowResponse(execution, 400, errorMessage) + } + + + /** + * Create a WorkflowException + * @param execution + * @param isDebugEnabled + */ + public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) { + msoLogger.debug(errorMessage) + (new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage) + } + + + /** + * Build Infra DB Request + * @param execution + * @param isDebugEnabled + */ + public void prepareDbInfraSuccessRequest(DelegateExecution execution, isDebugEnabled) { + def dbVnfOutputs = execution.getVariable(prefix+'volumeOutputs') + def requestId = execution.getVariable('mso-request-id') + def statusMessage = "VolumeGroup successfully created." + def requestStatus = "COMPLETED" + def progress = "100" + + /* + from: $gVolumeGroup/aai:volume-group-id/text() + to: vnfreq:volume-outputs/vnfreq:volume-group-id + */ + // for now assume, generated volumeGroupId is accepted + def volumeGroupId = execution.getVariable(prefix+'volumeGroupId') + + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>${MsoUtils.xmlEscape(requestStatus)}</requestStatus> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <vnfOutputs>${MsoUtils.xmlEscape(dbVnfOutputs)}</vnfOutputs> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + String buildDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable(prefix+"createDBRequest", buildDBRequestAsString) + msoLogger.debug("DB Infra Request: " + buildDBRequestAsString) + } + + + /** + * Build CommpleteMsoProcess request + * @param execution + * @param isDebugEnabled + */ + public void postProcessResponse (DelegateExecution execution, isDebugEnabled) { + + def dbReturnCode = execution.getVariable(prefix+'dbReturnCode') + def createDBResponse = execution.getVariable(prefix+'createDBResponse') + + msoLogger.debug('DB return code: ' + dbReturnCode) + msoLogger.debug('DB response: ' + createDBResponse) + + def requestId = execution.getVariable("mso-request-id") + def source = execution.getVariable(prefix+'source') + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>Volume Group has been created successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN VF Module Volume action: CREATE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable(prefix+'Success', true) + execution.setVariable(prefix+'CompleteMsoProcessRequest', xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } + + public void prepareFalloutHandlerRequest(DelegateExecution execution, isDebugEnabled) { + + WorkflowException we = execution.getVariable('WorkflowException') + def errorCode = we?.getErrorCode() + def errorMessage = we?.getErrorMessage() + + def requestId = execution.getVariable("mso-request-id") + def source = execution.getVariable(prefix+'source') + + String falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:WorkflowException> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + + </aetgt:FalloutHandlerRequest>""" + + // Format Response + String xmlHandlerRequest = utils.formatXml(falloutHandlerRequest) + + execution.setVariable(prefix+'FalloutHandlerRequest', xmlHandlerRequest) + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Overall Error Response going to FalloutHandler", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "\n" + xmlHandlerRequest); + } + + + /** + * Query AAI service instance + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAIServiceInstance(DelegateExecution execution, isDebugEnabled) { + + def request = execution.getVariable(prefix+"Request") + def serviceInstanceId = utils.getNodeText(request, "service-instance-id") + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getSearchNodesQueryEndpoint(execution) + + def String queryAAIRequest = aaiEndpoint + "?search-node-type=service-instance&filter=service-instance-id:EQUALS:" + serviceInstanceId + msoLogger.debug("AAI query service instance request: " + queryAAIRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query service instance return code: " + returnCode) + msoLogger.debug("AAI query service instance response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if (returnCode=='200') { + msoLogger.debug('Service instance ' + serviceInstanceId + ' found in AAI.') + } else { + if (returnCode=='404') { + def message = 'Service instance ' + serviceInstanceId + ' was not found in AAI. Return code: 404.' + msoLogger.debug(message) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message) + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + public void logAndSaveOriginalException(DelegateExecution execution, isDebugLogEnabled) { + logWorkflowException(execution, 'CreateVfModuleVolumeInfraV1 caught an event') + saveWorkflowException(execution, 'CVMVINFRAV1_originalWorkflowException') + } + + public void validateRollbackResponse(DelegateExecution execution, isDebugLogEnabled) { + + def originalException = execution.getVariable("CVMVINFRAV1_originalWorkflowException") + execution.setVariable("WorkflowException", originalException) + execution.setVariable("RollbackCompleted", true) + + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy new file mode 100644 index 0000000000..9c25a57adc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy @@ -0,0 +1,542 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.json.JSONArray; +import org.json.JSONObject; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor; +import org.onap.so.bpmn.common.scripts.CatalogDbUtils; +import org.onap.so.bpmn.common.scripts.ExceptionUtil; +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils; +import org.onap.so.bpmn.common.scripts.VidUtils; +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils; +import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + +/** + * This class supports the CreateVnfInfra Flow + * with the creation of a generic vnf for + * infrastructure. + */ +class CreateVnfInfra extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVnfInfra.class); + + + String Prefix="CREVI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + CatalogDbUtils cutils = new CatalogDbUtils() + AAICreateResources aaiCR = new AAICreateResources() + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED CreateVnfInfra PreProcessRequest Process") + + setBasicDBAuthHeader(execution, isDebugEnabled) + execution.setVariable("CREVI_sentSyncResponse", false) + + try{ + // Get Variables + String createVnfRequest = execution.getVariable("bpmnRequest") + execution.setVariable("CREVI_createVnfRequest", createVnfRequest) + msoLogger.debug("Incoming CreateVnfInfra Request is: \n" + createVnfRequest) + + if(createVnfRequest != null){ + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("CREVI_requestId", requestId) + msoLogger.debug("Incoming Request Id is: " + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + execution.setVariable("CREVI_serviceInstanceId", serviceInstanceId) + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfType = execution.getVariable("vnfType") + execution.setVariable("CREVI_vnfType", vnfType) + msoLogger.debug("Incoming Vnf Type is: " + vnfType) + + String vnfName = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.instanceName") + execution.setVariable("CREVI_vnfName", vnfName) + msoLogger.debug("Incoming Vnf Name is: " + vnfName) + + String serviceId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.productFamilyId") + execution.setVariable("CREVI_serviceId", serviceId) + msoLogger.debug("Incoming Service Id is: " + serviceId) + + String source = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.source") + execution.setVariable("CREVI_source", source) + msoLogger.debug("Incoming Source is: " + source) + + String suppressRollback = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.suppressRollback") + execution.setVariable("CREVI_suppressRollback", suppressRollback) + msoLogger.debug("Incoming Suppress Rollback is: " + suppressRollback) + + def vnfModelInfo = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo") + execution.setVariable("CREVI_vnfModelInfo", vnfModelInfo) + + String modelInvariantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelInvariantUuid") + execution.setVariable("CREVI_modelInvariantId", modelInvariantId) + msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId) + + String modelVersion = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelVersion") + execution.setVariable("CREVI_modelVersion", modelVersion) + msoLogger.debug("Incoming Model Version is: " + modelVersion) + + def cloudConfiguration = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration") + execution.setVariable("CREVI_cloudConfiguration", cloudConfiguration) + + String cloudSiteId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId") + execution.setVariable("CREVI_cloudSiteId", cloudSiteId) + msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId) + + String tenantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration.tenantId") + execution.setVariable("CREVI_tenantId", tenantId) + msoLogger.debug("Incoming Tenant Id is: " + tenantId) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("CREVI_requestInfo", requestInfo) + + //TODO: Orch Status - TBD, will come from SDN-C Response in 1702 + String orchStatus = "Created" + execution.setVariable("CREVI_orchStatus", orchStatus) + + //TODO: Equipment Role - Should come from SDN-C Response in 1702 + String equipmentRole = " " + execution.setVariable("CREVI_equipmentRole", equipmentRole) + + String vnfId = execution.getVariable("testVnfId") // for junits + if(isBlank(vnfId)){ + vnfId = UUID.randomUUID().toString() + msoLogger.debug("Generated Vnf Id is: " + vnfId) + } + execution.setVariable("CREVI_vnfId", vnfId) + + // Setting for Sub Flow Calls + execution.setVariable("CREVI_type", "generic-vnf") + execution.setVariable("GENGS_type", "service-instance") + + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError); + + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + execution.setVariable("CREVI_sdncCallbackUrl", sdncCallbackUrl) + + def vnfInputParameters = null + try { + vnfInputParameters = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestParameters.userParams") + } + catch (Exception e) { + msoLogger.debug("userParams are not present in the request") + } + execution.setVariable("CREVI_vnfInputParameters", vnfInputParameters) + + + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + }else{ + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Incoming Bpmn Request is Null.") + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Error Occurred in CreateVnfInfra PreProcessRequest method", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occurred in CreateVnfInfra PreProcessRequest") + + } + msoLogger.trace("COMPLETED CreateVnfInfra PreProcessRequest Process") + } + + public void sendSyncResponse (DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED CreateVnfInfra SendSyncResponse Process") + + try { + String requestId = execution.getVariable("CREVI_requestId") + String vnfId = execution.getVariable("CREVI_vnfId") + + String createVnfResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug("CreateVnfInfra Sync Response is: \n" + createVnfResponse) + + sendWorkflowResponse(execution, 202, createVnfResponse) + + execution.setVariable("CREVI_sentSyncResponse", true) + + } catch (Exception ex) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Error Occurred in CreateVnfInfra SendSyncResponse Process", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra SendSyncResponse Process") + + } + msoLogger.trace("COMPLETED CreateVnfInfra SendSyncResponse Process") + } + + + public void preProcessSDNCAssignRequest(DelegateExecution execution){ + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCAssignRequest") + def vnfId = execution.getVariable("CREVI_vnfId") + def serviceInstanceId = execution.getVariable("CREVI_serviceInstanceId") + msoLogger.debug("NEW VNF ID: " + vnfId) + + try{ + //Build SDNC Request + + String assignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "assign") + + assignSDNCRequest = utils.formatXml(assignSDNCRequest) + execution.setVariable("CREVI_assignSDNCRequest", assignSDNCRequest) + msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCAssignRequest", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareProvision Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCAssignRequest") + } + + public void preProcessSDNCActivateRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCActivateRequest Process") + try{ + String vnfId = execution.getVariable("CREVI_vnfId") + String serviceInstanceId = execution.getVariable("CREVI_serviceInstanceId") + + String activateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "activate") + + execution.setVariable("CREVI_activateSDNCRequest", activateSDNCRequest) + msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCActivateRequest", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCActivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCActivateRequest Process") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("CREVI_sdncCallbackUrl") + def requestId = execution.getVariable("CREVI_requestId") + def serviceId = execution.getVariable("CREVI_serviceId") + def vnfType = execution.getVariable("CREVI_vnfType") + def vnfName = execution.getVariable("CREVI_vnfName") + def tenantId = execution.getVariable("CREVI_tenantId") + def source = execution.getVariable("CREVI_source") + def vnfId = execution.getVariable("CREVI_vnfId") + def cloudSiteId = execution.getVariable("CREVI_cloudSiteId") + + String sdncVNFParamsXml = "" + + if(execution.getVariable("CREVI_vnfParamsExistFlag") == true){ + sdncVNFParamsXml = buildSDNCParamsXml(execution) + }else{ + sdncVNFParamsXml = "" + } + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(requestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>VNFActivateRequest</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id> + <subscriber-name>notsurewecare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-name>${MsoUtils.xmlEscape(vnfName)}</vnf-name> + <vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + ${sdncVNFParamsXml} + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + msoLogger.debug("SDNCResponse: " + response) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.trace("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("COMPLETED ValidateSDNCResponse Process") + } + + public void prepareCompletionHandlerRequest(DelegateExecution execution){ + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED CreateVnfInfra PrepareCompletionHandlerRequest Process") + + try { + String requestInfo = execution.getVariable("CREVI_requestInfo") + String vnfId = execution.getVariable("CREVI_vnfId") + requestInfo = utils.removeXmlPreamble(requestInfo) + + String request = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + ${requestInfo} + <status-message>Vnf has been created successfully.</status-message> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <mso-bpel-name>CreateVnfInfra</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + execution.setVariable("CREVI_completionHandlerRequest", request) + msoLogger.debug("Completion Handler Request is: " + request) + + execution.setVariable("WorkflowResponse", "Success") // for junits + + } catch (Exception ex) { + msoLogger.debug("Error Occured in CreateVnfInfra PrepareCompletionHandlerRequest Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra PrepareCompletionHandlerRequest Process") + + } + msoLogger.trace("COMPLETED CreateVnfInfra PrepareCompletionHandlerRequest Process") + } + + public void sendErrorResponse(DelegateExecution execution){ + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED CreateVnfInfra sendErrorResponse Process") + try { + def sentSyncResponse = execution.getVariable("CREVI_sentSyncResponse") + if(sentSyncResponse == false){ + WorkflowException wfex = execution.getVariable("WorkflowException") + String response = exceptionUtil.buildErrorResponseXml(wfex) + + msoLogger.debug(response) + sendWorkflowResponse(execution, 500, response) + }else{ + msoLogger.debug("Not Sending Error Response. Sync Response Already Sent") + } + + } catch (Exception ex) { + msoLogger.debug("Error Occured in CreateVnfInfra sendErrorResponse Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra sendErrorResponse Process") + + } + msoLogger.trace("COMPLETED CreateVnfInfra sendErrorResponse Process") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED CreateVnfInfra prepareFalloutRequest Process") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString()) + String requestInfo = execution.getVariable("CREVI_requestInfo") + msoLogger.debug(" Incoming Request Info: " + requestInfo) + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + + execution.setVariable("CREVI_falloutRequest", falloutRequest) + + + } catch (Exception ex) { + msoLogger.debug("Error Occured in CreateVnfInfra prepareFalloutRequest Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra prepareFalloutRequest Process") + + } + msoLogger.trace("COMPLETED CreateVnfInfra prepareFalloutRequest Process") + } + + + public void queryCatalogDB (DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED CreateVnfInfra QueryCatalogDB Process") + try { + //Get Vnf Info + String vnfModelInfo = execution.getVariable("CREVI_vnfModelInfo") + String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid") + msoLogger.debug("querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid) + + JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution, + vnfModelCustomizationUuid, "v2") + msoLogger.debug("obtained VNF list: " + vnfs) + + if (vnfs == null) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid) + } + + // Only one match here + JSONObject vnf = vnfs.get(0) + + if (vnf == null) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid) + } + + VnfResource vnfResource = new VnfResource() + String nfType = jsonUtil.getJsonValueForKey(vnf, "nfType") + vnfResource.setNfType(nfType) + String nfRole = jsonUtil.getJsonValueForKey(vnf, "nfRole") + vnfResource.setNfRole(nfRole) + String nfFunction = jsonUtil.getJsonValueForKey(vnf, "nfFunction") + vnfResource.setNfFunction(nfFunction) + String nfNamingCode = jsonUtil.getJsonValueForKey(vnf, "nfNamingCode") + vnfResource.setNfNamingCode(nfNamingCode) + + execution.setVariable("CREVI_vnfResourceDecomposition", vnfResource) + + }catch(BpmnError e) { + throw e; + }catch(Exception ex) { + msoLogger.debug("Error Occurred in CreateVnfInfra QueryCatalogDB Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occurred in CreateVnfInfra QueryCatalogDB Process") + } + + + msoLogger.trace("COMPLETED CreateVnfInfra QueryCatalogDb Process") + } + public void createPlatform (DelegateExecution execution) { + msoLogger.trace("START createPlatform") + + String request = execution.getVariable("bpmnRequest") + String platformName = jsonUtil.getJsonValue(request, "requestDetails.platform.platformName") + String vnfId = execution.getVariable("CREVI_vnfId") + + msoLogger.debug("Platform NAME: " + platformName) + msoLogger.debug("VnfID: " + vnfId) + + if(platformName == null||platformName.equals("")){ + String msg = "Exception in createPlatform. platformName was not found in the request."; + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + }else{ + msoLogger.debug("platformName was found.") + try{ + AAICreateResources aaiCR = new AAICreateResources() + aaiCR.createAAIPlatform(platformName, vnfId) + }catch(Exception ex){ + String msg = "Exception in createPlatform. " + ex.getMessage(); + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + msoLogger.trace("Exit createPlatform") + } + public void createLineOfBusiness (DelegateExecution execution) { + msoLogger.trace("START createLineOfBusiness") + + String request = execution.getVariable("bpmnRequest") + String lineOfBusiness = jsonUtil.getJsonValue(request, "requestDetails.lineOfBusiness.lineOfBusinessName") + String vnfId = execution.getVariable("CREVI_vnfId") + + msoLogger.debug("LineOfBusiness NAME: " + lineOfBusiness) + msoLogger.debug("VnfID: " + vnfId) + + if(lineOfBusiness == null || lineOfBusiness.equals("")){ + msoLogger.debug("LineOfBusiness was not found. Continuing on with flow...") + }else{ + msoLogger.debug("LineOfBusiness was found.") + try{ + AAICreateResources aaiCR = new AAICreateResources() + aaiCR.createAAILineOfBusiness(lineOfBusiness, vnfId) + }catch(Exception ex){ + String msg = "Exception in LineOfBusiness. " + ex.getMessage(); + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + msoLogger.trace("Exit createLineOfBusiness") + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy new file mode 100644 index 0000000000..cbbc5189f4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy @@ -0,0 +1,386 @@ +/*- + + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils; + +import groovy.json.* + +/** + * This groovy class supports the <class>DelE2EServiceInstance.bpmn</class> process. + * + */ +public class DeleteCustomE2EServiceInstance extends AbstractServiceTaskProcessor { + + String Prefix="DELSI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils() + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteCustomE2EServiceInstance.class); + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + + msoLogger.info("Starting preProcessRequest") + + try { + // check for incoming json message/input + String siRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(siRequest) + + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.info("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + + //requestInfo +// String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId") +// if (isBlank(productFamilyId)) +// { +// msg = "Input productFamilyId is null" +// utils.log("INFO", msg, isDebugEnabled) +// //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) +// } else { +// execution.setVariable("productFamilyId", productFamilyId) +// } + String source = jsonUtil.getJsonValue(siRequest, "source") + execution.setVariable("source", source) + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + msoLogger.info(msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //requestParameters + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "serviceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + msoLogger.debug(msg) + //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + String operationId = jsonUtil.getJsonValue(siRequest, "operationId") + execution.setVariable("operationId", operationId) + + execution.setVariable("operationType", "DELETE") + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Staring sendSyncResponse") + + try { + String operationId = execution.getVariable("operationId") + String syncResponse = """{"operationId":"${operationId}"}""".trim() + msoLogger.info("sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse) + sendWorkflowResponse(execution, 202, syncResponse) + + } catch (Exception ex) { + String msg = "Exception in sendSyncResponse: " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.trace("Exit sendSyncResopnse") + } + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.info("Starting sendSyncError") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.info(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.info("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + + } + + public void prepareCompletionRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Starting prepareCompletion") + + try { + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>E2E Service Instance was deleted successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>DeleteCustomE2EServiceInstance</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + msoLogger.info(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit prepareCompletionRequest") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Starting prepareFalloutRequest ") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.info(" Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.info("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in CreateServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("Exit prepareFalloutRequest") + } + + + // ******************************* + // Build DB request Section + // ******************************* + public void prepareDBRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + try { + msoLogger.info("Starting prepareDBRequest") + + String requestId = execution.getVariable("DELSI_requestId") + String statusMessage = "E2E Service Instance successfully deleted." + + //TODO - verify the format for Service Instance Delete, + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>COMPLETED</requestStatus> + <progress>100</progress> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + String buildDeleteDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable("DELSI_createDBRequest", buildDeleteDBRequestAsString) + msoLogger.info(buildDeleteDBRequestAsString) + + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteCustomE2EServiceInstance flow. Unexpected Error from method prepareDBRequest() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ******************************* + // Build Error Section + // ******************************* + public void prepareDBRequestError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Start prepareDBRequestError") + + try { + String requestId = execution.getVariable("DELSI_requestId") + String statusMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("WorkflowException") + statusMessage = wfe.getErrorMessage() + + } else { + statusMessage = "Encountered Error during DeleteCustomE2EServiceInstance proccessing. " + } + + //TODO - verify the format for Service Instance Create, + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>FAILED</requestStatus> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + String buildDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable("DELSI_createDBInfraErrorRequest", buildDBRequestAsString) + msoLogger.info(buildDBRequestAsString) + + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteCustomE2EServiceInstance flow. Unexpected Error from method prepareDBRequestError() - " + ex.getMessage() + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void processJavaException(DelegateExecution execution) { + //TODO: + } + + /** + * Init the service Operation Status + */ + public void prepareInitServiceOperationStatus(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled) + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String userId = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + utils.log("DEBUG", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId, isDebugEnabled) + serviceId = UriUtils.encode(serviceId,"UTF-8") + + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + utils.log("DEBUG", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>DELETE</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + utils.log("DEBUG", "Outgoing updateServiceOperStatusRequest: \n" + payload, isDebugEnabled) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing prepareInitServiceOperationStatus. Exception is:\n" + e, isDebugEnabled) + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage()) + } + utils.log("DEBUG", "======== COMPLETED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy new file mode 100644 index 0000000000..b43a96bdb0 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy @@ -0,0 +1,362 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger + +import groovy.json.* + +/** + * This groovy class supports the <class>DelServiceInstance.bpmn</class> process. + * + */ +public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskProcessor { + + String Prefix="DELSI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils() + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteGenericALaCarteServiceInstance.class); + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + + msoLogger.trace("Start preProcessRequest") + + try { + // check for incoming json message/input + String siRequest = execution.getVariable("bpmnRequest") + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + //String xmlRequestDetails = vidUtils.getJsonRequestDetailstoXml(siRequest) + //execution.setVariable("requestDetails", xmlRequestDetails) + + //modelInfo + String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo") + if (isBlank(serviceModelInfo)) { + msg = "Input serviceModelInfo is null" + msoLogger.debug(msg) + } else + { + execution.setVariable("serviceModelInfo", serviceModelInfo) + //msoLogger.debug("modelInfo" + serviceModelInfo) + } + + //requestInfo + String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId") + if (isBlank(productFamilyId)) + { + msg = "Input productFamilyId is null" + msoLogger.debug(msg) + //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("productFamilyId", productFamilyId) + } + String source = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source") + execution.setVariable("source", source) + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + msoLogger.debug(msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //requestParameters + String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType") + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + msoLogger.debug(msg) + //exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(siRequest) + + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParams) { + userParams.each { + userParam -> inputMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug("User Input Parameters map: " + userParams.toString()) + execution.setVariable("serviceInputParams", inputMap) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start sendSyncResponse") + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // RESTResponse (for API Handler (APIH) Reply Task) + String syncResponse = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse) + sendWorkflowResponse(execution, 202, syncResponse) + + } catch (Exception ex) { + String msg = "Exception in sendSyncResponse: " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.trace("Exit sendSyncResopnse") + } + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start sendSyncError") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + MsoLogger.info(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + + } + + public void prepareCompletionRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start prepareCompletion") + + try { + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>Service Instance was deleted successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>DeleteGenericALaCarteServiceInstance</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit prepareCompletionRequest") + } + + public void prepareFalloutRequest(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("Start prepareFalloutRequest") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in CreateServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("Exit prepareFalloutRequest ") + } + + + // ******************************* + // Build DB request Section + // ******************************* + public void prepareDBRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + try { + msoLogger.trace("Inside prepareDBRequest of DeleteGenericALaCarteServiceInstance ") + + String requestId = execution.getVariable("DELSI_requestId") + String statusMessage = "Service Instance successfully deleted." + + //TODO - verify the format for Service Instance Delete, + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>COMPLETED</requestStatus> + <progress>100</progress> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + String buildDeleteDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable("DELSI_createDBRequest", buildDeleteDBRequestAsString) + msoLogger.info(buildDeleteDBRequestAsString) + + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDBRequest() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ******************************* + // Build Error Section + // ******************************* + public void prepareDBRequestError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareDBRequestError of DeleteGenericALaCarteServiceInstance ") + + try { + String requestId = execution.getVariable("DELSI_requestId") + String statusMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("WorkflowException") + statusMessage = wfe.getErrorMessage() + + } else { + statusMessage = "Encountered Error during DeleteGenericALaCarteServiceInstance proccessing. " + } + + //TODO - verify the format for Service Instance Create, + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>FAILED</requestStatus> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + String buildDBRequestAsString = utils.formatXml(dbRequest) + execution.setVariable("DELSI_createDBInfraErrorRequest", buildDBRequestAsString) + msoLogger.info(buildDBRequestAsString) + + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDBRequestError() - " + ex.getMessage() + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy new file mode 100644 index 0000000000..816ba859ee --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy @@ -0,0 +1,420 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.DelegateExecution +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.NetworkUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.* + +public class DeleteNetworkInstance extends AbstractServiceTaskProcessor { + String Prefix="DELNI_" + String groovyClassName = "DeleteNetworkInstance" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteNetworkInstance.class); + + + public InitializeProcessVariables(DelegateExecution execution){ + + execution.setVariable(Prefix + "Success", false) + + execution.setVariable(Prefix + "CompleteMsoProcessRequest", "") + execution.setVariable(Prefix + "FalloutHandlerRequest", "") + execution.setVariable(Prefix + "isSilentSuccess", false) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + "") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null || sdncVersion == '1610') { + // 'a-la-cart' default, sdncVersion = '1610' + execution.setVariable("sdncVersion", "1610") + String bpmnRequest = execution.getVariable("bpmnRequest") + // set 'disableRollback' + if (bpmnRequest != null) { + String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback") + if (disableRollback != null) { + execution.setVariable("disableRollback", disableRollback) + msoLogger.debug("Received 'suppressRollback': " + disableRollback ) + } else { + execution.setVariable("disableRollback", false) + } + msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") ) + } else { + String dataErrorMessage = " Invalid 'bpmnRequest' request." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + } else { + // 'macro' test ONLY, sdncVersion = '1702' + msoLogger.debug(" 'disableRollback' : " + execution.getVariable("disableRollback") ) + } + + // get/set 'msoRequestId' and 'mso-request-id' + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + + // get/set 'requestId' + if (execution.getVariable("requestId") == null) { + execution.setVariable("requestId", requestId) + } + + // set action to "DELETE" + execution.setVariable("action", "DELETE") + + //Place holder for additional code. + + // TODO ??? + // userParams??? 1) pre-loads indicator, 2) 'auto-activation' + // Tag/Value parameters + // + // Map: 'networkInputParams': 'auto-activation'' + // Sample format? + // "requestParameters": { + // "userParams": [ + // { + // "name": "someUserParam1", + // "value": "someValue1" + // } + // ] + // } + // + // String userParams = //use json util to extract "userParams"// + // execution.setVariable("networkInputParams", userParams) + // else: execution.setVariable("networkInputParams", null) + // + + + } catch (Exception ex){ + sendSyncError(execution) + String exceptionMessage = "Exception Encountered in " + groovyClassName + ", PreProcessRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void getNetworkModelInfo (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside getNetworkModelInfo() of DeleteNetworkInstance") + + try { + + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId. + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) + + } catch (Exception ex) { + sendSyncError(execution) + String exceptionMessage = "Bpmn error encountered in DeleteNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside sendSyncResponse() of DeleteNetworkInstance") + + try { + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // RESTResponse (for API Handler (APIH) Reply Task) + String deleteNetworkRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + deleteNetworkRestRequest) + + sendWorkflowResponse(execution, 202, deleteNetworkRestRequest) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Exception Encountered in DeleteNetworkInstance, sendSyncResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareCompletion (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareCompletion() of CreateNetworkInstance") + + try { + + String requestId = execution.getVariable("mso-request-id") + String source = execution.getVariable(Prefix + "source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>VID</source> + </request-info> + <aetgt:status-message>Network has been deleted successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + // normal path + execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareCompletion() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + public void prepareDBRequestError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + try { + msoLogger.trace("Inside prepareDBRequestError of DeleteNetworkInstance") + + // set DB Header Authorization + setBasicDBAuthHeader(execution, isDebugEnabled) + + WorkflowException wfe = execution.getVariable("WorkflowException") + String statusMessage = wfe.getErrorMessage() + String requestId = execution.getVariable(Prefix +"requestId") + + String dbRequest = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb"> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <responseBody></responseBody> + <requestStatus>FAILED</requestStatus> + <progress></progress> + <vnfOutputs><network-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/></vnfOutputs> + </ns:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope>""" + + execution.setVariable(Prefix + "deleteDBRequest", dbRequest) + msoLogger.debug(" DB Adapter Request - " + "\n" + dbRequest) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DeleteNetworkInstance, prepareDBRequestError() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void postProcessResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside postProcessResponse() of DeleteNetworkInstance") + + try { + if (execution.getVariable("CMSO_ResponseCode") == "200") { + execution.setVariable(Prefix + "Success", true) + msoLogger.trace("DeleteNetworkInstance Success") + // Place holder for additional code. + + } else { + execution.setVariable(Prefix + "Success", false) + msoLogger.trace("DeleteNetworkInstance Failed in CompletionMsoProces flow!.") + + } + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DeleteNetworkInstance flow. postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + // Prepare for FalloutHandler + public void buildErrorResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler.") + + String dbReturnCode = execution.getVariable(Prefix + "dbReturnCode") + msoLogger.debug("DB Update Response Code : " + dbReturnCode) + msoLogger.debug("DB Update Response String: " + '\n' + execution.getVariable(Prefix + "deleteDBResponse")) + + String falloutHandlerRequest = "" + String requestId = execution.getVariable("mso-request-id") + String source = execution.getVariable(Prefix + "source") + execution.setVariable(Prefix + "Success", false) + try { + WorkflowException wfe = execution.getVariable("WorkflowException") + String errorCode = String.valueOf(wfe.getErrorCode()) + String errorMessage = wfe.getErrorMessage() + + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + msoLogger.debug(falloutHandlerRequest) + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest,"BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "") + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DeleteNetworkInstance, buildErrorResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELEtE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(exceptionMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>9999</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest,"BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex) + } + } + + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + + try { + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // RESTResponse (for API Handler (APIH) Reply Task) + String deleteNetworkRestError = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + deleteNetworkRestError) + + sendWorkflowResponse(execution, 500, deleteNetworkRestError) + + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed - DeleteNetworkInstance, sendSyncError(): " + "\n" + ex.getMessage()) + } + } + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.debug("Completed processJavaException Method of " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy new file mode 100644 index 0000000000..ab5500602f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy @@ -0,0 +1,308 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.recipe.ResourceInput; +import org.onap.so.bpmn.common.resource.ResourceRequestBuilder +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.SDNCAdapterUtils +import org.onap.so.bpmn.core.json.JsonUtils + +import groovy.json.* + +/** + * This groovy class supports the <class>DeleteSDNCCNetworkResource.bpmn</class> process. + * flow for SDNC Network Resource + */ +public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor { + + String Prefix="DELSDNCRES_" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + public void preProcessRequest(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** Started preProcessRequest *****", isDebugEnabled) + try { + + //get bpmn inputs from resource request. + String requestId = execution.getVariable("mso-request-id") + String requestAction = execution.getVariable("requestAction") + utils.log("INFO","The requestAction is: " + requestAction, isDebugEnabled) + String recipeParamsFromRequest = execution.getVariable("recipeParams") + utils.log("INFO","The recipeParams is: " + recipeParamsFromRequest, isDebugEnabled) + String resourceInput = execution.getVariable("resourceInput") + utils.log("INFO","The resourceInput is: " + resourceInput, isDebugEnabled) + //Get ResourceInput Object + ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(resourceInput, ResourceInput.class) + execution.setVariable(Prefix + "resourceInput", resourceInputObj) + + //Deal with recipeParams + String recipeParamsFromWf = execution.getVariable("recipeParamXsd") + String resourceModelName = resourceInputObj.getResourceModelInfo().getModelName() + //For sdnc requestAction default is "NetworkInstance" + String operationType = "Network" + if(!StringUtils.isBlank(recipeParamsFromRequest) && "null" != recipeParamsFromRequest){ + //the operationType from worflow(first node) is second priority. + operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType") + } + if(!StringUtils.isBlank(recipeParamsFromWf)){ + //the operationType from worflow(first node) is highest priority. + operationType = jsonUtil.getJsonValue(recipeParamsFromWf, "operationType") + } + + + //For sdnc, generate svc_action and request_action + String sdnc_svcAction = "delete" + if(StringUtils.containsIgnoreCase(resourceModelName, "overlay")){ + //This will be resolved in R3. + sdnc_svcAction ="deactivate" + operationType = "NCINetwork" + } + if(StringUtils.containsIgnoreCase(resourceModelName, "underlay")){ + //This will be resolved in R3. + operationType ="Network" + } + String sdnc_requestAction = StringUtils.capitalize(sdnc_svcAction) + operationType +"Instance" + execution.setVariable(Prefix + "svcAction", sdnc_svcAction) + execution.setVariable(Prefix + "requestAction", sdnc_requestAction) + execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId()) + execution.setVariable("mso-request-id", requestId) + execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId()) + //TODO Here build networkrequest + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void prepareSDNCRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** Started prepareSDNCRequest *****", isDebugEnabled) + + try { + // get variables + String sdnc_svcAction = execution.getVariable(Prefix + "svcAction") + String sdnc_requestAction = execution.getVariable(Prefix + "requestAction") + String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback") + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String hdrRequestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + String source = execution.getVariable("source") + String sdnc_service_id = execution.getVariable(Prefix + "sdncServiceId") + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String serviceType = resourceInputObj.getServiceType() + String serviceModelInvariantUuid = resourceInputObj.getServiceModelInfo().getModelInvariantUuid() + String serviceModelUuid = resourceInputObj.getServiceModelInfo().getModelUuid() + String serviceModelVersion = resourceInputObj.getServiceModelInfo().getModelVersion() + String serviceModelName = resourceInputObj.getServiceModelInfo().getModelName() + String globalCustomerId = resourceInputObj.getGlobalSubscriberId() + String modelInvariantUuid = resourceInputObj.getResourceModelInfo().getModelInvariantUuid(); + String modelCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String modelUuid = resourceInputObj.getResourceModelInfo().getModelUuid() + String modelName = resourceInputObj.getResourceModelInfo().getModelName() + String modelVersion = resourceInputObj.getResourceModelInfo().getModelVersion() + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyDeleteRequest = + """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id> + <request-action>${MsoUtils.xmlEscape(sdnc_requestAction)}</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url></notification-url> + <order-number></order-number> + <order-version></order-version> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <network-information> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </network-information> + <network-request-input> + <network-input-parameters></network-input-parameters> + </network-request-input> + </sdncadapterworkflow:SDNCRequestData> + </aetgt:SDNCAdapterWorkflowRequest>""".trim() + + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest) + utils.logAudit(sndcTopologyDeleteRequesAsString) + execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyDeleteRequesAsString) + utils.log("INFO","sdncAdapterWorkflowRequest - " + "\n" + sndcTopologyDeleteRequesAsString, isDebugEnabled) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DeleteSDNCCNetworkResource flow. prepareSDNCRequest() - " + ex.getMessage() + utils.log("DEBUG", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + utils.log("INFO"," ***** Exit prepareSDNCRequest *****", isDebugEnabled) + } + + private void setProgressUpdateVariables(DelegateExecution execution, String body) { + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + execution.setVariable("CVFMI_updateResOperStatusRequest", body) + } + + public void prepareUpdateBeforeDeleteSDNCResource(DelegateExecution execution) { + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String operType = resourceInputObj.getOperationType() + String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String serviceInstanceId = resourceInputObj.getServiceInstanceId() + String operationId = resourceInputObj.getOperationId() + String progress = "20" + String status = "processing" + String statusDescription = "SDCN resource delete invoked" + + //String operationId = execution.getVariable("operationId") + + String body = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateResourceOperationStatus> + <operType>${MsoUtils.xmlEscape(operType)}</operType> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID> + <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId> + <status>${MsoUtils.xmlEscape(status)}</status> + <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription> + </ns:updateResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>"""; + + setProgressUpdateVariables(execution, body) + + } + + public void prepareUpdateAfterDeleteSDNCResource(DelegateExecution execution) { + ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput") + String operType = resourceInputObj.getOperationType() + String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid() + String serviceInstanceId = resourceInputObj.getServiceInstanceId() + String operationId = resourceInputObj.getOperationId() + String progress = "100" + String status = "finished" + String statusDescription = "SDCN resource delete completed" + + //String operationId = execution.getVariable("operationId") + + String body = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateResourceOperationStatus> + <operType>${MsoUtils.xmlEscape(operType)}</operType> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID> + <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId> + <status>${MsoUtils.xmlEscape(status)}</status> + <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription> + </ns:updateResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>"""; + + setProgressUpdateVariables(execution, body) + } + + public void postDeleteSDNCCall(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** Started prepareSDNCRequest *****", isDebugEnabled) + String responseCode = execution.getVariable(Prefix + "sdncDeleteReturnCode") + String responseObj = execution.getVariable(Prefix + "SuccessIndicator") + + utils.log("INFO","response from sdnc, response code :" + responseCode + " response object :" + responseObj, isDebugEnabled) + utils.log("INFO"," ***** Exit prepareSDNCRequest *****", isDebugEnabled) + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled) + + try { + String operationStatus = "finished" + // RESTResponse for main flow + String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim() + utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled) + sendWorkflowResponse(execution, 202, resourceOperationResp) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit sendSyncResopnse *****", isDebugEnabled) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy new file mode 100644 index 0000000000..536783bc33 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy @@ -0,0 +1,87 @@ + +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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.databind.ObjectMapper +import org.onap.so.bpmn.common.recipe.ResourceInput +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil + + +public class DeleteVFCNSResource extends AbstractServiceTaskProcessor { + + String Prefix = "DCUSE_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** start preProcessRequest *****", isDebugEnabled) + + String resourceInputStr = execution.getVariable("resourceInput") + ResourceInput resourceInput = new ObjectMapper().readValue(resourceInputStr, ResourceInput.class) + + String globalSubscriberId = resourceInput.getGlobalSubscriberId() + String serviceType = execution.getVariable("serviceType") + String operationId = resourceInput.getOperationId() + String resourceModeluuid = resourceInput.getResourceModelInfo().getModelCustomizationUuid() + String resourceInstanceId = resourceInput.getResourceInstancenUuid() + + + execution.setVariable("globalSubscriberId",globalSubscriberId) + execution.setVariable("serviceType", serviceType) + execution.setVariable("operationId", operationId) + execution.setVariable("resourceTemplateId", resourceModeluuid) + execution.setVariable("resourceInstanceId", resourceInstanceId) + + utils.log("INFO"," ***** end preProcessRequest *****", isDebugEnabled) + } + + public void postProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** start postProcessRequest *****", isDebugEnabled) + + utils.log("INFO"," ***** end postProcessRequest *****", isDebugEnabled) + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled) + + try { + String nsInstanceId = execution.getVariable("nsInstanceId") + String operationStatus = execution.getVariable("operationStatus") + // RESTResponse for main flow + String createVFCResourceRestRsp = """{"nsInstanceId":"${nsInstanceId}","operationStatus":"${operationStatus}"}""".trim() + utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + createVFCResourceRestRsp, isDebugEnabled) + sendWorkflowResponse(execution, 202, createVFCResourceRestRsp) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + utils.log("DEBUG", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("DEBUG"," ***** Exit sendSyncResopnse *****", isDebugEnabled) + } +}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy new file mode 100644 index 0000000000..682421e806 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy @@ -0,0 +1,367 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.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.VidUtils; +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonSlurper + + + +public class DeleteVfModuleInfra extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVfModuleInfra.class); + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'DELVfModI_') + execution.setVariable('DELVfModI_requestInfo', null) + execution.setVariable('DELVfModI_requestId', null) + execution.setVariable('DELVfModI_source', null) + execution.setVariable('DELVfModI_vnfInputs', null) + execution.setVariable('DELVfModI_vnfId', null) + execution.setVariable('DELVfModI_vfModuleId', null) + execution.setVariable('DELVfModI_tenantId', null) + execution.setVariable('DELVfModI_volumeGroupId', null) + execution.setVariable('DELVfModI_vnfParams', null) + execution.setVariable('DELVfModI_updateInfraRequest', null) + execution.setVariable('DeleteVfModuleRequest', null) + execution.setVariable('DeleteVfModuleSuccessIndicator', false) + } + + /** + * Process the incoming DELETE_VF_MODULE vnf-request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + execution.setVariable("isVidRequest", "false") + initProcessVariables(execution) + + def prefix = execution.getVariable('prefix') + + def incomingRequest = execution.getVariable('bpmnRequest') + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + + // check if request is xml or json + try { + def jsonSlurper = new JsonSlurper() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + msoLogger.debug("serviceInstanceId is: " + serviceInstanceId) + def vnfId = execution.getVariable('vnfId') + msoLogger.debug("vnfId is: " + vnfId) + def cloudConfiguration = jsonUtil.getJsonValue(incomingRequest, "requestDetails.cloudConfiguration") + execution.setVariable("cloudConfiguration", cloudConfiguration) + msoLogger.debug("CloudConfiguration is: " + cloudConfiguration) + def vfModuleModelInfo = jsonUtil.getJsonValue(incomingRequest, "requestDetails.modelInfo") + + execution.setVariable("vfModuleModelInfo", vfModuleModelInfo) + msoLogger.debug("VfModuleModelInfo is: " + vfModuleModelInfo) + + // This is aLaCarte flow, so aLaCarte flag is always on + execution.setVariable('aLaCarte', true) + + def vidUtils = new VidUtils(this) + + String requestInXmlFormat = vidUtils.createXmlVfModuleRequest(execution, reqMap, 'DELETE_VF_MODULE', serviceInstanceId) + + msoLogger.debug(" Request in XML format: " + requestInXmlFormat) + + setBasicDBAuthHeader(execution, isDebugLogEnabled) + + execution.setVariable(prefix + 'Request', requestInXmlFormat) + execution.setVariable(prefix+'vnfId', vnfId) + execution.setVariable("isVidRequest", "true") + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request") + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request") + } + + + try { + + String request = validateRequest(execution) + execution.setVariable('DeleteVfModuleRequest', request) + msoLogger.debug("DeleteVfModuleInfra Request: " + request) + + def requestInfo = getRequiredNodeXml(execution, request, 'request-info') + execution.setVariable('DELVfModI_requestInfo', requestInfo) + execution.setVariable('DELVfModI_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) + execution.setVariable('DELVfModI_source', getNodeTextForce(requestInfo, 'source')) + + def vnfInputs = getRequiredNodeXml(execution, request, 'vnf-inputs') + execution.setVariable('DELVfModI_vnfInputs', vnfInputs) + execution.setVariable('DELVfModI_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id')) + execution.setVariable('DELVfModI_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id')) + execution.setVariable('DELVfModI_vfModuleName', getNodeTextForce(vnfInputs, 'vf-module-name')) + execution.setVariable('DELVfModI_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id')) + execution.setVariable('DELVfModI_volumeGroupId', getNodeTextForce(vnfInputs, 'volume-group-id')) + + def vnfParams = utils.getNodeXml(request, 'vnf-params') + execution.setVariable('DELVfModI_vnfParams', vnfParams) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception in "+method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage()) + } + } + + /** + * Sends the 'IN_PROGRESS' synchronous response. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendResponse(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = execution.getVariable('DELVfModI_requestInfo') + def requestId = execution.getVariable('DELVfModI_requestId') + def source = execution.getVariable('DELVfModI_source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vfModuleId = execution.getVariable('DELVfModI_vfModuleId') + String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug("DeleteVfModuleInfra Synch Response: " + synchResponse) + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception in "+method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + /** + * Currently passing the entire DELETE_VF_MODULE vnf-request to DoDeleteVfModule. + * 'DeleteVfModuleRequest' is now being set in preProcessRequest(). + * TBD: may want to eventually create a specific request that only contains the needed fields. + * + * @param execution The flow's execution instance. + */ + public void prepDoDeleteVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoDeleteVfModule(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoDeleteVfModule(): ' + e.getMessage()) + } + } + + /** + * Prepare the DB update to add an entry for the Vf Module request. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('DELVfModI_requestId') + def vnfId = execution.getVariable('DELVfModI_vnfId') + def vfModuleId = execution.getVariable('DELVfModI_vfModuleId') + def tenantId = execution.getVariable('DELVfModI_tenantId') + def volumeGroupId = execution.getVariable('DELVfModI_volumeGroupId') + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <requestStatus>COMPLETED</requestStatus> + <progress>100</progress> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('DELVfModI_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepInfraRequest(): ' + e.getMessage()) + } + } + + /** + * Builds a "CompletionHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void completionHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.completionHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def request = execution.getVariable("DeleteVfModuleRequest") + def requestInfo = utils.getNodeXml(request, 'request-info', false) + def action = utils.getNodeText(requestInfo, "action") + + String content = + """ <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:ns8="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + ${requestInfo} + </request-info> + <ns8:status-message>Vf Module has been deleted successfully.</ns8:status-message> + <ns8:mso-bpel-name>BPMN</ns8:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Builds a "FalloutHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void falloutHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.falloutHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def prefix = execution.getVariable('prefix') + def request = execution.getVariable("DeleteVfModuleRequest") + def requestInfo = utils.getNodeXml(request, 'request-info', false) + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInfo} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error') + } + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy new file mode 100644 index 0000000000..2cbfeac239 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy @@ -0,0 +1,545 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil; +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.VidUtils; +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +import groovy.json.JsonSlurper + +/** + * This groovy class supports the <class>DeleteVfModuleVolume.bpmn</class> process. + */ +public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVfModuleVolumeInfraV1.class); + + private XmlParser xmlParser = new XmlParser() + /** + * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + execution.setVariable('prefix', 'DELVfModVol_') + execution.setVariable("DELVfModVol_volumeRequest", null) + execution.setVariable('DELVfModVol_requestInfo', null) + execution.setVariable('DELVfModVol_requestId', null) + execution.setVariable('DELVfModVol_source', null) + execution.setVariable('DELVfModVol_volumeInputs', null) + execution.setVariable('DELVfModVol_volumeOutputs', null) + execution.setVariable('DELVfModVol_volumeGroupId', null) + execution.setVariable('DELVfModVol_vnfType', null) + execution.setVariable('DELVfModVol_serviceId', null) + execution.setVariable('DELVfModVol_cloudRegion', null) + execution.setVariable('DELVfModVol_tenantId', null) + execution.setVariable('DELVfModVol_volumeParams', null) + execution.setVariable('DELVfModVol_volumeGroupHeatStackId', null) + execution.setVariable('DELVfModVol_volumeGroupTenantId', null) + execution.setVariable("DELVfModVol_queryAAIVolGrpResponse", null) + execution.setVariable('DELVfModVol_messageId', null) + execution.setVariable('DELVfModVol_deleteVnfARequest', null) + execution.setVariable('DELVfModVol_updateInfraRequest', null) + execution.setVariable('DELVfModVol_CompleteMsoProcessRequest', null) + execution.setVariable('DELVfModVol_WorkflowException', null) + execution.setVariable('DELVfModVol_TransactionSuccessIndicator', false) + execution.setVariable("DELVfModVol_isErrorMessageException", false) + execution.setVariable('DELVfModVol_syncResponseSent', false) + } + + /** + * Perform initial processing, such as request validation, initialization of variables, etc. + * * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + preProcessRequest(execution, isDebugEnabled) + } + + /** + * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution, isDebugLogEnabled) { + + InitializeProcessVariables(execution) + + String createVolumeIncoming = validateRequest(execution) + + // check if request is xml or json + try { + def jsonSlurper = new JsonSlurper() + Map reqMap = jsonSlurper.parseText(createVolumeIncoming) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def volumeGroupId = execution.getVariable('volumeGroupId') + def vidUtils = new VidUtils(this) + createVolumeIncoming = vidUtils.createXmlVolumeRequest(reqMap, 'DELETE_VF_MODULE_VOL', serviceInstanceId, volumeGroupId) + execution.setVariable("DELVfModVol_isVidRequest", true) + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is in XML format.") + // assume request is in XML format - proceed as usual to process XML request + } + + String request = utils.getNodeXml(createVolumeIncoming, "volume-request").drop(38).trim().replace("tag0:","").replace(":tag0","") + execution.setVariable("DELVfModVol_volumeRequest", request) + + def requestInfo = getRequiredNodeXml(execution, request, 'request-info') + execution.setVariable('DELVfModVol_requestInfo', requestInfo) + String requestId = execution.getVariable("mso-request-id") + if (requestId == null || requestId == "") { + requestId = getRequiredNodeText(execution, requestInfo, 'request-id') + } + execution.setVariable('DELVfModVol_requestId', requestId) + execution.setVariable('DELVfModVol_source', getNodeTextForce(requestInfo, 'source')) + + def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs') + execution.setVariable('DELVfModVol_volumeInputs', volumeInputs) + execution.setVariable('DELVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id')) + execution.setVariable('DELVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type')) + execution.setVariable('DELVfModVol_serviceId', utils.getNodeText(volumeInputs, 'service-id')) + execution.setVariable('DELVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id')) + execution.setVariable('DELVfModVol_messageId', UUID.randomUUID().toString()) + execution.setVariable('DELVfModVol_volumeOutputs', utils.getNodeXml(request, 'volume-outputs', false)) + execution.setVariable('DELVfModVol_volumeParams', utils.getNodeXml(request, 'volume-params')) + execution.setVariable('DELVfModVol_cloudRegion', utils.getNodeText(request, 'aic-cloud-region')) + + setBasicDBAuthHeader(execution, isDebugLogEnabled) + + msoLogger.debug('Request: ' + createVolumeIncoming) + } + + public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) { + + String volumeRequest = execution.getVariable("DELVfModVol_volumeRequest") + msoLogger.debug(" DELVfModVol_volumeRequest - " + "\n" + volumeRequest) + // RESTResponse (for API Handler (APIH) Reply Task) + String deleteVolumeRequest = + """<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd" statusCode="200"> + <rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd" + contentType="text/xml"> + ${volumeRequest} + </rest:payload> + </rest:RESTResponse>""".trim() + + def isVidRequest = execution.getVariable('DELVfModVol_isVidRequest') + def syncResponse = '' + + if(isVidRequest) { + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def volumeGroupId = execution.getVariable('volumeGroupId') + def requestId = execution.getVariable('DELVfModVol_requestId') + syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim() + } + else { + syncResponse = utils.formatXml(deleteVolumeRequest) + } + + execution.setVariable('DELVfModVol_syncResponseSent', true) + + sendWorkflowResponse(execution, 200, syncResponse) + } + + + public void sendSyncError (DelegateExecution execution, isDebugEnabled) { + WorkflowException we = execution.getVariable('WorkflowException') + def errorCode = we?.getErrorCode() + def errorMessage = we?.getErrorMessage() + //default to 400 since only invalid request will trigger this method + sendWorkflowResponse(execution, 400, errorMessage) + } + + + public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) { + + String cloudRegion = execution.getVariable('DELVfModVol_cloudRegion') + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + execution.setVariable("DELVfModVol_queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug(" DELVfModVol_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if ((cloudRegion != "ERROR")) { + if(execution.getVariable("DELVfModVol_queryCloudRegionReturnCode") == "404"){ + execution.setVariable("DELVfModVol_aicCloudRegion", "AAIAIC25") + }else{ + execution.setVariable("DELVfModVol_aicCloudRegion", cloudRegion) + } + execution.setVariable("DELVfModVol_cloudRegion", cloudRegion) + execution.setVariable("DELVfModVol_isCloudRegionGood", true) + + } else { + msoLogger.debug("AAI Query Cloud Region Unsuccessful.") + execution.setVariable("DELVfModVol_isCloudRegionGood", false) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable("DELVfModVol_queryCloudRegionReturnCode")) + } + + msoLogger.debug(" is Cloud Region Good: " + execution.getVariable("DELVfModVol_isCloudRegionGood")) + } + + /** + * Query volume group by id + * @param execution + */ + public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) { + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId') + if(volumeGroupId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, 'volume-group-id is not provided in the request') + throw new Exception('volume-group-id is not provided in the request') + } + String cloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8") + + msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query volume group by id return code: " + returnCode) + msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString) + + execution.setVariable("DELVfModVol_queryAAIVolGrpResponse", aaiResponseAsString) + + if (returnCode=='200' || returnCode == '204') { + + def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id') + execution.setVariable('DELVfModVol_volumeGroupHeatStackId', heatStackId) + + if(hasVfModuleRelationship(aaiResponseAsString)){ + msoLogger.debug('Volume Group ' + volumeGroupId + ' currently in use') + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.") + } + + def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString) + if (volumeGroupTenantId == null) { + msoLogger.debug("Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}") + } + + execution.setVariable('DELVfModVol_volumeGroupTenantId', volumeGroupTenantId) + msoLogger.debug('Received Tenant Id ' + volumeGroupTenantId + ' from AAI for Volume Group with Volume Group Id ' + volumeGroupId ) + } + else { + if (returnCode=='404') { + msoLogger.debug("Volume Group ${volumeGroupId} not found in AAI") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} not found in AAI. Response code: 404") + } + else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + /** + * Extract the Tenant Id from the Volume Group information returned by AAI. + * + * @param volumeGroupXml Volume Group XML returned by AAI. + * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if + * the Tenant Id is missing or could not otherwise be extracted. + */ + private String getTenantIdFromVolumeGroup(String volumeGroupXml) { + def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml) + def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list') + if (relationshipList != null) { + def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship') + for (Node relationship in relationships) { + def Node relatedTo = utils.getChildNode(relationship, 'related-to') + if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) { + def NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data') + for (Node relationshipData in relationshipDataList) { + def Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key') + if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) { + def Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value') + if (relationshipValue != null) { + return relationshipValue.text() + } + } + } + } + } + } + return null + } + + private boolean hasVnfRelationship(String volumeGroupXml) { + def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml) + def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list') + if (relationshipList != null) { + def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship') + for (Node relationship in relationships) { + def Node relatedTo = utils.getChildNode(relationship, 'related-to') + if ((relatedTo != null) && (relatedTo.text().equals('generic-vnf'))) { + def Node relatedLink = utils.getChildNode(relationship, 'related-link') + if (relatedLink !=null && relatedLink.text() != null){ + return true + } + } + } + } + return false + } + + private boolean hasVfModuleRelationship(String volumeGroupXml) { + def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml) + def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list') + if (relationshipList != null) { + def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship') + for (Node relationship in relationships) { + def Node relatedTo = utils.getChildNode(relationship, 'related-to') + if ((relatedTo != null) && (relatedTo.text().equals('vf-module'))) { + def Node relatedLink = utils.getChildNode(relationship, 'related-link') + if (relatedLink !=null && relatedLink.text() != null){ + return true + } + } + } + } + return false + } + + public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) { + def cloudRegion = execution.getVariable('DELVfModVol_cloudRegion') + def tenantId = execution.getVariable('DELVfModVol_tenantId') + def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId') + def volumeGroupHeatStackId = execution.getVariable('DELVfModVol_volumeGroupHeatStackId') + def requestId = execution.getVariable('DELVfModVol_requestId') + def serviceId = execution.getVariable('DELVfModVol_serviceId') + + def messageId = execution.getVariable('DELVfModVol_messageId') + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host", execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String vnfAdapterRestRequest = """ + <deleteVolumeGroupRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteVolumeGroupRequest> + """ + vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest) + execution.setVariable('DELVfModVol_deleteVnfARequest', vnfAdapterRestRequest) + msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest) + } + + + public void deleteVolGrpId(DelegateExecution execution, isDebugEnabled) { + + // get variables + String queryAAIVolGrpIdResponse = execution.getVariable("DELVfModVol_queryAAIVolGrpResponse") + String groupId = utils.getNodeText(queryAAIVolGrpIdResponse, "volume-group-id") + String resourceVersion = utils.getNodeText(queryAAIVolGrpIdResponse, "resource-version") + String messageId = execution.getVariable('DELVfModVol_messageId') + String cloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(groupId, "UTF-8") + + if(resourceVersion !=null){ + deleteAAIVolumeGrpIdRequest = deleteAAIVolumeGrpIdRequest +'?resource-version=' + UriUtils.encode(resourceVersion, 'UTF-8') + } + + msoLogger.debug("Delete AAI volume group : " + deleteAAIVolumeGrpIdRequest) + + APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI delete volume group return code: " + returnCode) + msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + if (returnCode=='200' || (returnCode == '204')) { + msoLogger.debug("Volume group $groupId deleted.") + } else { + if (returnCode=='404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $groupId not found for delete in AAI Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + public void prepareDBRequest (DelegateExecution execution, isDebugLogEnabled) { + + WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException") + ExceptionUtil exceptionUtil = new ExceptionUtil(); + def requestId = execution.getVariable('DELVfModVol_requestId') + def volOutputs = execution.getVariable('DELVfModVol_volumeOutputs') + def statusMessage = "VolumeGroup successfully deleted" + def progress = "100" + def requestStatus = "COMPLETE" + + if (workflowExceptionObj != null) { + statusMessage = (workflowExceptionObj.getErrorMessage()) + execution.setVariable("DELVfModVol_WorkflowExceptionMessage", statusMessage) + execution.setVariable("DELVfModVol_WorkflowExceptionCode", workflowExceptionObj.getErrorCode()) + requestStatus = "FAILURE" + progress = "" + } + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPMN</lastModifiedBy> + <statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage> + <requestStatus>${MsoUtils.xmlEscape(requestStatus)}</requestStatus> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <vnfOutputs>${MsoUtils.xmlEscape(volOutputs)}</vnfOutputs> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('DELVfModVol_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + + } + + + public void prepareCompletionHandlerRequest (DelegateExecution execution, isDebugLogEnabled) { + def requestId = execution.getVariable("mso-request-id") + def source = execution.getVariable("DELVfModVol_source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>Volume Group has been deleted successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN VF Module Volume action: DELETE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + execution.setVariable('DELVfModVol_CompleteMsoProcessRequest', xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } + + + + public void prepareFalloutHandler (DelegateExecution execution, isDebugEnabled) { + + execution.setVariable("DELVfModVol_Success", false) + String requestId = execution.getVariable("DELVfModVol_requestId") + String source = execution.getVariable("DELVfModVol_source") + + WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException") + def errorMessage = workflowExceptionObj.getErrorMessage() + def errorCode = workflowExceptionObj.getErrorCode() + + String falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:WorkflowException> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + // Format Response + String xmlHandlerRequest = utils.formatXml(falloutHandlerRequest) + msoLogger.debug(xmlHandlerRequest) + + execution.setVariable("DELVfModVol_FalloutHandlerRequest", xmlHandlerRequest) + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Overall Error Response going to FalloutHandler", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "\n" + xmlHandlerRequest); + + } + + + /** + * Create a WorkflowException for the error case where the Tenant Id from + * AAI did not match the Tenant Id in the incoming request. + * + * @param execution The flow's execution instance. + */ + public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) { + + def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId') + def aicCloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion') + def tenantId = execution.getVariable('DELVfModVol_tenantId') + def volumeGroupTenantId = execution.getVariable('DELVfModVol_volumeGroupTenantId') + + def String errorMessage = 'TenantId ' + tenantId + ' in incoming request does not match Tenant Id ' + volumeGroupTenantId + + ' retrieved from AAI for Volume Group Id ' + volumeGroupId + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Error in DeleteVfModuleVolume: " + "\n" + errorMessage, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + exceptionUtil.buildWorkflowException(execution, 5000, errorMessage) + + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy new file mode 100644 index 0000000000..9dfb9107b2 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy @@ -0,0 +1,207 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.VidUtils; +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils; +import org.onap.so.logger.MsoLogger + + +/** + * This class supports the DeleteVnfInfra Flow + * with the Deletion of a generic vnf for + * infrastructure. + */ +class DeleteVnfInfra extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVnfInfra.class); + + String Prefix="DELVI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + */ + public void preProcessRequest(DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DeleteVnfInfra PreProcessRequest Process") + + execution.setVariable("DELVI_SuccessIndicator", false) + execution.setVariable("DELVI_vnfInUse", false) + + try{ + // Get Variables + String deleteVnfRequest = execution.getVariable("bpmnRequest") + execution.setVariable("DELVI_DeleteVnfRequest", deleteVnfRequest) + msoLogger.debug("Incoming DeleteVnfInfra Request is: \n" + deleteVnfRequest) + + if(deleteVnfRequest != null){ + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("DELVI_requestId", requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + execution.setVariable("DELVI_serviceInstanceId", serviceInstanceId) + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfId = execution.getVariable("vnfId") + execution.setVariable("DELVI_vnfId", vnfId) + msoLogger.debug("Incoming Vnf(Instance) Id is: " + vnfId) + + String source = jsonUtil.getJsonValue(deleteVnfRequest, "requestDetails.requestInfo.source") + execution.setVariable("DELVI_source", source) + msoLogger.debug("Incoming Source is: " + source) + + def cloudConfiguration = jsonUtil.getJsonValue(deleteVnfRequest, "requestDetails.cloudConfiguration") + execution.setVariable("DELVI_cloudConfiguration", cloudConfiguration) + + boolean cascadeDelete = false + Boolean cascadeDeleteObj = jsonUtil.getJsonRawValue(deleteVnfRequest, "requestDetails.requestParameters.cascadeDelete") + if(cascadeDeleteObj!=null){ + cascadeDelete = cascadeDeleteObj.booleanValue() + } + execution.setVariable("DELVI_cascadeDelete", cascadeDelete) + msoLogger.debug("Incoming cascadeDelete is: " + cascadeDelete) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("DELVI_requestInfo", requestInfo) + + // Setting for sub flow calls + execution.setVariable("DELVI_type", "generic-vnf") + + }else{ + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Incoming Bpmn Request is Null.") + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DeleteVnfInfra PreProcessRequest method!" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra PreProcessRequest") + + } + msoLogger.trace("COMPLETED DeleteVnfInfra PreProcessRequest Process") + } + + public void sendSyncResponse (DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED DeleteVnfInfra SendSyncResponse Process") + + try { + String requestId = execution.getVariable("DELVI_requestId") + String vnfId = execution.getVariable("DELVI_vnfId") + + String DeleteVnfResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug("DeleteVnfInfra Sync Response is: \n" + DeleteVnfResponse) + execution.setVariable("DELVI_sentSyncResponse", true) + + sendWorkflowResponse(execution, 202, DeleteVnfResponse) + + } catch (Exception ex) { + msoLogger.debug("Error Occured in DeleteVnfInfra SendSyncResponse Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra SendSyncResponse Process") + + } + msoLogger.trace("COMPLETED DeleteVnfInfra SendSyncResponse Process") + } + + public void prepareCompletionHandlerRequest(DelegateExecution execution){ + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED DeleteVnfInfra PrepareCompletionHandlerRequest Process") + + try { + String requestInfo = execution.getVariable("DELVI_requestInfo") + requestInfo = utils.removeXmlPreamble(requestInfo) + String vnfId = execution.getVariable("DELVI_vnfId") + + String request = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + ${requestInfo} + <status-message>Vnf has been deleted successfully.</status-message> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <mso-bpel-name>DeleteVnfInfra</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + execution.setVariable("DELVI_completionHandlerRequest", request) + msoLogger.debug("Completion Handler Request is: " + request) + + execution.setVariable("WorkflowResponse", "Success") // for junits + + } catch (Exception ex) { + msoLogger.debug("Error Occured in DeleteVnfInfra PrepareCompletionHandlerRequest Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra PrepareCompletionHandlerRequest Process") + + } + msoLogger.trace("COMPLETED DeleteVnfInfra PrepareCompletionHandlerRequest Process") + } + + public void sendErrorResponse(DelegateExecution execution){ + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED DeleteVnfInfra sendErrorResponse Process") + try { + def sentSyncResponse = execution.getVariable("DELVI_sentSyncResponse") + if(sentSyncResponse == false){ + msoLogger.debug("Sending a Sync Error Response") + WorkflowException wfex = execution.getVariable("WorkflowException") + String response = exceptionUtil.buildErrorResponseXml(wfex) + + msoLogger.debug(response) + sendWorkflowResponse(execution, 500, response) + }else{ + msoLogger.debug("A Sync Response has already been sent. Skipping Send Sync Error Response.") + } + + } catch(Exception ex) { + msoLogger.debug("Error Occured in DeleteVnfInfra sendErrorResponse Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra sendErrorResponse Process") + } + msoLogger.trace("COMPLETED DeleteVnfInfra sendErrorResponse Process") + } + + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy new file mode 100644 index 0000000000..98605fea8b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy @@ -0,0 +1,258 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.ServiceInstance +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.AllottedResource +import org.onap.so.bpmn.core.domain.NetworkResource +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.common.recipe.ResourceInput +import org.onap.so.bpmn.common.recipe.BpmnRestClient +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.CatalogDbUtils; +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import java.util.List; +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.runtime.Execution +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject; +import org.json.JSONArray; +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + + +/** + * This groovy class supports the <class>DoCompareModelVersions.bpmn</class> process. + * + * Inputs: + * @param - model-invariant-id-target + * @param - model-version-id-target + * @param - model-invariant-id-original + * @param - model-version-id-original + * + * Outputs: + * @param - addResourceList + * @param - delResourceList + * + */ +public class DoCompareModelVersions extends AbstractServiceTaskProcessor { + + String Prefix="DCMPMDV_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils cutils = new CatalogDbUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + utils.log("INFO"," ***** preProcessRequest *****", isDebugEnabled) + + try { + execution.setVariable("prefix", Prefix) + + //Inputs + String modelInvariantUuid_target = execution.getVariable("model-invariant-id-target") + if (isBlank(modelInvariantUuid_target)) { + msg = "Input model-invariant-id-target is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String modelUuid_target = execution.getVariable("model-version-id-target") + if (isBlank(modelUuid_target)) { + msg = "Input model-version-id-target is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String modelInvariantUuid_original = execution.getVariable("model-invariant-id-original") + if (isBlank(modelInvariantUuid_original)) { + msg = "Input model-invariant-id-original is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String modelUuid_original = execution.getVariable("model-version-id-original") + if (isBlank(modelUuid_original)) { + msg = "Input model-version-id-original is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + // Target and original modelInvariantUuid must to be the same + if(modelInvariantUuid_target != modelInvariantUuid_original){ + msg = "Input model-invariant-id-target and model-invariant-id-original must to be the same" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + // Target and original modelUuid must not to be the same + if(modelUuid_target == modelUuid_original){ + msg = "Input model-version-id-target and model-version-id-original must not to be the same" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," ***** Exit preProcessRequest *****", isDebugEnabled) + } + + public void prepareDecomposeService_Target(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + try { + utils.log("DEBUG", " ***** Inside prepareDecomposeService_Target of update generic e2e service ***** ", isDebugEnabled) + String modelInvariantUuid = execution.getVariable("model-invariant-id-target") + String modelUuid = execution.getVariable("model-version-id-target") + //here modelVersion is not set, we use modelUuid to decompose the service. + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "modelVersion":"" + }""" + + execution.setVariable("serviceModelInfo_Target", serviceModelInfo) + + utils.log("DEBUG", " ***** Completed prepareDecomposeService_Target of update generic e2e service ***** ", isDebugEnabled) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method prepareDecomposeService_Target() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void processDecomposition_Target(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + utils.log("DEBUG", " ***** Inside processDecomposition_Target() of update generic e2e service flow ***** ", isDebugEnabled) + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + execution.setVariable("serviceDecomposition_Target", serviceDecomposition) + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method processDecomposition_Target() - " + ex.getMessage() + utils.log("DEBUG", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void prepareDecomposeService_Original(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + try { + utils.log("DEBUG", " ***** Inside prepareDecomposeService_Original of update generic e2e service ***** ", isDebugEnabled) + String modelInvariantUuid = execution.getVariable("model-invariant-id-original") + String modelUuid = execution.getVariable("model-version-id-original") + //here modelVersion is not set, we use modelUuid to decompose the service. + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "modelVersion":"" + }""" + + execution.setVariable("serviceModelInfo_Original", serviceModelInfo) + + utils.log("DEBUG", " ***** Completed prepareDecomposeService_Original of update generic e2e service ***** ", isDebugEnabled) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method prepareDecomposeService_Original() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void processDecomposition_Original(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + utils.log("DEBUG", " ***** Inside processDecomposition_Original() of update generic e2e service flow ***** ", isDebugEnabled) + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + execution.setVariable("serviceDecomposition_Original", serviceDecomposition) + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. processDecomposition_Original() - " + ex.getMessage() + utils.log("DEBUG", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void doCompareModelVersions(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start doCompareModelVersions Process ======== ", isDebugEnabled) + + ServiceDecomposition serviceDecomposition_Target = execution.getVariable("serviceDecomposition_Target") + ServiceDecomposition serviceDecomposition_Original = execution.getVariable("serviceDecomposition_Original") + + List<Resource> allSR_target = serviceDecomposition_Target.getServiceResources(); + List<Resource> allSR_original = serviceDecomposition_Original.getServiceResources(); + + List<Resource> addResourceList = new ArrayList<String>() + List<Resource> delResourceList = new ArrayList<String>() + + addResourceList.addAll(allSR_target) + delResourceList.addAll(allSR_original) + + //Compare + for (Resource rc_t : allSR_target){ + String muuid = rc_t.getModelInfo().getModelUuid() + String mIuuid = rc_t.getModelInfo().getModelInvariantUuid() + String mCuuid = rc_t.getModelInfo().getModelCustomizationUuid() + for (Resource rc_o : allSR_original){ + if(rc_o.getModelInfo().getModelUuid() == muuid + && rc_o.getModelInfo().getModelInvariantUuid() == mIuuid + && rc_o.getModelInfo().getModelCustomizationUuid() == mCuuid) { + addResourceList.remove(rc_t); + delResourceList.remove(rc_o); + } + } + } + + execution.setVariable("addResourceList", addResourceList) + execution.setVariable("delResourceList", delResourceList) + utils.log("INFO", "addResourceList: " + addResourceList, isDebugEnabled) + utils.log("INFO", "delResourceList: " + delResourceList, isDebugEnabled) + + utils.log("INFO", "======== COMPLETED doCompareModelVersions Process ======== ", isDebugEnabled) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy new file mode 100644 index 0000000000..eceba5abe3 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy @@ -0,0 +1,260 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.ServiceInstance +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.CompareModelsResult +import org.onap.so.bpmn.core.domain.ResourceModelInfo +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.resource.ResourceRequestBuilder +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + + +import java.util.List +import java.util.Map +import java.util.UUID; +import javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject; +import org.json.JSONArray; +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils; + +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource +/** + * This groovy class supports the <class>DoCompareModelofE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId + * @param - subscriptionServiceType + * @param - serviceInstanceId + * @param - modelInvariantIdTarget + * @param - modelVersionIdTarget + * + * Outputs: + * @param - compareModelsResult CompareModelsResult + + */ +public class DoCompareModelofE2EServiceInstance extends AbstractServiceTaskProcessor { + + String Prefix="DCMPMDSI_" + private static final String DebugFlag = "isDebugEnabled" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO","Entered " + method, isDebugEnabled) + String msg = "" + utils.log("INFO"," ***** Enter DoCompareModelofE2EServiceInstance preProcessRequest *****", isDebugEnabled) + + execution.setVariable("prefix", Prefix) + //Inputs + + //subscriberInfo. for AAI GET + String globalSubscriberId = execution.getVariable("globalSubscriberId") + utils.log("INFO"," ***** globalSubscriberId *****" + globalSubscriberId, isDebugEnabled) + + String serviceType = execution.getVariable("serviceType") + utils.log("INFO"," ***** serviceType *****" + serviceType, isDebugEnabled) + + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (isBlank(serviceType)) { + msg = "Input serviceType is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String modelInvariantUuid = execution.getVariable("modelInvariantIdTarget") + if (isBlank(modelInvariantUuid)){ + msg = "Input modelInvariantUuid is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String modelUuid = execution.getVariable("modelVersionIdTarget") + if (isBlank(modelUuid)){ + msg = "Input modelUuid is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + // Set Target Template info + execution.setVariable("model-invariant-id-target", modelInvariantUuid) + execution.setVariable("model-version-id-target", modelUuid) + + + utils.log("INFO", "Exited " + method, isDebugEnabled) + } + + public void postProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled) + String msg = "" + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" + + if(foundInAAI){ + utils.log("INFO","Found Service-instance in AAI", isDebugEnabled) + + String siData = execution.getVariable("GENGS_service") + utils.log("INFO", "SI Data", isDebugEnabled) + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI, Id:" + serviceInstanceId + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else + { + utils.log("INFO", "SI Data" + siData, isDebugEnabled) + + // Get Template uuid and version + if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) { + utils.log("INFO", "SI Data model-invariant-id and model-version-id exist", isDebugEnabled) + + def modelInvariantId = utils.getNodeText(siData, "model-invariant-id") + def modelVersionId = utils.getNodeText(siData, "model-version-id") + + // Set Original Template info + execution.setVariable("model-invariant-id-original", modelInvariantId) + execution.setVariable("model-version-id-original", modelVersionId) + } + } + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled) + } + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + public void postCompareModelVersions(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + + List<Resource> addResourceList = execution.getVariable("addResourceList") + List<Resource> delResourceList = execution.getVariable("delResourceList") + + CompareModelsResult cmpResult = new CompareModelsResult() + List<ResourceModelInfo> addedResourceList = new ArrayList<ResourceModelInfo>() + List<ResourceModelInfo> deletedResourceList = new ArrayList<ResourceModelInfo>() + + + String serviceModelUuid = execution.getVariable("model-version-id-target") + List<String> requestInputs = new ArrayList<String>() + ModelInfo mi = null; + for(Resource rc : addResourceList) { + mi = rc.getModelInfo() + String resourceCustomizationUuid = mi.getModelCustomizationUuid() + ResourceModelInfo rmodel = new ResourceModelInfo() + rmodel.setResourceName(mi.getModelName()) + rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid()) + rmodel.setResourceUuid(mi.getModelUuid()) + rmodel.setResourceCustomizationUuid(resourceCustomizationUuid) + addedResourceList.add(rmodel) + + Map<String, Object> resourceParameters = ResourceRequestBuilder.buildResouceRequest(serviceModelUuid, resourceCustomizationUuid, null) + requestInputs.addAll(resourceParameters.keySet()) + } + + for(Resource rc : delResourceList) { + mi = rc.getModelInfo() + String resourceCustomizationUuid = mi.getModelCustomizationUuid() + ResourceModelInfo rmodel = new ResourceModelInfo() + rmodel.setResourceName(mi.getModelName()) + rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid()) + rmodel.setResourceUuid(mi.getModelUuid()) + rmodel.setResourceCustomizationUuid(resourceCustomizationUuid) + deletedResourceList.add(rmodel) + } + + cmpResult.setAddedResourceList(addedResourceList) + cmpResult.setDeletedResourceList(deletedResourceList) + cmpResult.setRequestInputs(requestInputs) + + execution.setVariable("compareModelsResult", cmpResult) + } + +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy new file mode 100644 index 0000000000..bb48671e73 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy @@ -0,0 +1,451 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils; +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils; + +import groovy.json.* + + + +/** + * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId + * @param - subscriptionServiceType + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceModelInfo + * @param - productFamilyId + * @param - disableRollback + * @param - failExists - TODO + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion ("1610") + * @param - serviceDecomposition - Decomposition for R1710 + * (if macro provides serviceDecompsition then serviceModelInfo, serviceInstanceId & serviceInstanceName will be ignored) + * + * Outputs: + * @param - rollbackData (localRB->null) + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * @param - WorkflowException + * @param - serviceInstanceName - (GET from AAI if null in input) + * + */ +public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateE2EServiceInstance.class); + + + String Prefix="DCRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils cutils = new CatalogDbUtils() + + public void preProcessRequest (DelegateExecution execution) { + String msg = "" + msoLogger.trace("preProcessRequest ") + + try { + execution.setVariable("prefix", Prefix) + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + msoLogger.info(" ***** globalSubscriberId *****" + globalSubscriberId) + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + msoLogger.info(" ***** serviceType *****" + serviceType) + //requestDetails.requestParameters. for SDNC assignTopology + String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId + + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (isBlank(serviceType)) { + msg = "Input serviceType is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (productFamilyId == null) { + execution.setVariable("productFamilyId", "") + } + + String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback') + if (isBlank(sdncCallbackUrl)) { + msg = "URN_mso_workflow_sdncadapter_callback is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl) + + //requestDetails.modelInfo.for AAI PUT servieInstanceData + //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData + String serviceInstanceName = execution.getVariable("serviceInstanceName") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String uuiRequest = execution.getVariable("uuiRequest") + String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid") + String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid") + String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName") + execution.setVariable("serviceModelName", serviceModelName) + //aai serviceType and Role can be setted as fixed value now. + String aaiServiceType = "E2E Service" + String aaiServiceRole = "E2E Service" + + execution.setVariable("modelInvariantUuid", modelInvariantUuid) + execution.setVariable("modelUuid", modelUuid) + + //AAI PUT + String oStatus = execution.getVariable("initialStatus") ?: "" + if ("TRANSPORT".equalsIgnoreCase(serviceType)) + { + oStatus = "Created" + } + + String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${MsoUtils.xmlEscape(oStatus)}</orchestration-status>" + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) + String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri) + String serviceInstanceData = + """<service-instance xmlns=\"${namespace}\"> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + <service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type> + <service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role> + ${statusLine} + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id> + </service-instance>""".trim() + execution.setVariable("serviceInstanceData", serviceInstanceData) + msoLogger.debug(serviceInstanceData) + msoLogger.info(" aai_uri " + aai_uri + " namespace:" + namespace) + msoLogger.info(" 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void prepareDecomposeService(DelegateExecution execution) { + try { + msoLogger.trace("Inside prepareDecomposeService of create generic e2e service ") + String modelInvariantUuid = execution.getVariable("modelInvariantUuid") + String modelUuid = execution.getVariable("modelUuid") + //here modelVersion is not set, we use modelUuid to decompose the service. + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "modelVersion":"" + }""" + execution.setVariable("serviceModelInfo", serviceModelInfo) + + msoLogger.trace("Completed prepareDecomposeService of create generic e2e service ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in create generic e2e service flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void processDecomposition(DelegateExecution execution) { + msoLogger.trace("Inside processDecomposition() of create generic e2e service flow ") + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in create generic e2e service flow. processDecomposition() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void doServicePreOperation(DelegateExecution execution){ + //we need a service plugin platform here. + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String uuiRequest = execution.getVariable("uuiRequest") + String newUuiRequest = ServicePluginFactory.getInstance().preProcessService(serviceDecomposition, uuiRequest); + execution.setVariable("uuiRequest", newUuiRequest) + } + + public void doServiceHoming(DelegateExecution execution) { + //we need a service plugin platform here. + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String uuiRequest = execution.getVariable("uuiRequest") + String newUuiRequest = ServicePluginFactory.getInstance().doServiceHoming(serviceDecomposition, uuiRequest); + execution.setVariable("uuiRequest", newUuiRequest) + } + + public void postProcessAAIGET(DelegateExecution execution) { + msoLogger.trace("postProcessAAIGET ") + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + msoLogger.info("Found Service-instance in AAI") + msg = "ServiceInstance already exists in AAI:" + serviceInstanceName + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIGET. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + public void postProcessAAIPUT(DelegateExecution execution) { + msoLogger.trace("postProcessAAIPUT ") + String msg = "" + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error putting Service-instance in AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + } + else + { + //start rollback set up + RollbackData rollbackData = new RollbackData() + def disableRollback = execution.getVariable("disableRollback") + rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString()) + rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") + rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId) + rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType")) + rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId")) + execution.setVariable("rollbackData", rollbackData) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIPUT ") + } + + public void postProcessAAIGET2(DelegateExecution execution) { + msoLogger.trace("postProcessAAIGET2 ") + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET2", + serviceInstanceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET2 GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + String aaiService = execution.getVariable("GENGS_service") + if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "service-instance-name"))) { + execution.setVariable("serviceInstanceName", utils.getNodeText(aaiService, "service-instance-name")) + msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName")) + } + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIGET2 " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET2 ") + } + + public void preProcessRollback (DelegateExecution execution) { + msoLogger.trace("preProcessRollback ") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.info("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.info("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.info(msg) + } + msoLogger.trace("Exit preProcessRollback ") + } + + public void postProcessRollback (DelegateExecution execution) { + msoLogger.trace("postProcessRollback ") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.info("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.info("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.info(msg) + } + msoLogger.trace("Exit postProcessRollback ") + } + + public void preInitResourcesOperStatus(DelegateExecution execution){ + msoLogger.trace("STARTED preInitResourcesOperStatus Process ") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String resourceTemplateUUIDs = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + List<Resource> resourceList = serviceDecomposition.getServiceResources() + + for(Resource resource : resourceList){ + resourceTemplateUUIDs = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":" + } + + def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter" + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload) + msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ") + } + + // prepare input param for using DoCreateResources.bpmn + public void preProcessForAddResource(DelegateExecution execution) { + msoLogger.trace("STARTED preProcessForAddResource Process ") + + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + List<Resource> addResourceList = serviceDecomposition.getServiceResources() + execution.setVariable("addResourceList", addResourceList) + + msoLogger.trace("COMPLETED preProcessForAddResource Process ") + } + + public void postProcessForAddResource(DelegateExecution execution) { + // do nothing now + + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy new file mode 100644 index 0000000000..05a0ea86d3 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy @@ -0,0 +1,268 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + +import org.onap.so.client.aai.entities.uri.AAIResourceUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.client.aai.AAIObjectType +import org.onap.so.client.aai.AAIResourcesClient + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject; +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils; +/** + * This groovy class supports the <class>DoCreateServiceInstanceRollback.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - rollbackData with + * globalCustomerId + * subscriptionServiceType + * serviceInstanceId + * disableRollback + * rollbackAAI + * rollbackSDNC + * sdncRollbackRequest + * + * + * Outputs: + * @param - rollbackError + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * + */ +public class DoCreateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{ + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateE2EServiceInstanceRollback.class); + String Prefix="DCRESIRB_" + + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + msoLogger.trace("Start preProcessRequest") + execution.setVariable("rollbackAAI",false) + execution.setVariable("rollbackSDNC",false) + + try { + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + if (rollbackData.hasType("SERVICEINSTANCE")) { + + def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + + def globalSubscriberId = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId") + execution.setVariable("globalSubscriberId", globalSubscriberId) + + def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI") + if ("true".equals(rollbackAAI)) + { + execution.setVariable("rollbackAAI",true) + } + + def rollbackSDNC = rollbackData.get("SERVICEINSTANCE", "rollbackSDNC") + if ("true".equals(rollbackSDNC)) + { + execution.setVariable("rollbackSDNC", true) + } + + if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true) + { + execution.setVariable("skipRollback", true) + } + + def sdncDelete = rollbackData.get("SERVICEINSTANCE", "sdncDelete") + execution.setVariable("sdncDelete", sdncDelete) + def sdncDeactivate = rollbackData.get("SERVICEINSTANCE", "sdncDeactivate") + execution.setVariable("sdncDeactivate", sdncDeactivate) + msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate) + msoLogger.debug("sdncDelete:\n" + sdncDelete) + } + else { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in Create ServiceInstance Rollback preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) //TODO how does this even compile without exceptionUtil being declared + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method) { + + msoLogger.trace("validateSDNCResponse") + String msg = "" + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msg = "SDNC Adapter service-instance rollback successful for " + method + msoLogger.debug(msg) + }else{ + execution.setVariable("rolledBack", false) + msg = "Error Response from SDNC Adapter service-instance rollback for " + method + execution.setVariable("rollbackError", msg) + msoLogger.debug(msg) + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in Create ServiceInstance rollback for " + method + " Exception:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit validateSDNCResponse ") + } + + /** + * Deletes the service instance in aai + */ + public void deleteServiceInstance(DelegateExecution execution) { + msoLogger.trace("Started Delete Service Instance") + try { + String globalCustId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("subscriptionServiceType") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + AAIResourcesClient resourceClient = new AAIResourcesClient(); + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + resourceClient.delete(serviceInstanceUri) + + msoLogger.trace("Completed Delete Service Instance") + }catch(Exception e){ + msoLogger.debug("Error occured within deleteServiceInstance method: " + e) + } + } + + public void postProcessRequest(DelegateExecution execution) { + + msoLogger.trace("postProcessRequest") + String msg = "" + try { + execution.setVariable("rollbackData", null) + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean rollbackAAI = execution.getVariable("rollbackAAI") + boolean rollbackSDNC = execution.getVariable("rollbackSDNC") + if (rollbackAAI || rollbackSDNC) + { + execution.setVariable("rolledBack", true) + } + if (rollbackAAI) + { + boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator") + if(!succInAAI){ + execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful + execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback") + msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId) + } + } + msoLogger.trace("Exit postProcessRequest ") + + } catch (BpmnError e) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage() + msoLogger.debug(msg) + } catch (Exception ex) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage() + msoLogger.debug(msg) + } + + } + + public void processRollbackException(DelegateExecution execution){ + + msoLogger.trace("processRollbackException") + try{ + msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollback") + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught exception in ServiceInstance Create Rollback") + execution.setVariable("WorkflowException", null) + + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during processRollbackExceptions Method: ") + }catch(Exception e){ + msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage()) + } + + msoLogger.trace(" Exit processRollbackException") + } + + public void processRollbackJavaException(DelegateExecution execution){ + + msoLogger.trace("processRollbackJavaException") + try{ + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Create Rollback") + msoLogger.debug("Caught Exception in processRollbackJavaException") + + }catch(Exception e){ + msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage()) + } + msoLogger.trace("Exit processRollbackJavaException") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy new file mode 100644 index 0000000000..4bbaef8ecb --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy @@ -0,0 +1,1680 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +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.logger.MsoLogger +import org.onap.so.rest.APIResponse; +import org.springframework.web.util.UriUtils + +import groovy.json.* +import groovy.xml.XmlUtil + + +/** + * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process. + * + */ +public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateNetworkInstance.class); + + String Prefix="CRENWKI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + def className = getClass().getSimpleName() + + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "networkRequest", "") + execution.setVariable(Prefix + "rollbackEnabled", null) + execution.setVariable(Prefix + "networkInputs", "") + //execution.setVariable(Prefix + "requestId", "") + execution.setVariable(Prefix + "messageId", "") + execution.setVariable(Prefix + "source", "") + execution.setVariable("BasicAuthHeaderValuePO", "") + execution.setVariable("BasicAuthHeaderValueSDNC", "") + execution.setVariable(Prefix + "serviceInstanceId","") + execution.setVariable("GENGS_type", "") + execution.setVariable(Prefix + "rsrc_endpoint", null) + execution.setVariable(Prefix + "networkOutputs", "") + execution.setVariable(Prefix + "networkId","") + execution.setVariable(Prefix + "networkName","") + + // AAI query Name + execution.setVariable(Prefix + "queryNameAAIRequest","") + execution.setVariable(Prefix + "queryNameAAIResponse", "") + execution.setVariable(Prefix + "aaiNameReturnCode", "") + execution.setVariable(Prefix + "isAAIqueryNameGood", false) + + // AAI query Cloud Region + execution.setVariable(Prefix + "queryCloudRegionRequest","") + execution.setVariable(Prefix + "queryCloudRegionReturnCode","") + execution.setVariable(Prefix + "queryCloudRegionResponse","") + execution.setVariable(Prefix + "cloudRegionPo","") + execution.setVariable(Prefix + "cloudRegionSdnc","") + execution.setVariable(Prefix + "isCloudRegionGood", false) + + // AAI query Id + execution.setVariable(Prefix + "queryIdAAIRequest","") + execution.setVariable(Prefix + "queryIdAAIResponse", "") + execution.setVariable(Prefix + "aaiIdReturnCode", "") + + // AAI query vpn binding + execution.setVariable(Prefix + "queryVpnBindingAAIRequest","") + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "") + execution.setVariable(Prefix + "vpnBindings", null) + execution.setVariable(Prefix + "vpnCount", 0) + execution.setVariable(Prefix + "routeCollection", "") + + // AAI query network policy + execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest","") + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "") + execution.setVariable(Prefix + "networkPolicyUriList", null) + execution.setVariable(Prefix + "networkPolicyCount", 0) + execution.setVariable(Prefix + "networkCollection", "") + + // AAI query route table reference + execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest","") + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "") + execution.setVariable(Prefix + "networkTableRefUriList", null) + execution.setVariable(Prefix + "networkTableRefCount", 0) + execution.setVariable(Prefix + "tableRefCollection", "") + + // AAI requery Id + execution.setVariable(Prefix + "requeryIdAAIRequest","") + execution.setVariable(Prefix + "requeryIdAAIResponse", "") + execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "") + + // AAI update contrail + execution.setVariable(Prefix + "updateContrailAAIUrlRequest","") + execution.setVariable(Prefix + "updateContrailAAIPayloadRequest","") + execution.setVariable(Prefix + "updateContrailAAIResponse", "") + execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", "") + + execution.setVariable(Prefix + "createNetworkRequest", "") + execution.setVariable(Prefix + "createNetworkResponse", "") + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + //execution.setVariable(Prefix + "rollbackNetworkResponse", "") + execution.setVariable(Prefix + "networkReturnCode", "") + //execution.setVariable(Prefix + "rollbackNetworkReturnCode", "") + execution.setVariable(Prefix + "isNetworkRollbackNeeded", false) + + execution.setVariable(Prefix + "assignSDNCRequest", "") + execution.setVariable(Prefix + "assignSDNCResponse", "") + execution.setVariable(Prefix + "rollbackSDNCRequest", "") + //execution.setVariable(Prefix + "rollbackSDNCResponse", "") + execution.setVariable(Prefix + "sdncReturnCode", "") + //execution.setVariable(Prefix + "rollbackSDNCReturnCode", "") + execution.setVariable(Prefix + "isSdncRollbackNeeded", false) + execution.setVariable(Prefix + "sdncResponseSuccess", false) + + execution.setVariable(Prefix + "activateSDNCRequest", "") + execution.setVariable(Prefix + "activateSDNCResponse", "") + execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "") + //execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "") + execution.setVariable(Prefix + "sdncActivateReturnCode", "") + //execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "") + execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", false) + execution.setVariable(Prefix + "sdncActivateResponseSuccess", false) + + execution.setVariable(Prefix + "orchestrationStatus", "") + execution.setVariable(Prefix + "isVnfBindingPresent", false) + execution.setVariable(Prefix + "Success", false) + + execution.setVariable(Prefix + "isException", false) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // GET Incoming request & validate 3 kinds of format. + execution.setVariable("action", "CREATE") + String networkRequest = execution.getVariable("bpmnRequest") + if (networkRequest != null) { + if (networkRequest.contains("requestDetails")) { + // JSON format request is sent, create xml + try { + def prettyJson = JsonOutput.prettyPrint(networkRequest.toString()) + msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson) + networkRequest = vidUtils.createXmlNetworkRequestInfra(execution, networkRequest) + + } catch (Exception ex) { + String dataErrorMessage = " Invalid json format Request - " + ex.getMessage() + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } else { + // XML format request is sent + + } + } else { + // vIPR format request is sent, create xml from individual variables + networkRequest = vidUtils.createXmlNetworkRequestInstance(execution) + } + + networkRequest = utils.formatXml(networkRequest) + execution.setVariable(Prefix + "networkRequest", networkRequest) + msoLogger.debug(Prefix + "networkRequest - " + '\n' + networkRequest) + + // validate 'backout-on-failure' to override 'mso.rollback' + boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, networkRequest) + execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled) + msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled) + + String networkInputs = utils.getNodeXml(networkRequest, "network-inputs", false).replace("tag0:","").replace(":tag0","") + execution.setVariable(Prefix + "networkInputs", networkInputs) + msoLogger.debug(Prefix + "networkInputs - " + '\n' + networkInputs) + + // prepare messageId + String messageId = execution.getVariable("testMessageId") // for testing + if (messageId == null || messageId == "") { + messageId = UUID.randomUUID() + msoLogger.debug(Prefix + "messageId, random generated: " + messageId) + } else { + msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId) + } + execution.setVariable(Prefix + "messageId", messageId) + + String source = utils.getNodeText(networkRequest, "source") + execution.setVariable(Prefix + "source", source) + msoLogger.debug(Prefix + "source - " + source) + + // validate cloud region + String lcpCloudRegionId = utils.getNodeText(networkRequest, "aic-cloud-region") + if ((lcpCloudRegionId == null) || (lcpCloudRegionId == "") || (lcpCloudRegionId == "null")) { + String dataErrorMessage = "Missing value/element: 'lcpCloudRegionId' or 'cloudConfiguration' or 'aic-cloud-region'." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + // validate service instance id + String serviceInstanceId = utils.getNodeText(networkRequest, "service-instance-id") + if ((serviceInstanceId == null) || (serviceInstanceId == "") || (serviceInstanceId == "null")) { + String dataErrorMessage = "Missing value/element: 'serviceInstanceId'." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution) + + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey",execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - " + String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + // Set variables for Generic Get Sub Flow use + execution.setVariable(Prefix + "serviceInstanceId", serviceInstanceId) + msoLogger.debug(Prefix + "serviceInstanceId - " + serviceInstanceId) + + execution.setVariable("GENGS_type", "service-instance") + msoLogger.debug("GENGS_type - " + "service-instance") + msoLogger.debug(" Url for SDNC adapter: " + UrnPropertiesReader.getVariable("mso.adapters.sdnc.endpoint",execution)) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // build 'networkOutputs' + String networkId = utils.getNodeText(networkRequest, "network-id") + if ((networkId == null) || (networkId == "null")) { + networkId = "" + } + String networkName = utils.getNodeText(networkRequest, "network-name") + if ((networkName == null) || (networkName == "null")) { + networkName = "" + } + String networkOutputs = + """<network-outputs> + <network-id>${MsoUtils.xmlEscape(networkId)}</network-id> + <network-name>${MsoUtils.xmlEscape(networkName)}</network-name> + </network-outputs>""" + execution.setVariable(Prefix + "networkOutputs", networkOutputs) + msoLogger.debug(Prefix + "networkOutputs - " + '\n' + networkOutputs) + execution.setVariable(Prefix + "networkId", networkId) + execution.setVariable(Prefix + "networkName", networkName) + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkName (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkName() of DoCreateNetworkInstance ***** " ) + + // get variables + String networkInputs = execution.getVariable(Prefix + "networkInputs") + String networkName = utils.getNodeText(networkInputs, "network-name") + networkName = UriUtils.encode(networkName,"UTF-8") + + // Prepare AA&I url with network-name + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String queryAAINameRequest = "${aai_endpoint}${aai_uri}" + "?network-name=" + networkName + execution.setVariable(Prefix + "queryNameAAIRequest", queryAAINameRequest) + msoLogger.debug(Prefix + "queryNameAAIRequest - " + "\n" + queryAAINameRequest) + + try { + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryAAINameRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiNameReturnCode", returnCode) + msoLogger.debug(" ***** AAI Query Name Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + msoLogger.debug(" ***** AAI Query Name Response : " +'\n'+ aaiResponseAsString) + + if (returnCode=='200') { + execution.setVariable(Prefix + "queryNameAAIResponse", aaiResponseAsString) + execution.setVariable(Prefix + "isAAIqueryNameGood", true) + String orchestrationStatus = "" + try { + // response is NOT empty + orchestrationStatus = utils.getNodeText(aaiResponseAsString, "orchestration-status") + execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus.toUpperCase()) + msoLogger.debug(Prefix + "orchestrationStatus - " + orchestrationStatus.toUpperCase()) + execution.setVariable("orchestrationStatus", orchestrationStatus) + + } catch (Exception ex) { + // response is empty + execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus) + msoLogger.debug(Prefix + "orchestrationStatus - " + orchestrationStatus) + } + + } else { + if (returnCode=='404') { + msoLogger.debug(" QueryAAINetworkName return code = '404' (Not Found). Proceed with the Create !!! ") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Error Response from QueryAAINetworkName - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildWorkflowException(execution, 2500, dataErrorMessage) + + } + + } + + msoLogger.debug(Prefix + "isAAIqueryNameGood? : " + execution.getVariable(Prefix + "isAAIqueryNameGood")) + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // try error + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAINetworkName() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAICloudRegion (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion() of DoCreateNetworkInstance ***** " ) + + try { + String networkInputs = execution.getVariable(Prefix + "networkInputs") + String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region") + cloudRegion = UriUtils.encode(cloudRegion,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug(Prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion) + + if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) { + execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo) + execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc) + execution.setVariable(Prefix + "isCloudRegionGood", true) + + } else { + String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode") + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(Prefix + "isCloudRegionGood")) + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // try error + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAICloudRegion() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkId(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkId() of DoCreateNetworkInstance ***** " ) + + try { + // get variables + String networkId = "" + String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse") + if (execution.getVariable("sdncVersion") != "1610") { + String networkResponseInformation = "" + try { + networkResponseInformation = utils.getNodeXml(assignSDNCResponse, "network-response-information", false).replace("tag0:","").replace(":tag0","") + networkId = utils.getNodeText(networkResponseInformation, "instance-id") + } catch (Exception ex) { + String dataErrorMessage = " SNDC Response network validation for 'instance-id' (network-id) failed: Empty <network-response-information>" + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + } else { + networkId = utils.getNodeText(assignSDNCResponse, "network-id") + } + if (networkId == null || networkId == "null") { + String dataErrorMessage = "SNDC Response did not contains 'instance-id' or 'network-id' element, or the value is null." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } else { + msoLogger.debug(" SNDC Response network validation for 'instance-id' (network-id)' is good: " + networkId) + } + + + execution.setVariable(Prefix + "networkId", networkId) + String networkName = utils.getNodeText(assignSDNCResponse, "network-name") + execution.setVariable(Prefix + "networkName", networkName) + + networkId = UriUtils.encode(networkId,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest) + msoLogger.debug(Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryIdAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiIdReturnCode", returnCode) + + msoLogger.debug(" ***** AAI Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + execution.setVariable(Prefix + "queryIdAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString) + + String netId = utils.getNodeText(aaiResponseAsString, "network-id") + execution.setVariable(Prefix + "networkId", netId) + String netName = utils.getNodeText(aaiResponseAsString, "network-name") + execution.setVariable(Prefix + "networkName", netName) + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkId is 404 (Not Found)." + msoLogger.debug(" AAI Query Failed. " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkId - " + returnCode + msoLogger.debug("Unexpected Response from QueryAAINetworkId - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkId() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTReQueryAAINetworkId(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTReQueryAAINetworkId() of DoCreateNetworkInstance ***** " ) + + try { + // get variables + String networkId = execution.getVariable(Prefix + "networkId") + String netId = networkId + networkId = UriUtils.encode(networkId,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest) + msoLogger.debug(Prefix + "requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, requeryIdAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiRequeryIdReturnCode", returnCode) + msoLogger.debug(" ***** AAI ReQuery Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + execution.setVariable(Prefix + "requeryIdAAIResponse", aaiResponseAsString) + msoLogger.debug(" ReQueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString) + + String netName = utils.getNodeText(aaiResponseAsString, "network-name") + String networkOutputs = + """<network-outputs> + <network-id>${MsoUtils.xmlEscape(netId)}</network-id> + <network-name>${MsoUtils.xmlEscape(netName)}</network-name> + </network-outputs>""" + execution.setVariable(Prefix + "networkOutputs", networkOutputs) + msoLogger.debug(" networkOutputs - " + '\n' + networkOutputs) + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from ReQueryAAINetworkId is 404 (Not Found)." + msoLogger.debug(" AAI ReQuery Failed. - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from ReQueryAAINetworkId - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTReQueryAAINetworkId() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkVpnBinding() of DoCreateNetworkInstance ***** " ) + + try { + + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Vnf Binding is present, then build a List of vnfBinding + List vpnBindingUri = networkUtils.getVnfBindingObject(relationship) + int vpnCount = vpnBindingUri.size() + execution.setVariable(Prefix + "vpnCount", vpnCount) + msoLogger.debug(Prefix + "vpnCount - " + vpnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (vpnCount > 0) { + execution.setVariable(Prefix + "vpnBindings", vpnBindingUri) + msoLogger.debug(" vpnBindingUri List - " + vpnBindingUri) + + String routeTargets = "" + // AII loop call using list vpnBindings + for (i in 0..vpnBindingUri.size()-1) { + + int counting = i+1 + + // prepare url using vpnBinding + String queryVpnBindingAAIRequest = "" + String aai_uri = aaiUriUtil.getNetworkVpnBindingUri(execution) + + // Note: By default, the vpnBinding url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') { + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all" + } else { + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all" + } + + } else { + // using uri value in URN mapping + String vpnBindingId = vpnBindingUri[i].substring(vpnBindingUri[i].indexOf("/vpn-binding/")+13, vpnBindingUri[i].length()) + if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') { + vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1) + } + queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all" + } + + execution.setVariable(Prefix + "queryVpnBindingAAIRequest", queryVpnBindingAAIRequest) + msoLogger.debug(Prefix + "queryVpnBindingAAIRequest, , vpnBinding #" + counting + " : " + "\n" + queryVpnBindingAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryVpnBindingAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", returnCode) + msoLogger.debug(" ***** AAI query vpn binding Response Code, vpnBinding #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiResponseAsString) + msoLogger.debug(" AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString) + + String routeTarget = "" + String routeRole = "" + if (utils.nodeExists(aaiResponseAsString, "route-targets")) { + String aaiRouteTargets = utils.getNodeXml(aaiResponseAsString, "route-targets", false) + def aaiRouteTargetsXml = new XmlSlurper().parseText(aaiRouteTargets) + def aaiRouteTarget = aaiRouteTargetsXml.'**'.findAll {it.name() == "route-target"} + for (j in 0..aaiRouteTarget.size()-1) { + routeTarget = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target") + routeRole = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role") + routeTargets += "<routeTargets>" + '\n' + + " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' + + " <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' + + "</routeTargets>" + '\n' + } + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from AAINetworkVpnBinding is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = " Unexpected Response from AAINetworkVpnBinding - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "routeCollection", routeTargets) + msoLogger.debug(Prefix + "routeCollection - " + '\n' + routeTargets) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <vpn-binding xmlns="${schemaVersion}"> + <global-route-target/> + </vpn-binding> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "routeCollection", "<routeTargets/>") + msoLogger.debug(" No vpnBinding, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkVpnBinding() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkPolicy() of DoCreateNetworkInstance ***** " ) + + try { + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Network Policy is present, then build a List of network policy + List networkPolicyUriList = networkUtils.getNetworkPolicyObject(relationship) + int networkPolicyCount = networkPolicyUriList.size() + execution.setVariable(Prefix + "networkPolicyCount", networkPolicyCount) + msoLogger.debug(Prefix + "networkPolicyCount - " + networkPolicyCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (networkPolicyCount > 0) { + execution.setVariable(Prefix + "networkPolicyUriList", networkPolicyUriList) + msoLogger.debug(" networkPolicyUri List - " + networkPolicyUriList) + + String networkPolicies = "" + // AII loop call using list vpnBindings + for (i in 0..networkPolicyUriList.size()-1) { + + int counting = i+1 + + // prepare url using vpnBinding + String queryNetworkPolicyAAIRequest = "" + + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + // Note: By default, the network policy url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') { + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all" + } else { + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all" + } + } else { + // using uri value in URN mapping + String networkPolicyId = networkPolicyUriList[i].substring(networkPolicyUriList[i].indexOf("/network-policy/")+16, networkPolicyUriList[i].length()) + println " networkPolicyId - " + networkPolicyId + if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') { + networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1) + } + queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all" + + } + + + execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest", queryNetworkPolicyAAIRequest) + msoLogger.debug(Prefix + "queryNetworkPolicyAAIRequest, , NetworkPolicy #" + counting + " : " + "\n" + queryNetworkPolicyAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + + String networkPolicy = "" + if (utils.nodeExists(aaiResponseAsString, "network-policy-fqdn")) { + networkPolicy = utils.getNodeText(aaiResponseAsString, "network-policy-fqdn") + networkPolicies += "<policyFqdns>" + networkPolicy + "</policyFqdns>" + '\n' + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkPolicy is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkPolicy - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "networkCollection", networkPolicies) + msoLogger.debug(Prefix + "networkCollection - " + '\n' + networkPolicies) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <network-policy xmlns="${schemaVersion}"> + <network-policy-fqdn/> + </network-policy> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "networkCollection", "<policyFqdns/>") + msoLogger.debug(" No net policies, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkPolicy() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkTableRef() of DoCreateNetworkInstance ***** " ) + + try { + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Network TableREf is present, then build a List of network policy + List networkTableRefUriList = networkUtils.getNetworkTableRefObject(relationship) + int networkTableRefCount = networkTableRefUriList.size() + execution.setVariable(Prefix + "networkTableRefCount", networkTableRefCount) + msoLogger.debug(Prefix + "networkTableRefCount - " + networkTableRefCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (networkTableRefCount > 0) { + execution.setVariable(Prefix + "networkTableRefUriList", networkTableRefUriList) + msoLogger.debug(" networkTableRefUri List - " + networkTableRefUriList) + + // AII loop call using list vpnBindings + String networkTableRefs = "" + for (i in 0..networkTableRefUriList.size()-1) { + + int counting = i+1 + + // prepare url using tableRef + String queryNetworkTableRefAAIRequest = "" + + String aai_uri = aaiUriUtil.getNetworkTableReferencesUri(execution) + + // Note: By default, the network policy url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') { + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all" + } else { + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all" + } + } else { + // using uri value in URN mapping + String networkTableRefId = networkTableRefUriList[i].substring(networkTableRefUriList[i].indexOf("/route-table-reference/")+23, networkTableRefUriList[i].length()) + + if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') { + networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1) + } + queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all" + + } + + + execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest", queryNetworkTableRefAAIRequest) + msoLogger.debug(Prefix + "queryNetworkTableRefAAIRequest, , NetworkTableRef #" + counting + " : " + "\n" + queryNetworkTableRefAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkTableRefAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network Table Reference Response Code, NetworkTableRef #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkTableRef Success REST Response, , NetworkTableRef #" + counting + " : " + "\n" + aaiResponseAsString) + + String networkTableRef = "" + if (utils.nodeExists(aaiResponseAsString, "route-table-reference-fqdn")) { + networkTableRef = utils.getNodeText(aaiResponseAsString, "route-table-reference-fqdn") + networkTableRefs += "<routeTableFqdns>" + networkTableRef + "</routeTableFqdns>" + '\n' + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkTableRef is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkTableRef - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "tableRefCollection", networkTableRefs) + msoLogger.debug(Prefix + "tableRefCollection - " + '\n' + networkTableRefs) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <route-table-references xmlns="${schemaVersion}"> + <route-table-reference-fqdn/> + </route-table-references> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "tableRefCollection", "<routeTableFqdns/>") + msoLogger.debug(" No net table references, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkTableRef() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTUpdateContrailAAINetwork() of DoCreateNetworkInstance ***** " ) + + try { + // get variables + String networkId = execution.getVariable(Prefix + "networkId") + networkId = UriUtils.encode(networkId,"UTF-8") + String requeryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") + String createNetworkResponse = execution.getVariable(Prefix + "createNetworkResponse") + + // Prepare url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + + execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest) + msoLogger.debug(Prefix + "updateContrailAAIUrlRequest - " + "\n" + updateContrailAAIUrlRequest) + + //Prepare payload (PUT) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String payload = networkUtils.ContrailNetworkCreatedUpdate(requeryIdAAIResponse, createNetworkResponse, schemaVersion) + String payloadXml = utils.formatXml(payload) + execution.setVariable(Prefix + "updateContrailAAIPayloadRequest", payloadXml) + msoLogger.debug(" 'payload' to Update Contrail - " + "\n" + payloadXml) + + APIResponse response = aaiUriUtil.executeAAIPutCall(execution, updateContrailAAIUrlRequest, payloadXml) + + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", returnCode) + msoLogger.debug(" ***** AAI Update Contrail Response Code : " + returnCode) + String aaiUpdateContrailResponseAsString = response.getResponseBodyAsString() + if (returnCode=='200') { + execution.setVariable(Prefix + "updateContrailAAIResponse", aaiUpdateContrailResponseAsString) + msoLogger.debug(" AAI Update Contrail Success REST Response - " + "\n" + aaiUpdateContrailResponseAsString) + // Point-of-no-return is set to false, rollback not needed. + String rollbackEnabled = execution.getVariable(Prefix + "rollbackEnabled") + if (rollbackEnabled == "true") { + execution.setVariable(Prefix + "isPONR", false) + } else { + execution.setVariable(Prefix + "isPONR", true) + } + msoLogger.debug(Prefix + "isPONR" + ": " + execution.getVariable(Prefix + "isPONR")) + } else { + if (returnCode=='404') { + String dataErrorMessage = " Response Error from UpdateContrailAAINetwork is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiUpdateContrailResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiUpdateContrailResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String errorMessage = "Unexpected Response from UpdateContrailAAINetwork - " + returnCode + msoLogger.debug(errorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTUpdateContrailAAINetwork() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareCreateNetworkRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareCreateNetworkRequest() of DoCreateNetworkInstance") + + try { + + // get variables + String requestId = execution.getVariable("msoRequestId") + if (requestId == null) { + requestId = execution.getVariable("mso-request-id") + } + String messageId = execution.getVariable(Prefix + "messageId") + String source = execution.getVariable(Prefix + "source") + + String requestInput = execution.getVariable(Prefix + "networkRequest") + String queryIdResponse = execution.getVariable(Prefix + "queryIdAAIResponse") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionPo") + String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled") + + // Prepare Network request + String routeCollection = execution.getVariable(Prefix + "routeCollection") + String policyCollection = execution.getVariable(Prefix + "networkCollection") + String tableCollection = execution.getVariable(Prefix + "tableRefCollection") + String createNetworkRequest = networkUtils.CreateNetworkRequestV2(execution, requestId, messageId, requestInput, queryIdResponse, routeCollection, policyCollection, tableCollection, cloudRegionId, backoutOnFailure, source ) + // Format Response + String buildDeleteNetworkRequestAsString = utils.formatXml(createNetworkRequest) + buildDeleteNetworkRequestAsString = buildDeleteNetworkRequestAsString.replace(":w1aac13n0", "").replace("w1aac13n0:", "") + + execution.setVariable(Prefix + "createNetworkRequest", buildDeleteNetworkRequestAsString) + msoLogger.debug(Prefix + "createNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareCreateNetworkRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareSDNCRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareSDNCRequest() of DoCreateNetworkInstance") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + + String networkId = execution.getVariable(Prefix + "networkId") + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // get/set 'msoRequestId' and 'mso-request-id' + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "NetworkActivateRequest", cloudRegionId, networkId, null, null) + + String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) + execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString) + msoLogger.debug(Prefix + "assignSDNCRequest - " + "\n" + sndcTopologyCreateRequesAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCRequest() of DoCreateNetworkInstance") + + try { + // get variables + + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + + String networkId = execution.getVariable(Prefix + "networkId") + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null) + + String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) + execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString) + msoLogger.debug(Prefix + "assignSDNCRequest - " + "\n" + sndcTopologyCreateRequesAsString) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCActivateRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCActivateRequest() of DoCreateNetworkInstance") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String networkId = execution.getVariable(Prefix + "networkId") + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null) + + String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) + execution.setVariable(Prefix + "activateSDNCRequest", sndcTopologyCreateRequesAsString) + msoLogger.debug(Prefix + "activateSDNCRequest - " + "\n" + sndcTopologyCreateRequesAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void validateCreateNetworkResponse (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateNetworkResponse() of DoCreateNetworkInstance") + + try { + String returnCode = execution.getVariable(Prefix + "networkReturnCode") + String networkResponse = execution.getVariable(Prefix + "createNetworkResponse") + if (networkResponse==null) { + networkResponse="" // reset + } + + msoLogger.debug(" Network Adapter create responseCode: " + returnCode) + + String errorMessage = "" + if (returnCode == "200") { + execution.setVariable(Prefix + "isNetworkRollbackNeeded", true) + execution.setVariable(Prefix + "createNetworkResponse", networkResponse) + msoLogger.debug(" Network Adapter create Success Response - " + "\n" + networkResponse) + + // prepare rollback data + String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","") + rollbackData = rollbackData.replace("rollback>", "networkRollback>") + String rollbackNetwork = + """<rollbackNetworkRequest> + ${rollbackData} + </rollbackNetworkRequest>""" + String rollbackNetworkXml = utils.formatXml(rollbackNetwork) + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml) + msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml) + + } else { // network error + if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx + if (networkResponse.contains("createNetworkError")) { + networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '') + errorMessage = utils.getNodeText(networkResponse, "message") + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } else { // CatchAll exception + if (returnCode == "500") { + errorMessage = "JBWEB000065: HTTP Status 500." + } else { + errorMessage = "Return code is " + returnCode + } + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } + + } else { // CatchAll exception + String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. validateCreateNetworkResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + public void validateSDNCResponse (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateSDNCResponse() of DoCreateNetworkInstance") + + String response = execution.getVariable(Prefix + "assignSDNCResponse") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + WorkflowException workflowException = execution.getVariable("WorkflowException") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + // reset variable + String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "assignSDNCResponse") + assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "") + execution.setVariable(Prefix + "assignSDNCResponse", assignSDNCResponseDecodeXml) + + if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess' + execution.setVariable(Prefix + "isSdncRollbackNeeded", true) + msoLogger.debug("Successfully Validated SDNC Response") + + } else { + msoLogger.debug("Did NOT Successfully Validated SDNC Response") + throw new BpmnError("MSOWorkflowException") + } + + } + + public void validateRpcSDNCActivateResponse (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateRpcSDNCActivateResponse() of DoCreateNetworkInstance") + + String response = execution.getVariable(Prefix + "activateSDNCResponse") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + WorkflowException workflowException = execution.getVariable("WorkflowException") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + // reset variable + String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "activateSDNCResponse") + assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "") + execution.setVariable(Prefix + "activateSDNCResponse", assignSDNCResponseDecodeXml) + + if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess' + execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", true) + msoLogger.debug("Successfully Validated Rpc SDNC Activate Response") + + } else { + msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Activate Response") + throw new BpmnError("MSOWorkflowException") + } + + } + + + public void prepareSDNCRollbackRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareSDNCRollbackRequest() of DoCreateNetworkInstance") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse") + String networkId = execution.getVariable(Prefix + "networkId") + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // 2. prepare rollback topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "rollback", "NetworkActivateRequest", cloudRegionId, networkId, null, null) + String sndcTopologyRollbackRequestAsString = utils.formatXml(sndcTopologyRollbackRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRequestAsString) + msoLogger.debug(" Preparing request for SDNC Topology 'rollback-NetworkActivateRequest' rollback . . . - " + "\n" + sndcTopologyRollbackRequestAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRollbackRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCRollbackRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCRollbackRequest() of DoCreateNetworkInstance") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse") + String networkId = execution.getVariable(Prefix + "networkId") + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // 2. prepare rollback topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRpcRequestAsString) + msoLogger.debug(" Preparing request for SDNC Topology 'unassign-DeleteNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRollbackRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCActivateRollback(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCActivateRollback() of DoCreateNetworkInstance") + + try { + + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String createNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String activateSDNCResponse = execution.getVariable(Prefix + "activateSDNCResponse") + String networkId = execution.getVariable(Prefix + "networkId") + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + + // 2. prepare rollback topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + execution.setVariable(Prefix + "rollbackActivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString) + msoLogger.debug(" Preparing request for RPC SDNC Topology 'deactivate-DeleteNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRollbackData() of DoCreateNetworkInstance") + + try { + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + if (rollbackSDNCRequest != null) { + if (rollbackSDNCRequest != "") { + rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest")) + } + } + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest")) + } + } + String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest") + if (rollbackActivateSDNCRequest != null) { + if (rollbackActivateSDNCRequest != "") { + rollbackData.put("rollbackActivateSDNCRequest", execution.getVariable(Prefix + "rollbackActivateSDNCRequest")) + } + } + execution.setVariable("rollbackData", rollbackData) + msoLogger.debug("** rollbackData : " + rollbackData) + + execution.setVariable("WorkflowException", execution.getVariable(Prefix + "WorkflowException")) + msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException")) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void postProcessResponse(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside postProcessResponse() of DoCreateNetworkInstance") + + try { + + //Conditions: + // 1. Silent Success: execution.getVariable("CRENWKI_orchestrationStatus") == "ACTIVE" + // 2. Success: execution.getVariable("WorkflowException") == null (NULL) + // 3. WorkflowException: execution.getVariable("WorkflowException") != null (NOT NULL) + + msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException")) + // successful flow + if (execution.getVariable(Prefix + "isException") == false) { + // set rollback data + execution.setVariable("orchestrationStatus", "") + execution.setVariable("networkId", execution.getVariable(Prefix + "networkId")) + execution.setVariable("networkName", execution.getVariable(Prefix + "networkName")) + prepareSuccessRollbackData(execution) // populate rollbackData + execution.setVariable("WorkflowException", null) + execution.setVariable(Prefix + "Success", true) + msoLogger.debug(" ***** postProcessResponse(), GOOD !!!") + } else { + // inside sub-flow logic + execution.setVariable(Prefix + "Success", false) + execution.setVariable("rollbackData", null) + String exceptionMessage = " Exception encountered in MSO Bpmn. " + if (execution.getVariable("workflowException") != null) { // Output of Rollback flow. + msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException")) + WorkflowException wfex = execution.getVariable("workflowException") + exceptionMessage = wfex.getErrorMessage() + } else { + if (execution.getVariable(Prefix + "WorkflowException") != null) { + WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException") + exceptionMessage = pwfex.getErrorMessage() + } + } + // going to the Main flow: a-la-carte or macro + msoLogger.debug(" ***** postProcessResponse(), BAD !!!") + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + } + + } catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + + } + + + + } + + public void prepareSuccessRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareSuccessRollbackData() of DoCreateNetworkInstance") + + try { + + if (execution.getVariable("sdncVersion") != '1610') { + prepareRpcSDNCRollbackRequest(execution) + prepareRpcSDNCActivateRollback(execution) + } else { + prepareSDNCRollbackRequest(execution) + } + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + if (rollbackSDNCRequest != null) { + if (rollbackSDNCRequest != "") { + rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest) + } + } + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest) + } + } + String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest") + if (rollbackActivateSDNCRequest != null) { + if (rollbackActivateSDNCRequest != "") { + rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest) + } + } + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("** 'rollbackData' for Full Rollback : " + rollbackData) + execution.setVariable("WorkflowException", null) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void setExceptionFlag(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside setExceptionFlag() of DoCreateNetworkInstance") + + try { + + execution.setVariable(Prefix + "isException", true) + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException")) + + } catch(Exception ex){ + String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. setExceptionFlag(): " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + try{ + msoLogger.debug( "Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug( "Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy new file mode 100644 index 0000000000..7e00f05b90 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy @@ -0,0 +1,393 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 groovy.xml.XmlUtil + +import groovy.json.* +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils + +/** + * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process. + * + */ +public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateNetworkInstanceRollback.class); + + String Prefix="CRENWKIR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + def className = getClass().getSimpleName() + + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "rollbackNetworkRequest", null) + execution.setVariable(Prefix + "rollbackSDNCRequest", null) + execution.setVariable(Prefix + "rollbackActivateSDNCRequest", null) + execution.setVariable(Prefix + "WorkflowException", null) + + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + execution.setVariable(Prefix + "rollbackNetworkResponse", "") + execution.setVariable(Prefix + "rollbackNetworkReturnCode", "") + + execution.setVariable(Prefix + "rollbackSDNCRequest", "") + execution.setVariable(Prefix + "rollbackSDNCResponse", "") + execution.setVariable(Prefix + "rollbackSDNCReturnCode", "") + + execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "") + execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "") + execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "") + + execution.setVariable(Prefix + "Success", false) + execution.setVariable(Prefix + "fullRollback", false) + execution.setVariable(Prefix + "networkId", "") + execution.setVariable(Prefix + "urlRollbackPoNetwork", "") + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // GET Incoming request/variables + String rollbackNetworkRequest = null + String rollbackSDNCRequest = null + String rollbackActivateSDNCRequest = null + + // Partial Rollback + Map<String, String> rollbackData = execution.getVariable("rollbackData") + if (rollbackData != null && rollbackData instanceof Map) { + + if(rollbackData.containsKey("rollbackSDNCRequest")) { + rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"] + } + + if(rollbackData.containsKey("rollbackNetworkRequest")) { + rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"] + } + + if(rollbackData.containsKey("rollbackActivateSDNCRequest")) { + rollbackActivateSDNCRequest = rollbackData["rollbackActivateSDNCRequest"] + } + + } + + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest) + execution.setVariable(Prefix + "rollbackActivateSDNCRequest", rollbackActivateSDNCRequest) + msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData")) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution) + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - " + String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage ) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException")) + if(execution.getVariable(Prefix + "WorkflowException") != null) { + // called by: DoCreateNetworkInstance, partial rollback + execution.setVariable(Prefix + "fullRollback", false) + + } else { + // called by: Macro - Full Rollback, WorkflowException = null + execution.setVariable(Prefix + "fullRollback", true) + + } + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callPONetworkAdapter (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside callPONetworkAdapter() of " + className + "") + + try { + String poUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution) + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + String networkId = utils.getNodeText(rollbackSDNCRequest, "network-id") + + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + + String urlRollbackPoNetwork = poUrl+ "/" + networkId + "/rollback" + msoLogger.debug("'urlRollbackPoNetwork': " + urlRollbackPoNetwork) + execution.setVariable(Prefix + "urlRollbackPoNetwork", urlRollbackPoNetwork) + + RESTConfig config = new RESTConfig(urlRollbackPoNetwork) + RESTClient client = new RESTClient(config). + addHeader("Content-Type", "application/xml"). + addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO")); + + APIResponse response = client.httpDelete(rollbackNetworkRequest) + String responseCode = response.getStatusCode() + String responseBody = response.getResponseBodyAsString() + + execution.setVariable(Prefix + "rollbackNetworkReturnCode", responseCode) + execution.setVariable(Prefix + "rollbackNetworkResponse", responseBody) + + msoLogger.debug(" Network Adapter rollback responseCode: " + responseCode) + msoLogger.debug(" Network Adapter rollback responseBody: " + responseBody) + + + } catch (Exception ex) { + String exceptionMessage = "Exception Encountered in callPONetworkAdapter() of DoCreateNetworkInstanceRollback flow - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + public void validateRollbackResponses (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateRollbackResponses() of DoCreateNetworkInstanceRollback") + + try { + // validate PO network rollback response + String rollbackNetworkErrorMessages = "" + String rollbackNetworkReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) { + rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode") + String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse") + msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode) + msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse) + if (rollbackNetworkReturnCode != "200") { + rollbackNetworkErrorMessages = " + PO Network rollback failed. " + } else { + rollbackNetworkErrorMessages = " + PO Network rollback completed." + } + } + + // validate SDNC rollback response + String rollbackSdncErrorMessages = "" + String rollbackSDNCReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) { + rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode") + String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse") + String rollbackSDNCReturnInnerCode = "" + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + rollbackSDNCResponse = rollbackSDNCResponse + rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "") + if (rollbackSDNCReturnCode == "200") { + if (utils.nodeExists(rollbackSDNCResponse, "response-code")) { + rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code") + if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") { + rollbackSdncErrorMessages = " + SNDC assign rollback completed." + } else { + rollbackSdncErrorMessages = " + SDNC assign rollback failed. " + } + } else { + rollbackSdncErrorMessages = " + SNDC assign rollback completed." + } + } else { + rollbackSdncErrorMessages = " + SDNC assign rollback failed. " + } + msoLogger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode) + msoLogger.debug(" SDNC assign rollback Response - " + rollbackSDNCResponse) + } + + // validate SDNC activate rollback response + String rollbackActivateSdncErrorMessages = "" + String rollbackActivateSDNCReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackActivateSDNCRequest") != null) { + rollbackActivateSDNCReturnCode = execution.getVariable(Prefix + "rollbackActivateSDNCReturnCode") + String rollbackActivateSDNCResponse = execution.getVariable(Prefix + "rollbackActivateSDNCResponse") + String rollbackActivateSDNCReturnInnerCode = "" + rollbackActivateSDNCResponse = rollbackActivateSDNCResponse + rollbackActivateSDNCResponse = rollbackActivateSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "") + if (rollbackActivateSDNCReturnCode == "200") { + if (utils.nodeExists(rollbackActivateSDNCResponse, "response-code")) { + rollbackActivateSDNCReturnInnerCode = utils.getNodeText(rollbackActivateSDNCResponse, "response-code") + if (rollbackActivateSDNCReturnInnerCode == "200" || rollbackActivateSDNCReturnInnerCode == "" || rollbackActivateSDNCReturnInnerCode == "0") { + rollbackActivateSdncErrorMessages = " + SNDC activate rollback completed." + } else { + rollbackActivateSdncErrorMessages = " + SDNC activate rollback failed. " + } + } else { + rollbackActivateSdncErrorMessages = " + SNDC activate rollback completed." + } + } else { + rollbackActivateSdncErrorMessages = " + SDNC activate rollback failed. " + } + msoLogger.debug(" SDNC activate rollback Code - " + rollbackActivateSDNCReturnCode) + msoLogger.debug(" SDNC activate rollback Response - " + rollbackActivateSDNCResponse) + } + + + String statusMessage = "" + int errorCode = 7000 + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + if (execution.getVariable(Prefix + "fullRollback") == false) { + // original WorkflowException, + WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") + if (wfe != null) { + // rollback due to failure in DoCreate - Partial rollback + statusMessage = wfe.getErrorMessage() + errorCode = wfe.getErrorCode() + } else { + statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + errorCode = '7000' + } + + // set if all rolledbacks are successful + if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") { + execution.setVariable("rolledBack", true) + execution.setVariable("wasDeleted", true) + + } else { + execution.setVariable("rolledBack", false) + execution.setVariable("wasDeleted", true) + } + + statusMessage = statusMessage + rollbackActivateSdncErrorMessages + rollbackNetworkErrorMessages + rollbackSdncErrorMessages + msoLogger.debug("Final DoCreateNetworkInstanceRollback status message: " + statusMessage) + String processKey = getProcessKey(execution); + WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage); + execution.setVariable("workflowException", exception); + + } else { + // rollback due to failures in Main flow (Macro) - Full rollback + // WorkflowException = null + if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") { + execution.setVariable("rollbackSuccessful", true) + execution.setVariable("rollbackError", false) + } else { + String exceptionMessage = "Network Create Rollback was not Successful. " + msoLogger.debug(exceptionMessage) + execution.setVariable("rollbackSuccessful", false) + execution.setVariable("rollbackError", true) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + } + + } + + + } catch (Exception ex) { + String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ******************************* + // Build Error Section + // ******************************* + + + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy new file mode 100644 index 0000000000..f7c5c1b83d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy @@ -0,0 +1,279 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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.codehaus.jackson.map.ObjectMapper +import org.onap.so.bpmn.infrastructure.properties.BPMNProperties + +import java.util.ArrayList +import java.util.Iterator +import java.util.List +import org.apache.commons.lang3.StringUtils +import org.apache.http.HttpResponse +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.codehaus.groovy.runtime.ArrayUtil +import org.codehaus.groovy.runtime.ScriptBytecodeAdapter +import org.codehaus.groovy.runtime.callsite.CallSite +import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation +import org.codehaus.groovy.runtime.typehandling.ShortTypeHandling +import org.json.JSONArray +import org.json.JSONObject +import org.onap.so.bpmn.common.recipe.BpmnRestClient +import org.onap.so.bpmn.common.recipe.ResourceInput +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.core.domain.AllottedResource +import org.onap.so.bpmn.core.domain.NetworkResource +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.resource.ResourceRequestBuilder +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + + +/** + * This groovy class supports the <class>DoCreateResources.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * + * @param - addResourceList + * + * Outputs: + * @param - WorkflowException + + */ +public class DoCreateResources extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateResources.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils cutils = new CatalogDbUtils() + + public void preProcessRequest(DelegateExecution execution) + { + msoLogger.trace("preProcessRequest ") + String msg = "" + + List addResourceList = execution.getVariable("addResourceList") + if (addResourceList == null) + { + msg = "Input addResourceList is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else if (addResourceList.size() == 0) + { + msg = "No resource in addResourceList" + msoLogger.info(msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void sequenceResoure(DelegateExecution execution) + { + msoLogger.trace("Start sequenceResoure Process ") + + String serviceModelUUID = execution.getVariable("modelUuid") + + List<Resource> addResourceList = execution.getVariable("addResourceList") + + List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>() + + List<Resource> sequencedResourceList = new ArrayList<Resource>() + + String serviceDecompose = execution.getVariable("serviceDecomposition") + String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName") + def resourceSequence = BPMNProperties.getResourceSequenceProp(serviceModelName) + + if(resourceSequence != null) { + // sequence is defined in config file + for (resourceType in resourceSequence) { + for (resource in addResourceList) { + if (StringUtils.containsIgnoreCase(resource.getModelInfo().getModelName(), resourceType)) { + sequencedResourceList.add(resource) + + if (resource instanceof NetworkResource) { + networkResourceList.add(resource) + } + } + } + } + } else { + + //define sequenced resource list, we deploy vf first and then network and then ar + //this is defaule sequence + List<VnfResource> vnfResourceList = new ArrayList<VnfResource>() + List<AllottedResource> arResourceList = new ArrayList<AllottedResource>() + + for (Resource rc : addResourceList){ + if (rc instanceof VnfResource) { + vnfResourceList.add(rc) + } else if (rc instanceof NetworkResource) { + networkResourceList.add(rc) + } else if (rc instanceof AllottedResource) { + arResourceList.add(rc) + } + } + sequencedResourceList.addAll(vnfResourceList) + sequencedResourceList.addAll(networkResourceList) + sequencedResourceList.addAll(arResourceList) + } + + String isContainsWanResource = networkResourceList.isEmpty() ? "false" : "true" + execution.setVariable("isContainsWanResource", isContainsWanResource) + execution.setVariable("currentResourceIndex", 0) + execution.setVariable("sequencedResourceList", sequencedResourceList) + msoLogger.info("sequencedResourceList: " + sequencedResourceList) + msoLogger.trace("COMPLETED sequenceResoure Process ") + } + + public prepareServiceTopologyRequest(DelegateExecution execution) { + + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start prepareServiceTopologyRequest Process ======== ", isDebugEnabled) + + String serviceDecompose = execution.getVariable("serviceDecomposition") + + execution.setVariable("operationType", "create") + execution.setVariable("resourceType", "") + + String serviceInvariantUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelInvariantUuid") + String serviceUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelUuid") + String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName") + + execution.setVariable("modelInvariantUuid", serviceInvariantUuid) + execution.setVariable("modelUuid", serviceUuid) + execution.setVariable("serviceModelName", serviceModelName) + + utils.log("INFO", "======== End prepareServiceTopologyRequest Process ======== ", isDebugEnabled) + } + + public void getCurrentResoure(DelegateExecution execution){ + msoLogger.trace("Start getCurrentResoure Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList") + Resource currentResource = sequencedResourceList.get(currentIndex) + execution.setVariable("resourceType", currentResource.getModelInfo().getModelName()) + msoLogger.info("Now we deal with resouce:" + currentResource.getModelInfo().getModelName()) + msoLogger.trace("COMPLETED getCurrentResoure Process ") + } + + public void parseNextResource(DelegateExecution execution){ + msoLogger.trace("Start parseNextResource Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + def nextIndex = currentIndex + 1 + execution.setVariable("currentResourceIndex", nextIndex) + List<String> sequencedResourceList = execution.getVariable("sequencedResourceList") + if(nextIndex >= sequencedResourceList.size()){ + execution.setVariable("allResourceFinished", "true") + }else{ + execution.setVariable("allResourceFinished", "false") + } + msoLogger.trace("COMPLETED parseNextResource Process ") + } + + public void prepareResourceRecipeRequest(DelegateExecution execution){ + msoLogger.trace("Start prepareResourceRecipeRequest Process ") + ResourceInput resourceInput = new ResourceInput() + String serviceInstanceName = execution.getVariable("serviceInstanceName") + String resourceType = execution.getVariable("resourceType") + String resourceInstanceName = resourceType + "_" + serviceInstanceName + resourceInput.setResourceInstanceName(resourceInstanceName) + msoLogger.info("Prepare Resource Request resourceInstanceName:" + resourceInstanceName) + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("serviceType") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = "createInstance" + resourceInput.setGlobalSubscriberId(globalSubscriberId) + resourceInput.setServiceType(serviceType) + resourceInput.setServiceInstanceId(serviceInstanceId) + resourceInput.setOperationId(operationId) + resourceInput.setOperationType(operationType); + def currentIndex = execution.getVariable("currentResourceIndex") + List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList") + Resource currentResource = sequencedResourceList.get(currentIndex) + resourceInput.setResourceModelInfo(currentResource.getModelInfo()); + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo()); + + String incomingRequest = execution.getVariable("uuiRequest") + //set the requestInputs from tempalte To Be Done + String serviceModelUuid = jsonUtil.getJsonValue(incomingRequest,"service.serviceUuid") + String serviceParameters = jsonUtil.getJsonValue(incomingRequest, "service.parameters") + String resourceParameters = ResourceRequestBuilder.buildResourceRequestParameters(execution, serviceModelUuid, resourceCustomizationUuid, serviceParameters) + resourceInput.setResourceParameters(resourceParameters) + execution.setVariable("resourceInput", resourceInput) + msoLogger.trace("COMPLETED prepareResourceRecipeRequest Process ") + } + + public void executeResourceRecipe(DelegateExecution execution){ + msoLogger.trace("Start executeResourceRecipe Process ") + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceType = execution.getVariable("serviceType") + ResourceInput resourceInput = execution.getVariable("resourceInput") + + // requestAction is action, not opertiontype + //String requestAction = resourceInput.getOperationType() + String requestAction = "createInstance" + JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceModelInfo().getModelUuid(), requestAction) + + if (resourceRecipe != null) { + String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + resourceRecipe.getString("orchestrationUri") + int recipeTimeOut = resourceRecipe.getInt("recipeTimeout") + String recipeParamXsd = resourceRecipe.get("paramXSD") + HttpResponse resp = BpmnRestClient.post(recipeURL, requestId, recipeTimeOut, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd) + } else { + String exceptionMessage = "Resource receipe is not found for resource modeluuid: " + + resourceInput.getResourceModelInfo().getModelUuid() + utils.log("ERROR", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, exceptionMessage) + } + + msoLogger.trace("======== end executeResourceRecipe Process ======== ") + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug("Error occured within DoCreateResources executeResourceRecipe method: " + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoCreateResources executeResourceRecipe Catalog") + } + } + + public void postConfigRequest(DelegateExecution execution){ + //now do noting + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy new file mode 100644 index 0000000000..93a260a544 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy @@ -0,0 +1,795 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.aai.domain.yang.OwningEntity +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.ServiceInstance +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +import groovy.json.* + +/** + * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId + * @param - subscriptionServiceType + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceModelInfo + * @param - productFamilyId + * @param - disableRollback + * @param - failExists - TODO + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion ("1610") + * @param - serviceDecomposition - Decomposition for R1710 + * (if macro provides serviceDecompsition then serviceModelInfo, serviceInstanceId & serviceInstanceName will be ignored) + * + * Outputs: + * @param - rollbackData (localRB->null) + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * @param - WorkflowException + * @param - serviceInstanceName - (GET from AAI if null in input) + * + * This BB processes Macros(except TRANSPORT all sent to sdnc) and Alacartes(sdncSvcs && nonSdncSvcs) + */ +public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstance.class); + String Prefix="DCRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils cutils = new CatalogDbUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + msoLogger.trace("preProcessRequest") + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix", Prefix) + + setBasicDBAuthHeader(execution, isDebugEnabled) + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + //requestDetails.requestParameters. for SDNC assignTopology + String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId + + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (isBlank(subscriptionServiceType)) { + msg = "Input subscriptionServiceType is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (productFamilyId == null) { + execution.setVariable("productFamilyId", "") + } + + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + //requestDetails.modelInfo.for AAI PUT servieInstanceData & SDNC assignTopology + String modelInvariantUuid = "" + String modelVersion = "" + String modelUuid = "" + String modelName = "" + String serviceInstanceName = "" + //Generated in parent.for AAI PUT + String serviceInstanceId = "" + String serviceType = "" + String serviceRole = "" + + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + if (serviceDecomp != null) + { + serviceType = serviceDecomp.getServiceType() ?: "" + msoLogger.debug("serviceType:" + serviceType) + serviceRole = serviceDecomp.getServiceRole() ?: "" + + ServiceInstance serviceInstance = serviceDecomp.getServiceInstance() + if (serviceInstance != null) + { + serviceInstanceId = serviceInstance.getInstanceId() ?: "" + serviceInstanceName = serviceInstance.getInstanceName() ?: "" + execution.setVariable("serviceInstanceId", serviceInstanceId) + execution.setVariable("serviceInstanceName", serviceInstanceName) + } + + ModelInfo modelInfo = serviceDecomp.getModelInfo() + if (modelInfo != null) + { + modelInvariantUuid = modelInfo.getModelInvariantUuid() ?: "" + modelVersion = modelInfo.getModelVersion() ?: "" + modelUuid = modelInfo.getModelUuid() ?: "" + modelName = modelInfo.getModelName() ?: "" + } + else + { + msg = "Input serviceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + } + else + { + //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData & SDNC assignToplology + serviceInstanceName = execution.getVariable("serviceInstanceName") ?: "" + serviceInstanceId = execution.getVariable("serviceInstanceId") ?: "" + + String serviceModelInfo = execution.getVariable("serviceModelInfo") + if (isBlank(serviceModelInfo)) { + msg = "Input serviceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") ?: "" + modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") ?: "" + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") ?: "" + modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") ?: "" + //modelCustomizationUuid NA for SI + + } + + execution.setVariable("serviceType", serviceType) + execution.setVariable("serviceRole", serviceRole) + execution.setVariable("serviceInstanceName", serviceInstanceName) + + execution.setVariable("modelInvariantUuid", modelInvariantUuid) + execution.setVariable("modelVersion", modelVersion) + execution.setVariable("modelUuid", modelUuid) + execution.setVariable("modelName", modelName) + + //alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable + String svcTypes = UrnPropertiesReader.getVariable("sdnc.si.svc.types",execution) ?: "" + msoLogger.debug("SDNC SI serviceTypes:" + svcTypes) + List<String> svcList = Arrays.asList(svcTypes.split("\\s*,\\s*")); + boolean isSdncService= false + for (String listEntry : svcList){ + if (listEntry.equalsIgnoreCase(serviceType)){ + isSdncService = true + break; + } + } + + //All Macros are sent to SDNC, TRANSPORT(Macro) is sent to SDNW + //Alacartes are sent to SDNC if they are listed in config variable above + execution.setVariable("sendToSDNC", true) + if(execution.getVariable("sdncVersion").equals("1610")) //alacarte + { + if(!isSdncService){ + execution.setVariable("sendToSDNC", false) + //alacarte non-sdnc svcs must provide name (sdnc provides name for rest) + if (isBlank(execution.getVariable("serviceInstanceName" ))) + { + msg = "Input serviceInstanceName must be provided for alacarte" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + } + } + + msoLogger.debug("isSdncService: " + isSdncService) + msoLogger.debug("Send To SDNC: " + execution.getVariable("sendToSDNC")) + msoLogger.debug("Service Type: " + execution.getVariable("serviceType")) + + //macro may provide name and alacarte-portm may provide name + execution.setVariable("checkAAI", false) + if (!isBlank(execution.getVariable("serviceInstanceName" ))) + { + execution.setVariable("checkAAI", true) + } + + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + + //AAI PUT + String oStatus = execution.getVariable("initialStatus") ?: "Active" + if ("TRANSPORT".equalsIgnoreCase(serviceType)) + { + oStatus = "Created" + } + + String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${MsoUtils.xmlEscape(oStatus)}</orchestration-status>" + String serviceTypeLine = isBlank(serviceType) ? "" : "<service-type>${MsoUtils.xmlEscape(serviceType)}</service-type>" + String serviceRoleLine = isBlank(serviceRole) ? "" : "<service-role>${MsoUtils.xmlEscape(serviceRole)}</service-role>" + + //QUERY CATALOG DB AND GET WORKLOAD / ENVIRONMENT CONTEXT + String environmentContext = "" + String workloadContext ="" + + try{ + String json = cutils.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid ) + + msoLogger.debug("JSON IS: "+json) + + environmentContext = jsonUtil.getJsonValue(json, "serviceResources.environmentContext") ?: "" + workloadContext = jsonUtil.getJsonValue(json, "serviceResources.workloadContext") ?: "" + msoLogger.debug("Env Context is: "+ environmentContext) + msoLogger.debug("Workload Context is: "+ workloadContext) + }catch(BpmnError e){ + throw e + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + //Create AAI Payload + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) + String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri) + String serviceInstanceData = + """<service-instance xmlns=\"${namespace}\"> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + ${serviceTypeLine} + ${serviceRoleLine} + ${statusLine} + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id> + <environment-context>${MsoUtils.xmlEscape(environmentContext)}</environment-context> + <workload-context>${MsoUtils.xmlEscape(workloadContext)}</workload-context> + </service-instance>""".trim() + + execution.setVariable("serviceInstanceData", serviceInstanceData) + msoLogger.debug(" 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + //TODO: Will be able to replace with call to GenericGetService + public void getAAICustomerById (DelegateExecution execution) { + // https://{aaiEP}/aai/v8/business/customers/customer/{globalCustomerId} + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + try { + + String globalCustomerId = execution.getVariable("globalSubscriberId") //VID to AAI name map + msoLogger.debug(" ***** getAAICustomerById ***** globalCustomerId:" + globalCustomerId) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) + if (isBlank(aai_endpoint) || isBlank(aai_uri)) + { + msg = "AAI URL is invalid. Endpoint:" + aai_endpoint + aai_uri + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + String getAAICustomerUrl = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(globalCustomerId,"UTF-8") + + msoLogger.debug("getAAICustomerById Url:" + getAAICustomerUrl) + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, getAAICustomerUrl) + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msg = "getAAICustomerById ResponseCode:" + returnCode + " ResponseString:" + aaiResponseAsString + msoLogger.debug(msg) + + if (returnCode=='200') { + // Customer found by ID. FLow to proceed. + msoLogger.debug(msg) + + //TODO Deferred + //we might verify that service-subscription with matching name exists + //and throw error if not. If not checked, we will get exception in subsequent step on Create call + //in 1610 we assume both customer & service subscription were pre-created + + } else { + if (returnCode=='404') { + msg = "GlobalCustomerId:" + globalCustomerId + " not found (404) in AAI" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, aaiResponseAsString, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + WorkflowException workflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", workflowException) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + msg = "Error in getAAICustomerById ResponseCode:" + returnCode + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in getAAICustomerById. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit getAAICustomerById") + + } + + public void postProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("postProcessAAIGET") + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.debug("Error getting Service-instance from AAI", + serviceInstanceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + msoLogger.debug("Found Service-instance in AAI") + msg = "ServiceInstance already exists in AAI:" + serviceInstanceName + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIGET. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET") + } + + public void postProcessAAIPUT(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("postProcessAAIPUT") + String msg = "" + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator") + if(!succInAAI){ + msoLogger.debug("Error putting Service-instance in AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + } + else + { + //start rollback set up + RollbackData rollbackData = new RollbackData() + def disableRollback = execution.getVariable("disableRollback") + rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString()) + rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") + rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId) + rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType")) + rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId")) + execution.setVariable("rollbackData", rollbackData) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIPUT") + } + + public void preProcessSDNCAssignRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + String msg = "" + msoLogger.trace("preProcessSDNCAssignRequest") + + try { + def serviceInstanceId = execution.getVariable("serviceInstanceId") + def serviceInstanceName = execution.getVariable("serviceInstanceName") + def callbackURL = execution.getVariable("sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def serviceId = execution.getVariable("productFamilyId") + def subscriptionServiceType = execution.getVariable("subscriptionServiceType") + def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + def msoAction = "" + + def modelInvariantUuid = execution.getVariable("modelInvariantUuid") + def modelVersion = execution.getVariable("modelVersion") + def modelUuid = execution.getVariable("modelUuid") + def modelName = execution.getVariable("modelName") + + def sdncRequestId = UUID.randomUUID().toString() + + def siParamsXml = execution.getVariable("siParamsXml") + + // special URL for SDNW, msoAction helps set diff url in SDNCA + if("TRANSPORT".equalsIgnoreCase(execution.getVariable("serviceType"))) + { + msoAction = "TRANSPORT" + } + + String sdncAssignRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>assign</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + <request-action>CreateServiceInstance</request-action> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <service-request-input> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + ${siParamsXml} + </service-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncAssignRequest:\n" + sdncAssignRequest) + sdncAssignRequest = utils.formatXml(sdncAssignRequest) + execution.setVariable("sdncAssignRequest", sdncAssignRequest) + msoLogger.debug("sdncAssignRequest: " + sdncAssignRequest) + + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncDelete = sdncAssignRequest.replace(">assign<", ">delete<").replace(">CreateServiceInstance<", ">DeleteServiceInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def sdncRequestId3 = UUID.randomUUID().toString() + String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId2}<", ">${sdncRequestId3}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put("SERVICEINSTANCE", "sdncDeactivate", sdncDeactivate) + rollbackData.put("SERVICEINSTANCE", "sdncDelete", sdncDelete) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCAssignRequest. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessSDNCAssignRequest") + } + + public void postProcessSDNCAssign (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("postProcessSDNCAssign") + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + String response = execution.getVariable("sdncAdapterResponse") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Good response from SDNC Adapter for service-instance topology assign: \n" + response) + + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put("SERVICEINSTANCE", "rollbackSDNC", "true") + execution.setVariable("rollbackData", rollbackData) + + }else{ + msoLogger.debug("Bad Response from SDNC Adapter for service-instance assign") + throw new BpmnError("MSOWorkflowException") + } + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in postProcessSDNCAssign. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessSDNCAssign") + } + + public void postProcessAAIGET2(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("postProcessAAIGET2") + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.debug("Error getting Service-instance from AAI in postProcessAAIGET2", + serviceInstanceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET2 GENGS_SuccessIndicator:" + succInAAI + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + String aaiService = execution.getVariable("GENGS_service") + if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "service-instance-name"))) { + execution.setVariable("serviceInstanceName", utils.getNodeText(aaiService, "service-instance-name")) + msoLogger.debug("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName")) + } + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIGET2 " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET2") + } + + public void preProcessRollback (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("preProcessRollback") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit preProcessRollback") + } + + public void postProcessRollback (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("postProcessRollback") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit postProcessRollback") + } + + public void createProject(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("createProject") + + String bpmnRequest = execution.getVariable("requestJson") + String projectName = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.project.projectName") + String serviceInstance = execution.getVariable("serviceInstanceId") + + msoLogger.debug("BPMN REQUEST IS: "+ bpmnRequest) + msoLogger.debug("PROJECT NAME: " + projectName) + msoLogger.debug("Service Instance: " + serviceInstance) + + if(projectName == null||projectName.equals("")){ + msoLogger.debug("Project Name was not found in input. Skipping task...") + }else{ + try{ + AAICreateResources aaiCR = new AAICreateResources() + aaiCR.createAAIProject(projectName, serviceInstance) + }catch(Exception ex){ + String msg = "Exception in createProject. " + ex.getMessage(); + msoLogger.debug(msg) + msoLogger.error(ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + msoLogger.trace("Exit createProject") + } + + public void createOwningEntity(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + msoLogger.trace("createOwningEntity") + String msg = ""; + String bpmnRequest = execution.getVariable("requestJson") + String owningEntityId = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.owningEntity.owningEntityId") + String owningEntityName = jsonUtil.getJsonValue(bpmnRequest,"requestDetails.owningEntity.owningEntityName"); + String serviceInstance = execution.getVariable("serviceInstanceId") + + msoLogger.debug("owningEntity: " + owningEntityId) + msoLogger.debug("OwningEntityName: "+ owningEntityName) + msoLogger.debug("Service Instance: " + serviceInstance) + + try{ + AAICreateResources aaiCR = new AAICreateResources() + if(owningEntityId==null||owningEntityId.equals("")){ + msg = "Exception in createOwningEntity. OwningEntityId is null in input."; + throw new IllegalStateException(); + }else{ + if(aaiCR.existsOwningEntity(owningEntityId)){ + aaiCR.connectOwningEntityandServiceInstance(owningEntityId,serviceInstance) + }else{ + if(owningEntityName==null||owningEntityName.equals("")){ + msg = "Exception in createOwningEntity. Can't create an owningEntity without an owningEntityName in input."; + throw new IllegalStateException(); + }else{ + Optional<OwningEntity> owningEntity = aaiCR.getOwningEntityNames(owningEntityName); + if(owningEntity.isPresent()){ + msg = "Exception in createOwningEntity. Can't create OwningEntity as name already exists in AAI associated with a different owning-entity-id (name must be unique)."; + throw new IllegalStateException(); + } else { + aaiCR.createAAIOwningEntity(owningEntityId, owningEntityName, serviceInstance) + } + } + } + } + }catch(Exception ex){ + msoLogger.debug(msg) + msoLogger.error(ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit createOwningEntity") + } + + // ******************************* + // Build Error Section + // ******************************* + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + try{ + msoLogger.debug("Caught a Java Exception in DoCreateServiceInstance") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception in DoCreateServiceInstance") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception in DoCreateServiceInstance") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.trace("Completed processJavaException Method in DoCreateServiceInstance") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy new file mode 100644 index 0000000000..dd56b8f2cc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy @@ -0,0 +1,242 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject; +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils; +/** + * This groovy class supports the <class>DoCreateServiceInstanceRollback.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - rollbackData with + * globalCustomerId + * subscriptionServiceType + * serviceInstanceId + * disableRollback + * rollbackAAI + * rollbackSDNC + * sdncRollbackRequest + * + * + * Outputs: + * @param - rollbackError + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * + */ +public class DoCreateServiceInstanceRollback extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceRollback.class); + + + String Prefix="DCRESIRB_" + + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + msoLogger.trace("preProcessRequest") + execution.setVariable("rollbackAAI",false) + execution.setVariable("rollbackSDNC",false) + + try { + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + if (rollbackData.hasType("SERVICEINSTANCE")) { + + def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + + def globalSubscriberId = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId") + execution.setVariable("globalSubscriberId", globalSubscriberId) + + def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI") + if ("true".equals(rollbackAAI)) + { + execution.setVariable("rollbackAAI",true) + } + + def rollbackSDNC = rollbackData.get("SERVICEINSTANCE", "rollbackSDNC") + if ("true".equals(rollbackSDNC)) + { + execution.setVariable("rollbackSDNC", true) + } + + if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true) + { + execution.setVariable("skipRollback", true) + } + + def sdncDelete = rollbackData.get("SERVICEINSTANCE", "sdncDelete") + execution.setVariable("sdncDelete", sdncDelete) + def sdncDeactivate = rollbackData.get("SERVICEINSTANCE", "sdncDeactivate") + execution.setVariable("sdncDeactivate", sdncDeactivate) + msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate) + msoLogger.debug("sdncDelete:\n" + sdncDelete) + } + else { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in Create ServiceInstance Rollback preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method) { + + msoLogger.trace("validateSDNCResponse") + String msg = "" + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msg = "SDNC Adapter service-instance rollback successful for " + method + msoLogger.debug(msg) + }else{ + execution.setVariable("rolledBack", false) + msg = "Error Response from SDNC Adapter service-instance rollback for " + method + execution.setVariable("rollbackError", msg) + msoLogger.debug(msg) + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in Create ServiceInstance rollback for " + method + " Exception:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit validateSDNCResponse") + } + + public void postProcessRequest(DelegateExecution execution) { + + msoLogger.trace("postProcessRequest") + String msg = "" + try { + execution.setVariable("rollbackData", null) + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean rollbackAAI = execution.getVariable("rollbackAAI") + boolean rollbackSDNC = execution.getVariable("rollbackSDNC") + if (rollbackAAI || rollbackSDNC) + { + execution.setVariable("rolledBack", true) + } + if (rollbackAAI) + { + boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator") + if(!succInAAI){ + execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful + execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback") + msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId) + } + } + msoLogger.trace("Exit postProcessRequest") + + } catch (BpmnError e) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage() + msoLogger.debug(msg) + } catch (Exception ex) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage() + msoLogger.debug(msg) + } + + } + + public void processRollbackException(DelegateExecution execution){ + + msoLogger.trace("processRollbackException") + try{ + msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollback") + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught exception in ServiceInstance Create Rollback") + execution.setVariable("WorkflowException", null) + + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during processRollbackExceptions Method: ") + }catch(Exception e){ + msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage()) + } + + msoLogger.debug("Exit processRollbackException") + } + + public void processRollbackJavaException(DelegateExecution execution){ + + msoLogger.trace("processRollbackJavaException") + try{ + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Create Rollback") + msoLogger.debug("Caught Exception in processRollbackJavaException") + + }catch(Exception e){ + msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage()) + } + msoLogger.trace("Exit processRollbackJavaException") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy new file mode 100644 index 0000000000..6e1a5dcb55 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.camunda.bpm.engine.runtime.Execution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.client.orchestration.AAIServiceInstanceResources +import org.onap.so.logger.MsoLogger + + +public class DoCreateServiceInstanceRollbackV2 extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceRollbackV2.class); + + @Override + public void preProcessRequest(DelegateExecution execution) { + + } + + public void aaiServiceInstanceRollback (DelegateExecution execution) { + def aaiServiceInstanceRollback = execution.getVariable("aaiServiceInstanceRollback") + if(aaiServiceInstanceRollback){ + msoLogger.trace("Started aaiServiceInstanceRollback") + try{ + ServiceDecomposition serviceDecomp = execution.getVariable("ServiceDecomposition") + AAIServiceInstanceResources aaiO = new AAIServiceInstanceResources() + aaiO.deleteServiceInstance(serviceDecomp) + }catch (Exception ex) { + String msg = "Error Response from AAI for aaiServiceInstanceRollback" + execution.setVariable("rollbackError", msg) + msoLogger.debug(msg) + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("Completed aaiServiceInstanceRollback") + }else{ + msoLogger.trace("SKIPPING A&AI ROLLBACK") + } + } + + public void rollbackError (DelegateExecution execution) { + msoLogger.trace("rollbackError") + try{ + msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollbackV2") + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during rollbackError: " + b.getMessage()) + }catch(Exception e){ + msoLogger.debug("Caught Exception during rollbackError: " + e.getMessage()) + } + msoLogger.debug(" Exit processRollbackException") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy new file mode 100644 index 0000000000..8af8e6ba1b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy @@ -0,0 +1,104 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.client.orchestration.AAIServiceInstanceResources +import org.onap.so.client.orchestration.SDNCServiceInstanceResources +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + +import groovy.json.* + +/** + * This groovy class supports the <class>DoCreateServiceInstanceV2.bpmn</class> process. + * +*/ + +public class DoCreateServiceInstanceV2 extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceV2.class); + AAIServiceInstanceResources aaiO = new AAIServiceInstanceResources() + SDNCServiceInstanceResources sdncO = new SDNCServiceInstanceResources() + + @Override + public void preProcessRequest(DelegateExecution execution) { + } + + public void createServiceInstance(DelegateExecution execution) { + execution.setVariable("callSDNC",true) + if(execution.getVariable("serviceType").equalsIgnoreCase("PORT-MIRROR")== false){ + if(execution.getVariable("sdncVersion").equals("1610")){ + execution.setVariable("callSDNC",false); + } + } + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + try{ + aaiO.createServiceInstance(serviceDecomp) + } catch (BpmnError e) { + throw e + } + } + + public void createProject(DelegateExecution execution) { + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getProject() != null) { + try{ + aaiO.createProjectandConnectServiceInstance(serviceDecomp) + } catch (BpmnError e) { + throw e + } + } + } + + public void createOwningEntity(DelegateExecution execution) { + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getOwningEntity() != null) { + try{ + aaiO.createOwningEntityandConnectServiceInstance(serviceDecomp) + } catch (BpmnError e) { + throw e + } + } + } + + public void sdncAssignRequest(DelegateExecution execution) { + ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition") + if (serviceDecomp != null) { + try { + sdncO.sendSyncResponse(serviceDecomp) + } catch (BpmnError e) { + throw e + } + } + + } + + public void rollback(DelegateExecution execution) { + //TODO + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy new file mode 100644 index 0000000000..10f6acd403 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy @@ -0,0 +1,282 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.UrnPropertiesReader; +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import groovy.json.* + +/** + * This groovy class supports the <class>DoCreateVFCNetworkServiceInstance.bpmn</class> process. + * flow for VFC Network Service Create + */ +public class DoCreateVFCNetworkServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVFCNetworkServiceInstance.class); + + String vfcUrl = "/vfc/rest/v1/vfcadapter" + + String host = "http://mso.mso.testlab.openecomp.org:8080" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void preProcessRequest (DelegateExecution execution) { + String msg = "" + msoLogger.trace("preProcessRequest()") + try { + //deal with nsName and Description + String nsServiceName = execution.getVariable("nsServiceName") + String nsServiceDescription = execution.getVariable("nsServiceDescription") + msoLogger.debug("nsServiceName:" + nsServiceName + " nsServiceDescription:" + nsServiceDescription) + //deal with operation key + String globalSubscriberId = execution.getVariable("globalSubscriberId") + msoLogger.debug("globalSubscriberId:" + globalSubscriberId) + String serviceType = execution.getVariable("serviceType") + msoLogger.debug("serviceType:" + serviceType) + String serviceId = execution.getVariable("serviceId") + msoLogger.debug("serviceId:" + serviceId) + String operationId = execution.getVariable("operationId") + msoLogger.debug("serviceType:" + serviceType) + String nodeTemplateUUID = execution.getVariable("resourceUUID") + msoLogger.debug("nodeTemplateUUID:" + nodeTemplateUUID) + /* + * segmentInformation needed as a object of segment + * { + * "domain":"", + * "nodeTemplateName":"", + * "nodeType":"", + * "nsParameters":{ + * //this is the nsParameters sent to VF-C + * } + * } + */ + String nsParameters = execution.getVariable("resourceParameters") + msoLogger.debug("nsParameters:" + nsParameters) + String nsOperationKey = """{ + "globalSubscriberId":"${globalSubscriberId}", + "serviceType":"${serviceType}", + "serviceId":"${serviceId}", + "operationId":"${operationId}", + "nodeTemplateUUID":"${nodeTemplateUUID}" + }""" + execution.setVariable("nsOperationKey", nsOperationKey); + execution.setVariable("nsParameters", nsParameters) + + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest") + } + + /** + * create NS task + */ + public void createNetworkService(DelegateExecution execution) { + msoLogger.trace("createNetworkService") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String nsParameters = execution.getVariable("nsParameters"); + String nsServiceName = execution.getVariable("nsServiceName") + String nsServiceDescription = execution.getVariable("nsServiceDescription") + String reqBody ="""{ + "nsServiceName":"${nsServiceName}", + "nsServiceDescription":"${nsServiceDescription}", + "nsOperationKey":${nsOperationKey}, + "nsParameters":${nsParameters} + }""" + APIResponse apiResponse = postRequest(execution, host + vfcUrl + "/ns", reqBody) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String nsInstanceId = ""; + if(returnCode== "200" || returnCode == "201"){ + nsInstanceId = jsonUtil.getJsonValue(aaiResponseAsString, "nsInstanceId") + } + execution.setVariable("nsInstanceId", nsInstanceId) + msoLogger.trace("Exit createNetworkService") + } + + /** + * instantiate NS task + */ + public void instantiateNetworkService(DelegateExecution execution) { + msoLogger.trace("instantiateNetworkService") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String nsParameters = execution.getVariable("nsParameters"); + String nsServiceName = execution.getVariable("nsServiceName") + String nsServiceDescription = execution.getVariable("nsServiceDescription") + String reqBody ="""{ + "nsServiceName":"${nsServiceName}", + "nsServiceDescription":"${nsServiceDescription}", + "nsOperationKey":${nsOperationKey}, + "nsParameters":${nsParameters} + }""" + String nsInstanceId = execution.getVariable("nsInstanceId") + String url = host + vfcUrl + "/ns/" +nsInstanceId + "/instantiate" + APIResponse apiResponse = postRequest(execution, url, reqBody) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String jobId = ""; + if(returnCode== "200"|| returnCode == "201"){ + jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId") + } + execution.setVariable("jobId", jobId) + msoLogger.trace("Exit instantiateNetworkService") + } + + /** + * query NS task + */ + public void queryNSProgress(DelegateExecution execution) { + msoLogger.trace("queryNSProgress") + String jobId = execution.getVariable("jobId") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String url = host + vfcUrl + "/jobs/" + jobId + APIResponse apiResponse = postRequest(execution, url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String operationStatus = "error" + if(returnCode== "200"|| returnCode == "201"){ + operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status") + } + execution.setVariable("operationStatus", operationStatus) + msoLogger.trace("Exit queryNSProgress") + } + + /** + * delay 5 sec + */ + public void timeDelay(DelegateExecution execution) { + try { + Thread.sleep(5000); + } catch(InterruptedException e) { + msoLogger.debug("Time Delay exception" + e ) + } + } + + /** + * finish NS task + */ + public void addNSRelationship(DelegateExecution execution) { + msoLogger.trace("addNSRelationship") + String nsInstanceId = execution.getVariable("nsInstanceId") + if(nsInstanceId == null || nsInstanceId == ""){ + msoLogger.debug(" create NS failed, so do not need to add relationship") + return + } + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("serviceType") + String serviceId = execution.getVariable("serviceId") + String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11"> + <related-to>service-instance</related-to> + <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link> + <relationship-data> + <relationship-key>customer.global-customer-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-subscription.service-type</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-instance.service-instance-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value> + </relationship-data> + </relationship>""" + String endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + msoLogger.debug("Add Relationship req:\n" + addRelationPayload) + String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship" + APIResponse aaiRsp = executeAAIPutCall(execution, url, addRelationPayload) + msoLogger.debug("aai response status code:" + aaiRsp.getStatusCode()) + msoLogger.debug("aai response content:" + aaiRsp.getResponseBodyAsString()) + msoLogger.trace("Exit addNSRelationship") + } + + public APIResponse executeAAIPutCall(DelegateExecution execution, String url, String payload){ + msoLogger.trace("Started Execute AAI Put Process") + APIResponse apiResponse = null + try{ + String uuid = utils.getRequestID() + msoLogger.debug("Generated uuid is: " + uuid) + msoLogger.debug("URL to be used is: " + url) + String userName = UrnPropertiesReader.getVariable("aai.auth", execution) + String password = UrnPropertiesReader.getVariable("mso.msoKey", execution) + String basicAuthCred = utils.getBasicAuth(userName,password) + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml"); + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.httpPut(payload) + msoLogger.trace("Completed Execute AAI Put Process") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Put Call", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + + /** + * post request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){ + msoLogger.trace("Started Execute VFC adapter Post Process") + msoLogger.debug("url:"+url +"\nrequestBody:"+ requestBody) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk"); + apiResponse = client.httpPost(requestBody) + msoLogger.debug("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) + msoLogger.trace("Completed Execute VF-C adapter Post Process") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Post Call", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy new file mode 100644 index 0000000000..59d38bfe86 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy @@ -0,0 +1,2133 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray +import org.json.JSONObject +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VfModuleBase +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.CloudFlavor +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.DecomposeJsonUtil +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.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.springframework.web.util.UriUtils +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.NamedNodeMap +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource + +import com.fasterxml.jackson.databind.ObjectMapper + + + +public class DoCreateVfModule extends VfModuleBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModule.class); + + String Prefix="DCVFM_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + CatalogDbUtils catalog = new CatalogDbUtils() + DecomposeJsonUtil decomposeJsonUtils = new DecomposeJsonUtil() + + /** + * Validates the request message and sets up the workflow. + * @param execution the execution + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + execution.setVariable('prefix', Prefix) + try{ + def rollbackData = execution.getVariable("rollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } + + execution.setVariable("DCVFM_vnfParamsExistFlag", false) + execution.setVariable("DCVFM_oamManagementV4Address", "") + execution.setVariable("DCVFM_oamManagementV6Address", "") + + String request = execution.getVariable("DoCreateVfModuleRequest") + + if (request == null || request.isEmpty()) { + // Building Block-type request + + String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo") + + def serviceModelInfo = execution.getVariable("serviceModelInfo") + msoLogger.debug("serviceModelInfo: " + serviceModelInfo) + String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") + msoLogger.debug("modelInvariantUuid: " + modelInvariantUuid) + + def vnfModelInfo = execution.getVariable("vnfModelInfo") + + //tenantId + def tenantId = execution.getVariable("tenantId") + execution.setVariable("DCVFM_tenantId", tenantId) + rollbackData.put("VFMODULE", "tenantid", tenantId) + //volumeGroupId + def volumeGroupId = execution.getVariable("volumeGroupId") + execution.setVariable("DCVFM_volumeGroupId", volumeGroupId) + //volumeGroupName + def volumeGroupName = execution.getVariable("volumeGroupName") + execution.setVariable("DCVFM_volumeGroupName", volumeGroupName) + //cloudSiteId + def cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DCVFM_cloudSiteId", cloudSiteId) + rollbackData.put("VFMODULE", "aiccloudregion", cloudSiteId) + msoLogger.debug("cloudSiteId: " + cloudSiteId) + //vnfType + def vnfType = execution.getVariable("vnfType") + execution.setVariable("DCVFM_vnfType", vnfType) + rollbackData.put("VFMODULE", "vnftype", vnfType) + msoLogger.debug("vnfType: " + vnfType) + //vnfName + def vnfName = execution.getVariable("vnfName") + execution.setVariable("DCVFM_vnfName", vnfName) + rollbackData.put("VFMODULE", "vnfname", vnfName) + msoLogger.debug("vnfName: " + vnfName) + //vnfId + def vnfId = execution.getVariable("vnfId") + execution.setVariable("DCVFM_vnfId", vnfId) + rollbackData.put("VFMODULE", "vnfid", vnfId) + msoLogger.debug("vnfId: " + vnfId) + //vfModuleName + def vfModuleName = execution.getVariable("vfModuleName") + execution.setVariable("DCVFM_vfModuleName", vfModuleName) + rollbackData.put("VFMODULE", "vfmodulename", vfModuleName) + msoLogger.debug("vfModuleName: " + vfModuleName) + //vfModuleModelName + def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName") + execution.setVariable("DCVFM_vfModuleModelName", vfModuleModelName) + rollbackData.put("VFMODULE", "vfmodulemodelname", vfModuleModelName) + msoLogger.debug("vfModuleModelName: " + vfModuleModelName) + //modelCustomizationUuid + def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid") + execution.setVariable("DCVFM_modelCustomizationUuid", modelCustomizationUuid) + rollbackData.put("VFMODULE", "modelcustomizationuuid", modelCustomizationUuid) + msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid) + //vfModuleId + def vfModuleId = execution.getVariable("vfModuleId") + execution.setVariable("DCVFM_vfModuleId", vfModuleId) + msoLogger.debug("vfModuleId: " + vfModuleId) + def requestId = execution.getVariable("msoRequestId") + execution.setVariable("DCVFM_requestId", requestId) + msoLogger.debug("requestId: " + requestId) + rollbackData.put("VFMODULE", "msorequestid", requestId) + // Set mso-request-id to request-id for VNF Adapter interface + execution.setVariable("mso-request-id", requestId) + //serviceId + def serviceId = execution.getVariable("serviceId") + execution.setVariable("DCVFM_serviceId", serviceId) + msoLogger.debug("serviceId: " + serviceId) + //serviceInstanceId + def serviceInstanceId = execution.getVariable("serviceInstanceId") + execution.setVariable("DCVFM_serviceInstanceId", serviceInstanceId) + rollbackData.put("VFMODULE", "serviceInstanceId", serviceInstanceId) + msoLogger.debug("serviceInstanceId: " + serviceInstanceId) + //flavorList + ArrayList<CloudFlavor> flavorList = execution.getVariable(cloudSiteId + "_flavorList") + if (flavorList != null) { + execution.setVariable("DCVFM_flavorList", flavorList) + logDebug("flavorList is: " + flavorList, isDebugLogEnabled) + } + //source - HARDCODED + def source = "VID" + execution.setVariable("DCVFM_source", source) + rollbackData.put("VFMODULE", "source", source) + msoLogger.debug("source: " + source) + //backoutOnFailure + def disableRollback = execution.getVariable("disableRollback") + def backoutOnFailure = true + if (disableRollback != null && disableRollback == true) { + backoutOnFailure = false + } + execution.setVariable("DCVFM_backoutOnFailure", backoutOnFailure) + msoLogger.debug("backoutOnFailure: " + backoutOnFailure) + //isBaseVfModule + def isBaseVfModule = execution.getVariable("isBaseVfModule") + execution.setVariable("DCVFM_isBaseVfModule", isBaseVfModule) + msoLogger.debug("isBaseVfModule: " + isBaseVfModule) + //asdcServiceModelVersion + def asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion") + execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion) + msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion) + //personaModelId + execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid")) + //personaModelVersion + execution.setVariable("DCVFM_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelUuid")) + //vfModuleLabel + def vfModuleLabel = execution.getVariable("vfModuleLabel") + if (vfModuleLabel != null) { + execution.setVariable("DCVFM_vfModuleLabel", vfModuleLabel) + msoLogger.debug("vfModuleLabel: " + vfModuleLabel) + } + //Get or Generate UUID + String uuid = execution.getVariable("DCVFM_uuid") + if(uuid == null){ + uuid = UUID.randomUUID() + msoLogger.debug("Generated messageId (UUID) is: " + uuid) + }else{ + msoLogger.debug("Found messageId (UUID) is: " + uuid) + } + //isVidRequest + String isVidRequest = execution.getVariable("isVidRequest") + // default to true + if (isVidRequest == null || isVidRequest.isEmpty()) { + execution.setVariable("isVidRequest", "true") + } + //globalSubscriberId + String globalSubscriberId = execution.getVariable("globalSubscriberId") + execution.setVariable("DCVFM_globalSubscriberId", globalSubscriberId) + msoLogger.debug("globalSubsrciberId: " + globalSubscriberId) + Map<String,String> vfModuleInputParams = execution.getVariable("vfModuleInputParams") + if (vfModuleInputParams != null) { + execution.setVariable("DCVFM_vnfParamsMap", vfModuleInputParams) + execution.setVariable("DCVFM_vnfParamsExistFlag", true) + } + //usePreload + def usePreload = execution.getVariable("usePreload") + execution.setVariable("DCVFM_usePreload", usePreload) + msoLogger.debug("usePreload: " + usePreload) + //aLaCarte + def aLaCarte = execution.getVariable("aLaCarte") + execution.setVariable("DCVFM_aLaCarte", aLaCarte) + msoLogger.debug("aLaCarte: " + aLaCarte) + + //get workload and environment context from parent SI + String environmentContext = "" + String workloadContext ="" + String serviceType ="" + + try{ + String json = catalog.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid ) + serviceType = jsonUtil.getJsonValue(json, "serviceResources.serviceType") + }catch(BpmnError e){ + throw e + } catch (Exception ex){ + String msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + try{ + AAIUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId) + AAIResourcesClient aaiRC = new AAIResourcesClient() + AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI) + Map<String, Object> aaiJson = aaiRW.asMap() + environmentContext = aaiJson.getOrDefault("environment-context","") + workloadContext = aaiJson.getOrDefault("workload-context","") + + }catch (Exception ex) { + msoLogger.debug("Error retreiving parent service instance information") + } + + execution.setVariable("DCVFM_environmentContext",environmentContext) + execution.setVariable("DCVFM_workloadContext",workloadContext) + + } + else { + // The info is inside the request - DEAD CODE + msoLogger.debug("DoCreateVfModule request: " + request) + + //tenantId + def tenantId = "" + if (utils.nodeExists(request, "tenant-id")) { + tenantId = utils.getNodeText(request, "tenant-id") + } + execution.setVariable("DCVFM_tenantId", tenantId) + rollbackData.put("VFMODULE", "tenantid", tenantId) + //volumeGroupId + def volumeGroupId = "" + if (utils.nodeExists(request, "volume-group-id")) { + volumeGroupId = utils.getNodeText(request, "volume-group-id") + } + execution.setVariable("DCVFM_volumeGroupId", volumeGroupId) + //volumeGroupId + def volumeGroupName = "" + if (utils.nodeExists(request, "volume-group-name")) { + volumeGroupName = utils.getNodeText(request, "volume-group-name") + } + execution.setVariable("DCVFM_volumeGroupName", volumeGroupName) + //cloudSiteId + def cloudSiteId = "" + if (utils.nodeExists(request, "aic-cloud-region")) { + cloudSiteId = utils.getNodeText(request, "aic-cloud-region") + } + execution.setVariable("DCVFM_cloudSiteId", cloudSiteId) + rollbackData.put("VFMODULE", "aiccloudregion", cloudSiteId) + msoLogger.debug("cloudSiteId: " + cloudSiteId) + //vnfType + def vnfType = "" + if (utils.nodeExists(request, "vnf-type")) { + vnfType = utils.getNodeText(request, "vnf-type") + } + execution.setVariable("DCVFM_vnfType", vnfType) + rollbackData.put("VFMODULE", "vnftype", vnfType) + msoLogger.debug("vnfType: " + vnfType) + //vnfName + def vnfName = "" + if (utils.nodeExists(request, "vnf-name")) { + vnfName = utils.getNodeText(request, "vnf-name") + } + execution.setVariable("DCVFM_vnfName", vnfName) + rollbackData.put("VFMODULE", "vnfname", vnfName) + msoLogger.debug("vnfName: " + vnfName) + //vnfId + def vnfId = "" + if (utils.nodeExists(request, "vnf-id")) { + vnfId = utils.getNodeText(request, "vnf-id") + } + execution.setVariable("DCVFM_vnfId", vnfId) + rollbackData.put("VFMODULE", "vnfid", vnfId) + msoLogger.debug("vnfId: " + vnfId) + //vfModuleName + def vfModuleName = "" + if (utils.nodeExists(request, "vf-module-name")) { + vfModuleName = utils.getNodeText(request, "vf-module-name") + } + execution.setVariable("DCVFM_vfModuleName", vfModuleName) + rollbackData.put("VFMODULE", "vfmodulename", vfModuleName) + msoLogger.debug("vfModuleName: " + vfModuleName) + //vfModuleModelName + def vfModuleModelName = "" + if (utils.nodeExists(request, "vf-module-model-name")) { + vfModuleModelName = utils.getNodeText(request, "vf-module-model-name") + } + execution.setVariable("DCVFM_vfModuleModelName", vfModuleModelName) + rollbackData.put("VFMODULE", "vfmodulemodelname", vfModuleModelName) + msoLogger.debug("vfModuleModelName: " + vfModuleModelName) + //modelCustomizationUuid + def modelCustomizationUuid = "" + if (utils.nodeExists(request, "model-customization-id")) { + modelCustomizationUuid = utils.getNodeText(request, "model-customization-id") + } + execution.setVariable("DCVFM_modelCustomizationUuid", modelCustomizationUuid) + rollbackData.put("VFMODULE", "modelcustomizationuuid", modelCustomizationUuid) + msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid) + //vfModuleId + def vfModuleId = "" + if (utils.nodeExists(request, "vf-module-id")) { + vfModuleId = utils.getNodeText(request, "vf-module-id") + } + execution.setVariable("DCVFM_vfModuleId", vfModuleId) + msoLogger.debug("vfModuleId: " + vfModuleId) + def requestId = "" + if (utils.nodeExists(request, "request-id")) { + requestId = utils.getNodeText(request, "request-id") + } + execution.setVariable("DCVFM_requestId", requestId) + msoLogger.debug("requestId: " + requestId) + //serviceId + def serviceId = "" + if (utils.nodeExists(request, "service-id")) { + serviceId = utils.getNodeText(request, "service-id") + } + execution.setVariable("DCVFM_serviceId", serviceId) + msoLogger.debug("serviceId: " + serviceId) + //serviceInstanceId + def serviceInstanceId = "" + if (utils.nodeExists(request, "service-instance-id")) { + serviceInstanceId = utils.getNodeText(request, "service-instance-id") + } + execution.setVariable("DCVFM_serviceInstanceId", serviceInstanceId) + rollbackData.put("VFMODULE", "serviceInstanceId", serviceInstanceId) + msoLogger.debug("serviceInstanceId: " + serviceInstanceId) + //source + def source = "" + if (utils.nodeExists(request, "source")) { + source = utils.getNodeText(request, "source") + } + execution.setVariable("DCVFM_source", source) + rollbackData.put("VFMODULE", "source", source) + msoLogger.debug("source: " + source) + //backoutOnFailure + NetworkUtils networkUtils = new NetworkUtils() + def backoutOnFailure = networkUtils.isRollbackEnabled(execution,request) + execution.setVariable("DCVFM_backoutOnFailure", backoutOnFailure) + msoLogger.debug("backoutOnFailure: " + backoutOnFailure) + //isBaseVfModule + def isBaseVfModule = "false" + if (utils.nodeExists(request, "is-base-vf-module")) { + isBaseVfModule = utils.getNodeText(request, "is-base-vf-module") + } + execution.setVariable("DCVFM_isBaseVfModule", isBaseVfModule) + msoLogger.debug("isBaseVfModule: " + isBaseVfModule) + //asdcServiceModelVersion + def asdcServiceModelVersion = "" + if (utils.nodeExists(request, "asdc-service-model-version")) { + asdcServiceModelVersion = utils.getNodeText(request, "asdc-service-model-version") + } + execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion) + msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion) + + //personaModelId + def personaModelId = "" + if (utils.nodeExists(request, "persona-model-id")) { + personaModelId = utils.getNodeText(request, "persona-model-id") + } + execution.setVariable("DCVFM_personaModelId", personaModelId) + msoLogger.debug("personaModelId: " + personaModelId) + + //personaModelVersion + def personaModelVersion = "" + if (utils.nodeExists(request, "persona-model-version")) { + personaModelVersion = utils.getNodeText(request, "persona-model-version") + } + execution.setVariable("DCVFM_personaModelVersion", personaModelVersion) + msoLogger.debug("personaModelVersion: " + personaModelVersion) + + // Process the parameters + + String vnfParamsChildNodes = utils.getChildNodes(request, "vnf-params") + if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){ + msoLogger.debug("Request contains NO VNF Params") + }else{ + msoLogger.debug("Request does contain VNF Params") + execution.setVariable("DCVFM_vnfParamsExistFlag", true) + + InputSource xmlSource = new InputSource(new StringReader(request)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setNamespaceAware(true) + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document xml = docBuilder.parse(xmlSource) + //Get params, build map + Map<String, String> paramsMap = new HashMap<String, String>() + NodeList paramsList = xml.getElementsByTagNameNS("*", "param") + + for (int z = 0; z < paramsList.getLength(); z++) { + Node node = paramsList.item(z) + String paramValue = node.getTextContent() + NamedNodeMap e = node.getAttributes() + String paramName = e.getNamedItem("name").getTextContent() + paramsMap.put(paramName, paramValue) + } + execution.setVariable("DCVFM_vnfParamsMap", paramsMap) + } + } + + //Get or Generate UUID + String uuid = execution.getVariable("DCVFM_uuid") + if(uuid == null){ + uuid = UUID.randomUUID() + msoLogger.debug("Generated messageId (UUID) is: " + uuid) + }else{ + msoLogger.debug("Found messageId (UUID) is: " + uuid) + } + // Get sdncVersion, default to empty + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null) { + sdncVersion = "" + } + msoLogger.debug("sdncVersion: " + sdncVersion) + execution.setVariable("DCVFM_sdncVersion", sdncVersion) + + execution.setVariable("DCVFM_uuid", uuid) + execution.setVariable("DCVFM_baseVfModuleId", "") + execution.setVariable("DCVFM_baseVfModuleHeatStackId", "") + execution.setVariable("DCVFM_heatStackId", "") + execution.setVariable("DCVFM_contrailServiceInstanceFqdn", "") + execution.setVariable("DCVFM_volumeGroupStackId", "") + execution.setVariable("DCVFM_cloudRegionForVolume", "") + execution.setVariable("DCVFM_contrailNetworkPolicyFqdnList", "") + execution.setVariable("DCVFM_vnfTypeToQuery", "generic-vnf") + rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "false") + rollbackData.put("VFMODULE", "rollbackUpdateAAIVfModule", "false") + rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "false") + rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "false") + rollbackData.put("VFMODULE", "rollbackSDNCRequestAssign", "false") + rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "false") + rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "false") + rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "false") + rollbackData.put("VFMODULE", "heatstackid", "") + + String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, msg); + + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + execution.setVariable("DCVFM_sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl) + + + execution.setVariable("rollbackData", rollbackData) + }catch(BpmnError b){ + throw b + }catch(Exception e){ + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!") + } + + msoLogger.trace('Exited ' + method) + } + + /** + * Validates a workflow response. + * @param execution the execution + * @param responseVar the execution variable in which the response is stored + * @param responseCodeVar the execution variable in which the response code is stored + * @param errorResponseVar the execution variable in which the error response is stored + */ + public void validateWorkflowResponse(DelegateExecution execution, String responseVar, + String responseCodeVar, String errorResponseVar) { + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar) + } + + + /** + * Sends the empty, synchronous response back to the API Handler. + * @param execution the execution + */ + public void sendResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + sendWorkflowResponse(execution, 200, "") + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Internal Error') + } + } + + /** + * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info. + * A 200 response is expected with the VNF info in the response body. Will find out the base module info + * and existing VNF's name for add-on modules + * + * @param execution The flow's execution instance. + */ + public void postProcessCreateAAIVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.getVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def createResponse = execution.getVariable('DCVFM_createVfModuleResponse') + msoLogger.debug("createVfModule Response: " + createResponse) + + def rollbackData = execution.getVariable("rollbackData") + String vnfName = utils.getNodeText(createResponse, 'vnf-name') + if (vnfName != null) { + execution.setVariable('DCVFM_vnfName', vnfName) + msoLogger.debug("vnfName retrieved from AAI is: " + vnfName) + rollbackData.put("VFMODULE", "vnfname", vnfName) + } + String vnfId = utils.getNodeText(createResponse, 'vnf-id') + execution.setVariable('DCVFM_vnfId', vnfId) + msoLogger.debug("vnfId is: " + vnfId) + String vfModuleId = utils.getNodeText(createResponse, 'vf-module-id') + execution.setVariable('DCVFM_vfModuleId', vfModuleId) + msoLogger.debug("vfModuleId is: " + vfModuleId) + String vfModuleIndex= utils.getNodeText(createResponse, 'vf-module-index') + execution.setVariable('DCVFM_vfModuleIndex', vfModuleIndex) + msoLogger.debug("vfModuleIndex is: " + vfModuleIndex) + rollbackData.put("VFMODULE", "vnfid", vnfId) + rollbackData.put("VFMODULE", "vfmoduleid", vfModuleId) + rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true") + rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true") + execution.setVariable("rollbackData", rollbackData) + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while postProcessing CreateAAIVfModule request:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Bad response from CreateAAIVfModule' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } + + + /** + * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info. + * A 200 response is expected with the VNF info in the response body. Will find out the base module info. + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModule(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.getVfModule(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DCVFM_vnfId') + def vfModuleId = execution.getVariable('DCVFM_vfModuleId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1" + + try { + RESTConfig config = new RESTConfig(endPoint); + def responseData = '' + def aaiRequestId = UUID.randomUUID().toString() + RESTClient client = new RESTClient(config). + addHeader('X-TransactionId', aaiRequestId). + addHeader('X-FromAppId', 'MSO'). + addHeader('Content-Type', 'application/xml'). + addHeader('Accept','application/xml'); + msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'') + APIResponse response = client.httpGet() + + responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode()) + execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find base module info') + if (responseData != null) { + def vfModulesText = utils.getNodeXml(responseData, "vf-modules") + def xmlVfModules= new XmlSlurper().parseText(vfModulesText) + def vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"} + int vfModulesSize = 0 + for (i in 0..vfModules.size()-1) { + def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i]) + def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module") + + if (isBaseVfModule == "true") { + String baseModuleId = utils.getNodeText(vfModuleXml, "vf-module-id") + execution.setVariable("DCVFM_baseVfModuleId", baseModuleId) + msoLogger.debug('Received baseVfModuleId: ' + baseModuleId) + String baseModuleHeatStackId = utils.getNodeText(vfModuleXml, "heat-stack-id") + execution.setVariable("DCVFM_baseVfModuleHeatStackId", baseModuleHeatStackId) + msoLogger.debug('Received baseVfModuleHeatStackId: ' + baseModuleHeatStackId) + } + } + } + } + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage()) + } + } + + /** + * Using the vnfId and vfModuleName provided in the inputs, + * query AAI to get the corresponding VF Module info. + * A 200 response is expected with the VF Module info in the response body, + * or a 404 response if the module does not exist yet. Will determine VF Module's + * orchestration status if one exists + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModuleForStatus(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + execution.setVariable('DCVFM_orchestrationStatus', '') + + try { + def vnfId = execution.getVariable('DCVFM_vnfId') + def vfModuleName = execution.getVariable('DCVFM_vfModuleName') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + + "/vf-modules/vf-module?vf-module-name=" + UriUtils.encode(vfModuleName, "UTF-8") + msoLogger.debug("AAI endPoint: " + endPoint) + + try { + RESTConfig config = new RESTConfig(endPoint); + def responseData = '' + def aaiRequestId = UUID.randomUUID().toString() + RESTClient client = new RESTClient(config). + addHeader('X-TransactionId', aaiRequestId). + addHeader('X-FromAppId', 'MSO'). + addHeader('Content-Type', 'application/xml'). + addHeader('Accept','application/xml'); + msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'') + APIResponse response = client.httpGet() + msoLogger.debug("createVfModule - invoking httpGet() to AAI") + + responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponseCode', response.getStatusCode()) + execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + // Retrieve VF Module info and its orchestration status; if not found, do nothing + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find orchestration status') + if (responseData != null) { + def vfModuleText = utils.getNodeXml(responseData, "vf-module") + //def xmlVfModule= new XmlSlurper().parseText(vfModuleText) + def orchestrationStatus = utils.getNodeText(vfModuleText, "orchestration-status") + execution.setVariable("DCVFM_orchestrationStatus", orchestrationStatus) + // Also retrieve vfModuleId + def vfModuleId = utils.getNodeText(vfModuleText, "vf-module-id") + execution.setVariable("DCVFM_vfModuleId", vfModuleId) + msoLogger.debug("Received orchestration status from A&AI: " + orchestrationStatus) + + } + } + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage()) + } + } + + + public void preProcessSDNCAssignRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCAssignRequest") + def vnfId = execution.getVariable("DCVFM_vnfId") + def vfModuleId = execution.getVariable("DCVFM_vfModuleId") + def serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId") + msoLogger.debug("NEW VNF ID: " + vnfId) + + try{ + + //Build SDNC Request + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = vfModuleId + } + else { + svcInstId = serviceInstanceId + } + + String assignSDNCRequest = buildSDNCRequest(execution, svcInstId, "assign") + + assignSDNCRequest = utils.formatXml(assignSDNCRequest) + execution.setVariable("DCVFM_assignSDNCRequest", assignSDNCRequest) + msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Occurred Processing preProcessSDNCAssignRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareProvision Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCAssignRequest") + } + + public void preProcessSDNCGetRequest(DelegateExecution execution, String element){ + + String sdncVersion = execution.getVariable("DCVFM_sdncVersion") + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCGetRequest Process") + try{ + def serviceInstanceId = execution.getVariable('DCVFM_serviceInstanceId') + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + } + + def callbackUrl = execution.getVariable("DCVFM_sdncCallbackUrl") + msoLogger.debug("callbackUrl:" + callbackUrl) + + def vfModuleId = execution.getVariable('DCVFM_vfModuleId') + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = vfModuleId + } + else { + svcInstId = serviceInstanceId + } + + def msoAction = "" + if (!sdncVersion.equals("1707")) { + msoAction = "mobility" + } + else { + msoAction = "vfmodule" + } + // For VNF, serviceOperation (URI for topology GET) will be retrieved from "selflink" element + // in the response from GenericGetVnf + // For VF Module, in 1707 serviceOperation will be retrieved from "object-path" element + // in SDNC Assign Response + // For VF Module for older versions, serviceOperation is constructed using vfModuleId + + String serviceOperation = "" + if (element.equals("vnf")) { + def vnfQueryResponse = execution.getVariable("DCVFM_vnfQueryResponse") + serviceOperation = utils.getNodeText(vnfQueryResponse, "selflink") + msoLogger.debug("VNF - service operation: " + serviceOperation) + } + else if (element.equals("vfmodule")) { + String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse") + msoLogger.debug("DCVFM_assignSDNCAdapterResponse is: \n" + response) + + if (!sdncVersion.equals("1707")) { + serviceOperation = "/VNF-API:vnfs/vnf-list/" + vfModuleId + msoLogger.debug("VF Module with sdncVersion before 1707 - service operation: " + serviceOperation) + } + else { + String data = utils.getNodeXml(response, "response-data") + msoLogger.debug("responseData: " + data) + serviceOperation = utils.getNodeText(data, "object-path") + msoLogger.debug("VF Module with sdncVersion of 1707 - service operation: " + serviceOperation) + } + } + + //!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE + sleep(5000) + + String SDNCGetRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + execution.setVariable("DCVFM_getSDNCRequest", SDNCGetRequest) + msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process") + } + + + public void preProcessVNFAdapterRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.VNFAdapterCreateVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + //def xml = execution.getVariable("DoCreateVfModuleRequest") + //msoLogger.debug('VNF REQUEST is: ' + xml) + + //Get variables + //cloudSiteId + def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId") + //tenantId + def tenantId = execution.getVariable("DCVFM_tenantId") + //vnfType + def vnfType = execution.getVariable("DCVFM_vnfType") + //vnfName + def vnfName = execution.getVariable("DCVFM_vnfName") + //vnfId + def vnfId = execution.getVariable("DCVFM_vnfId") + //vfModuleName + def vfModuleName = execution.getVariable("DCVFM_vfModuleName") + //vfModuleModelName + def vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName") + //vfModuleId + def vfModuleId = execution.getVariable("DCVFM_vfModuleId") + //vfModuleIndex + def vfModuleIndex = execution.getVariable("DCVFM_vfModuleIndex") + //requestId + def requestId = execution.getVariable("DCVFM_requestId") + //serviceId + def serviceId = execution.getVariable("DCVFM_serviceId") + //serviceInstanceId + def serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId") + //flavorList + ArrayList<CloudFlavor> flavorList = execution.getVariable("DCVFM_flavorList") + //backoutOnFailure + def backoutOnFailure = execution.getVariable("DCVFM_backoutOnFailure") + //volumeGroupId + def volumeGroupId = execution.getVariable("DCVFM_volumeGroupId") + // baseVfModuleId + def baseVfModuleId = execution.getVariable("DCVFM_baseVfModuleId") + // baseVfModuleStackId + def baseVfModuleStackId = execution.getVariable("DCVFM_baseVfModuleHeatStackId") + // asdcServiceModelVersion + def asdcServiceModelVersion = execution.getVariable("DCVFM_asdcServiceModelVersion") + //volumeGroupStackId + def volumeGroupStackId = execution.getVariable("DCVFM_volumeGroupStackId") + //modelCustomizationUuid + def modelCustomizationUuid = execution.getVariable("DCVFM_modelCustomizationUuid") + //environmentContext + String environmentContext = execution.getVariable("DCVFM_environmentContext") + //workloadContext + String workloadContext = execution.getVariable("DCVFM_workloadContext") + msoLogger.debug("workloadContext: " + workloadContext) + msoLogger.debug("environmentContext: " + environmentContext) + + def messageId = execution.getVariable('mso-request-id') + '-' + + System.currentTimeMillis() + + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + + msoLogger.debug("notificationUrl: " + notificationUrl) + msoLogger.debug("QualifiedHostName: " + useQualifiedHostName) + + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + Map<String, String> vnfParamsMap = execution.getVariable("DCVFM_vnfParamsMap") + // Add flavorLabel List to vnfParamsMap + flavorList.each { cloudFlavor -> + vnfParamsMap.put("label_" + cloudFlavor.getFlavorLabel(), cloudFlavor.getFlavor()) + } + String vfModuleParams = "" + //Get SDNC Response Data for VF Module Topology + String vfModuleSdncGetResponse = execution.getVariable('DCVFM_getSDNCAdapterResponse') + msoLogger.debug("sdncGetResponse: " + vfModuleSdncGetResponse) + def sdncVersion = execution.getVariable("sdncVersion") + + if (!sdncVersion.equals("1707")) { + + vfModuleParams = buildVfModuleParams(vnfParamsMap, vfModuleSdncGetResponse, vnfId, vnfName, + vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext) + } + else { + //Get SDNC Response Data for Vnf Topology + String vnfSdncGetResponse = execution.getVariable('DCVFM_getVnfSDNCAdapterResponse') + msoLogger.debug("vnfSdncGetResponse: " + vnfSdncGetResponse) + + vfModuleParams = buildVfModuleParamsFromCombinedTopologies(vnfParamsMap, vnfSdncGetResponse, vfModuleSdncGetResponse, vnfId, vnfName, + vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext) + } + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = serviceId + } + else { + svcInstId = serviceInstanceId + } + + def createVnfARequest = """ + <createVfModuleRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName> + <vfModuleName>${MsoUtils.xmlEscape(vfModuleName)}</vfModuleName> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType> + <vfModuleType>${MsoUtils.xmlEscape(vfModuleModelName)}</vfModuleType> + <vnfVersion>${MsoUtils.xmlEscape(asdcServiceModelVersion)}</vnfVersion> + <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid> + <requestType></requestType> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupStackId)}</volumeGroupStackId> + <baseVfModuleId>${MsoUtils.xmlEscape(baseVfModuleId)}</baseVfModuleId> + <baseVfModuleStackId>${MsoUtils.xmlEscape(baseVfModuleStackId)}</baseVfModuleStackId> + <skipAAI>true</skipAAI> + <backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout> + <failIfExists>true</failIfExists> + <vfModuleParams> + ${vfModuleParams} + </vfModuleParams> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(svcInstId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </createVfModuleRequest>""" + + msoLogger.debug("Create VfModule Request to VNF Adapter: " + createVnfARequest) + execution.setVariable("DCVFM_createVnfARequest", createVnfARequest) + } + + /** + * Validates the request, request id and service instance id. If a problem is found, + * a WorkflowException is generated and an MSOWorkflowException event is thrown. This + * method also sets up the log context for the workflow. + * @param execution the execution + * @return the validated request + */ + public String validateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String processKey = getProcessKey(execution); + def prefix = execution.getVariable("prefix") + + if (prefix == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null") + } + + try { + def request = execution.getVariable(prefix + 'Request') + + if (request == null) { + request = execution.getVariable(processKey + 'Request') + + if (request == null) { + request = execution.getVariable('bpmnRequest') + } + + setVariable(execution, processKey + 'Request', null); + setVariable(execution, 'bpmnRequest', null); + setVariable(execution, prefix + 'Request', request); + } + + if (request == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null") + } + msoLogger.debug("DoCreateVfModule Request: " + request) + + /* + + def requestId = execution.getVariable("mso-request-id") + + if (requestId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id") + } + + def serviceInstanceId = execution.getVariable("mso-service-instance-id") + + if (serviceInstanceId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id") + } + + utils.logContext(requestId, serviceInstanceId) + */ + msoLogger.debug('Incoming message: ' + System.lineSeparator() + request) + msoLogger.trace('Exited ' + method) + return request + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message") + } + } + + public boolean isVolumeGroupIdPresent(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.isVolumeGroupIdPresent(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def request = execution.getVariable('DoCreateVfModuleRequest') + String volumeGroupId = utils.getNodeText(request, "volume-group-id") + if (volumeGroupId == null || volumeGroupId.isEmpty()) { + msoLogger.debug('No volume group id is present') + return false + } + else { + msoLogger.debug('Volume group id is present') + return true + } + + } + + public boolean isVolumeGroupNamePresent(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.isVolumeGroupNamePresent(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def request = execution.getVariable('DoCreateVfModuleRequest') + String volumeGroupName = utils.getNodeText(request, "volume-group-name") + if (volumeGroupName == null || volumeGroupName.isEmpty()) { + msoLogger.debug('No volume group name is present') + return false + } + else { + msoLogger.debug('Volume group name is present') + return true + } + + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("DCVFM_sdncCallbackUrl") + def requestId = execution.getVariable("DCVFM_requestId") + def serviceId = execution.getVariable("DCVFM_serviceId") + def vnfType = execution.getVariable("DCVFM_vnfType") + def vnfName = execution.getVariable("DCVFM_vnfName") + def tenantId = execution.getVariable("DCVFM_tenantId") + def source = execution.getVariable("DCVFM_source") + def backoutOnFailure = execution.getVariable("DCVFM_backoutOnFailure") + def vfModuleId = execution.getVariable("DCVFM_vfModuleId") + def vfModuleName = execution.getVariable("DCVFM_vfModuleName") + def vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName") + def vnfId = execution.getVariable("DCVFM_vnfId") + def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId") + def sdncVersion = execution.getVariable("DCVFM_sdncVersion") + def serviceModelInfo = execution.getVariable("serviceModelInfo") + def vnfModelInfo = execution.getVariable("vnfModelInfo") + def vfModuleModelInfo = execution.getVariable("vfModuleModelInfo") + String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo) + String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo) + String vfModuleEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vfModuleModelInfo) + def globalSubscriberId = execution.getVariable("DCVFM_globalSubscriberId") + boolean usePreload = execution.getVariable("DCVFM_usePreload") + String usePreloadToSDNC = usePreload ? "Y" : "N" + def modelCustomizationUuid = execution.getVariable("DCVFM_modelCustomizationUuid") + def modelCustomizationUuidString = "" + if (!usePreload) { + modelCustomizationUuidString = "<model-customization-uuid>" + modelCustomizationUuid + "</model-customization-uuid>" + } + + String sdncVNFParamsXml = "" + + if(execution.getVariable("DCVFM_vnfParamsExistFlag") == true){ + if (!sdncVersion.equals("1707")) { + sdncVNFParamsXml = buildSDNCParamsXml(execution) + } + else { + sdncVNFParamsXml = buildCompleteSDNCParamsXml(execution) + } + }else{ + sdncVNFParamsXml = "" + } + + String sdncRequest = "" + + if (!sdncVersion.equals("1707")) { + + sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>VNFActivateRequest</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id> + <subscriber-name>notsurewecare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type> + <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name> + <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id> + <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name> + <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + ${modelCustomizationUuidString} + <use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload> + ${sdncVNFParamsXml} + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + } + else { + + sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>CreateVfModuleInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(serviceId)}</subscription-service-type> + ${serviceEcompModelInformation} + <service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type> + ${vnfEcompModelInformation} + </vnf-information> + <vf-module-information> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <vf-module-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vf-module-type> + ${vfModuleEcompModelInformation} + </vf-module-information> + <vf-module-request-input> + <vf-module-name>${MsoUtils.xmlEscape(vfModuleName)}</vf-module-name> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + ${sdncVNFParamsXml} + </vf-module-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + + /* + sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(requestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>CreateVfModuleInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + ${serviceEcompModelInformation} + <service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type> + ${vnfEcompModelInformation} + </vnf-information> + <vf-module-information> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <vf-module-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vf-module-type> + ${vfModuleEcompModelInformation} + </vf-module-information> + <vf-module-request-input> + <vf-module-name>${MsoUtils.xmlEscape(vfModuleName)}</vf-module-name> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + ${sdncVNFParamsXml} + </vf-module-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + */ + + } + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + + } + + public void preProcessSDNCActivateRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCActivateRequest Process") + try{ + String vnfId = execution.getVariable("DCVFM_vnfId") + String vfModuleId = execution.getVariable("DCVFM_vfModuleId") + String serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId") + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = vfModuleId + } + else { + svcInstId = serviceInstanceId + } + String activateSDNCRequest = buildSDNCRequest(execution, svcInstId, "activate") + + execution.setVariable("DCVFM_activateSDNCRequest", activateSDNCRequest) + msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest) + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCActivateRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCActivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCActivateRequest Process") + } + + public void postProcessVNFAdapterRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("STARTED postProcessVNFAdapterRequest Process") + + String vnfResponse = execution.getVariable("DCVFM_createVnfAResponse") + msoLogger.debug("VNF Adapter Response is: " + vnfResponse) + + RollbackData rollbackData = execution.getVariable("rollbackData") + if(vnfResponse != null){ + + if(vnfResponse.contains("createVfModuleResponse")){ + msoLogger.debug("Received a Good Response from VNF Adapter for CREATE_VF_MODULE Call.") + execution.setVariable("DCVFM_vnfVfModuleCreateCompleted", true) + String heatStackId = utils.getNodeText(vnfResponse, "vfModuleStackId") + execution.setVariable("DCVFM_heatStackId", heatStackId) + msoLogger.debug("Received heat stack id from VNF Adapter: " + heatStackId) + rollbackData.put("VFMODULE", "heatstackid", heatStackId) + // Parse vnfOutputs for network_fqdn + if (vnfResponse.contains("vfModuleOutputs")) { + def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs") + InputSource source = new InputSource(new StringReader(vfModuleOutputsXml)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setNamespaceAware(true) + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document outputsXml = docBuilder.parse(source) + + NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry") + List contrailNetworkPolicyFqdnList = [] + for (int i = 0; i< entries.getLength(); i++) { + Node node = entries.item(i) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element element = (Element) node + String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent() + if (key.equals("contrail-service-instance-fqdn")) { + String contrailServiceInstanceFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained contrailServiceInstanceFqdn: " + contrailServiceInstanceFqdn) + execution.setVariable("DCVFM_contrailServiceInstanceFqdn", contrailServiceInstanceFqdn) + } + else if (key.endsWith("contrail_network_policy_fqdn")) { + String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn) + contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn) + } + else if (key.equals("oam_management_v4_address")) { + String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address) + execution.setVariable("DCVFM_oamManagementV4Address", oamManagementV4Address) + } + else if (key.equals("oam_management_v6_address")) { + String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address) + execution.setVariable("DCVFM_oamManagementV6Address", oamManagementV6Address) + } + + } + } + if (!contrailNetworkPolicyFqdnList.isEmpty()) { + execution.setVariable("DCVFM_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList) + } + } + }else{ + msoLogger.debug("Received a BAD Response from VNF Adapter for CREATE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error") + } + }else{ + msoLogger.debug("Response from VNF Adapter is Null for CREATE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter") + } + + rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true") + execution.setVariable("rollbackData", rollbackData) + + }catch(BpmnError b){ + throw b + }catch(Exception e){ + msoLogger.debug("Internal Error Occured in PostProcess Method") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method") + } + msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process") + } + + + public void preProcessUpdateAAIVfModuleRequestOrch(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestOrch(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessUpdateAAIVfModuleRequestOrch") + + try{ + + //Build UpdateAAIVfModule Request + boolean setContrailServiceInstanceFqdn = false + def contrailServiceInstanceFqdn = execution.getVariable("DCVFM_contrailServiceInstanceFqdn") + if (!contrailServiceInstanceFqdn.equals("")) { + setContrailServiceInstanceFqdn = true + } + + execution.setVariable("DCVFM_orchestrationStatus", "Created") + + String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, false, true, true, setContrailServiceInstanceFqdn) + + updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest) + execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest) + msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleRequestOrch", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleRequestOrch Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessUpdateAAIVfModuleRequestOrch") + + } + + public void preProcessUpdateAAIVfModuleRequestStatus(DelegateExecution execution, String status) { + def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleStatus(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessUpdateAAIVfModuleStatus") + + try{ + + //Build UpdateAAIVfModule Request + execution.setVariable("DCVFM_orchestrationStatus", status) + + String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, false, true, false, false) + + updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest) + execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest) + msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleStatus", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessUpdateAAIVfModuleStatus") + + } + + + public void preProcessUpdateAAIVfModuleRequestGroup(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestGroup(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessUpdateAAIVfModuleRequestGroup") + + try{ + + //Build UpdateAAIVfModule Request + + String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, true, false, false, false) + + updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest) + execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest) + msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleRequestGroup", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleRequestGroup Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessUpdateAAIVfModuleRequestGroup") + + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + RollbackData rollbackData = execution.getVariable("rollbackData") + + if(method.equals("assign")){ + rollbackData.put("VFMODULE", "rollbackSDNCRequestAssign", "true") + execution.setVariable("CRTGVNF_sdncAssignCompleted", true) + } + else if (method.equals("activate")) { + rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true") + } + execution.setVariable("rollbackData", rollbackData) + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("COMPLETED ValidateSDNCResponse Process") + } + + public void preProcessUpdateAfterCreateRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessRequest Process") + try{ + String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse") + msoLogger.debug("DCVFM_assignSDNCAdapterResponse: " + response) + + String data = utils.getNodeXml(response, "response-data") + String vnfId = utils.getNodeText(data, "vnf-id") + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + } + + String serviceOperation = "/VNF-API:vnfs/vnf-list/" + vnfId + def callbackUrl = execution.getVariable("DCVFM_sdncCallbackUrl") + msoLogger.debug("callbackUrl: " + callbackUrl) + + String SDNCGetRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>mobility</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + execution.setVariable("DCVFM_getSDNCRequest", SDNCGetRequest) + msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCGetRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process") + } + + public String buildUpdateAAIVfModuleRequest(DelegateExecution execution, boolean updateVolumeGroupId, + boolean updateOrchestrationStatus, boolean updateHeatStackId, boolean updateContrailFqdn){ + + def vnfId = execution.getVariable("DCVFM_vnfId") + def vfModuleId = execution.getVariable("DCVFM_vfModuleId") + def volumeGroupIdString = "" + if (updateVolumeGroupId) { + volumeGroupIdString = "<volume-group-id>" + execution.getVariable("DCVFM_volumeGroupId") + + "</volume-group-id>" + } + def orchestrationStatusString = "" + if (updateOrchestrationStatus) { + orchestrationStatusString = "<orchestration-status>" + execution.getVariable("DCVFM_orchestrationStatus") + "</orchestration-status>" + } + def heatStackIdString = "" + if (updateHeatStackId) { + heatStackIdString = "<heat-stack-id>" + execution.getVariable("DCVFM_heatStackId") + "</heat-stack-id>" + } + def contrailFqdnString = "" + if (updateContrailFqdn) { + contrailFqdnString = "<contrail-service-instance-fqdn>" + execution.getVariable("DCVFM_contrailServiceInstanceFqdn") + + "</contrail-service-instance-fqdn>" + } + + String updateAAIVfModuleRequest = + """<UpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + ${heatStackIdString} + ${orchestrationStatusString} + ${volumeGroupIdString} + ${contrailFqdnString} + </UpdateAAIVfModuleRequest>""" + + msoLogger.trace("updateAAIVfModule Request: " + updateAAIVfModuleRequest) + return updateAAIVfModuleRequest + + } + + public String buildSDNCParamsXml(DelegateExecution execution){ + + String params = "" + StringBuilder sb = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("DCVFM_vnfParamsMap") + + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String key = entry.getKey(); + if(key.endsWith("_network")){ + String requestKey = key.substring(0, key.indexOf("_network")) + String requestValue = entry.getValue() + paramsXml = +"""<vnf-networks> + <network-role>{ functx:substring-before-match(data($param/@name), '_network') }</network-role> + <network-name>{ $param/text() }</network-name> +</vnf-networks>""" + }else{ + paramsXml = "" + } + params = sb.append(paramsXml) + } + return params + } + + public String buildCompleteSDNCParamsXml(DelegateExecution execution){ + + String params = "" + StringBuilder sb = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("DCVFM_vnfParamsMap") + + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String key = entry.getKey(); + String value = entry.getValue() + paramsXml = """<${key}>$value</$key>""" + params = sb.append(paramsXml) + } + return params + } + + public void queryCloudRegion (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED queryCloudRegion") + + try { + String cloudRegion = execution.getVariable("DCVFM_cloudSiteId") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + + execution.setVariable("DCVFM_queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug("DCVFM_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + + if ((cloudRegion != "ERROR")) { + if(execution.getVariable("DCVFM_queryCloudRegionReturnCode") == "404"){ + execution.setVariable("DCVFM_cloudRegionForVolume", "AAIAIC25") + }else{ + execution.setVariable("DCVFM_cloudRegionForVolume", cloudRegion) + } + execution.setVariable("DCVFM_isCloudRegionGood", true) + } else { + String errorMessage = "AAI Query Cloud Region Unsuccessful. AAI Response Code: " + execution.getVariable("DCVFM_queryCloudRegionReturnCode") + msoLogger.debug(errorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + execution.setVariable("DCVFM_isCloudRegionGood", false) + } + msoLogger.debug(" is Cloud Region Good: " + execution.getVariable("DCVFM_isCloudRegionGood")) + + } catch(BpmnError b){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + b.getMessage()); + throw b + }catch (Exception ex) { + // try error + String errorMessage = "Bpmn error encountered in CreateVfModule flow. Unexpected Response from AAI - " + ex.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI Query Cloud Region Failed "+errorMessage, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during queryCloudRegion method") + } + } + + /** + * + *This method occurs when an MSOWorkflowException is caught. It logs the + *variables and ensures that the "WorkflowException" Variable is set. + * + */ + public void processBPMNException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a BPMN Exception") + msoLogger.debug("Started processBPMNException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + if(execution.getVariable("WorkflowException") == null){ + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during DoCreateVfModule Sub Process") + } + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processBPMNException Method: " + e) + } + msoLogger.debug("Completed processBPMNException Method") + } + + public void prepareCreateAAIVfModuleVolumeGroupRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepareCreateAAIVfModuleVolumeGroupRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED prepareCreateAAIVfModuleVolumeGroupRequest") + + try{ + + //Build CreateAAIVfModuleVolumeGroup Request + + def vnfId = execution.getVariable("DCVFM_vnfId") + def vfModuleId = execution.getVariable("DCVFM_vfModuleId") + def volumeGroupId = execution.getVariable("DCVFM_volumeGroupId") + //def aicCloudRegion = execution.getVariable("DCVFM_cloudSiteId") + def aicCloudRegion = execution.getVariable("DCVFM_cloudRegionForVolume") + String createAAIVfModuleVolumeGroupRequest = + """<CreateAAIVfModuleVolumeGroupRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id> + <aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region> + </CreateAAIVfModuleVolumeGroupRequest>""" + + createAAIVfModuleVolumeGroupRequest = utils.formatXml(createAAIVfModuleVolumeGroupRequest) + execution.setVariable("DCVFM_createAAIVfModuleVolumeGroupRequest", createAAIVfModuleVolumeGroupRequest) + msoLogger.debug("Outgoing CreateAAIVfModuleVolumeGroupRequest is: \n" + createAAIVfModuleVolumeGroupRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Exception Occured Processing prepareCreateAAIVfModuleVolumeGroupRequest', "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareCreateAAIVfModuleVolumeGroupRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED prepareCreateAAIVfModuleVolumeGroupRequest") + + } + + public void createNetworkPoliciesInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.createNetworkPoliciesInAAI(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED createNetworkPoliciesInAAI") + + try { + // get variables + List fqdnList = execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList") + int fqdnCount = fqdnList.size() + def rollbackData = execution.getVariable("rollbackData") + + execution.setVariable("DCVFM_networkPolicyFqdnCount", fqdnCount) + msoLogger.debug("DCVFM_networkPolicyFqdnCount - " + fqdnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + if (fqdnCount > 0) { + + // AII loop call over contrail network policy fqdn list + for (i in 0..fqdnCount-1) { + + int counting = i+1 + String fqdn = fqdnList[i] + + // Query AAI for this network policy FQDN + + String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8") + + def aaiRequestId = UUID.randomUUID().toString() + RESTConfig config = new RESTConfig(queryNetworkPolicyByFqdnAAIRequest); + RESTClient client = new RESTClient(config).addHeader("X-TransactionId", aaiRequestId) + .addHeader("X-FromAppId", "MSO") + .addHeader("Content-Type", "application/xml") + .addHeader("Accept","application/xml"); + APIResponse response = client.get() + int returnCode = response.getStatusCode() + execution.setVariable("DCVFM_aaiQqueryNetworkPolicyByFqdnReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (isOneOf(returnCode, 200, 201)) { + msoLogger.debug("The return code is: " + returnCode) + // This network policy FQDN already exists in AAI + execution.setVariable("DCVFM_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + + } else { + if (returnCode == 404) { + // This network policy FQDN is not in AAI yet. Add it now + msoLogger.debug("The return code is: " + returnCode) + msoLogger.debug("This network policy FQDN is not in AAI yet: " + fqdn) + // Add the network policy with this FQDN to AAI + def networkPolicyId = UUID.randomUUID().toString() + msoLogger.debug("Adding network-policy with network-policy-id " + networkPolicyId) + + String aaiNamespace = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + msoLogger.debug('AAI namespace is: ' + aaiNamespace) + String payload = """<network-policy xmlns="${aaiNamespace}"> + <network-policy-id>${MsoUtils.xmlEscape(networkPolicyId)}</network-policy-id> + <network-policy-fqdn>${MsoUtils.xmlEscape(fqdn)}</network-policy-fqdn> + <heat-stack-id>${MsoUtils.xmlEscape(execution.getVariable("DCVFM_heatStackId"))}</heat-stack-id> + </network-policy>""" as String + + execution.setVariable("DCVFM_addNetworkPolicyAAIRequestBody", payload) + + String addNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") + msoLogger.debug("AAI request endpoint: " + addNetworkPolicyAAIRequest) + + def aaiRequestIdPut = UUID.randomUUID().toString() + RESTConfig configPut = new RESTConfig(addNetworkPolicyAAIRequest); + RESTClient clientPut = new RESTClient(configPut).addHeader("X-TransactionId", aaiRequestIdPut) + .addHeader("X-FromAppId", "MSO") + .addHeader("Content-Type", "application/xml") + .addHeader("Accept","application/xml"); + msoLogger.debug("invoking PUT call to AAI with payload:"+System.lineSeparator()+payload) + APIResponse responsePut = clientPut.httpPut(payload) + int returnCodePut = responsePut.getStatusCode() + execution.setVariable("DCVFM_aaiAddNetworkPolicyReturnCode", returnCodePut) + msoLogger.debug(" ***** AAI add network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodePut) + + String aaiResponseAsStringPut = responsePut.getResponseBodyAsString() + if (isOneOf(returnCodePut, 200, 201)) { + msoLogger.debug("The return code from adding network policy is: " + returnCodePut) + // This network policy was created in AAI successfully + execution.setVariable("DCVFM_addNetworkPolicyAAIResponse", aaiResponseAsStringPut) + msoLogger.debug(" AddAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsStringPut) + rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true") + rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn" + i, fqdn) + execution.setVariable("rollbackData", rollbackData) + + } else { + // aai all errors + String putErrorMessage = "Unable to add network-policy to AAI createNetworkPoliciesInAAI - " + returnCodePut + msoLogger.debug(putErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, putErrorMessage) + } + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from createNetworkPoliciesInAAI - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + + } else { + msoLogger.debug("No contrail network policies to query/create") + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateVfModule flow. createNetworkPoliciesInAAI() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def rollbackData = execution.getVariable("rollbackData") + def vnfId = execution.getVariable('DCVFM_vnfId') + def oamManagementV4Address = execution.getVariable("DCVFM_oamManagementV4Address") + def oamManagementV6Address = execution.getVariable("DCVFM_oamManagementV6Address") + def ipv4OamAddressElement = '' + def managementV6AddressElement = '' + + if (oamManagementV4Address != null && !oamManagementV4Address.isEmpty()) { + ipv4OamAddressElement = '<ipv4-oam-address>' + oamManagementV4Address + '</ipv4-oam-address>' + } + + if (oamManagementV6Address != null && !oamManagementV6Address.isEmpty()) { + managementV6AddressElement = '<management-v6-address>' + oamManagementV6Address + '</management-v6-address>' + } + + rollbackData.put("VFMODULE", "oamManagementV4Address", oamManagementV4Address) + + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + ${ipv4OamAddressElement} + ${managementV6AddressElement} + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable('DCVM_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered in " + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + /** + * Post process a result from invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void postProcessUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def rollbackData = execution.getVariable("rollbackData") + + rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true") + + def vnfId = execution.getVariable('DCVFM_vnfId') + def oamManagementV4Address = execution.getVariable("DCVFM_oamManagementV4Address") + def oamManagementV6Address = execution.getVariable("DCVFM_oamManagementV6Address") + def ipv4OamAddressElement = '' + def managementV6AddressElement = '' + + if (oamManagementV4Address != null && !oamManagementV4Address.isEmpty()) { + rollbackData.put("VFMODULE", "oamManagementV4Address", oamManagementV4Address) + } + + if (oamManagementV6Address != null && !oamManagementV6Address.isEmpty()) { + rollbackData.put("VFMODULE", "oamManagementV6Address", oamManagementV6Address) + } + + execution.setVariable("rollbackData", rollbackData) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in postProcessUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + public void queryCatalogDB (DelegateExecution execution) { + + String msg = "" + msoLogger.trace("queryCatalogDB ") + + try { + boolean twoPhaseDesign = false + // check for input + + String vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName") + msoLogger.debug("vfModuleModelName: " + vfModuleModelName) + def vnfModelInfo = execution.getVariable("vnfModelInfo") + def vnfModelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid") + + msoLogger.debug("vnfModelCustomizationUuid: " + vnfModelCustomizationUuid) + + JSONArray vnfs = catalog.getAllVnfsByVnfModelCustomizationUuid(execution, vnfModelCustomizationUuid, "v2") + + msoLogger.debug("Incoming Query Catalog DB for Vnf Response is: " + vnfModelCustomizationUuid) + // Only one match here + if (vnfs != null) { + JSONObject vnfObject = vnfs.get(0) + if (vnfObject != null) { + String vnfJson = vnfObject.toString() + // + ObjectMapper om = new ObjectMapper(); + VnfResource vnf = om.readValue(vnfJson, VnfResource.class); + + // Get multiStageDesign flag + + String multiStageDesignValue = vnf.getMultiStageDesign() + msoLogger.debug("multiStageDesign value from Catalog DB is: " + multiStageDesignValue) + if (multiStageDesignValue != null) { + if (multiStageDesignValue.equalsIgnoreCase("true")) { + twoPhaseDesign = true + } + } + } + } + + msoLogger.debug("setting twoPhaseDesign flag to: " + twoPhaseDesign) + + execution.setVariable("DCVFM_twoPhaseDesign", twoPhaseDesign) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in queryCatalogDB', "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryCatalogDB(): ' + e.getMessage()) + } + } + + + public void preProcessRollback (DelegateExecution execution) { + + msoLogger.trace("preProcessRollback") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit preProcessRollback") + } + + public void postProcessRollback (DelegateExecution execution) { + + msoLogger.trace("postProcessRollback") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit postProcessRollback") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy new file mode 100644 index 0000000000..a0b7dabb32 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy @@ -0,0 +1,666 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.bpmn.common.scripts.AaiUtil +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.SDNCAdapterUtils +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + + + +public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleRollback.class); + + def Prefix="DCVFMR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + } + + // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids + // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest + public void preProcessRequest(DelegateExecution execution) { + + + initProcessVariables(execution) + + try { + + execution.setVariable("rolledBack", null) + execution.setVariable("rollbackError", null) + + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + String vnfId = rollbackData.get("VFMODULE", "vnfid") + execution.setVariable("DCVFMR_vnfId", vnfId) + String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid") + execution.setVariable("DCVFMR_vfModuleId", vfModuleId) + String source = rollbackData.get("VFMODULE", "source") + execution.setVariable("DCVFMR_source", source) + String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId") + execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) + String serviceId = rollbackData.get("VFMODULE", "service-id") + execution.setVariable("DCVFMR_serviceId", serviceId) + String vnfType = rollbackData.get("VFMODULE", "vnftype") + execution.setVariable("DCVFMR_vnfType", vnfType) + String vnfName = rollbackData.get("VFMODULE", "vnfname") + execution.setVariable("DCVFMR_vnfName", vnfName) + String tenantId = rollbackData.get("VFMODULE", "tenantid") + execution.setVariable("DCVFMR_tenantId", tenantId) + String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename") + execution.setVariable("DCVFMR_vfModuleName", vfModuleName) + String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname") + execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName) + String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion") + execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId) + String heatStackId = rollbackData.get("VFMODULE", "heatstackid") + execution.setVariable("DCVFMR_heatStackId", heatStackId) + String requestId = rollbackData.get("VFMODULE", "msorequestid") + execution.setVariable("DCVFMR_requestId", requestId) + // Set mso-request-id to request-id for VNF Adapter interface + execution.setVariable("mso-request-id", requestId) + List createdNetworkPolicyFqdnList = [] + int i = 0 + while (i < 100) { + String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i) + if (fqdn == null) { + break + } + createdNetworkPolicyFqdnList.add(fqdn) + msoLogger.debug("got fqdn # " + i + ": " + fqdn) + i = i + 1 + + } + + execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList) + String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address") + execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address) + String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address") + execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address) + //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid") + //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId) + execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule")) + execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule")) + execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate")) + execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign")) + execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate")) + execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule")) + execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI")) + execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI")) + + // formulate the request for PrepareUpdateAAIVfModule + String request = """<PrepareUpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <orchestration-status>pending-delete</orchestration-status> + </PrepareUpdateAAIVfModuleRequest>""" as String + msoLogger.debug("PrepareUpdateAAIVfModuleRequest :" + request) + execution.setVariable("PrepareUpdateAAIVfModuleRequest", request) + } else { + execution.setVariable("skipRollback", true) + } + + if (execution.getVariable("disableRollback").equals("true" )) { + execution.setVariable("skipRollback", true) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + + // build a SDNC vnf-topology-operation request for the specified action + // (note: the action passed is expected to be 'changedelete' or 'delete') + public void prepSDNCAdapterRequest(DelegateExecution execution) { + + String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId") + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DCVFMR_requestId") + "-" + System.currentTimeMillis() + } + + def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + + String source = execution.getVariable("DCVFMR_source") + String serviceId = execution.getVariable("DCVFMR_serviceId") + String vnfId = execution.getVariable("DCVFMR_vnfId") + String vnfType = execution.getVariable("DCVFMR_vnfType") + String vnfName = execution.getVariable("DCVFMR_vnfName") + String tenantId = execution.getVariable("DCVFMR_tenantId") + String vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + String vfModuleName = execution.getVariable("DCVFMR_vfModuleName") + String vfModuleModelName = execution.getVariable("DCVFMR_vfModuleModelName") + String cloudSiteId = execution.getVariable("DCVFMR_cloudSiteId") + String requestId = execution.getVariable("DCVFMR_requestId") + + String serviceInstanceIdToSdnc = "" + if (srvInstId != null && !srvInstId.isEmpty()) { + serviceInstanceIdToSdnc = srvInstId + } else { + serviceInstanceIdToSdnc = vfModuleId + } + + def doSDNCActivateRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") + def doSDNCAssignRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") + + def action = "" + def requestAction = "" + + if (doSDNCActivateRollback.equals("true")) { + action = "delete" + requestAction = "DisconnectVNFRequest" + } + else if (doSDNCAssignRollback.equals("true")) { + action = "rollback" + requestAction = "VNFActivateRequest" + } + else + return + + + String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(vfModuleId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>${MsoUtils.xmlEscape(requestAction)}</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceIdToSdnc)}</service-instance-id> + <subscriber-name>notsurewecare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type> + <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name> + <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id> + <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name> + <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncAdapterWorkflowRequest: " + request) + execution.setVariable("sdncAdapterWorkflowRequest", request) + } + + public void preProcessSDNCDeactivateRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCDeactivateRequest") + + def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + + try{ + //Build SDNC Request + + String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate") + + deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest) + execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest) + msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest") + } + + public void preProcessSDNCUnassignRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process") + try{ + String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + + String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign") + + execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest) + msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCUnassignRequest Process") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DCVFMR_requestId") + "-" + System.currentTimeMillis() + } + def callbackURL = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + def requestId = execution.getVariable("DCVFMR_requestId") + def serviceId = execution.getVariable("DCVFMR_serviceId") + def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId") + def vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + def source = execution.getVariable("DCVFMR_source") + def vnfId = execution.getVariable("DCVFMR_vnfId") + + def sdncVersion = execution.getVariable("sdncVersion") + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteVfModuleInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id/> + <subscription-service-type/> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id/> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type/> + </vnf-information> + <vf-module-information> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + </vf-module-information> + <vf-module-request-input/> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing VnfAdapterDeleteV1 request + public void prepVNFAdapterRequest(DelegateExecution execution) { + + String requestId = UUID.randomUUID().toString() + String origRequestId = execution.getVariable("DCVFMR_requestId") + String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId") + String aicCloudRegion = execution.getVariable("DCVFMR_cloudSiteId") + String vnfId = execution.getVariable("DCVFMR_vnfId") + String vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId") + String tenantId = execution.getVariable("DCVFMR_tenantId") + def messageId = execution.getVariable('mso-request-id') + '-' + + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String request = """ + <deleteVfModuleRequest> + <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteVfModuleRequest> + """ as String + + msoLogger.debug("vnfAdapterRestV1Request: " + request) + execution.setVariable("vnfAdapterRestV1Request", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing UpdateAAIVfModuleRequest request + public void prepUpdateAAIVfModule(DelegateExecution execution) { + + String vnfId = execution.getVariable("DCVFMR_vnfId") + String vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<UpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <heat-stack-id>DELETE</heat-stack-id> + <orchestration-status>deleted</orchestration-status> + </UpdateAAIVfModuleRequest>""" as String + msoLogger.debug("UpdateAAIVfModuleRequest :" + request) + execution.setVariable("UpdateAAIVfModuleRequest", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing UpdateAAIVfModuleRequest request + public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) { + + String vnfId = execution.getVariable("DCVFMR_vnfId") + String vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<UpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <heat-stack-id></heat-stack-id> + <orchestration-status>Assigned</orchestration-status> + </UpdateAAIVfModuleRequest>""" as String + msoLogger.debug("UpdateAAIVfModuleRequest :" + request) + execution.setVariable("UpdateAAIVfModuleRequest", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing DeleteAAIVfModuleRequest request + public void prepDeleteAAIVfModule(DelegateExecution execution) { + + String vnfId = execution.getVariable("DCVFMR_vnfId") + String vfModuleId = execution.getVariable("DCVFMR_vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<DeleteAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + </DeleteAAIVfModuleRequest>""" as String + msoLogger.debug("DeleteAAIVfModuleRequest :" + request) + execution.setVariable("DeleteAAIVfModuleRequest", request) + } + + // generates a WorkflowException if + // - + public void handleDoDeleteVfModuleFailure(DelegateExecution execution) { + + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf"+ execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError); + String processKey = getProcessKey(execution); + exceptionUtil.buildWorkflowException(execution, 5000, "Failure in DoDeleteVfModule") + + } + + public void sdncValidateResponse(DelegateExecution execution, String response){ + + execution.setVariable("prefix",Prefix) + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Successfully Validated SDNC Response") + }else{ + throw new BpmnError("MSOWorkflowException") + } + } + + public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI") + + try { + // get variables + List fqdnList = execution.getVariable(Prefix + "createdNetworkPolicyFqdnList") + if (fqdnList == null) { + msoLogger.debug("No network policies to delete") + return + } + int fqdnCount = fqdnList.size() + + execution.setVariable(Prefix + "networkPolicyFqdnCount", fqdnCount) + msoLogger.debug("networkPolicyFqdnCount - " + fqdnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + if (fqdnCount > 0) { + // AII loop call over contrail network policy fqdn list + for (i in 0..fqdnCount-1) { + + int counting = i+1 + String fqdn = fqdnList[i] + + // Query AAI for this network policy FQDN + + String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8") + msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest) + + def aaiRequestId = UUID.randomUUID().toString() + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest) + int returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQueryNetworkPolicyByFqdnReturnCode", returnCode) + msoLogger.debug("AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (isOneOf(returnCode, 200, 201)) { + msoLogger.debug("The return code is: " + returnCode) + // This network policy FQDN exists in AAI - need to delete it now + execution.setVariable(Prefix + "queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString) + msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + // Retrieve the network policy id for this FQDN + def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id") + msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId) + + // Retrieve the resource version for this network policy + def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version") + msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion) + + String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") + + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8") + + msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest) + + def aaiRequestIdDel = UUID.randomUUID().toString() + msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest) + + APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest) + + int returnCodeDel = responseDel.getStatusCode() + execution.setVariable(Prefix + "aaiDeleteNetworkPolicyReturnCode", returnCodeDel) + msoLogger.debug("AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel) + + if (isOneOf(returnCodeDel, 200, 201, 204)) { + msoLogger.debug("The return code from deleting network policy is: " + returnCodeDel) + // This network policy was deleted from AAI successfully + msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ") + + } else { + // aai all errors + String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel + msoLogger.debug(delErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage) + } + } else if (returnCode == 404) { + // This network policy FQDN is not in AAI. No need to delete. + msoLogger.debug("The return code is: " + returnCode) + msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn) + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + + + + } // end loop + + + } else { + msoLogger.debug("No contrail network policies to query/create") + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoCreateVfModuleRollback flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DCVFMR_vnfId') + def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address') + def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address') + def ipv4OamAddressElement = '' + def managementV6AddressElement = '' + + if (oamManagementV4Address != null) { + ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>' + } + + if (oamManagementV6Address != null) { + managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>' + } + + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + ${ipv4OamAddressElement} + ${managementV6AddressElement} + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage()) + } + } + + public void setSuccessfulRollbackStatus (DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED setSuccessfulRollbackStatus") + + try{ + // Set rolledBack to true, rollbackError to null + execution.setVariable("rolledBack", true) + execution.setVariable("rollbackError", null) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setSuccessfulRollbackStatus.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED setSuccessfulRollbackStatus") + } + + public void setFailedRollbackStatus (DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED setFailedRollbackStatus") + + try{ + // Set rolledBack to false, rollbackError to actual value, rollbackData to null + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback') + execution.setVariable("rollbackData", null) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setFailedRollbackStatus.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED setFailedRollbackStatus") + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy new file mode 100644 index 0000000000..5995b6b099 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy @@ -0,0 +1,242 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 groovy.xml.XmlUtil + +import groovy.json.* + + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + + +public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleVolumeRollback.class); + + String Prefix="DCVFMODVOLRBK_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + + def className = getClass().getSimpleName() + + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "volumeGroupName", null) + execution.setVariable(Prefix + "lcpCloudRegionId", null) + execution.setVariable(Prefix + "rollbackVnfARequest", null) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + InitializeProcessVariables(execution) +// rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudSiteId) + RollbackData rollbackData = execution.getVariable("rollbackData") + +// String vnfId = rollbackData.get("DCVFMODULEVOL", "vnfid") +// execution.setVariable("DCVFMODVOLRBK_vnfId", vnfId) +// String vfModuleId = rollbackData.get("DCVFMODULEVOL", "vfmoduleid") +// execution.setVariable("DCVFMODVOLRBK_vfModuleId", vfModuleId) +// String source = rollbackData.get("DCVFMODULEVOL", "source") +// execution.setVariable("DCVFMODVOLRBK_source", source) +// String serviceInstanceId = rollbackData.get("DCVFMODULEVOL", "serviceInstanceId") +// execution.setVariable("DCVFMODVOLRBK_serviceInstanceId", serviceInstanceId) +// String serviceId = rollbackData.get("DCVFMODULEVOL", "service-id") +// execution.setVariable("DCVFMODVOLRBK_serviceId", serviceId) +// String vnfType = rollbackData.get("DCVFMODULEVOL", "vnftype") +// execution.setVariable("DCVFMODVOLRBK_vnfType", vnfType) +// String vnfName = rollbackData.get("DCVFMODULEVOL", "vnfname") +// execution.setVariable("DCVFMODVOLRBK_vnfName", vnfName) +// String tenantId = rollbackData.get("DCVFMODULEVOL", "tenantid") +// execution.setVariable("DCVFMODVOLRBK_tenantId", tenantId) +// String vfModuleName = rollbackData.get("DCVFMODULEVOL", "vfmodulename") +// execution.setVariable("DCVFMODVOLRBK_vfModuleName", vfModuleName) +// String vfModuleModelName = rollbackData.get("DCVFMODULEVOL", "vfmodulemodelname") +// execution.setVariable("DCVFMODVOLRBK_vfModuleModelName", vfModuleModelName) +// String cloudSiteId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion") +// execution.setVariable("DCVFMODVOLRBK_cloudSiteId", cloudSiteId) +// String heatStackId = rollbackData.get("DCVFMODULEVOL", "heatstackid") +// execution.setVariable("DCVFMODVOLRBK_heatStackId", heatStackId) +// String requestId = rollbackData.get("DCVFMODULEVOL", "msorequestid") +// execution.setVariable("DCVFMODVOLRBK_requestId", requestId) + + String volumeGroupName = rollbackData.get("DCVFMODULEVOL", "volumeGroupName") + execution.setVariable("DCVFMODVOLRBK_volumeGroupName", volumeGroupName) + + String lcpCloudRegionId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion") + execution.setVariable("DCVFMODVOLRBK_lcpCloudRegionId", lcpCloudRegionId) + + execution.setVariable("DCVFMODVOLRBK_rollbackVnfARequest", rollbackData.get("DCVFMODULEVOL", "rollbackVnfARequest")) + execution.setVariable("DCVFMODVOLRBK_backoutOnFailure", rollbackData.get("DCVFMODULEVOL", "backoutOnFailure")) + execution.setVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isCreateVnfRollbackNeeded")) + execution.setVariable("DCVFMODVOLRBK_isAAIRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isAAIRollbackNeeded")) + + } + + /** + * Query AAI volume group by name + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) { + + def volumeGroupName = execution.getVariable('DCVFMODVOLRBK_volumeGroupName') + def cloudRegion = execution.getVariable('DCVFMODVOLRBK_lcpCloudRegionId') + + // This is for stub testing + def testVolumeGroupName = execution.getVariable('test-volume-group-name') + if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) { + volumeGroupName = testVolumeGroupName + } + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8') + + msoLogger.debug('Query AAI volume group by name: ' + queryAAIVolumeNameRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query volume group by name return code: " + returnCode) + msoLogger.debug("AAI query volume group by name response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString) + execution.setVariable(prefix+'AaiReturnCode', returnCode) + + if (returnCode=='200') { + // @TODO: verify error code + // @TODO: create class of literals representing error codes + execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString) + msoLogger.debug("Volume Group Name $volumeGroupName exists in AAI.") + } else { + if (returnCode=='404') { + msoLogger.debug("Volume Group Name $volumeGroupName does not exist in AAI.") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + + public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) { + + callRESTQueryAAIVolGrpName(execution, isDebugEnabled) + + def queryAaiVolumeGroupResponse = execution.getVariable(prefix+'queryAAIVolGrpNameResponse') + + def volumeGroupId = utils.getNodeText(queryAaiVolumeGroupResponse, "volume-group-id") + def resourceVersion = utils.getNodeText(queryAaiVolumeGroupResponse, "resource-version") + + def cloudRegion = execution.getVariable("DCVFMODVOLRBK_lcpCloudRegionId") + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group" + '/' + volumeGroupId + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8") + + msoLogger.debug('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest) + + APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI delete volume group return code: " + returnCode) + msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + def volumeGroupNameFound = prefix+'volumeGroupNameFound' + if (returnCode=='200' || returnCode=='204' ) { + msoLogger.debug("Volume group $volumeGroupId deleted.") + } else { + if (returnCode=='404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupId not found for delete in AAI Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + // ******************************* + // Build Error Section + // ******************************* + + + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy new file mode 100644 index 0000000000..f734ffb3ff --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy @@ -0,0 +1,616 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.VfModuleBase; +import org.onap.so.bpmn.core.RollbackData +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.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +class DoCreateVfModuleVolumeV2 extends VfModuleBase { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleVolumeV2.class); + String prefix='DCVFMODVOLV2_' + JsonUtils jsonUtil = new JsonUtils() + + + /** + * Perform initial processing, such as request validation, initialization of variables, etc. + * * @param execution + */ + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + preProcessRequest(execution, isDebugEnabled) + } + + public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) { + + execution.setVariable("prefix",prefix) + execution.setVariable(prefix+'SuccessIndicator', false) + execution.setVariable(prefix+'isPONR', false) + + displayInput(execution, isDebugLogEnabled) + setRollbackData(execution, isDebugLogEnabled) + setRollbackEnabled(execution, isDebugLogEnabled) + + + def tenantId = execution.getVariable("tenantId") + if (tenantId == null) { + String cloudConfiguration = execution.getVariable("cloudConfiguration") + tenantId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.tenantId") + execution.setVariable("tenantId", tenantId) + } + + def cloudSiteId = execution.getVariable("lcpCloudRegionId") + if (cloudSiteId == null) { + String cloudConfiguration = execution.getVariable("cloudConfiguration") + cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.lcpCloudRegionId") + execution.setVariable("lcpCloudRegionId", cloudSiteId) + } + + // Extract attributes from modelInfo + String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo") + + //modelCustomizationUuid + def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid") + execution.setVariable("modelCustomizationId", modelCustomizationUuid) + msoLogger.debug("modelCustomizationId: " + modelCustomizationUuid) + + //modelName + def modelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName") + execution.setVariable("modelName", modelName) + msoLogger.debug("modelName: " + modelName) + + // The following is used on the get Generic Service Instance call + execution.setVariable('GENGS_type', 'service-instance') + } + + + /** + * Display input variables + * @param execution + * @param isDebugLogEnabled + */ + public void displayInput(DelegateExecution execution, isDebugLogEnabled) { + def input = ['mso-request-id', 'msoRequestId', 'isDebugLogEnabled', 'disableRollback', 'failIfExists', 'serviceInstanceId', + 'vnfId', 'vnfName', 'tenantId', 'volumeGroupId', 'volumeGroupName', 'lcpCloudRegionId', 'vnfType', 'vfModuleModelInfo', 'asdcServiceModelVersion', + 'test-volume-group-name', 'test-volume-group-id', 'vfModuleInputParams'] + + msoLogger.debug('Begin input: ') + input.each { + msoLogger.debug(it + ': ' + execution.getVariable(it)) + } + msoLogger.debug('End input.') + } + + + /** + * Define and set rollbackdata object + * @param execution + * @param isDebugEnabled + */ + public void setRollbackData(DelegateExecution execution, isDebugEnabled) { + def rollbackData = execution.getVariable("rollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } + def volumeGroupName = execution.getVariable('volumeGroupName') + rollbackData.put("DCVFMODULEVOL", "volumeGroupName", volumeGroupName) + execution.setVariable("rollbackData", rollbackData) + } + + + /** + * validate getServiceInstance response + * @param execution + * @param isDebugEnabled + */ + public void validateGetServiceInstanceCall(DelegateExecution execution, isDebugEnabled) { + def found = execution.getVariable('GENGS_FoundIndicator') + def success = execution.getVariable('GENGS_SuccessIndicator') + def serviceInstanceId = execution.getVariable('serviceInstanceId') + msoLogger.debug("getServiceInstance success: " + success) + msoLogger.debug("getServiceInstance found: " + found) + if(!found || !success) { + String errorMessage = "Service instance id not found in AAI: ${serviceInstanceId}." + msoLogger.debug(errorMessage) + (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + + } + + /** + * Get cloud region + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) { + + def cloudRegion = execution.getVariable("lcpCloudRegionId") + msoLogger.debug('Request cloud region is: ' + cloudRegion) + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryCloudRegionRequest = aaiEndpoint + '/' + cloudRegion + + msoLogger.debug(queryCloudRegionRequest) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + + def aaiCloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "AAI", cloudRegion) + if ((aaiCloudRegion != "ERROR")) { + execution.setVariable("lcpCloudRegionId", aaiCloudRegion) + msoLogger.debug("AIC Cloud Region for AAI: " + aaiCloudRegion) + } else { + String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode") + msoLogger.debug(errorMessage) + (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + + def poCloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + if ((poCloudRegion != "ERROR")) { + execution.setVariable("poLcpCloudRegionId", poCloudRegion) + msoLogger.debug("AIC Cloud Region for PO: " + poCloudRegion) + } else { + String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode") + msoLogger.debug(errorMessage) + (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudRegion) + } + + + /** + * Query AAI volume group by name + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) { + + def volumeGroupName = execution.getVariable('volumeGroupName') + def cloudRegion = execution.getVariable('lcpCloudRegionId') + + // This is for stub testing + def testVolumeGroupName = execution.getVariable('test-volume-group-name') + if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) { + volumeGroupName = testVolumeGroupName + } + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8') + + msoLogger.debug('Query AAI volume group by name: ' + queryAAIVolumeNameRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query volume group by name return code: " + returnCode) + msoLogger.debug("AAI query volume group by name response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString) + execution.setVariable(prefix+'AaiReturnCode', returnCode) + + if (returnCode=='200') { + execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString) + msoLogger.debug("Volume Group Name $volumeGroupName exists in AAI.") + } else { + if (returnCode=='404') { + msoLogger.debug("Volume Group Name $volumeGroupName does not exist in AAI.") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + /** + * Create a WorkflowException + * @param execution + * @param isDebugEnabled + */ + public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) { + msoLogger.debug(errorMessage) + (new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage) + } + + + /** + * Create a WorkflowException + * @param execution + * @param isDebugEnabled + */ + public void handleError(DelegateExecution execution, isDebugEnabled) { + WorkflowException we = execution.getVariable('WorkflowException') + if (we == null) { + (new ExceptionUtil()).buildWorkflowException(execution, 2500, "Enexpected error encountered!") + } + throw new BpmnError("MSOWorkflowException") + } + + + /** + * Create volume group in AAI + * @param execution + * @param isDebugEnabled + */ + public void callRESTCreateAAIVolGrpName(DelegateExecution execution, isDebugEnabled) { + + def vnfId = execution.getVariable('vnfId') + def volumeGroupId = execution.getVariable('volumeGroupId') + def volumeName = execution.getVariable("volumeGroupName") + def modelCustomizationId = execution.getVariable("modelCustomizationId") + def vnfType = execution.getVariable("vnfType") + def tenantId = execution.getVariable("tenantId") + def cloudRegion = execution.getVariable('lcpCloudRegionId') + + msoLogger.debug("volumeGroupId: " + volumeGroupId) + + def testGroupId = execution.getVariable('test-volume-group-id') + if (testGroupId != null && testGroupId.trim() != '') { + msoLogger.debug("test volumeGroupId is present: " + testGroupId) + volumeGroupId = testGroupId + execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0") + } + + msoLogger.debug("volumeGroupId to be used: " + volumeGroupId) + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String createAAIVolumeGrpNameUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8") + + String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution)) + msoLogger.debug("AAI namespace is: " + namespace) + + msoLogger.debug("Request URL for PUT: " + createAAIVolumeGrpNameUrlRequest) + + NetworkUtils networkUtils = new NetworkUtils() + String payload = networkUtils.createCloudRegionVolumeRequest(volumeGroupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId) + String payloadXml = utils.formatXml(payload) + msoLogger.debug("Request payload for PUT: " + payloadXml) + + APIResponse response = aaiUtil.executeAAIPutCall(execution, createAAIVolumeGrpNameUrlRequest, payloadXml) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI create volume group return code: " + returnCode) + msoLogger.debug("AAI create volume group response: " + aaiResponseAsString) + + execution.setVariable(prefix+"createAAIVolumeGrpNameReturnCode", returnCode) + execution.setVariable(prefix+"createAAIVolumeGrpNameResponse", aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if (returnCode =='201') { + RollbackData rollbackData = execution.getVariable("rollbackData") + rollbackData.put("DCVFMODULEVOL", "isAAIRollbackNeeded", "true") + } else { + execution.setVariable(prefix+"isErrorMessageException", true) + if (returnCode=='404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to create volume group in AAI. Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + msoLogger.debug(" AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + /** + * Prepare VNF adapter create request XML + * @param execution + */ + public void prepareVnfAdapterCreateRequest(DelegateExecution execution, isDebugEnabled) { + + def aaiGenericVnfResponse = execution.getVariable(prefix+'AAIQueryGenericVfnResponse') + def vnfId = utils.getNodeText(aaiGenericVnfResponse, 'vnf-id') + def vnfName = utils.getNodeText(aaiGenericVnfResponse, 'vnf-name') + def vnfType = utils.getNodeText(aaiGenericVnfResponse, "vnf-type") + + def requestId = execution.getVariable('msoRequestId') + def serviceId = execution.getVariable('serviceInstanceId') + def cloudSiteId = execution.getVariable('poLcpCloudRegionId') + def tenantId = execution.getVariable('tenantId') + def volumeGroupId = execution.getVariable('volumeGroupId') + def volumeGroupnName = execution.getVariable('volumeGroupName') + + def vnfVersion = execution.getVariable("asdcServiceModelVersion") + def vnfModuleType = execution.getVariable("modelName") + + def modelCustomizationId = execution.getVariable("modelCustomizationId") + + // for testing + msoLogger.debug("volumeGroupId: " + volumeGroupId) + def testGroupId = execution.getVariable('test-volume-group-id') + if (testGroupId != null && testGroupId.trim() != '') { + msoLogger.debug("test volumeGroupId is present: " + testGroupId) + volumeGroupId = testGroupId + execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0") + } + msoLogger.debug("volumeGroupId to be used: " + volumeGroupId) + + // volume group parameters + + String volumeGroupParams = '' + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("vfModuleInputParams") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey(); + String paramValue = entry.getValue() + paramsXml = + """ <entry> + <key>${MsoUtils.xmlEscape(paramName)}</key> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </entry> + """ + sbParams.append(paramsXml) + } + + volumeGroupParams = sbParams.toString() + msoLogger.debug("volumeGroupParams: "+ volumeGroupParams) + + def backoutOnFailure = execution.getVariable(prefix+"backoutOnFailure") + msoLogger.debug("backoutOnFailure: "+ backoutOnFailure) + + def failIfExists = execution.getVariable("failIfExists") + if(failIfExists == null) { + failIfExists = 'true' + } + + String messageId = UUID.randomUUID() + msoLogger.debug("messageId to be used is generated: " + messageId) + + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + msoLogger.debug("CreateVfModuleVolume - notificationUrl: "+ notificationUrl) + + // build request + String vnfSubCreateWorkflowRequest = + """ + <createVolumeGroupRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupName>${MsoUtils.xmlEscape(volumeGroupnName)}</volumeGroupName> + <vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType> + <vnfVersion>${MsoUtils.xmlEscape(vnfVersion)}</vnfVersion> + <vfModuleType>${MsoUtils.xmlEscape(vnfModuleType)}</vfModuleType> + <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationId)}</modelCustomizationUuid> + <volumeGroupParams> + <entry> + <key>vnf_id</key> + <value>${MsoUtils.xmlEscape(vnfId)}</value> + </entry> + <entry> + <key>vnf_name</key> + <value>${MsoUtils.xmlEscape(vnfName)}</value> + </entry> + <entry> + <key>vf_module_id</key> + <value>${MsoUtils.xmlEscape(volumeGroupId)}</value> + </entry> + <entry> + <key>vf_module_name</key> + <value>${MsoUtils.xmlEscape(volumeGroupnName)}</value> + </entry> + ${volumeGroupParams} + </volumeGroupParams> + <skipAAI>true</skipAAI> + <backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout> + <failIfExists>${MsoUtils.xmlEscape(failIfExists)}</failIfExists> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </createVolumeGroupRequest> + """ + + String vnfSubCreateWorkflowRequestAsString = utils.formatXml(vnfSubCreateWorkflowRequest) + msoLogger.debug(vnfSubCreateWorkflowRequestAsString) + msoLogger.debug(vnfSubCreateWorkflowRequestAsString) + execution.setVariable(prefix+"createVnfARequest", vnfSubCreateWorkflowRequestAsString) + + // build rollback request for use later if needed + String vnfSubRollbackWorkflowRequest = buildRollbackVolumeGroupRequestXml(volumeGroupId, cloudSiteId, tenantId, requestId, serviceId, messageId, notificationUrl) + + msoLogger.debug("Sub Vnf flow rollback request: vnfSubRollbackWorkflowRequest " + "\n" + vnfSubRollbackWorkflowRequest) + + String vnfSubRollbackWorkflowRequestAsString = utils.formatXml(vnfSubRollbackWorkflowRequest) + execution.setVariable(prefix+"rollbackVnfARequest", vnfSubRollbackWorkflowRequestAsString) + } + + public String buildRollbackVolumeGroupRequestXml(volumeGroupId, cloudSiteId, tenantId, requestId, serviceId, messageId, notificationUrl) { + + def request = """ + <rollbackVolumeGroupRequest> + <volumeGroupRollback> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>{{VOLUMEGROUPSTACKID}}</volumeGroupStackId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId> + <volumeGroupCreated>true</volumeGroupCreated> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + </volumeGroupRollback> + <skipAAI>true</skipAAI> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </rollbackVolumeGroupRequest> + """ + + return request + } + + public String updateRollbackVolumeGroupRequestXml(String rollabackRequest, String heatStackId) { + String newRequest = rollabackRequest.replace("{{VOLUMEGROUPSTACKID}}", heatStackId) + return newRequest + } + + /** + * Validate VNF adapter response + * @param execution + */ + public void validateVnfResponse(DelegateExecution execution, isDebugEnabled) { + def vnfSuccess = execution.getVariable('VNFREST_SuccessIndicator') + msoLogger.debug("vnfAdapterSuccessIndicator: "+ vnfSuccess) + if(vnfSuccess==true) { + String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse") + String heatStackID = utils.getNodeText(createVnfAResponse, "volumeGroupStackId") + String vnfRollbackRequest = execution.getVariable(prefix+"rollbackVnfARequest") + String updatedVnfRollbackRequest = updateRollbackVolumeGroupRequestXml(vnfRollbackRequest, heatStackID) + msoLogger.debug("vnfAdapter rollback request: "+ updatedVnfRollbackRequest) + RollbackData rollbackData = execution.getVariable("rollbackData") + rollbackData.put("DCVFMODULEVOL", "rollbackVnfARequest", updatedVnfRollbackRequest) + rollbackData.put("DCVFMODULEVOL", "isCreateVnfRollbackNeeded", "true") + } + } + + + /** + * Update voulume group in AAI + * @TODO: Can we re-use the create method?? + * @param execution + * @param isDebugEnabled + */ + public void callRESTUpdateCreatedVolGrpName(DelegateExecution execution, isDebugEnabled) { + + String requeryAAIVolGrpNameResponse = execution.getVariable(prefix+"queryAAIVolGrpNameResponse") + String volumeGroupId = utils.getNodeText(requeryAAIVolGrpNameResponse, "volume-group-id") + String modelCustomizationId = execution.getVariable("modelCustomizationId") + String cloudRegion = execution.getVariable("lcpCloudRegionId") + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String updateAAIVolumeGroupUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, 'UTF-8') + + String namespace = aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution)) + + msoLogger.debug("updateAAIVolumeGroupUrlRequest - " + updateAAIVolumeGroupUrlRequest) + + String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse") + def heatStackID = utils.getNodeText(createVnfAResponse, "volumeGroupStackId") + + execution.setVariable(prefix+"heatStackId", heatStackID) + + NetworkUtils networkUtils = new NetworkUtils() + String payload = networkUtils.updateCloudRegionVolumeRequest(requeryAAIVolGrpNameResponse, heatStackID, namespace, modelCustomizationId) + String payloadXml = utils.formatXml(payload) + + msoLogger.debug("Payload to Update Created VolumeGroupName - " + "\n" + payloadXml) + + APIResponse response = aaiUtil.executeAAIPutCall(execution, updateAAIVolumeGroupUrlRequest, payloadXml) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI create volume group return code: " + returnCode) + msoLogger.debug("AAI create volume group response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if (returnCode =='200') { + execution.setVariable(prefix+"updateCreatedAAIVolumeGrpNameResponse", aaiResponseAsString) + execution.setVariable(prefix+"isPONR", true) + } else { + execution.setVariable(prefix+"isErrorMessageException", true) + if (returnCode=='404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to update volume group in AAI. Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + msoLogger.debug(" AAI Adapter Query Failed. WorkflowException - " + "\n" + aWorkflowException) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + /** + * Query AAI Generic VNF + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAIGenericVnf(DelegateExecution execution, isDebugEnabled) { + + def vnfId = execution.getVariable('vnfId') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution) + def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8") + + msoLogger.debug("AAI query generic vnf request: " + queryAAIRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query generic vnf return code: " + returnCode) + msoLogger.debug("AAI query generic vnf response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if (returnCode=='200') { + msoLogger.debug('Generic vnf ' + vnfId + ' found in AAI.') + execution.setVariable(prefix+'AAIQueryGenericVfnResponse', aaiResponseAsString) + } else { + if (returnCode=='404') { + def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.' + msoLogger.debug(message) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message) + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy new file mode 100644 index 0000000000..46a502e124 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy @@ -0,0 +1,618 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.* + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +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.springframework.web.util.UriUtils + + +/** + * This class supports the DoCreateVnf building block subflow + * with the creation of a generic vnf for + * infrastructure. + * + */ +class DoCreateVnf extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnf.class); + String Prefix="DoCVNF_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED DoCreateVnf PreProcessRequest Process") + + // DISABLE SDNC INTERACTION FOR NOW + execution.setVariable("SDNCInteractionEnabled", false) + + + /*******************/ + try{ + // Get Variables + + def rollbackData = execution.getVariable("rollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } + + String vnfModelInfo = execution.getVariable("vnfModelInfo") + String serviceModelInfo = execution.getVariable("serviceModelInfo") + + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("DoCVNF_requestId", requestId) + execution.setVariable("mso-request-id", requestId) + msoLogger.debug("Incoming Request Id is: " + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + execution.setVariable("DoCVNF_serviceInstanceId", serviceInstanceId) + rollbackData.put("VNF", "serviceInstanceId", serviceInstanceId) + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfType = execution.getVariable("vnfType") + execution.setVariable("DoCVNF_vnfType", vnfType) + msoLogger.debug("Incoming Vnf Type is: " + vnfType) + + String vnfName = execution.getVariable("vnfName") + if (vnfName.equals("") || vnfName.equals("null")) { + vnfName = null + } + execution.setVariable("DoCVNF_vnfName", vnfName) + msoLogger.debug("Incoming Vnf Name is: " + vnfName) + + String serviceId = execution.getVariable("productFamilyId") + execution.setVariable("DoCVNF_serviceId", serviceId) + msoLogger.debug("Incoming Service Id is: " + serviceId) + + String source = "VID" + execution.setVariable("DoCVNF_source", source) + rollbackData.put("VNF", "source", source) + msoLogger.debug("Incoming Source is: " + source) + + String suppressRollback = execution.getVariable("disableRollback") + execution.setVariable("DoCVNF_suppressRollback", suppressRollback) + msoLogger.debug("Incoming Suppress Rollback is: " + suppressRollback) + + String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantUuid") + execution.setVariable("DoCVNF_modelInvariantId", modelInvariantId) + msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId) + + String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid") + if (modelVersionId == null) { + modelVersionId = "" + } + execution.setVariable("DoCVNF_modelVersionId", modelVersionId) + msoLogger.debug("Incoming Version Id is: " + modelVersionId) + + String modelVersion = jsonUtil.getJsonValue(vnfModelInfo, "modelVersion") + execution.setVariable("DoCVNF_modelVersion", modelVersion) + msoLogger.debug("Incoming Model Version is: " + modelVersion) + + String modelName = jsonUtil.getJsonValue(vnfModelInfo, "modelName") + execution.setVariable("DoCVNF_modelName", modelName) + msoLogger.debug("Incoming Model Name is: " + modelName) + + String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid") + if (modelCustomizationId == null) { + modelCustomizationId = "" + } + execution.setVariable("DoCVNF_modelCustomizationId", modelCustomizationId) + msoLogger.debug("Incoming Model Customization Id is: " + modelCustomizationId) + + String cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DoCVNF_cloudSiteId", cloudSiteId) + rollbackData.put("VNF", "cloudSiteId", cloudSiteId) + msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId) + + String tenantId = execution.getVariable("tenantId") + execution.setVariable("DoCVNF_tenantId", tenantId) + rollbackData.put("VNF", "tenantId", tenantId) + msoLogger.debug("Incoming Tenant Id is: " + tenantId) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + if (globalSubscriberId == null) { + globalSubscriberId = "" + } + execution.setVariable("DoCVNF_globalSubscriberId", globalSubscriberId) + msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId) + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null) { + sdncVersion = "1702" + } + execution.setVariable("DoCVNF_sdncVersion", sdncVersion) + msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("DoCVNF_requestInfo", requestInfo) + //TODO: Orch Status - TBD, will come from SDN-C Response in 1702 + String orchStatus = "Created" + execution.setVariable("DoCVNF_orchStatus", orchStatus) + + //TODO: Equipment Role - Should come from SDN-C Response in 1702 + String equipmentRole = " " + execution.setVariable("DoCVNF_equipmentRole", equipmentRole) + String vnfId = execution.getVariable("testVnfId") // for junits + if(isBlank(vnfId)){ + vnfId = execution.getVariable("vnfId") + if (isBlank(vnfId)) { + vnfId = UUID.randomUUID().toString() + msoLogger.debug("Generated Vnf Id is: " + vnfId) + } + } + execution.setVariable("DoCVNF_vnfId", vnfId) + + // Setting for Sub Flow Calls + execution.setVariable("DoCVNF_type", "generic-vnf") + execution.setVariable("GENGS_type", "service-instance") + + String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + execution.setVariable("DoCVNF_sdncCallbackUrl", sdncCallbackUrl) + rollbackData.put("VNF", "sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl) + + VnfResource vnfResource = (VnfResource) execution.getVariable((String)"vnfResourceDecomposition") + String nfRole = vnfResource.getNfRole() + + execution.setVariable("DoCVNF_nfRole", nfRole) + msoLogger.debug("NF Role is: " + nfRole) + + String nfNamingCode = vnfResource.getNfNamingCode() + execution.setVariable("DoCVNF_nfNamingCode", nfNamingCode) + msoLogger.debug("NF Naming Code is: " + nfNamingCode) + + String nfType = vnfResource.getNfType() + execution.setVariable("DoCVNF_nfType", nfType) + msoLogger.debug("NF Type is: " + nfType) + + String nfFunction = vnfResource.getNfFunction() + execution.setVariable("DoCVNF_nfFunction", nfFunction) + msoLogger.debug("NF Function is: " + nfFunction) + + rollbackData.put("VNF", "rollbackSDNCAssign", "false") + rollbackData.put("VNF", "rollbackSDNCActivate", "false") + rollbackData.put("VNF", "rollbackVnfCreate", "false") + + execution.setVariable("rollbackData", rollbackData) + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoCreateVnf PreProcessRequest method!" + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoCreateVnf PreProcessRequest Process") + } + + private Object getVariableEnforced(DelegateExecution execution, String name){ + Object enforced = execution.getVariable(name) + if(!enforced){ + return ""; + } + return enforced; + } + + public void createGenericVnf (DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoCreateVnf CreateGenericVnf Process") + try { + //Get Vnf Info + String vnfId = getVariableEnforced(execution, "DoCVNF_vnfId") + String vnfName = getVariableEnforced(execution, "DoCVNF_vnfName") + if (vnfName == null) { + vnfName = "sdncGenerated" + msoLogger.debug("Sending a dummy VNF name to AAI - the name will be generated by SDNC: " + vnfName) + } + String vnfType = getVariableEnforced(execution, "DoCVNF_vnfType") + String serviceId = getVariableEnforced(execution, "DoCVNF_serviceId") + String orchStatus = getVariableEnforced(execution, "DoCVNF_orchStatus") + String modelInvariantId = getVariableEnforced(execution, "DoCVNF_modelInvariantId") + String modelVersionId = getVariableEnforced(execution, "DoCVNF_modelVersionId") + String modelCustomizationId = getVariableEnforced(execution, "DoCVNF_modelCustomizationId") + String equipmentRole = getVariableEnforced(execution, "DoCVNF_equipmentRole") + String nfType = getVariableEnforced(execution, "DoCVNF_nfType") + String nfRole = getVariableEnforced(execution, "DoCVNF_nfRole") + String nfFunction = getVariableEnforced(execution, "DoCVNF_nfFunction") + String nfNamingCode = getVariableEnforced(execution, "DoCVNF_nfNamingCode") + + //Get Service Instance Info + String serviceInstanceId = getVariableEnforced(execution, "DoCVNF_serviceInstanceId") + String siRelatedLink = getVariableEnforced(execution, "GENGS_siResourceLink") + + int custStart = siRelatedLink.indexOf("customer/") + int custEnd = siRelatedLink.indexOf("/service-subscriptions") + String globalCustId = siRelatedLink.substring(custStart + 9, custEnd) + int serviceStart = siRelatedLink.indexOf("service-subscription/") + int serviceEnd = siRelatedLink.indexOf("/service-instances/") + String serviceType = siRelatedLink.substring(serviceStart + 21, serviceEnd) + + Map<String, String> payload = new LinkedHashMap<>(); + payload.put("vnf-id", vnfId); + payload.put("vnf-name", vnfName); + payload.put("service-id", serviceId); + payload.put("vnf-type", vnfType); + payload.put("prov-status", "PREPROV"); + payload.put("orchestration-status", orchStatus); + payload.put("model-invariant-id", modelInvariantId); + payload.put("model-version-id", modelVersionId); + payload.put("model-customization-id", modelCustomizationId); + payload.put("nf-type", nfType); + payload.put("nf-role", nfRole); + payload.put("nf-function", nfFunction); + payload.put("nf-naming-code", nfNamingCode); + + AAIResourcesClient resourceClient = new AAIResourcesClient(); + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + resourceClient.create(uri, payload) + + AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + resourceClient.connect(uri, siUri) + + }catch(Exception ex) { + msoLogger.debug("Error Occured in DoCreateVnf CreateGenericVnf Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf CreateGenericVnf Process") + } + msoLogger.trace("COMPLETED DoCreateVnf CreateGenericVnf Process") + } + + public void postProcessCreateGenericVnf (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED DoCreateVnf PostProcessCreateGenericVnf Process") + try { + //Get Vnf Info + String vnfId = execution.getVariable("DoCVNF_vnfId") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put("VNF", "vnfId", vnfId) + rollbackData.put("VNF", "rollbackVnfCreate", "true") + execution.setVariable("rollbackData", rollbackData) + }catch(Exception ex) { + msoLogger.debug("Error Occured in DoCreateVnf PostProcessCreateGenericVnf Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PostProcessCreateGenericVnf Process") + } + msoLogger.trace("COMPLETED DoCreateVnf PostProcessCreateGenericVnf Process") + } + + + public void preProcessSDNCAssignRequest(DelegateExecution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCAssignRequest") + def vnfId = execution.getVariable("DoCVNF_vnfId") + def serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId") + msoLogger.debug("NEW VNF ID: " + vnfId) + + try{ + //Build SDNC Request + + String assignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "assign") + + assignSDNCRequest = utils.formatXml(assignSDNCRequest) + execution.setVariable("DoCVNF_assignSDNCRequest", assignSDNCRequest) + msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCAssignRequest" , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCAssignRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCAssignRequest") + } + + public void preProcessSDNCActivateRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCActivateRequest Process") + try{ + String vnfId = execution.getVariable("DoCVNF_vnfId") + String serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId") + + String activateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "activate") + + execution.setVariable("DoCVNF_activateSDNCRequest", activateSDNCRequest) + msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest) + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCActivateRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCActivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCActivateRequest Process") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DoCVNF_requestId") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("DoCVNF_sdncCallbackUrl") + def requestId = execution.getVariable("DoCVNF_requestId") + def serviceId = execution.getVariable("DoCVNF_serviceId") + def vnfType = execution.getVariable("DoCVNF_vnfType") + def vnfName = execution.getVariable("DoCVNF_vnfName") + // Only send vnfName to SDNC if it is not null, otherwise it will get generated by SDNC on Assign + String vnfNameString = "" + if (vnfName != null) { + vnfNameString = """<vnf-name>${MsoUtils.xmlEscape(vnfName)}</vnf-name>""" + } + def tenantId = execution.getVariable("DoCVNF_tenantId") + def source = execution.getVariable("DoCVNF_source") + def vnfId = execution.getVariable("DoCVNF_vnfId") + def cloudSiteId = execution.getVariable("DoCVNF_cloudSiteId") + def modelCustomizationId = execution.getVariable("DoCVNF_modelCustomizationId") + def serviceModelInfo = execution.getVariable("serviceModelInfo") + def vnfModelInfo = execution.getVariable("vnfModelInfo") + String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo) + String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo) + def globalSubscriberId = execution.getVariable("DoCVNF_globalSubscriberId") + def sdncVersion = execution.getVariable("DoCVNF_sdncVersion") + + String sdncVNFParamsXml = "" + + if(execution.getVariable("DoCVNF_vnfParamsExistFlag") == true){ + sdncVNFParamsXml = buildSDNCParamsXml(execution) + }else{ + sdncVNFParamsXml = "" + } + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>CreateVnfInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(serviceId)}</subscription-service-type> + ${serviceEcompModelInformation} + <service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type> + ${vnfEcompModelInformation} + </vnf-information> + <vnf-request-input> + ${vnfNameString} + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + ${sdncVNFParamsXml} + </vnf-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + msoLogger.debug("SDNCResponse: " + response) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + if(method.equals("get")){ + String topologyGetResponse = execution.getVariable("DoCVNF_getSDNCAdapterResponse") + String data = utils.getNodeXml(topologyGetResponse, "response-data") + msoLogger.debug("topologyGetResponseData: " + data) + String vnfName = utils.getNodeText(data, "vnf-name") + msoLogger.debug("vnfName received from SDNC: " + vnfName) + execution.setVariable("vnfName", vnfName) + execution.setVariable("DoCVNF_vnfName", vnfName) + } + def rollbackData = execution.getVariable("rollbackData") + if (method.equals("assign")) { + rollbackData.put("VNF", "rollbackSDNCAssign", "true") + } + else if (method.equals("activate")) { + rollbackData.put("VNF", "rollbackSDNCActivate", "true") + } + execution.setVariable("rollbackData", rollbackData) + + + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.debug("COMPLETED ValidateSDNCResponse Process") + } + + public void preProcessSDNCGetRequest(DelegateExecution execution){ + def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCGetRequest Process") + try{ + def serviceInstanceId = execution.getVariable('DoCVNF_serviceInstanceId') + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("mso-request-id") + "-" + System.currentTimeMillis() + } + + def callbackUrl = execution.getVariable("DoCVFM_sdncCallbackUrl") + msoLogger.debug("callbackUrl:" + callbackUrl) + + def vnfId = execution.getVariable('DCVFM_vnfId') + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = vnfId + } + else { + svcInstId = serviceInstanceId + } + // serviceOperation will be retrieved from "object-path" element + // in SDNC Assign Response for VNF + String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse") + msoLogger.debug("DoCVNF_assignSDNCAdapterResponse is: \n" + response) + + String serviceOperation = "" + + String data = utils.getNodeXml(response, "response-data") + msoLogger.debug("responseData: " + data) + serviceOperation = utils.getNodeText(data, "object-path") + msoLogger.debug("VNF with sdncVersion of 1707 or later - service operation: " + serviceOperation) + + + //!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE + sleep(5000) + + String SDNCGetRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + + execution.setVariable("DoCVNF_getSDNCRequest", SDNCGetRequest) + msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest. ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process") + } + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DoCVNF_vnfId') + msoLogger.debug("VNF ID: " + vnfId) + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <orchestration-status>Active</orchestration-status> + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable('DoCVNF_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy new file mode 100644 index 0000000000..d3dbd9107e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy @@ -0,0 +1,467 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 java.util.UUID; + +import java.util.List + +import org.json.JSONObject; +import org.json.JSONArray; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ModuleResource +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.DecomposeJsonUtil +import org.onap.so.bpmn.core.json.JsonUtils +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources; +import org.onap.so.logger.MsoLogger +import org.onap.so.logger.MessageEnum + +import static org.apache.commons.lang3.StringUtils.*; + + + +/** +* This class supports the macro VID Flow +* with the creation of a generic vnf and related VF modules. +*/ +class DoCreateVnfAndModules extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnfAndModules.class); + String Prefix="DCVAM_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + CatalogDbUtils cutils = new CatalogDbUtils() + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + */ + public void preProcessRequest(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoCreateVnfAndModules PreProcessRequest Process") + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + + setBasicDBAuthHeader(execution, isDebugLogEnabled) + try{ + // Get Variables + + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + String vnfModelInfo = execution.getVariable("vnfModelInfo") + + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("requestId", requestId) + execution.setVariable("mso-request-id", requestId) + msoLogger.debug("Incoming Request Id is: " + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfName = execution.getVariable("vnfName") + execution.setVariable("CREVI_vnfName", vnfName) + msoLogger.debug("Incoming Vnf Name is: " + vnfName) + + String productFamilyId = execution.getVariable("productFamilyId") + msoLogger.debug("Incoming Product Family Id is: " + productFamilyId) + + String source = "VID" + execution.setVariable("source", source) + msoLogger.debug("Incoming Source is: " + source) + + String lcpCloudRegionId = execution.getVariable("lcpCloudRegionId") + msoLogger.debug("Incoming LCP Cloud Region Id is: " + lcpCloudRegionId) + + String tenantId = execution.getVariable("tenantId") + msoLogger.debug("Incoming Tenant Id is: " + tenantId) + + String disableRollback = execution.getVariable("disableRollback") + msoLogger.debug("Incoming Disable Rollback is: " + disableRollback) + + String asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion") + msoLogger.debug("Incoming asdcServiceModelVersion: " + asdcServiceModelVersion) + + String vnfId = execution.getVariable("testVnfId") // for junits + if(isBlank(vnfId)){ + vnfId = execution.getVariable("vnfId") + if (isBlank(vnfId)) { + vnfId = UUID.randomUUID().toString() + msoLogger.debug("Generated Vnf Id is: " + vnfId) + } + } + execution.setVariable("vnfId", vnfId) + + // Set aLaCarte to false + execution.setVariable("aLaCarte", false) + + def rollbackData = execution.getVariable("rollbackData") + if (rollbackData == null) { + rollbackData = new RollbackData() + } + + def isTest = execution.getVariable("isTest") + + if (isTest == null || isTest == false) { + execution.setVariable("isBaseVfModule", "true") + } + execution.setVariable("numOfCreatedAddOnModules", 0) + + rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "0") + execution.setVariable("rollbackData", rollbackData) + + sleep (20000) + + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoCreateVnfAndModules PreProcessRequest Process") + } + + + public void queryCatalogDB (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("STARTED DoCreateVnfAndModules QueryCatalogDB Process") + try { + VnfResource vnf = null + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + // if serviceDecomposition is specified, get info from serviceDecomposition + if (serviceDecomposition != null) { + msoLogger.debug("Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString()) + List<VnfResource> vnfs = serviceDecomposition.getVnfResources() + msoLogger.debug("Read vnfs") + if (vnfs == null) { + msoLogger.debug("Error - vnfs are empty in serviceDecomposition object") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnfs are empty") + } + vnf = vnfs[0] + String serviceModelName = serviceDecomposition.getModelInfo().getModelName() + vnf.constructVnfType(serviceModelName) + String vnfType = vnf.getVnfType() + msoLogger.debug("Incoming Vnf Type is: " + vnfType) + execution.setVariable("vnfType", vnfType) + } + else { + //Get Vnf Info + String vnfModelInfo = execution.getVariable("vnfModelInfo") + msoLogger.debug("vnfModelInfo: " + vnfModelInfo) + String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid") + if (vnfModelCustomizationUuid == null) { + vnfModelCustomizationUuid = "" + } + msoLogger.debug("querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid) + + JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution, + vnfModelCustomizationUuid) + msoLogger.debug("obtained VNF list") + // Only one match here + JSONObject vnfObject = vnfs[0] + vnf = DecomposeJsonUtil.jsonToVnfResource(vnfObject.toString()) + } + msoLogger.debug("Read vnfResource") + if (vnf == null) { + msoLogger.debug("Error - vnf is empty in serviceDecomposition object") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnf is null") + } + execution.setVariable("vnfResourceDecomposition", vnf) + + List<ModuleResource> vfModules = vnf.getAllVfModuleObjects() + msoLogger.debug("Read vfModules") + if (vfModules == null) { + msoLogger.debug("Error - vfModules are empty in serviceDecomposition object") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vf modules are empty") + } + + ModuleResource baseVfModule = null + + for (int i = 0; i < vfModules.size; i++) { + msoLogger.debug("handling VF Module ") + ModuleResource vfModule = vfModules[i] + boolean isBase = vfModule.getIsBase() + if (isBase) { + ModelInfo baseVfModuleModelInfoObject = vfModule.getModelInfo() + String baseVfModuleModelInfoWithRoot = baseVfModuleModelInfoObject.toString() + String baseVfModuleModelInfo = jsonUtil.getJsonValue(baseVfModuleModelInfoWithRoot, "modelInfo") + execution.setVariable("baseVfModuleModelInfo", baseVfModuleModelInfo) + String baseVfModuleLabel = vfModule.getVfModuleLabel() + execution.setVariable("baseVfModuleLabel", baseVfModuleLabel) + String basePersonaModelId = baseVfModuleModelInfoObject.getModelInvariantUuid() + execution.setVariable("basePersonaModelId", basePersonaModelId) + baseVfModule = vfModule + break + } + + } + + List<ModuleResource>addOnModules = vfModules - baseVfModule + + int addOnModulesToDeploy = 0 + if (addOnModules != null) { + addOnModulesToDeploy = addOnModules.size + } + + + execution.setVariable("addOnModules", addOnModules) + execution.setVariable("addOnModulesToDeploy", addOnModulesToDeploy) + execution.setVariable("addOnModulesDeployed", 0) + + }catch(Exception ex) { + msoLogger.debug("Error Occured in DoCreateVnfAndModules QueryCatalogDB Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnfAndModules QueryCatalogDB Process") + } + + // Generate vfModuleId for base VF Module + def baseVfModuleId = UUID.randomUUID().toString() + execution.setVariable("baseVfModuleId", baseVfModuleId) + // For JUnits + String requestId = execution.getVariable("requestId") + if (requestId.equals("testRequestId123")) { + execution.setVariable("vnfId", "skask") + } + + msoLogger.trace("COMPLETED DoCreateVnfAndModules QueryCatalogDB Process") + } + + public void preProcessAddOnModule(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.debug("STARTED preProcessAddOnModule") + + try { + List<ModuleResource>addOnModules = execution.getVariable("addOnModules") + int addOnIndex = (int) execution.getVariable("addOnModulesDeployed") + + ModuleResource addOnModule = addOnModules[addOnIndex] + + msoLogger.debug("Got addon module") + + def newVfModuleId = UUID.randomUUID().toString() + execution.setVariable("addOnVfModuleId", newVfModuleId) + execution.setVariable("isBaseVfModule", "false") + + execution.setVariable("instancesOfThisModuleDeployed", 0) + + ModelInfo addOnVfModuleModelInfoObject = addOnModule.getModelInfo() + String addOnVfModuleModelInfoWithRoot = addOnVfModuleModelInfoObject.toString() + String addOnVfModuleModelInfo = jsonUtil.getJsonValue(addOnVfModuleModelInfoWithRoot, "modelInfo") + execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo) + String addOnVfModuleLabel = addOnModule.getVfModuleLabel() + execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel) + String addOnPersonaModelId = addOnVfModuleModelInfoObject.getModelInvariantUuid() + execution.setVariable("addOnPersonaModelId", addOnPersonaModelId) + int addOnInitialCount = addOnModule.getInitialCount() + execution.setVariable("initialCount", addOnInitialCount) + + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessAddOnModule") + } + + public void postProcessAddOnModule(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED postProcessAddOnModule") + + try { + int addOnModulesDeployed = execution.getVariable("addOnModulesDeployed") + execution.setVariable("addOnModulesDeployed", addOnModulesDeployed + 1) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing postProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessAddOnModule Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED postProcessAddOnModule") + } + + public void validateBaseModule(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED validateBaseModule") + + try { + def baseRollbackData = execution.getVariable("DCVAM_baseRollbackData") + def rollbackData = execution.getVariable("rollbackData") + + def baseModuleMap = baseRollbackData.get("VFMODULE") + baseModuleMap.each{ k, v -> rollbackData.put("VFMODULE_BASE", "${k}","${v}") } + execution.setVariable("rollbackData", rollbackData) + msoLogger.debug("addOnModulesDeployed: " + execution.getVariable("addOnModulesDeployed")) + msoLogger.debug("addOnModulesToDeploy: " + execution.getVariable("addOnModulesToDeploy")) + if (execution.getVariable("addOnModulesDeployed") < execution.getVariable("addOnModulesToDeploy")) { + msoLogger.debug("More add on modules to deploy") + } + else { + msoLogger.debug("No more add on modules to deploy") + } + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing validateBaseModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during validateBaseModule Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED validateBaseModule") + } + + public void validateAddOnModule(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED validateAddOnModule") + + try { + int instancesOfThisModuleDeployed = execution.getVariable("instancesOfThisModuleDeployed") + int numOfCreatedAddOnModules = execution.getVariable("numOfCreatedAddOnModules") + def addOnRollbackData = execution.getVariable("DCVAM_addOnRollbackData") + def rollbackData = execution.getVariable("rollbackData") + + def addOnModuleMap = addOnRollbackData.get("VFMODULE") + numOfCreatedAddOnModules = numOfCreatedAddOnModules + 1 + addOnModuleMap.each{ k, v -> rollbackData.put("VFMODULE_ADDON_" + numOfCreatedAddOnModules, "${k}","${v}") } + + execution.setVariable("DCVAM_addOnRollbackData", null) + + execution.setVariable("instancesOfThisModuleDeployed", instancesOfThisModuleDeployed + 1) + + execution.setVariable("numOfCreatedAddOnModules", numOfCreatedAddOnModules) + rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "${numOfCreatedAddOnModules}") + execution.setVariable("rollbackData", rollbackData) + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED validateAddOnModule") + } + + public void preProcessRollback (DelegateExecution execution) { + + msoLogger.trace("preProcessRollback") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit preProcessRollback") + } + + public void postProcessRollback (DelegateExecution execution) { + + msoLogger.trace("postProcessRollback") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit postProcessRollback") + } + + public void createPlatform (DelegateExecution execution) { + + msoLogger.trace("START createPlatform") + + String platformName = execution.getVariable("platformName") + String vnfId = execution.getVariable("vnfId") + + msoLogger.debug("Platform NAME: " + platformName) + msoLogger.debug("VnfID: " + vnfId) + + if(isBlank(platformName)){ + msoLogger.debug("platformName was not found. Continuing on with flow...") + }else{ + msoLogger.debug("platformName was found.") + try{ + AAICreateResources aaiCR = new AAICreateResources() + aaiCR.createAAIPlatform(platformName, vnfId) + }catch(Exception ex){ + String msg = "Exception in createPlatform. " + ex.getMessage(); + msoLogger.debug(msg) + } + } + msoLogger.trace("Exit createPlatform") + } + + public void createLineOfBusiness (DelegateExecution execution) { + + msoLogger.trace("START createLineOfBusiness") + + String lineOfBusiness = execution.getVariable("lineOfBusiness") + String vnfId = execution.getVariable("vnfId") + + msoLogger.debug("LineOfBusiness NAME: " + lineOfBusiness) + msoLogger.debug("VnfID: " + vnfId) + + if(isBlank(lineOfBusiness)){ + msoLogger.debug("LineOfBusiness was not found. Continuing on with flow...") + }else{ + msoLogger.debug("LineOfBusiness was found.") + try{ + AAICreateResources aaiCR = new AAICreateResources() + aaiCR.createAAILineOfBusiness(lineOfBusiness, vnfId) + }catch(Exception ex){ + String msg = "Exception in LineOfBusiness. " + ex.getMessage(); + msoLogger.debug(msg) + } + } + msoLogger.trace("Exit createLineOfBusiness") + } + + +}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy new file mode 100644 index 0000000000..eafc39b1dd --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy @@ -0,0 +1,360 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +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.SDNCAdapterUtils +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This class supports the macro VID Flow + * with the rollback of a creation of a generic vnf and related VF modules. + */ +class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor { + + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnfAndModulesRollback.class); + String Prefix="DCVAMR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED DoCreateVnfAndModulesRollback PreProcessRequest Process") + + try{ + // Get Rollback Variables + + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("Incoming RollbackData is: " + rollbackData.toString()) + execution.setVariable("rolledBack", null) + execution.setVariable("rollbackError", null) + + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + String vnfId = rollbackData.get("VNF", "vnfId") + msoLogger.debug("Rollback vnfId is: " + vnfId) + execution.setVariable("DCVAMR_vnfId", vnfId) + + execution.setVariable("mso-request-id", execution.getVariable("msoRequestId")) + + execution.setVariable("DCVAMR_rollbackSDNCAssign", rollbackData.get("VNF", "rollbackSDNCAssign")) + execution.setVariable("DCVAMR_rollbackSDNCActivate", rollbackData.get("VNF", "rollbackSDNCActivate")) + execution.setVariable("DCVAMR_rollbackVnfCreate", rollbackData.get("VNF", "rollbackVnfCreate")) + + String sdncCallbackUrl = rollbackData.get("VNF", "sdncCallbackUrl") + msoLogger.debug("Rollback sdncCallbackUrl is: " + sdncCallbackUrl) + execution.setVariable("DCVAMR_sdncCallbackUrl", sdncCallbackUrl) + + String tenantId= rollbackData.get("VNF", "tenantId") + msoLogger.debug("Rollback tenantId is: " + tenantId) + execution.setVariable("DCVAMR_tenantId", tenantId) + + String source= rollbackData.get("VNF", "source") + msoLogger.debug("Rollback source is: " + source) + execution.setVariable("DCVAMR_source", source) + + String serviceInstanceId = rollbackData.get("VNF", "serviceInstanceId") + msoLogger.debug("Rollback serviceInstanceId is: " + serviceInstanceId) + execution.setVariable("DCVAMR_serviceInstanceId", serviceInstanceId) + + String cloudSiteId = rollbackData.get("VNF", "cloudSiteId") + msoLogger.debug("Rollback cloudSiteId is: " + cloudSiteId) + execution.setVariable("DCVAMR_cloudSiteId", cloudSiteId) + + def numOfAddOnModulesString = rollbackData.get("VNFANDMODULES", "numOfCreatedAddOnModules") + int numOfAddOnModules = 0 + if (numOfAddOnModulesString != null) { + numOfAddOnModules = Integer.parseInt(numOfAddOnModulesString) + } + execution.setVariable("DCVAMR_numOfAddOnModules", numOfAddOnModules) + + def baseVfModuleRollbackMap = rollbackData.get("VFMODULE_BASE") + if (baseVfModuleRollbackMap == null) { + // there are no VF Modules to delete + execution.setVariable("DCVAMR_numOfModulesToDelete", 0) + } + else { + execution.setVariable("DCVAMR_numOfModulesToDelete", numOfAddOnModules + 1) + } + + // Set aLaCarte to false + execution.setVariable("DCVAMR_aLaCarte", false) + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoCreateVnfAndModulesRollback PreProcessRequest method!" + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnfAndModulesRollback PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoCreateVnfAndModulesRollback PreProcessRequest Process") + } + + + + public void preProcessCreateVfModuleRollback(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessCreateVfModuleRollback") + + try { + + def rollbackData = execution.getVariable("rollbackData") + + def vfModuleRollbackData = new RollbackData() + + def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete") + msoLogger.debug("numOfModulesToDelete: " + numOfModulesToDelete) + def moduleMap = null + + if (numOfModulesToDelete > 1) { + int addOnModuleIndex = numOfModulesToDelete - 1 + moduleMap = rollbackData.get("VFMODULE_ADDON_" + addOnModuleIndex) + msoLogger.debug("Removing ADDON VF module # " + addOnModuleIndex) + } + else { + moduleMap = rollbackData.get("VFMODULE_BASE") + msoLogger.debug("Removing BASE VF module") + } + moduleMap.each{ k, v -> vfModuleRollbackData.put("VFMODULE", "${k}","${v}") } + execution.setVariable("DCVAMR_RollbackData", vfModuleRollbackData) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessCreateVfModuleRollback ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessCreateVfModuleRollback Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessCreateVfModuleRollback") + } + + + public void postProcessCreateVfModuleRollback(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED postProcessCreateVfModuleRollback") + def rolledBack = false + + try { + rolledBack = execution.getVariable("DCVM_rolledBack") + def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete") + execution.setVariable("DCVAMR_numOfModulesToDelete", numOfModulesToDelete - 1) + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing postProcessCreateVfModuleRollback ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessCreateVfModuleRollback Method:\n" + e.getMessage()) + } + if (rolledBack == false) { + msoLogger.debug("Failure on DoCreateVfModuleRollback") + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Unsuccessful rollback of DoCreateVfModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during rollback of DoCreateVfModule") + } + msoLogger.trace("COMPLETED postProcessCreateVfModuleRollback") + } + + + public void preProcessSDNCDeactivateRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCDeactivateRequest") + def vnfId = execution.getVariable("vnfId") + def serviceInstanceId = execution.getVariable("serviceInstanceId") + + try{ + //Build SDNC Request + + String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate") + + deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest) + execution.setVariable(Prefix + "deactivateSDNCRequest", deactivateSDNCRequest) + msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest") + } + + public void preProcessSDNCUnassignRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process") + try{ + String vnfId = execution.getVariable("vnfId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign") + + execution.setVariable(Prefix + "unassignSDNCRequest", unassignSDNCRequest) + msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCUnassignRequest Process") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable(Prefix + "sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def tenantId = execution.getVariable(Prefix + "tenantId") + def source = execution.getVariable(Prefix + "source") + def vnfId = execution.getVariable(Prefix + "vnfId") + def serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId") + def cloudSiteId = execution.getVariable(Prefix + "cloudSiteId") + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteVnfInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id/> + <subscription-service-type/> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id/> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type/> + </vnf-information> + <vnf-request-input> + <vnf-name/> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + </vnf-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + + execution.setVariable("prefix",Prefix) + msoLogger.debug("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.debug("COMPLETED ValidateSDNCResponse Process") + } + + public void setSuccessfulRollbackStatus (DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED setSuccessfulRollbackStatus") + + try{ + // Set rolledBack to true, rollbackError to null + execution.setVariable("rolledBack", true) + execution.setVariable("rollbackError", null) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setSuccessfulRollbackStatus ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED setSuccessfulRollbackStatus") + } + + public void setFailedRollbackStatus (DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED setFailedRollbackStatus") + + try{ + // Set rolledBack to false, rollbackError to actual value, rollbackData to null + execution.setVariable("rolledBack", false) + def rollbackError = execution.getVariable("rollbackError") + if (rollbackError == null) { + execution.setVariable("rollbackError", 'Caught exception in DoCreateVnfAndModulesRollback') + } + execution.setVariable("rollbackData", null) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setFailedRollbackStatus. ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED setFailedRollbackStatus") + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy new file mode 100644 index 0000000000..238ac82c01 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy @@ -0,0 +1,640 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray; +import org.json.JSONObject; +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.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils; +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource +import org.onap.so.client.aai.entities.uri.AAIResourceUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.client.aai.AAIObjectType +import org.onap.so.client.aai.AAIResourcesClient + +import groovy.json.* + + + +/** + * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * @param - failNotFound - TODO + * @param - serviceInputParams - TODO + * + * Outputs: + * @param - WorkflowException + * + * Rollback - Deferred + */ +public class DoCustomDeleteE2EServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCustomDeleteE2EServiceInstance.class); + + + String Prefix="DDELSI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + msoLogger.trace("preProcessRequest ") + String msg = "" + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix",Prefix) + + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + if (globalSubscriberId == null) + { + execution.setVariable("globalSubscriberId", "") + } + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + execution.setVariable("serviceType", "") + } + + //Generated in parent for AAI PUT + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String sdncCallbackUrl = UrnPropertiesReader.getVariable('mso.workflow.sdncadapter.callback',execution) + if (isBlank(sdncCallbackUrl)) { + msg = "URN_mso_workflow_sdncadapter_callback is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl) + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + + public void preProcessVFCDelete (DelegateExecution execution) { + } + + public void postProcessVFCDelete(DelegateExecution execution, String response, String method) { + } + + public void preProcessSDNCDelete (DelegateExecution execution) { + msoLogger.trace("preProcessSDNCDelete ") + String msg = "" + + try { + def serviceInstanceId = execution.getVariable("serviceInstanceId") + def serviceInstanceName = execution.getVariable("serviceInstanceName") + def callbackURL = execution.getVariable("sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def serviceId = execution.getVariable("productFamilyId") + def subscriptionServiceType = execution.getVariable("subscriptionServiceType") + def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + + String serviceModelInfo = execution.getVariable("serviceModelInfo") + def modelInvariantUuid = "" + def modelVersion = "" + def modelUuid = "" + def modelName = "" + if (!isBlank(serviceModelInfo)) + { + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") + modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") + modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") + + if (modelInvariantUuid == null) { + modelInvariantUuid = "" + } + if (modelVersion == null) { + modelVersion = "" + } + if (modelUuid == null) { + modelUuid = "" + } + if (modelName == null) { + modelName = "" + } + } + if (serviceInstanceName == null) { + serviceInstanceName = "" + } + if (serviceId == null) { + serviceId = "" + } + + def siParamsXml = execution.getVariable("siParamsXml") + def serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + serviceType = "" + } + + def sdncRequestId = UUID.randomUUID().toString() + + String sdncDelete = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>delete</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${MsoUtils.xmlEscape(serviceType)}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + <request-action>DeleteServiceInstance</request-action> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <service-request-input> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + ${siParamsXml} + </service-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + sdncDelete = utils.formatXml(sdncDelete) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + execution.setVariable("sdncDelete", sdncDelete) + execution.setVariable("sdncDeactivate", sdncDeactivate) + msoLogger.info("sdncDeactivate:\n" + sdncDeactivate) + msoLogger.info("sdncDelete:\n" + sdncDelete) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage()) + } + msoLogger.info(" *****Exit preProcessSDNCDelete *****") + } + + public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) { + + msoLogger.trace("postProcessSDNC " + method + " ") + String msg = "" + + /*try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.info("SDNCResponse: " + response) + msoLogger.info("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == "true"){ + msoLogger.info("Good response from SDNC Adapter for service-instance " + method + "response:\n" + response) + + }else{ + msg = "Bad Response from SDNC Adapter for service-instance " + method + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg) + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in postProcessSDNC " + method + " Exception:" + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + }*/ + msoLogger.trace("Exit postProcessSDNC " + method + " ") + } + + public void postProcessAAIGET(DelegateExecution execution) { + msoLogger.trace("postProcessAAIGET ") + String msg = "" + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" + + if(foundInAAI){ + msoLogger.info("Found Service-instance in AAI") + + String siData = execution.getVariable("GENGS_service") + msoLogger.info("SI Data") + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else + { + msoLogger.info("SI Data" + siData) + //Confirm there are no related service instances (vnf/network or volume) + if (utils.nodeExists(siData, "relationship-list")) { + msoLogger.info("SI Data relationship-list exists:") + InputSource source = new InputSource(new StringReader(siData)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document serviceXml = docBuilder.parse(source) + serviceXml.getDocumentElement().normalize() + //test(siData) + NodeList nodeList = serviceXml.getElementsByTagName("relationship") + JSONArray jArray = new JSONArray() + for (int x = 0; x < nodeList.getLength(); x++) { + Node node = nodeList.item(x) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) node + def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() //for ns + if(e.equals("service-instance")){ + def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent() + msoLogger.info("ServiceInstance Related NS :" + relatedObject) + NodeList dataList = node.getChildNodes() + if(null != dataList) { + JSONObject jObj = new JSONObject() + for (int i = 0; i < dataList.getLength(); i++) { + Node dNode = dataList.item(i) + if(dNode.getNodeName() == "relationship-data") { + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent() + if(eKey.equals("service-instance.service-instance-id")){ + jObj.put("resourceInstanceId", eValue) + } + } + else if(dNode.getNodeName() == "related-to-property"){ + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent() + if(eKey.equals("service-instance.service-instance-name")){ + jObj.put("resourceType", eValue) + } + } + } + msoLogger.info("Relationship related to Resource:" + jObj.toString()) + jArray.put(jObj) + } + //for overlay/underlay + }else if (e.equals("configuration")){ + def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent() + msoLogger.info("ServiceInstance Related Configuration :" + relatedObject) + NodeList dataList = node.getChildNodes() + if(null != dataList) { + JSONObject jObj = new JSONObject() + for (int i = 0; i < dataList.getLength(); i++) { + Node dNode = dataList.item(i) + if(dNode.getNodeName() == "relationship-data") { + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent() + if(eKey.equals("configuration.configuration-id")){ + jObj.put("resourceInstanceId", eValue) + } + } + else if(dNode.getNodeName() == "related-to-property"){ + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent() + if(eKey.equals("configuration.configuration-type")){ + jObj.put("resourceType", eValue) + } + } + } + msoLogger.info("Relationship related to Resource:" + jObj.toString()) + jArray.put(jObj) + } + } + } + } + execution.setVariable("serviceRelationShip", jArray.toString()) + } + } + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + msoLogger.info("Service-instance NOT found in AAI. Silent Success") + } + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + /** + * Deletes the service instance in aai + */ + public void deleteServiceInstance(DelegateExecution execution) { + msoLogger.trace("Entered deleteServiceInstance") + try { + String globalCustId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("serviceType") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + AAIResourcesClient resourceClient = new AAIResourcesClient(); + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + resourceClient.delete(serviceInstanceUri) + + msoLogger.trace("Exited deleteServiceInstance") + }catch(Exception e){ + msoLogger.debug("Error occured within deleteServiceInstance method: " + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Error occured during deleteServiceInstance from aai") + } + } + + public void preInitResourcesOperStatus(DelegateExecution execution){ + msoLogger.trace("STARTED preInitResourcesOperStatus Process ") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String resourceTemplateUUIDs = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + // we use resource instance ids for delete flow as resourceTemplateUUIDs + /*[ + { + "resourceInstanceId":"1111", + "resourceType":"vIMS" + }, + { + "resourceInstanceId":"222", + "resourceType":"vEPC" + }, + { + "resourceInstanceId":"3333", + "resourceType":"overlay" + }, + { + "resourceInstanceId":"4444", + "resourceType":"underlay" + } + ]*/ + String serviceRelationShip = execution.getVariable("serviceRelationShip") + + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + + if (relationShipList != null) { + relationShipList.each { + resourceTemplateUUIDs = resourceTemplateUUIDs + it.resourceInstanceId + ":" + } + } + execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload) + msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ") + } + + /** + * prepare delete parameters + */ + public void preResourceDelete(execution, resourceName){ + // we use resource instance ids for delete flow as resourceTemplateUUIDs + /*[ + { + "resourceInstanceId":"1111", + "resourceType":"vIMS" + }, + { + "resourceInstanceId":"222", + "resourceType":"vEPC" + }, + { + "resourceInstanceId":"3333", + "resourceType":"overlay" + }, + { + "resourceInstanceId":"4444", + "resourceType":"underlay" + } + ]*/ + msoLogger.trace("STARTED preResourceDelete Process ") + String serviceRelationShip = execution.getVariable("serviceRelationShip") + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + + if (relationShipList != null) { + relationShipList.each { + if(StringUtils.containsIgnoreCase(it.resourceType, resourceName)) { + String resourceInstanceUUID = it.resourceInstanceId + String resourceTemplateUUID = it.resourceInstanceId + execution.setVariable("resourceTemplateId", resourceTemplateUUID) + execution.setVariable("resourceInstanceId", resourceInstanceUUID) + execution.setVariable("resourceType", resourceName) + msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + " resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName) + } + } + } + msoLogger.trace("END preResourceDelete Process ") + } + + public void sequenceResource(execution){ + msoLogger.trace("STARTED sequenceResource Process ") + List<String> nsResources = new ArrayList<String>() + List<String> wanResources = new ArrayList<String>() + List<String> resourceSequence = new ArrayList<String>() + + String serviceRelationShip = execution.getVariable("serviceRelationShip") + + + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + + if (relationShipList != null) { + relationShipList.each { + if(StringUtils.containsIgnoreCase(it.resourceType, "overlay") || StringUtils.containsIgnoreCase(it.resourceType, "underlay")){ + wanResources.add(it.resourceType) + }else{ + nsResources.add(it.resourceType) + } + } + } + resourceSequence.addAll(wanResources) + resourceSequence.addAll(nsResources) + String isContainsWanResource = wanResources.isEmpty() ? "false" : "true" + execution.setVariable("isContainsWanResource", isContainsWanResource) + execution.setVariable("currentResourceIndex", 0) + execution.setVariable("resourceSequence", resourceSequence) + msoLogger.info("resourceSequence: " + resourceSequence) + execution.setVariable("wanResources", wanResources) + msoLogger.trace("END sequenceResource Process ") + } + + public void getCurrentResource(execution){ + msoLogger.trace("Start getCurrentResoure Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + List<String> resourceSequence = execution.getVariable("resourceSequence") + List<String> wanResources = execution.getVariable("wanResources") + String resourceName = resourceSequence.get(currentIndex) + execution.setVariable("resourceType",resourceName) + if(wanResources.contains(resourceName)){ + execution.setVariable("controllerInfo", "SDN-C") + }else{ + execution.setVariable("controllerInfo", "VF-C") + } + msoLogger.trace("COMPLETED getCurrentResoure Process ") + } + + public void parseNextResource(execution){ + msoLogger.trace("Start parseNextResource Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + def nextIndex = currentIndex + 1 + execution.setVariable("currentResourceIndex", nextIndex) + List<String> resourceSequence = execution.getVariable("resourceSequence") + if(nextIndex >= resourceSequence.size()){ + execution.setVariable("allResourceFinished", "true") + }else{ + execution.setVariable("allResourceFinished", "false") + } + msoLogger.trace("COMPLETED parseNextResource Process ") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy new file mode 100644 index 0000000000..20a7f43de7 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy @@ -0,0 +1,1132 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray; +import org.json.JSONObject; +import org.onap.so.bpmn.common.scripts.AaiUtil +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.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse; +import org.springframework.web.util.UriUtils; + +import groovy.json.* + + + +/** + * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * @param - failNotFound - TODO + * @param - serviceInputParams - TODO + * + * Outputs: + * @param - WorkflowException + * + * Rollback - Deferred + */ +public class DoCustomDeleteE2EServiceInstanceV2 extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCustomDeleteE2EServiceInstanceV2.class); + + + String Prefix="DDELSI_" + private static final String DebugFlag = "isDebugEnabled" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.buildAPPCRequest(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + msoLogger.trace("preProcessRequest ") + String msg = "" + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix",Prefix) + + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + if (globalSubscriberId == null) + { + execution.setVariable("globalSubscriberId", "") + } + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + execution.setVariable("serviceType", "") + } + + //Generated in parent for AAI PUT + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback') + if (isBlank(sdncCallbackUrl)) { + msg = "URN_mso_workflow_sdncadapter_callback is null" + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl) + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + execution.setVariable("operationStatus", "Waiting delete resource...") + execution.setVariable("progress", "0") + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.info("Exited " + method) + } + + + + public void postProcessAAIGET(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessAAIGET(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + String msg = "" + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + msoLogger.info("serviceInstanceId: "+serviceInstanceId) + + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + msoLogger.info("foundInAAI: "+foundInAAI) + + String serviceType = "" + + + if(foundInAAI){ + msoLogger.info("Found Service-instance in AAI") + + String siData = execution.getVariable("GENGS_service") + msoLogger.info("SI Data") + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + msoLogger.info("Service-instance NOT found in AAI. Silent Success") + } + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Bpmn error encountered in " + method + "--" + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.info("Exited " + method) + } + + private void loadResourcesProperties(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.loadResourcesProperties(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugEnabled") + msoLogger.info("Entered " + method) + String loadFilePath = "/etc/mso/config.d/reources.json" + try{ + def jsonPayload = new File(loadFilePath).text + msoLogger.info("jsonPayload: " + jsonPayload) + + String resourcesProperties = jsonUtil.prettyJson(jsonPayload.toString()) + msoLogger.info("resourcesProperties: " + resourcesProperties) + + String createResourceSort = jsonUtil.getJsonValue(resourcesProperties, "CreateResourceSort") + msoLogger.info("createResourceSort: " + createResourceSort) + execution.setVariable("createResourceSort", createResourceSort) + + String deleteResourceSort = jsonUtil.getJsonValue(resourcesProperties, "DeleteResourceSort") + msoLogger.info("deleteResourceSort: " + deleteResourceSort) + execution.setVariable("deleteResourceSort", deleteResourceSort) + + + String resourceControllerType = jsonUtil.getJsonValue(resourcesProperties, "ResourceControllerType") + msoLogger.info("resourceControllerType: " + resourceControllerType) + execution.setVariable("resourceControllerType", resourceControllerType) + + + }catch(Exception ex){ + // try error in method block + String exceptionMessage = "Bpmn error encountered in " + method + " - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + } + private void sortDeleteResource(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sortDeleteResource(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugEnabled") + msoLogger.info("Entered " + method) + String deleteResourceSortDef = """[ + { + "resourceType":"GRE_SAR" + }, + { + "resourceType":"VPN_SAR" + }, + { + "resourceType":"APN_AAR" + }, + { + "resourceType":"GRE_AAR" + }, + { + "resourceType":"Overlay" + }, + { + "resourceType":"Underlay" + }, + { + "resourceType":"vIMS" + }, + { + "resourceType":"vCPE" + }, + { + "resourceType":"vFW" + }, + { + "resourceType":"vEPC" + } + + + ]""".trim() + + try{ + loadResourcesProperties(execution) + String deleteResourceSort = execution.getVariable("deleteResourceSort") + if (isBlank(deleteResourceSort)) { + deleteResourceSort = deleteResourceSortDef; + } + + List<String> sortResourceList = jsonUtil.StringArrayToList(execution, deleteResourceSort) + msoLogger.info("sortResourceList : " + sortResourceList) + + JSONArray newResourceList = new JSONArray() + int resSortCount = sortResourceList.size() + + for ( int currentResource = 0 ; currentResource < resSortCount ; currentResource++ ) { + String currentSortResource = sortResourceList[currentResource] + String sortResourceType = jsonUtil.getJsonValue(currentSortResource, "resourceType") + List<String> resourceList = execution.getVariable(Prefix+"resourceList") + + for (String resource : resourceList) { + msoLogger.info("resource : " + resource) + String resourceType = jsonUtil.getJsonValue(resource, "resourceType") + + if (StringUtils.containsIgnoreCase(resourceType, sortResourceType)) { + JSONObject jsonObj = new JSONObject(resource) + newResourceList.put(jsonObj) + } + msoLogger.info("Get next sort type " ) + } + } + + String newResourceStr = newResourceList.toString() + List<String> newResourceListStr = jsonUtil.StringArrayToList(execution, newResourceStr) + + execution.setVariable(Prefix+"resourceList", newResourceListStr) + msoLogger.info("newResourceList : " + newResourceListStr) + + }catch(Exception ex){ + // try error in method block + String exceptionMessage = "Bpmn error encountered in " + method + " - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + + } + public void prepareServiceDeleteResource(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepareServiceDeleteResource(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + try { + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // confirm if ServiceInstance was found + if ( !execution.getVariable("GENGS_FoundIndicator") ) + { + String exceptionMessage = "Bpmn error encountered in DeleteMobileAPNCustService flow. Service Instance was not found in AAI by id: " + serviceInstanceId + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + execution.setVariable(Prefix+"resourceList", "") + execution.setVariable(Prefix+"resourceCount", 0) + execution.setVariable(Prefix+"nextResource", 0) + execution.setVariable(Prefix+"resourceFinish", true) + + // get SI extracted by GenericGetService + String serviceInstanceAaiRecord = execution.getVariable("GENGS_service"); + msoLogger.info("serviceInstanceAaiRecord: " +serviceInstanceAaiRecord) + + String aaiJsonRecord = jsonUtil.xml2json(serviceInstanceAaiRecord) + + msoLogger.info("aaiJsonRecord: " +aaiJsonRecord) + def serviceInstanceName = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.service-instance-name") + execution.setVariable("serviceInstanceName",serviceInstanceName) + + def serviceType = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.service-type") + execution.setVariable("serviceType",serviceType) + + + String relationshipList = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.relationship-list") + msoLogger.info("relationship-list:" + relationshipList) + if (! isBlank(relationshipList)){ + msoLogger.info("relationship-list exists" ) + String relationShip = jsonUtil.getJsonValue(relationshipList, "relationship") + msoLogger.info("relationship: " + relationShip) + JSONArray allResources = new JSONArray() + JSONArray serviceResources = new JSONArray() + JSONArray networkResources = new JSONArray() + JSONArray allottedResources = new JSONArray() + + + if (! isBlank(relationShip)){ + JSONArray jsonArray = new JSONArray(); + if (relationShip.startsWith("{") && relationShip.endsWith("}")) { + JSONObject jsonObject = new JSONObject(relationShip); + jsonArray.put(jsonObject); + } else if (relationShip.startsWith("[") && relationShip.endsWith("]")) { + jsonArray = new JSONArray(relationShip); + } else { + msoLogger.info("The relationShip fomart is error" ) + } + + List<String> relationList = jsonUtil.StringArrayToList(execution, jsonArray.toString()) + + msoLogger.info("relationList: " + relationList) + + int relationNum =relationList.size() + msoLogger.info("**************relationList size: " + relationNum) + + for ( int currentRelation = 0 ; currentRelation < relationNum ; currentRelation++ ) { + msoLogger.info("current Relation num: " + currentRelation) + String relation = relationList[currentRelation] + msoLogger.info("relation: " + relation) + + String relatedTo = jsonUtil.getJsonValue(relation, "related-to") + msoLogger.info("relatedTo: " + relatedTo) + + String relatedLink = jsonUtil.getJsonValue(relation, "related-link") + msoLogger.info("relatedLink: " + relatedLink) + + if (StringUtils.equalsIgnoreCase(relatedTo, "allotted-resource")) { + msoLogger.info("allotted-resource exists ") + + String aaiArRsp = getAaiAr(execution, relatedLink) + msoLogger.info("aaiArRsp: " + aaiArRsp) + if (! isBlank(aaiArRsp)) { + def type = utils.getNodeText(aaiArRsp, "type") + def id = utils.getNodeText(aaiArRsp, "id") + def role = utils.getNodeText(aaiArRsp, "role") + def resourceVersion = utils.getNodeText(aaiArRsp, "resource-version") + + JSONObject jObject = new JSONObject() + jObject.put("resourceType", type) + jObject.put("resourceInstanceId", id) + jObject.put("resourceRole", role) + jObject.put("resourceVersion", resourceVersion) + + allResources.put(jObject) + msoLogger.info("allResources: " + allResources) + allottedResources.put(jObject) + msoLogger.info("allottedResources: " + allottedResources) + } + } + else if (StringUtils.equalsIgnoreCase(relatedTo, "service-instance")){ + msoLogger.info("service-instance exists ") + JSONObject jObject = new JSONObject() + + //relationship-data + String rsDataStr = jsonUtil.getJsonValue(relation, "relationship-data") + msoLogger.info("rsDataStr: " + rsDataStr) + List<String> rsDataList = jsonUtil.StringArrayToList(execution, rsDataStr) + msoLogger.info("rsDataList: " + rsDataList) + for(String rsData : rsDataList){ + msoLogger.info("rsData: " + rsData) + def eKey = jsonUtil.getJsonValue(rsData, "relationship-key") + def eValue = jsonUtil.getJsonValue(rsData, "relationship-value") + if(eKey.equals("service-instance.service-instance-id")){ + jObject.put("resourceInstanceId", eValue) + } + if(eKey.equals("service-subscription.service-type")){ + jObject.put("resourceType", eValue) + } + } + + //related-to-property + String rPropertyStr = jsonUtil.getJsonValue(relation, "related-to-property") + msoLogger.info("related-to-property: " + rPropertyStr) + if (rPropertyStr instanceof JSONArray){ + List<String> rPropertyList = jsonUtil.StringArrayToList(execution, rPropertyStr) + for (String rProperty : rPropertyList) { + msoLogger.info("rProperty: " + rProperty) + def eKey = jsonUtil.getJsonValue(rProperty, "property-key") + def eValue = jsonUtil.getJsonValue(rProperty, "property-value") + if(eKey.equals("service-instance.service-instance-name")){ + jObject.put("resourceName", eValue) + } + } + } + else { + String rProperty = rPropertyStr + msoLogger.info("rProperty: " + rProperty) + def eKey = jsonUtil.getJsonValue(rProperty, "property-key") + def eValue = jsonUtil.getJsonValue(rProperty, "property-value") + if (eKey.equals("service-instance.service-instance-name")) { + jObject.put("resourceName", eValue) + } + } + + allResources.put(jObject) + msoLogger.info("allResources: " + allResources) + + serviceResources.put(jObject) + msoLogger.info("serviceResources: " + serviceResources) + } + else if (StringUtils.equalsIgnoreCase(relatedTo, "configuration")) { + msoLogger.info("configuration ") + JSONObject jObject = new JSONObject() + + //relationship-data + String rsDataStr = jsonUtil.getJsonValue(relation, "relationship-data") + msoLogger.info("rsDataStr: " + rsDataStr) + List<String> rsDataList = jsonUtil.StringArrayToList(execution, rsDataStr) + msoLogger.info("rsDataList: " + rsDataList) + for (String rsData : rsDataList) { + msoLogger.info("rsData: " + rsData) + def eKey = jsonUtil.getJsonValue(rsData, "relationship-key") + def eValue = jsonUtil.getJsonValue(rsData, "relationship-value") + if(eKey.equals("configuration.configuration-id")){ + jObject.put("resourceInstanceId", eValue) + } + } + + + //related-to-property + String rPropertyStr = jsonUtil.getJsonValue(relation, "related-to-property") + msoLogger.info("related-to-property: " + rPropertyStr) + if (rPropertyStr instanceof JSONArray){ + List<String> rPropertyList = jsonUtil.StringArrayToList(execution, rPropertyStr) + for(String rProperty : rPropertyList){ + msoLogger.info("rProperty: " + rProperty) + def eKey = jsonUtil.getJsonValue(rProperty, "property-key") + def eValue = jsonUtil.getJsonValue(rProperty, "property-value") + if(eKey.equals("configuration.configuration-type")){ + jObject.put("resourceType", eValue) + } + } + } + else { + String rProperty = rPropertyStr + msoLogger.info("rProperty: " + rProperty) + def eKey = jsonUtil.getJsonValue(rProperty, "property-key") + def eValue = jsonUtil.getJsonValue(rProperty, "property-value") + if(eKey.equals("configuration.configuration-type")){ + jObject.put("resourceType", eValue) + } + } + allResources.put(jObject) + msoLogger.info("allResources: " + allResources) + + networkResources.put(jObject) + msoLogger.info("networkResources: " + networkResources) + } + msoLogger.info("Get Next releation resource " ) + + } + msoLogger.info("Get releation finished. " ) + } + + execution.setVariable("serviceRelationShip", allResources.toString()) + msoLogger.info("allResources: " + allResources.toString()) + String serviceRelationShip = execution.getVariable("serviceRelationShip") + msoLogger.info("serviceRelationShip: " + serviceRelationShip) + if ((! isBlank(serviceRelationShip)) && (! serviceRelationShip.isEmpty())) { + + List<String> relationShipList = jsonUtil.StringArrayToList(execution, serviceRelationShip) + msoLogger.info("relationShipList: " + relationShipList) + execution.setVariable(Prefix+"resourceList", relationShipList) + + int resourceCount = relationShipList.size() + msoLogger.info("resourceCount: " + resourceCount) + execution.setVariable(Prefix+"resourceCount",resourceCount ) + + int resourceNum = 0 + execution.setVariable(Prefix+"nextResource", resourceNum) + msoLogger.info("start sort delete resource: ") + sortDeleteResource(execution) + + + if (resourceNum < resourceCount) { + execution.setVariable(Prefix+"resourceFinish", false) + } + else { + execution.setVariable(Prefix+"resourceFinish", true) + } + msoLogger.info("Resource list set end : " + resourceCount) + } + + execution.setVariable("serviceResources", serviceResources.toString()) + msoLogger.info("serviceResources: " + serviceResources) + String serviceResourcesShip = execution.getVariable("serviceResources") + msoLogger.info("serviceResourcesShip: " + serviceResourcesShip) + + if ((! isBlank(serviceResourcesShip)) && (! serviceResourcesShip.isEmpty())) { + List<String> serviceResourcesList = jsonUtil.StringArrayToList(execution, serviceResourcesShip) + msoLogger.info("serviceResourcesList: " + serviceResourcesList) + execution.setVariable(Prefix+"serviceResourceList", serviceResourcesList) + execution.setVariable(Prefix+"serviceResourceCount", serviceResourcesList.size()) + execution.setVariable(Prefix+"nextServiceResource", 0) + msoLogger.info("Service Resource list set end : " + serviceResourcesList.size()) + + } + + execution.setVariable("allottedResources", allottedResources.toString()) + msoLogger.info("allottedResources: " + allottedResources) + String allottedResourcesShip = execution.getVariable("allottedResources") + msoLogger.info("allottedResourcesShip: " + allottedResourcesShip) + if ((! isBlank(allottedResourcesShip)) && (! allottedResourcesShip.isEmpty())) { + List<String> allottedResourcesList = jsonUtil.StringArrayToList(execution, allottedResourcesShip) + msoLogger.info("allottedResourcesList: " + allottedResourcesList) + execution.setVariable(Prefix+"allottedResourcesList", allottedResourcesList) + execution.setVariable(Prefix+"allottedResourcesListCount", allottedResourcesList.size()) + execution.setVariable(Prefix+"nextAllottedResourcesList", 0) + msoLogger.info("Allotted Resource list set end : " + allottedResourcesList.size()) + + } + execution.setVariable("networkResources", networkResources.toString()) + msoLogger.info("networkResources: " + networkResources) + String networkResourcesShip = execution.getVariable("networkResources") + msoLogger.info("networkResourcesShip: " + networkResourcesShip) + if ((! isBlank(networkResourcesShip)) && (! networkResourcesShip.isEmpty())) { + List<String> networkResourcesList = jsonUtil.StringArrayToList(execution, networkResourcesShip) + msoLogger.info("networkResourcesList: " + networkResourcesList) + execution.setVariable(Prefix+"networkResourcesList", networkResourcesList) + execution.setVariable(Prefix+"networkResourcesListCount", networkResourcesList.size()) + execution.setVariable(Prefix+"nextNetworkResourcesList", 0) + msoLogger.info("Network Resource list set end : " + networkResourcesList.size()) + + } + } + } catch (BpmnError e){ + throw e; + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DeleteMobileAPNCustService flow. prepareServiceDeleteResource() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + } + + private String getAaiAr(DelegateExecution execution, String relink) { + def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = execution.getVariable("URN_aai_endpoint") + relink + + msoLogger.debug("get AR info " + aaiEndpoint) + APIResponse response = aaiUtil.executeAAIGetCall(execution, aaiEndpoint) + + int responseCode = response.getStatusCode() + msoLogger.debug("get AR info responseCode:" + responseCode) + + String aaiResponse = response.getResponseBodyAsString() + msoLogger.debug("get AR info " + aaiResponse) + + if(responseCode < 200 || responseCode >= 300 || isBlank(aaiResponse)) { + return null + } + + msoLogger.info("Exited " + method) + return aaiResponse + } + /** + * prepare Decompose next resource to create request + */ + public void preProcessDecomposeNextResource(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + msoLogger.trace("STARTED preProcessDecomposeNextResource Process ") + try{ + int resourceNum = execution.getVariable(Prefix+"nextServiceResource") + List<String> serviceResourceList = execution.getVariable(Prefix+"serviceResourceList") + msoLogger.info("Service Resource List : " + serviceResourceList) + + String serviceResource = serviceResourceList[resourceNum] + execution.setVariable(Prefix+"serviceResource", serviceResource) + msoLogger.info("Current Service Resource : " + serviceResource) + + String resourceType = jsonUtil.getJsonValue(serviceResource, "resourceType") + execution.setVariable("resourceType", resourceType) + msoLogger.info("resourceType : " + resourceType) + + String resourceInstanceId = jsonUtil.getJsonValue(serviceResource, "resourceInstanceId") + execution.setVariable("resourceInstanceId", resourceInstanceId) + msoLogger.info("resourceInstanceId : " + resourceInstanceId) + + String resourceRole = jsonUtil.getJsonValue(serviceResource, "resourceRole") + execution.setVariable("resourceRole", resourceRole) + msoLogger.info("resourceRole : " + resourceRole) + + String resourceVersion = jsonUtil.getJsonValue(serviceResource, "resourceVersion") + execution.setVariable("resourceVersion", resourceVersion) + msoLogger.info("resourceVersion : " + resourceVersion) + + String resourceName = jsonUtil.getJsonValue(serviceResource, "resourceName") + if (isBlank(resourceName)){ + resourceName = resourceInstanceId + } + execution.setVariable(Prefix+"resourceName", resourceName) + msoLogger.info("resource Name : " + resourceName) + + + execution.setVariable(Prefix+"nextServiceResource", resourceNum + 1) + + int serviceResourceCount = execution.getVariable(Prefix+"serviceResourceCount") + if (serviceResourceCount >0 ){ + int progress = (resourceNum*100) / serviceResourceCount + execution.setVariable("progress", progress.toString() ) + } + execution.setVariable("operationStatus", resourceName ) + + }catch(Exception e){ + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateMobileAPNCustService flow. Unexpected Error from method preProcessDecomposeNextResource() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + } + /** + * post Decompose next resource to create request + */ + public void postProcessDecomposeNextResource(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.postProcessDecomposeNextResource(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + msoLogger.trace("STARTED postProcessDecomposeNextResource Process ") + try{ + String resourceName = execution.getVariable(Prefix+"resourceName") + int resourceNum = execution.getVariable(Prefix+"nextServiceResource") + msoLogger.debug("Current Resource count:"+ execution.getVariable(Prefix+"nextServiceResource")) + + int resourceCount = execution.getVariable(Prefix+"serviceResourceCount") + msoLogger.debug("Total Resource count:"+ execution.getVariable(Prefix+"serviceResourceCount")) + + if (resourceNum < resourceCount) { + execution.setVariable(Prefix+"resourceFinish", false) + } + else { + execution.setVariable(Prefix+"resourceFinish", true) + } + + msoLogger.debug("Resource Finished:"+ execution.getVariable(Prefix+"resourceFinish")) + + if (resourceCount >0 ){ + int progress = (resourceNum*100) / resourceCount + + execution.setVariable("progress", progress.toString() ) + msoLogger.trace(":"+ execution.getVariable("")) + } + execution.setVariable("operationStatus", resourceName ) + + + }catch(Exception e){ + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateMobileAPNCustService flow. Unexpected Error from method postProcessDecomposeNextResource() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + } + /** + * prepare post Unkown Resource Type + */ + public void postOtherControllerType(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.postOtherControllerType(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugEnabled") + msoLogger.info("Entered " + method) + + try{ + + String resourceName = execution.getVariable(Prefix+"resourceName") + String resourceType = execution.getVariable(Prefix+"resourceType") + String controllerType = execution.getVariable("controllerType") + + String msg = "Resource name: "+ resourceName + " resource Type: " + resourceType+ " controller Type: " + controllerType + " can not be processed n the workflow" + msoLogger.debug(msg) + + }catch(Exception e){ + // try error in method block + String exceptionMessage = "Bpmn error encountered in DoCreateMobileAPNServiceInstance flow. Unexpected Error from method postOtherControllerType() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + msoLogger.info("Exited " + method) + } + + /** + * prepare delete parameters + */ + public void preSDNCResourceDelete(execution, resourceName){ + // we use resource instance ids for delete flow as resourceTemplateUUIDs + + def method = getClass().getSimpleName() + '.preSDNCResourceDelete(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + msoLogger.trace("STARTED preSDNCResourceDelete Process ") + String networkResources = execution.getVariable("networkResources") + + + execution.setVariable("foundResource", false) + if (networkResources != null) { + def jsonSlurper = new JsonSlurper() + List relationShipList = jsonSlurper.parseText(networkResources) + relationShipList.each { + if(StringUtils.containsIgnoreCase(it.resourceType, resourceName)) { + String resourceInstanceUUID = it.resourceInstanceId + String resourceTemplateUUID = it.resourceInstanceId + execution.setVariable("resourceTemplateId", resourceTemplateUUID) + execution.setVariable("resourceInstanceId", resourceInstanceUUID) + execution.setVariable("resourceType", resourceName) + execution.setVariable("foundResource", true) + msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + " resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName) + } + } + } + msoLogger.info("Exited " + method) + } + public void preProcessSDNCDelete (DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCDelete(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + msoLogger.trace("preProcessSDNCDelete ") + String msg = "" + + try { + def serviceInstanceId = execution.getVariable("serviceInstanceId") + def serviceInstanceName = execution.getVariable("serviceInstanceName") + def callbackURL = execution.getVariable("sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def serviceId = execution.getVariable("productFamilyId") + def subscriptionServiceType = execution.getVariable("subscriptionServiceType") + def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + + String serviceModelInfo = execution.getVariable("serviceModelInfo") + def modelInvariantUuid = "" + def modelVersion = "" + def modelUuid = "" + def modelName = "" + if (!isBlank(serviceModelInfo)) + { + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") + modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") + modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") + + if (modelInvariantUuid == null) { + modelInvariantUuid = "" + } + if (modelVersion == null) { + modelVersion = "" + } + if (modelUuid == null) { + modelUuid = "" + } + if (modelName == null) { + modelName = "" + } + } + if (serviceInstanceName == null) { + serviceInstanceName = "" + } + if (serviceId == null) { + serviceId = "" + } + + def siParamsXml = execution.getVariable("siParamsXml") + def serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + serviceType = "" + } + + def sdncRequestId = UUID.randomUUID().toString() + + String sdncDelete = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>delete</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${MsoUtils.xmlEscape(serviceType)}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + <request-action>DeleteServiceInstance</request-action> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <service-request-input> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + ${siParamsXml} + </service-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + sdncDelete = utils.formatXml(sdncDelete) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + execution.setVariable("sdncDelete", sdncDelete) + execution.setVariable("sdncDeactivate", sdncDeactivate) + msoLogger.info("sdncDeactivate:\n" + sdncDeactivate) + msoLogger.info("sdncDelete:\n" + sdncDelete) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage()) + } + msoLogger.info("Exited " + method) + } + + public void postProcessSDNCDelete(DelegateExecution execution, String response, String action) { + + def method = getClass().getSimpleName() + '.postProcessSDNCDelete(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + msoLogger.trace("postProcessSDNC " + action + " ") + String msg = "" + + /*try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.info("SDNCResponse: " + response) + msoLogger.info("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == "true"){ + msoLogger.info("Good response from SDNC Adapter for service-instance " + action + "response:\n" + response) + + }else{ + msg = "Bad Response from SDNC Adapter for service-instance " + action + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg) + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in postProcessSDNC " + action + " Exception:" + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + }*/ + msoLogger.info("Exited " + method) + } + + /** + * Init the service Operation Status + */ + public void preUpdateServiceOperationStatus(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String serviceName = execution.getVariable("serviceInstanceName") + String operationType = "DELETE" + String userId = "" + String result = "processing" + String progress = execution.getVariable("progress") + msoLogger.info("progress: " + progress ) + if ("100".equalsIgnoreCase(progress)) + { + result = "finished" + } + String reason = "" + String operationContent = "Prepare service delete: " + execution.getVariable("operationStatus") + msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <serviceName>${MsoUtils.xmlEscape(serviceName)}</serviceName> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + msoLogger.info("Outgoing preUpdateServiceOperationStatus: \n" + payload) + + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preUpdateServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preUpdateServiceOperationStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preUpdateServiceOperationStatus Process ") + msoLogger.info("Exited " + method) + } + + public void preInitResourcesOperStatus(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.preInitResourcesOperStatus(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + msoLogger.trace("STARTED preInitResourcesOperStatus Process ") + String msg="" + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = "DELETE" + String resourceTemplateUUIDs = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service delete" + msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + String serviceRelationShip = execution.getVariable("serviceRelationShip") + msoLogger.info("serviceRelationShip: " + serviceRelationShip) + if (! isBlank(serviceRelationShip)) { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + + if (relationShipList != null) { + relationShipList.each { + resourceTemplateUUIDs = resourceTemplateUUIDs + it.resourceInstanceId + ":" + } + } + } + def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter" + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload) + msoLogger.debug("DoCustomDeleteE2EServiceInstanceV2 Outgoing initResourceOperationStatus Request: " + payload) + + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCustomDeleteE2EServiceInstanceV2.preInitResourcesOperStatus. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.info("Exited " + method) + } + + + + /** + * prepare delete parameters + */ + public void preProcessVFCResourceDelete(execution){ + // we use resource instance ids for delete flow as resourceTemplateUUIDs + + def method = getClass().getSimpleName() + '.preProcessVFCResourceDelete(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + msoLogger.trace("STARTED preProcessVFCResourceDelete Process ") + try{ + String serviceResource = execution.getVariable("serviceResource") + msoLogger.info("serviceResource : " + serviceResource) + + String resourceInstanceId = execution.getVariable("resourceInstanceId") + msoLogger.info("resourceInstanceId : " + resourceInstanceId) + + execution.setVariable("resourceTemplateId", resourceInstanceId) + msoLogger.info("resourceTemplateId : " + resourceInstanceId) + + String resourceType = execution.getVariable("resourceType") + msoLogger.info("resourceType : " + resourceType) + + + String resourceName = execution.getVariable(Prefix+"resourceName") + if (isBlank(resourceName)){ + resourceName = resourceInstanceId + } + execution.setVariable("resourceName", resourceName) + msoLogger.info("resource Name : " + resourceName) + + msoLogger.info("Delete Resource Info: resourceInstanceId :" + resourceInstanceId + " resourceTemplateId: " + resourceInstanceId + " resourceType: " + resourceType) + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.preProcessVFCResourceDelete. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.info("Exited " + method) + } + + public void postProcessVFCDelete(DelegateExecution execution, String response, String action) { + def method = getClass().getSimpleName() + '.postProcessVFCDelete(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + + msoLogger.trace("STARTED postProcessVFCDelete Process ") + try{ + + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessVFCDelete. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.info("Exited " + method) + } +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy new file mode 100644 index 0000000000..54dfae3760 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy @@ -0,0 +1,439 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray +import org.json.JSONObject; +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.core.WorkflowException +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.ServiceDecomposition; +import org.onap.so.bpmn.core.json.JsonUtils +import org.springframework.web.util.UriUtils; +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource + +import groovy.json.* + +/** + * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * @param - failNotFound - TODO + * @param - serviceInputParams - TODO + * + * @param - delResourceList + * @param - serviceRelationShip + * + * Outputs: + * @param - WorkflowException + * + * Rollback - Deferred + */ +public class DoDeleteE2EServiceInstance extends AbstractServiceTaskProcessor { + + String Prefix="DDEESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessRequest *****", isDebugEnabled) + String msg = "" + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix",Prefix) + + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + if (globalSubscriberId == null) + { + execution.setVariable("globalSubscriberId", "") + } + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + execution.setVariable("serviceType", "") + } + + //Generated in parent for AAI PUT + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback') + if (isBlank(sdncCallbackUrl)) { + msg = "URN_mso_workflow_sdncadapter_callback is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled) + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," ***** Exit preProcessRequest *****", isDebugEnabled) + } + + public void postProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled) + String msg = "" + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" + + if(foundInAAI){ + utils.log("INFO","Found Service-instance in AAI", isDebugEnabled) + + String siData = execution.getVariable("GENGS_service") + utils.log("INFO", "SI Data", isDebugEnabled) + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else + { + InputSource source = new InputSource(new StringReader(siData)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document serviceXml = docBuilder.parse(source) + serviceXml.getDocumentElement().normalize() + // get model invariant id + // Get Template uuid and version + if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) { + utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled) + def modelInvariantId = serviceXml.getElementsByTagName("model-invariant-id").item(0).getTextContent() + def modelVersionId = serviceXml.getElementsByTagName("model-version-id").item(0).getTextContent() + + // Set Original Template info + execution.setVariable("model-invariant-id-original", modelInvariantId) + execution.setVariable("model-version-id-original", modelVersionId) + } + + utils.log("INFO", "SI Data" + siData, isDebugEnabled) + //Confirm there are no related service instances (vnf/network or volume) + if (utils.nodeExists(siData, "relationship-list")) { + utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled) + //test(siData) + NodeList nodeList = serviceXml.getElementsByTagName("relationship") + JSONArray jArray = new JSONArray() + for (int x = 0; x < nodeList.getLength(); x++) { + Node node = nodeList.item(x) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) node + def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() //for ns + if(e.equals("service-instance")){ + def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent() + utils.log("INFO", "ServiceInstance Related NS :" + relatedObject, isDebugEnabled) + NodeList dataList = node.getChildNodes() + if(null != dataList) { + JSONObject jObj = new JSONObject() + for (int i = 0; i < dataList.getLength(); i++) { + Node dNode = dataList.item(i) + if(dNode.getNodeName() == "relationship-data") { + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent() + if(eKey.equals("service-instance.service-instance-id")){ + jObj.put("resourceInstanceId", eValue) + } + + } + else if(dNode.getNodeName() == "related-to-property"){ + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent() + if(eKey.equals("service-instance.service-instance-name")){ + jObj.put("resourceType", eValue) + } + } + } + utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled) + jArray.put(jObj) + } + //for overlay/underlay + }else if (e.equals("configuration")){ + def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent() + utils.log("INFO", "ServiceInstance Related Configuration :" + relatedObject, isDebugEnabled) + NodeList dataList = node.getChildNodes() + if(null != dataList) { + JSONObject jObj = new JSONObject() + for (int i = 0; i < dataList.getLength(); i++) { + Node dNode = dataList.item(i) + if(dNode.getNodeName() == "relationship-data") { + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent() + if(eKey.equals("configuration.configuration-id")){ + jObj.put("resourceInstanceId", eValue) + } + } + else if(dNode.getNodeName() == "related-to-property"){ + Element rDataEle = (Element)dNode + def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent() + def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent() + if(eKey.equals("configuration.configuration-type")){ + jObj.put("resourceType", eValue) + } + } + } + utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled) + jArray.put(jObj) + } + } + } + } + execution.setVariable("serviceRelationShip", jArray.toString()) + } + } + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled) + } + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled) + } + + public void getCurrentNS(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start getCurrentNS Process ======== ", isDebugEnabled) + + def currentIndex = execution.getVariable("currentNSIndex") + List<String> nsSequence = execution.getVariable("nsSequence") + String nsResourceType = nsSequence.get(currentIndex) + + // GET AAI by Name, not ID, for process convenient + execution.setVariable("GENGS_type", "service-instance") + execution.setVariable("GENGS_serviceInstanceId", "") + execution.setVariable("GENGS_serviceInstanceName", nsResourceType) + + utils.log("INFO", "======== COMPLETED getCurrentNS Process ======== ", isDebugEnabled) + } + + public void prepareDecomposeService(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + try { + utils.log("DEBUG", " ***** Inside prepareDecomposeService of create generic e2e service ***** ", isDebugEnabled) + String modelInvariantUuid = execution.getVariable("model-invariant-id-original") + String modelVersionId = execution.getVariable("model-version-id-original") + + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelVersionId}", + "modelVersion":"" + }""" + execution.setVariable("serviceModelInfo", serviceModelInfo) + + utils.log("DEBUG", " ***** Completed prepareDecomposeService of create generic e2e service ***** ", isDebugEnabled) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in create generic e2e service flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void postDecomposeService(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + + utils.log("DEBUG", " ***** Inside processDecomposition() of delete generic e2e service flow ***** ", isDebugEnabled) + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + // service model info + execution.setVariable("serviceModelInfo", serviceDecomposition.getModelInfo()) + + List<Resource> deleteResourceList = serviceDecomposition.getServiceResources() + String serviceRelationShip = execution.getVariable("serviceRelationShip") + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + List relationShipList = null + if (serviceRelationShip != null) { + relationShipList = jsonSlurper.parseText(serviceRelationShip) + } + + //Set the real resource instance id to the decomosed resource list + for (Resource resource: deleteResourceList) { + //reset the resource instance id , because in the decompose flow ,its a random one. + resource.setResourceId(""); + //match the resource-instance-name and the model name + if (relationShipList != null) { + relationShipList.each { + if (StringUtils.containsIgnoreCase(it.resourceType, resource.getModelInfo().getModelName())) { + resource.setResourceId(it.resourceInstanceId); + } + } + } + } + execution.setVariable("deleteResourceList", deleteResourceList) + utils.log("DEBUG", "delete resource list : " + deleteResourceList, isDebugEnabled) + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in create generic e2e service flow. processDecomposition() - " + ex.getMessage() + utils.log("DEBUG", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + utils.log("DEBUG", " ***** exit processDecomposition() of delete generic e2e service flow ***** ", isDebugEnabled) + } + + public void preInitResourcesOperStatus(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled) + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String resourceTemplateUUIDs = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + utils.log("INFO", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType, isDebugEnabled) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + List<Resource> deleteResourceList = execution.getVariable("deleteResourceList") + + String serviceRelationShip = execution.getVariable("serviceRelationShip") + for(Resource resource : deleteResourceList){ + resourceTemplateUUIDs = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":" + } + + + execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + utils.log("INFO", "Outgoing initResourceOperationStatus: \n" + payload, isDebugEnabled) + utils.logAudit("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing preInitResourcesOperStatus. Exception is:\n" + e, isDebugEnabled) + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage()) + } + utils.log("INFO", "======== COMPLETED preInitResourcesOperStatus Process ======== ", isDebugEnabled) + } + + /** + * post config request. + */ + public void postConfigRequest(execution){ + //to do + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy new file mode 100644 index 0000000000..3ee059cb02 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy @@ -0,0 +1,1077 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +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.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.springframework.web.util.UriUtils + +import groovy.json.* + +public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class); + + String Prefix= "DELNWKI_" + String groovyClassName = "DoDeleteNetworkInstance" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "networkRequest", "") + execution.setVariable(Prefix + "isSilentSuccess", false) + execution.setVariable(Prefix + "Success", false) + + execution.setVariable(Prefix + "requestId", "") + execution.setVariable(Prefix + "source", "") + execution.setVariable(Prefix + "lcpCloudRegion", "") + execution.setVariable(Prefix + "networkInputs", "") + execution.setVariable(Prefix + "tenantId", "") + + execution.setVariable(Prefix + "queryAAIRequest","") + execution.setVariable(Prefix + "queryAAIResponse", "") + execution.setVariable(Prefix + "aaiReturnCode", "") + execution.setVariable(Prefix + "isAAIGood", false) + execution.setVariable(Prefix + "isVfRelationshipExist", false) + + // AAI query Cloud Region + execution.setVariable(Prefix + "queryCloudRegionRequest","") + execution.setVariable(Prefix + "queryCloudRegionReturnCode","") + execution.setVariable(Prefix + "queryCloudRegionResponse","") + execution.setVariable(Prefix + "cloudRegionPo","") + execution.setVariable(Prefix + "cloudRegionSdnc","") + + execution.setVariable(Prefix + "deleteNetworkRequest", "") + execution.setVariable(Prefix + "deleteNetworkResponse", "") + execution.setVariable(Prefix + "networkReturnCode", "") + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + + execution.setVariable(Prefix + "deleteSDNCRequest", "") + execution.setVariable(Prefix + "deleteSDNCResponse", "") + execution.setVariable(Prefix + "sdncReturnCode", "") + execution.setVariable(Prefix + "sdncResponseSuccess", false) + + execution.setVariable(Prefix + "deactivateSDNCRequest", "") + execution.setVariable(Prefix + "deactivateSDNCResponse", "") + execution.setVariable(Prefix + "deactivateSdncReturnCode", "") + execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "") + + execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "") + execution.setVariable(Prefix + "isException", false) + + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ") + + // initialize flow variables + InitializeProcessVariables(execution) + + try { + // get incoming message/input + execution.setVariable("action", "DELETE") + String deleteNetwork = execution.getVariable("bpmnRequest") + if (deleteNetwork != null) { + if (deleteNetwork.contains("requestDetails")) { + // JSON format request is sent, create xml + try { + def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString()) + msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson) + deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork) + + } catch (Exception ex) { + String dataErrorMessage = " Invalid json format Request - " + ex.getMessage() + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } else { + // XML format request is sent + + } + } else { + // vIPR format request is sent, create xml from individual variables + deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution) + } + + deleteNetwork = utils.formatXml(deleteNetwork) + msoLogger.debug(deleteNetwork) + execution.setVariable(Prefix + "networkRequest", deleteNetwork) + msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork) + + // validate 'backout-on-failure' to override 'mso.rollback' + boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork) + execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled) + msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled) + + String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","") + execution.setVariable(Prefix + "networkInputs", networkInputs) + + // prepare messageId + String messageId = execution.getVariable("testMessageId") // for testing + if (messageId == null || messageId == "") { + messageId = UUID.randomUUID() + msoLogger.debug(Prefix + "messageId, random generated: " + messageId) + } else { + msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId) + } + execution.setVariable(Prefix + "messageId", messageId) + + String source = utils.getNodeText(deleteNetwork, "source") + execution.setVariable(Prefix + "source", source) + msoLogger.debug(Prefix + "source - " + source) + + String networkId = "" + if (utils.nodeExists(networkInputs, "network-id")) { + networkId = utils.getNodeText(networkInputs, "network-id") + if (networkId == null || networkId == "" || networkId == 'null' ) { + sendSyncError(execution) + // missing value of network-id + String dataErrorMessage = "network-request has missing 'network-id' element/value." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } + + // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I + def lcpCloudRegion = null + if (utils.nodeExists(networkInputs, "aic-cloud-region")) { + lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region") + if (lcpCloudRegion == 'null') { + lcpCloudRegion = null + } + } + execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion) + msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion) + + String tenantId = null + if (utils.nodeExists(networkInputs, "tenant-id")) { + tenantId = utils.getNodeText(networkInputs, "tenant-id") + if (tenantId == 'null') { + tenantId = null + } + + } + execution.setVariable(Prefix + "tenantId", tenantId) + msoLogger.debug("tenantId : " + tenantId) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution) + + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage ) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex){ + // caught exception + String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + public void callRESTQueryAAI (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " ) + + // get variables + String networkInputs = execution.getVariable(Prefix + "networkInputs") + String networkId = utils.getNodeText(networkInputs, "network-id") + networkId = UriUtils.encode(networkId,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String queryAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + msoLogger.debug(queryAAIRequest) + execution.setVariable(Prefix + "queryAAIRequest", queryAAIRequest) + msoLogger.debug(Prefix + "AAIRequest - " + "\n" + queryAAIRequest) + + RESTConfig config = new RESTConfig(queryAAIRequest); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + Boolean isVfRelationshipExist = false + try { + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiReturnCode", returnCode) + + msoLogger.debug(" ***** AAI Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + execution.setVariable(Prefix + "queryAAIResponse", aaiResponseAsString) + + if (returnCode=='200' || returnCode=='204') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "isAAIGood", true) + msoLogger.debug(" AAI Query Success REST Response - " + "\n" + aaiResponseAsString) + // verify if vf or vnf relationship exist + if (utils.nodeExists(aaiResponseAsString, "relationship")) { + NetworkUtils networkUtils = new NetworkUtils() + isVfRelationshipExist = networkUtils.isVfRelationshipExist(aaiResponseAsString) + execution.setVariable(Prefix + "isVfRelationshipExist", isVfRelationshipExist) + if (isVfRelationshipExist == true) { + String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId + exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage) + + } else { + // verify if lcpCloudRegion was sent as input, if not get value from AAI Response + if (execution.getVariable(Prefix + "lcpCloudRegion") == null ) { + String lcpCloudRegion = networkUtils.getCloudRegion(aaiResponseAsString) + execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion) + msoLogger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion) + } + if (execution.getVariable(Prefix + "tenantId") == null ) { + String tenantId = networkUtils.getTenantId(aaiResponseAsString) + execution.setVariable(Prefix + "tenantId", tenantId) + msoLogger.debug(" Get AAI getTenantId() : " + tenantId) + } + + } + } + msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist) + + } else { + execution.setVariable(Prefix + "isAAIGood", false) + if (returnCode=='404' || aaiResponseAsString == "" || aaiResponseAsString == null) { + // not found // empty aai response + execution.setVariable(Prefix + "isSilentSuccess", true) + msoLogger.debug(" AAI Query is Silent Success") + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Error Response from callRESTQueryAAI() - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood")) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAICloudRegion (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " ) + + try { + String networkInputs = execution.getVariable(Prefix + "networkInputs") + // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region") + String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion") + cloudRegion = UriUtils.encode(cloudRegion,"UTF-8") + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + msoLogger.debug(queryCloudRegionRequest) + execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug(Prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion) + + if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) { + execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo) + execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc) + + } else { + String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode") + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareNetworkRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ") + ExceptionUtil exceptionUtil = new ExceptionUtil() + try { + // get variables + String networkRequest = execution.getVariable(Prefix + "networkRequest") + String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo") + String tenantId = execution.getVariable(Prefix + "tenantId") + + String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse") + String networkType = utils.getNodeText(queryAAIResponse, "network-type") + String networkId = utils.getNodeText(queryAAIResponse, "network-id") + String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled") + + String networkStackId = "" + networkStackId = utils.getNodeText(queryAAIResponse, "heat-stack-id") + if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) { + networkStackId = "force_delete" + } + + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // Added new Elements + String messageId = execution.getVariable(Prefix + "messageId") + String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use? + //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use? + + String modelCustomizationUuid = "" + if (utils.nodeExists(networkRequest, "networkModelInfo")) { + String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","") + modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid") + } else { + modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId") + } + + String deleteNetworkRequest = """ + <deleteNetworkRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <networkId>${MsoUtils.xmlEscape(networkId)}</networkId> + <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId> + <networkType>${MsoUtils.xmlEscape(networkType)}</networkType> + <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteNetworkRequest> + """.trim() + + msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest) + // Format Response + String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest) + msoLogger.debug(buildDeleteNetworkRequestAsString) + msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString) + + String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution) + execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId) + msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId) + + execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString) + msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString) + } + catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + } + + /** + * This method is used instead of an HTTP Connector task because the + * connector does not allow DELETE with a body. + */ + public void sendRequestToVnfAdapter(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + + String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution) + String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest") + + RESTConfig config = new RESTConfig(vnfAdapterUrl) + RESTClient client = new RESTClient(config). + addHeader("Content-Type", "application/xml"). + addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO")); + + APIResponse response; + + response = client.httpDelete(vnfAdapterRequest) + + execution.setVariable(Prefix + "networkReturnCode", response.getStatusCode()) + execution.setVariable(Prefix + "deleteNetworkResponse", response.getResponseBodyAsString()) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + } + + + public void prepareSDNCRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String networkId = "" + if (utils.nodeExists(deleteNetworkInput, "network-id")) { + networkId = utils.getNodeText(deleteNetworkInput, "network-id") + } + if (networkId == 'null') {networkId = ""} + + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + // get/set 'msoRequestId' and 'mso-request-id' + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + msoLogger.debug(Prefix + "requestId " + requestId) + String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + // 1. prepare delete topology via SDNC Adapter SUBFLOW call + String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null) + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest) + msoLogger.debug(sndcTopologyDeleteRequesAsString) + execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString) + msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String networkId = "" + if (utils.nodeExists(deleteNetworkInput, "network-id")) { + networkId = utils.getNodeText(deleteNetworkInput, "network-id") + } + if (networkId == 'null') {networkId = ""} + + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + // 1. prepare delete topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + msoLogger.debug(sndcTopologyDeleteRequesAsString) + execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString) + msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString) + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + public void prepareRpcSDNCDeactivate(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ") + + try { + + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String networkId = "" + if (utils.nodeExists(deleteNetworkInput, "network-id")) { + networkId = utils.getNodeText(deleteNetworkInput, "network-id") + } + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString) + msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void validateNetworkResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ") + + try { + String returnCode = execution.getVariable(Prefix + "networkReturnCode") + String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse") + + msoLogger.debug(" Network Adapter responseCode: " + returnCode) + msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse) + msoLogger.debug(networkResponse) + + String errorMessage = "" + if (returnCode == "200") { + msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse) + + // prepare rollback data + String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","") + if ((rollbackData == null) || (rollbackData.isEmpty())) { + msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse) + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + } else { + String rollbackNetwork = + """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network"> + ${rollbackData} + </NetworkAdapter:rollbackNetwork>""" + String rollbackNetworkXml = utils.formatXml(rollbackNetwork) + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml) + msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml) + } + + + } else { // network error + if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx + if (networkResponse.contains("deleteNetworkError") ) { + networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '') + errorMessage = utils.getNodeText(networkResponse, "message") + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } else { // CatchAll exception + if (returnCode == "500") { + errorMessage = "JBWEB000065: HTTP Status 500." + } else { + errorMessage = "Return code is " + returnCode + } + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } + + } else { // CatchAll exception + String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void validateSDNCResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ") + + String response = execution.getVariable(Prefix + "deleteSDNCResponse") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + WorkflowException workflowException = execution.getVariable("WorkflowException") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + // reset variable + String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse") + deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "") + execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml) + + if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess' + execution.setVariable(Prefix + "isSdncRollbackNeeded", true) // + execution.setVariable(Prefix + "isPONR", true) + msoLogger.debug("Successfully Validated SDNC Response") + } else { + msoLogger.debug("Did NOT Successfully Validated SDNC Response") + throw new BpmnError("MSOWorkflowException") + } + + } + + public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ") + + String response = execution.getVariable(Prefix + "deactivateSDNCResponse") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + WorkflowException workflowException = execution.getVariable("WorkflowException") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + // reset variable + String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse") + assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "") + execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml) + + if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess' + execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true) + msoLogger.debug("Successfully Validated Rpc SDNC Activate Response") + + } else { + msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response") + throw new BpmnError("MSOWorkflowException") + } + + } + + public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ") + + try { + + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse") + String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id") + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + // 2. prepare rollback topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString) + msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ") + + try { + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest")) + } + } + String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest") + if (rollbackDeactivateSDNCRequest != null) { + if (rollbackDeactivateSDNCRequest != "") { + rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")) + } + } + execution.setVariable("rollbackData", rollbackData) + msoLogger.debug("** rollbackData : " + rollbackData) + + execution.setVariable("WorkflowException", execution.getVariable("WorkflowException")) + msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException")) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void postProcessResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ") + + try { + + msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException")) + if (execution.getVariable(Prefix + "isException") == false) { + execution.setVariable(Prefix + "Success", true) + execution.setVariable("WorkflowException", null) + if (execution.getVariable(Prefix + "isSilentSuccess") == true) { + execution.setVariable("rolledBack", false) + } else { + execution.setVariable("rolledBack", true) + } + prepareSuccessRollbackData(execution) // populate rollbackData + + } else { + execution.setVariable(Prefix + "Success", false) + execution.setVariable("rollbackData", null) + String exceptionMessage = " Exception encountered in MSO Bpmn. " + if (execution.getVariable("workflowException") != null) { // Output of Rollback flow. + msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException")) + WorkflowException wfex = execution.getVariable("workflowException") + exceptionMessage = wfex.getErrorMessage() + } else { + if (execution.getVariable(Prefix + "WorkflowException") != null) { + WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException") + exceptionMessage = pwfex.getErrorMessage() + } else { + if (execution.getVariable("WorkflowException") != null) { + WorkflowException pwfex = execution.getVariable("WorkflowException") + exceptionMessage = pwfex.getErrorMessage() + } + } + } + + // going to the Main flow: a-la-carte or macro + msoLogger.debug(" ***** postProcessResponse(), BAD !!!") + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + + } + + } catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + + } + + } + + public void prepareSuccessRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ") + + try { + + if (execution.getVariable("sdncVersion") != '1610') { + prepareRpcSDNCDeactivateRollback(execution) + prepareRpcSDNCUnassignRollback(execution) + } else { + prepareSDNCRollback(execution) + } + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + if (rollbackSDNCRequest != null) { + if (rollbackSDNCRequest != "") { + rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest")) + } + } + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest")) + } + } + String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest") + if (rollbackDeactivateSDNCRequest != null) { + if (rollbackDeactivateSDNCRequest != "") { + rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")) + } + } + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("** rollbackData : " + rollbackData) + execution.setVariable("WorkflowException", null) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ") + + try { + + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse") + String networkId = utils.getNodeText(deleteSDNCResponse, "network-id") + if (networkId == 'null') {networkId = ""} + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + // 1. prepare delete topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null) + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest) + msoLogger.debug(sndcTopologyDeleteRequesAsString) + execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString) + msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString) + msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareSDNCRollback (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ") + + try { + + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest") + + String networkId = "" + if (utils.nodeExists(deleteNetworkInput, "network-id")) { + networkId = utils.getNodeText(deleteNetworkInput, "network-id") + } + if (networkId == 'null') {networkId = ""} + + String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id") + + // get/set 'msoRequestId' and 'mso-request-id' + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + + String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + // 1. prepare delete topology via SDNC Adapter SUBFLOW call + String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null) + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest) + msoLogger.debug(sndcTopologyDeleteRequesAsString) + execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString) + msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString) + msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString) + + + } catch (Exception ex) { + // caught exception + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void setExceptionFlag(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ") + + try { + + execution.setVariable(Prefix + "isException", true) + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException")) + + } catch(Exception ex){ + String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.debug("Completed processJavaException Method of " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy new file mode 100644 index 0000000000..ca6e21eedc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy @@ -0,0 +1,338 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 groovy.xml.XmlUtil +import groovy.json.* +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoCreateNetworkInstanceRollback.bpmn</class> process. + * + */ +public class DoDeleteNetworkInstanceRollback extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstanceRollback.class); + + String Prefix="DELNWKIR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + def className = getClass().getSimpleName() + + /** + * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "WorkflowException", null) + + execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", null) + execution.setVariable(Prefix + "rollbackDeactivateSDNCResponse", "") + execution.setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "") + + execution.setVariable(Prefix + "rollbackSDNCRequest", "") + execution.setVariable(Prefix + "rollbackSDNCResponse", "") + execution.setVariable(Prefix + "rollbackSDNCReturnCode", "") + + execution.setVariable(Prefix + "rollbackNetworkRequest", null) + execution.setVariable(Prefix + "rollbackNetworkResponse", "") + execution.setVariable(Prefix + "rollbackNetworkReturnCode", "") + + execution.setVariable(Prefix + "Success", false) + execution.setVariable(Prefix + "fullRollback", false) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy ") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // GET Incoming request/variables + String rollbackDeactivateSDNCRequest = null + String rollbackSDNCRequest = null + String rollbackNetworkRequest = null + + Map<String, String> rollbackData = execution.getVariable("rollbackData") + if (rollbackData != null && rollbackData instanceof Map) { + + if(rollbackData.containsKey("rollbackDeactivateSDNCRequest")) { + rollbackDeactivateSDNCRequest = rollbackData["rollbackDeactivateSDNCRequest"] + } + + if(rollbackData.containsKey("rollbackSDNCRequest")) { + rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"] + } + + if(rollbackData.containsKey("rollbackNetworkRequest")) { + rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"] + } + } + + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest) + execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", rollbackDeactivateSDNCRequest) + msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData")) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution) + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - " + String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage ) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException")) + if(execution.getVariable(Prefix + "WorkflowException") != null) { + // called by: DoCreateNetworkInstance, partial rollback + execution.setVariable(Prefix + "fullRollback", false) + + } else { + // called by: Macro - Full Rollback, WorkflowException = null + execution.setVariable(Prefix + "fullRollback", true) + + } + + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void validateRollbackResponses (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateRollbackResponses() of DoDeleteNetworkInstanceRollback ") + + try { + + // validate SDNC activate response + String rollbackDeactivateSDNCMessages = "" + String rollbackDeactivateSDNCReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest") != null) { + rollbackDeactivateSDNCReturnCode = execution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode") + String rollbackDeactivateSDNCResponse = execution.getVariable(Prefix + "rollbackDeactivateSDNCResponse") + String rollbackDeactivateSDNCReturnInnerCode = "" + rollbackDeactivateSDNCResponse = rollbackDeactivateSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "") + if (rollbackDeactivateSDNCReturnCode == "200") { + if (utils.nodeExists(rollbackDeactivateSDNCResponse, "response-code")) { + rollbackDeactivateSDNCReturnInnerCode = utils.getNodeText(rollbackDeactivateSDNCResponse, "response-code") + if (rollbackDeactivateSDNCReturnInnerCode == "200" || rollbackDeactivateSDNCReturnInnerCode == "" || rollbackDeactivateSDNCReturnInnerCode == "0") { + rollbackDeactivateSDNCMessages = " + SNDC deactivate rollback completed." + } else { + rollbackDeactivateSDNCMessages = " + SDNC deactivate rollback failed. " + } + } else { + rollbackDeactivateSDNCMessages = " + SNDC deactivate rollback completed." + } + } else { + rollbackDeactivateSDNCMessages = " + SDNC deactivate rollback failed. " + } + msoLogger.debug(" SDNC deactivate rollback Code - " + rollbackDeactivateSDNCReturnCode) + msoLogger.debug(" SDNC deactivate rollback Response - " + rollbackDeactivateSDNCResponse) + } + + // validate SDNC rollback response + String rollbackSdncErrorMessages = "" + String rollbackSDNCReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) { + rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode") + String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse") + String rollbackSDNCReturnInnerCode = "" + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "") + if (rollbackSDNCReturnCode == "200") { + if (utils.nodeExists(rollbackSDNCResponse, "response-code")) { + rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code") + if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") { + rollbackSdncErrorMessages = " + SNDC unassign rollback completed." + } else { + rollbackSdncErrorMessages = " + SDNC unassign rollback failed. " + } + } else { + rollbackSdncErrorMessages = " + SNDC unassign rollback completed." + } + } else { + rollbackSdncErrorMessages = " + SDNC unassign rollback failed. " + } + msoLogger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode) + msoLogger.debug(" SDNC assign rollback Response - " + rollbackSDNCResponse) + } + + // validate PO network rollback response + String rollbackNetworkErrorMessages = "" + String rollbackNetworkReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) { + rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode") + String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse") + if (rollbackNetworkReturnCode != "200") { + rollbackNetworkErrorMessages = " + PO Network rollback failed. " + } else { + rollbackNetworkErrorMessages = " + PO Network rollback completed." + } + + msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode) + msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse) + } + + String statusMessage = "" + int errorCode = 7000 + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + if (execution.getVariable(Prefix + "fullRollback") == false) { + WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") // original WorkflowException + if (wfe != null) { + statusMessage = wfe.getErrorMessage() + errorCode = wfe.getErrorCode() + } else { + statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + errorCode = '7000' + } + + // set if all rolledbacks are successful + if (rollbackDeactivateSDNCReturnCode == "200" && rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") { + execution.setVariable("rolledBack", true) + execution.setVariable("wasDeleted", true) + + } else { + execution.setVariable("rolledBack", false) + execution.setVariable("wasDeleted", true) + } + + statusMessage = statusMessage + rollbackDeactivateSDNCMessages + rollbackNetworkErrorMessages + rollbackSdncErrorMessages + msoLogger.debug("Final DoDeleteNetworkInstanceRollback status message: " + statusMessage) + String processKey = getProcessKey(execution); + WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage); + execution.setVariable("workflowException", exception); + + } else { + // rollback due to failures in Main flow (Macro or a-ala-carte) - Full rollback + if (rollbackDeactivateSDNCReturnCode == "200" && rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") { + execution.setVariable("rollbackSuccessful", true) + execution.setVariable("rollbackError", false) + } else { + String exceptionMessage = "Network Delete Rollback was not Successful. " + msoLogger.debug(exceptionMessage) + execution.setVariable("rollbackSuccessful", false) + execution.setVariable("rollbackError", true) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + } + } + + } catch (Exception ex) { + String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + // ******************************* + // Build Error Section + // ******************************* + + + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy new file mode 100644 index 0000000000..f6dd0cad16 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy @@ -0,0 +1,317 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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.json.JSONArray; + +import static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.ServiceInstance +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.rest.APIResponse; +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import java.util.List; +import java.util.UUID; +import javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.camunda.bpm.engine.runtime.Execution +import org.json.JSONObject; +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils; +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource + +import com.fasterxml.jackson.jaxrs.json.annotation.JSONP.Def; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoDeleteResources.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * @param - failNotFound - TODO + * @param - serviceInputParams - TODO + * + * @param - delResourceList + * @param - serviceRelationShip + * + * Outputs: + * @param - WorkflowException + * + * Rollback - Deferred + */ +public class DoDeleteResources extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteResources.class); + + String Prefix="DDELR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + msoLogger.trace("preProcessRequest ") + String msg = "" + + List<ServiceInstance> realNSRessources = new ArrayList<ServiceInstance>() + + // related ns from AAI + String serviceRelationShip = execution.getVariable("serviceRelationShip") + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + List<String> nsSequence = new ArrayList<String>() + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + if (relationShipList != null) { + relationShipList.each { + String resourceType = it.resourceType + nsSequence.add(resourceType) + } + } + + execution.setVariable("currentNSIndex", 0) + execution.setVariable("nsSequence", nsSequence) + execution.setVariable("realNSRessources", realNSRessources) + msoLogger.info("nsSequence: " + nsSequence) + + msoLogger.trace("Exit preProcessRequest ") + } + + public void getCurrentNS(execution){ + msoLogger.trace("Start getCurrentNS Process ") + + def currentIndex = execution.getVariable("currentNSIndex") + List<String> nsSequence = execution.getVariable("nsSequence") + String nsResourceType = nsSequence.get(currentIndex) + + // GET AAI by Name, not ID, for process convenient + execution.setVariable("GENGS_type", "service-instance") + execution.setVariable("GENGS_serviceInstanceId", "") + execution.setVariable("GENGS_serviceInstanceName", nsResourceType) + + msoLogger.trace("COMPLETED getCurrentNS Process ") + } + + public void postProcessAAIGET(DelegateExecution execution) { + msoLogger.trace("postProcessAAIGET2 ") + String msg = "" + + try { + String nsResourceName = execution.getVariable("GENGS_serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET", + nsResourceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + String aaiService = execution.getVariable("GENGS_service") + if (!isBlank(aaiService)) { + String svcId = utils.getNodeText(aaiService, "service-instance-id") + //String mn = utils.getNodeText(aaiService, "model-name") + String mIuuid = utils.getNodeText(aaiService, "model-invariant-id") + String muuid = utils.getNodeText(aaiService, "model-version-id") + String mCuuid = utils.getNodeText(aaiService, "model-customization-uuid") + ServiceInstance rc = new ServiceInstance() + ModelInfo modelInfo = new ModelInfo() + //modelInfo.setModelName(mn) + modelInfo.setModelUuid(muuid) + modelInfo.setModelInvariantUuid(mIuuid) + modelInfo.getModelCustomizationUuid(mCuuid) + rc.setModelInfo(modelInfo) + rc.setInstanceId(svcId) + rc.setInstanceName(nsResourceName) + + List<ServiceInstance> realNSRessources = execution.getVariable("realNSRessources") + realNSRessources.add(rc) + execution.setVariable("realNSRessources", realNSRessources) + + msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName")) + } + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteResources.postProcessAAIGET " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + public void parseNextNS(execution){ + msoLogger.trace("Start parseNextNS Process ") + def currentIndex = execution.getVariable("currentNSIndex") + def nextIndex = currentIndex + 1 + execution.setVariable("currentNSIndex", nextIndex) + List<String> nsSequence = execution.getVariable("nsSequence") + if(nextIndex >= nsSequence.size()){ + execution.setVariable("allNsFinished", "true") + }else{ + execution.setVariable("allNsFinished", "false") + } + msoLogger.trace("COMPLETED parseNextNS Process ") + } + + + public void sequenceResource(execution){ + msoLogger.trace("STARTED sequenceResource Process ") + List<String> nsResources = new ArrayList<String>() + List<String> wanResources = new ArrayList<String>() + List<String> resourceSequence = new ArrayList<String>() + + // get delete resource list and order list + List<Resource> delResourceList = execution.getVariable("delResourceList") + // existing resource list + List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources") + + for(ServiceInstance rc_e : existResourceList){ + + String muuid = rc_e.getModelInfo().getModelUuid() + String mIuuid = rc_e.getModelInfo().getModelInvariantUuid() + String mCuuid = rc_e.getModelInfo().getModelCustomizationUuid() + rcType = rc_e.getInstanceName() + + for(Resource rc_d : delResourceList){ + + if(rc_d.getModelInfo().getModelUuid() == muuid + && rc_d.getModelInfo().getModelInvariantUuid() == mIuuid + && rc_d.getModelInfo().getModelCustomizationUuid() == mCuuid) { + + if(StringUtils.containsIgnoreCase(rcType, "overlay") + || StringUtils.containsIgnoreCase(rcType, "underlay")){ + wanResources.add(rcType) + }else{ + nsResources.add(rcType) + } + + } + } + + } + + resourceSequence.addAll(wanResources) + resourceSequence.addAll(nsResources) + String isContainsWanResource = wanResources.isEmpty() ? "false" : "true" + execution.setVariable("isContainsWanResource", isContainsWanResource) + execution.setVariable("currentResourceIndex", 0) + execution.setVariable("resourceSequence", resourceSequence) + msoLogger.info("resourceSequence: " + resourceSequence) + execution.setVariable("wanResources", wanResources) + msoLogger.trace("END sequenceResource Process ") + } + + public void getCurrentResource(execution){ + msoLogger.trace("Start getCurrentResoure Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + List<String> resourceSequence = execution.getVariable("resourceSequence") + List<String> wanResources = execution.getVariable("wanResources") + String resourceName = resourceSequence.get(currentIndex) + execution.setVariable("resourceType",resourceName) + if(wanResources.contains(resourceName)){ + execution.setVariable("controllerInfo", "SDN-C") + }else{ + execution.setVariable("controllerInfo", "VF-C") + } + msoLogger.trace("COMPLETED getCurrentResoure Process ") + } + + /** + * prepare delete parameters + */ + public void preResourceDelete(execution, resourceName){ + + msoLogger.trace("STARTED preResourceDelete Process ") + + List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources") + + for(ServiceInstance rc_e : existResourceList){ + + if(StringUtils.containsIgnoreCase(rc_e.getInstanceName(), resourceName)) { + + String resourceInstanceUUID = rc_e.getInstanceId() + String resourceTemplateUUID = rc_e.getModelInfo().getModelUuid() + execution.setVariable("resourceInstanceId", resourceInstanceUUID) + execution.setVariable("resourceTemplateId", resourceTemplateUUID) + execution.setVariable("resourceType", resourceName) + msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + " resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName) + } + } + + msoLogger.trace("END preResourceDelete Process ") + } + + public void parseNextResource(execution){ + msoLogger.trace("Start parseNextResource Process ") + def currentIndex = execution.getVariable("currentResourceIndex") + def nextIndex = currentIndex + 1 + execution.setVariable("currentResourceIndex", nextIndex) + List<String> resourceSequence = execution.getVariable("resourceSequence") + if(nextIndex >= resourceSequence.size()){ + execution.setVariable("allResourceFinished", "true") + }else{ + execution.setVariable("allResourceFinished", "false") + } + msoLogger.trace("COMPLETED parseNextResource Process ") + } + + /** + * post config request. + */ + public void postConfigRequest(execution){ + //to do + } + +} +
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy new file mode 100644 index 0000000000..a5a96f3bd3 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy @@ -0,0 +1,400 @@ + +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.isBlank + +import org.apache.commons.lang3.StringUtils +import org.apache.http.HttpResponse +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONObject +import org.onap.so.bpmn.common.recipe.BpmnRestClient +import org.onap.so.bpmn.common.recipe.ResourceInput +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.domain.AllottedResource +import org.onap.so.bpmn.core.domain.NetworkResource +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.infrastructure.properties.BPMNProperties +import org.onap.so.logger.MsoLogger + +/** + * input for script : + * msoRequestId + * isDebugLogEnabled + * globalSubscriberId + * serviceType + * serviceInstanceId + * URN_mso_workflow_sdncadapter_callback + * serviceInputParams + * deleteResourceList + * resourceInstanceIDs + * + * output from script: + * + */ + +public class DoDeleteResourcesV1 extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteResourcesV1.class); + + String Prefix="DDR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils cutils = new CatalogDbUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessRequest *****", isDebugEnabled) + String msg = "" + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix",Prefix) + + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + if (globalSubscriberId == null) + { + execution.setVariable("globalSubscriberId", "") + } + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + if (serviceType == null) + { + execution.setVariable("serviceType", "") + } + + //Generated in parent for AAI PUT + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback') + if (isBlank(sdncCallbackUrl)) { + msg = "URN_mso_workflow_sdncadapter_callback is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled) + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," ***** Exit preProcessRequest *****", isDebugEnabled) + } + + public void sequenceResource(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED sequenceResource Process ======== ", isDebugEnabled) + List<Resource> sequencedResourceList = new ArrayList<Resource>() + List<Resource> wanResources = new ArrayList<Resource>() + + // get delete resource list and order list + List<Resource> delResourceList = execution.getVariable("deleteResourceList") + + def resourceSequence = BPMNProperties.getResourceSequenceProp() + + if(resourceSequence != null) { + for (resourceType in resourceSequence.reverse()) { + for (resource in delResourceList) { + if (StringUtils.containsIgnoreCase(resource.getModelInfo().getModelName(), resourceType)) { + sequencedResourceList.add(resource) + + if (resource instanceof NetworkResource) { + wanResources.add(resource) + } + } + } + } + }else { + //define sequenced resource list, we deploy vf first and then network and then ar + //this is defaule sequence + List<VnfResource> vnfResourceList = new ArrayList<VnfResource>() + List<AllottedResource> arResourceList = new ArrayList<AllottedResource>() + for (Resource rc : delResourceList) { + if (rc instanceof VnfResource) { + vnfResourceList.add(rc) + } else if (rc instanceof NetworkResource) { + wanResources.add(rc) + } else if (rc instanceof AllottedResource) { + arResourceList.add(rc) + } + } + + sequencedResourceList.addAll(arResourceList) + sequencedResourceList.addAll(wanResources) + sequencedResourceList.addAll(vnfResourceList) + } + + String isContainsWanResource = wanResources.isEmpty() ? "false" : "true" + execution.setVariable("isContainsWanResource", isContainsWanResource) + execution.setVariable("currentResourceIndex", 0) + execution.setVariable("sequencedResourceList", sequencedResourceList) + utils.log("INFO", "resourceSequence: " + resourceSequence, isDebugEnabled) + utils.log("INFO", " ======== END sequenceResource Process ======== ", isDebugEnabled) + } + + /** + * prepare delete parameters + */ + public void preResourceDelete(DelegateExecution execution){ + + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED preResourceDelete Process ======== ", isDebugEnabled) + + List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList") + + int currentIndex = execution.getVariable("currentResourceIndex") + Resource curResource = sequencedResourceList.get(currentIndex); + + String resourceInstanceUUID = curResource.getResourceId() + String resourceTemplateUUID = curResource.getModelInfo().getModelUuid() + execution.setVariable("resourceInstanceId", resourceInstanceUUID) + execution.setVariable("currentResource", curResource) + utils.log("INFO", "Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + " resourceInstanceId: " + + resourceInstanceUUID + " resourceModelName: " + curResource.getModelInfo().getModelName(), isDebugEnabled) + + utils.log("INFO", " ======== END preResourceDelete Process ======== ", isDebugEnabled) + } + + + /** + * Execute delete workflow for resource + */ + public void executeResourceDelete(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start executeResourceDelete Process ======== ", isDebugEnabled) + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceType = execution.getVariable("serviceType") + + String resourceInstanceId = execution.getVariable("resourceInstanceId") + + Resource currentResource = execution.getVariable("currentResource") + String action = "deleteInstance" + JSONObject resourceRecipe = cutils.getResourceRecipe(execution, currentResource.getModelInfo().getModelUuid(), action) + String recipeUri = resourceRecipe.getString("orchestrationUri") + int recipeTimeout = resourceRecipe.getInt("recipeTimeout") + String recipeParamXsd = resourceRecipe.get("paramXSD") + + + ResourceInput resourceInput = new ResourceInput(); + resourceInput.setServiceInstanceId(serviceInstanceId) + resourceInput.setResourceInstanceName(currentResource.getResourceInstanceName()) + resourceInput.setResourceInstancenUuid(currentResource.getResourceId()) + resourceInput.setOperationId(execution.getVariable("operationId")) + resourceInput.setOperationType(execution.getVariable("operationType")) + String globalSubscriberId = execution.getVariable("globalSubscriberId") + resourceInput.setGlobalSubscriberId(globalSubscriberId) + resourceInput.setResourceModelInfo(currentResource.getModelInfo()); + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo()); + resourceInput.setServiceType(serviceType) + + String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + recipeUri + + HttpResponse resp = BpmnRestClient.post(recipeURL, requestId, recipeTimeout, action, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd) + utils.log("INFO", " ======== END executeResourceDelete Process ======== ", isDebugEnabled) + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug("Error occured within DoDeleteResourcesV1 executeResourceDelete method: " + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoDeleteResourcesV1 executeResourceDelete Catalog") + } + } + + + public void parseNextResource(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled) + def currentIndex = execution.getVariable("currentResourceIndex") + def nextIndex = currentIndex + 1 + execution.setVariable("currentResourceIndex", nextIndex) + List<String> sequencedResourceList = execution.getVariable("sequencedResourceList") + if(nextIndex >= sequencedResourceList.size()){ + execution.setVariable("allResourceFinished", "true") + }else{ + execution.setVariable("allResourceFinished", "false") + } + utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled) + } + + public void prepareFinishedProgressForResource(DelegateExecution execution) { + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceType = execution.getVariable("serviceType") + String resourceInstanceId = execution.getVariable("resourceInstanceId") + Resource currentResource = execution.getVariable("currentResource") + String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid() + String resourceModelName = currentResource.getModelInfo().getModelName() + String operationType = execution.getVariable("operationType") + String progress = "100" + String status = "finished" + String statusDescription = "The resource instance does not exist for " + resourceModelName + String operationId = execution.getVariable("operationId") + + String body = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateResourceOperationStatus> + <operType>${MsoUtils.xmlEscape(operationType)}</operType> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID> + <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId> + <status>${MsoUtils.xmlEscape(status)}</status> + <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription> + </ns:updateResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>"""; + + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + execution.setVariable("CVFMI_updateResOperStatusRequest", body) + } + + public void prepareSDNCServiceDeactivateRequest (DelegateExecution execution) { + prepareSDNCServiceRequest (execution, "deactivate") + } + + public void prepareSDNCServiceDeleteRequest (DelegateExecution execution) { + prepareSDNCServiceRequest (execution, "delete") + } + + public void prepareSDNCServiceRequest (DelegateExecution execution, String svcAction) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** Started prepareSDNCServiceRequest for " + svcAction + "*****", isDebugEnabled) + + try { + // get variables + String sdnc_svcAction = svcAction + String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback") + String hdrRequestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String source = execution.getVariable("source") + String sdnc_service_id = serviceInstanceId + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String serviceType = execution.getVariable("serviceType") + String globalCustomerId = execution.getVariable("globalSubscriberId") + String serviceModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid() + String serviceModelUuid = serviceDecomposition.getModelInfo().getModelUuid() + String serviceModelVersion = serviceDecomposition.getModelInfo().getModelVersion() + String serviceModelName = serviceDecomposition.getModelInfo().getModelName() + + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyDeleteRequest = + """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id> + <request-action>DeleteServiceInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url></notification-url> + <order-number></order-number> + <order-version></order-version> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <service-request-input> + </service-request-input> + </sdncadapterworkflow:SDNCRequestData> + </aetgt:SDNCAdapterWorkflowRequest>""".trim() + + String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest) + utils.logAudit(sndcTopologyDeleteRequesAsString) + execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyDeleteRequesAsString) + utils.log("INFO","sdncAdapterWorkflowRequest - " + "\n" + sndcTopologyDeleteRequesAsString, isDebugEnabled) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoDeleteResourcesV1 flow. prepareSDNCServiceRequest() - " + ex.getMessage() + utils.log("DEBUG", exceptionMessage, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + utils.log("INFO","***** Exit prepareSDNCServiceRequest for " + svcAction + "*****", isDebugEnabled) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy new file mode 100644 index 0000000000..198144ad34 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy @@ -0,0 +1,472 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.SDNCAdapterUtils +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.logger.MsoLogger +import org.onap.so.client.aai.entities.uri.AAIResourceUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.client.aai.AAIObjectType +import org.onap.so.client.aai.AAIResourcesClient +import org.springframework.web.util.UriUtils; +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource + +import groovy.json.* + +/** + * This groovy class supports the <class>DoDeleteServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId - O + * @param - subscriptionServiceType - O + * @param - serviceInstanceId + * @param - serviceInstanceName - O + * @param - serviceModelInfo - O + * @param - productFamilyId + * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM) + * @param - sdncVersion + * @param - failNotFound - TODO + * @param - serviceInputParams - TODO + * + * Outputs: + * @param - WorkflowException + * + * Rollback - Deferred + */ +public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteServiceInstance.class); + + String Prefix="DDELSI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + + msoLogger.trace("preProcessRequest ") + String msg = "" + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix",Prefix) + + //Inputs + //requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + if (globalSubscriberId == null) + { + execution.setVariable("globalSubscriberId", "") + } + + //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + if (subscriptionServiceType == null) + { + execution.setVariable("subscriptionServiceType", "") + } + + //Generated in parent for AAI PUT + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String sdncCallbackUrl = UrnPropertiesReader.getVariable('mso.workflow.sdncadapter.callback',execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + StringBuilder sbParams = new StringBuilder() + Map<String, String> paramsMap = execution.getVariable("serviceInputParams") + if (paramsMap != null) + { + sbParams.append("<service-input-parameters>") + for (Map.Entry<String, String> entry : paramsMap.entrySet()) { + String paramsXml + String paramName = entry.getKey() + String paramValue = entry.getValue() + paramsXml = + """ <param> + <name>${MsoUtils.xmlEscape(paramName)}</name> + <value>${MsoUtils.xmlEscape(paramValue)}</value> + </param> + """ + sbParams.append(paramsXml) + } + sbParams.append("</service-input-parameters>") + } + String siParamsXml = sbParams.toString() + if (siParamsXml == null) + siParamsXml = "" + execution.setVariable("siParamsXml", siParamsXml) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void preProcessSDNCDelete (DelegateExecution execution) { + + msoLogger.trace("preProcessSDNCDelete ") + String msg = "" + + try { + def serviceInstanceId = execution.getVariable("serviceInstanceId") ?: "" + def serviceInstanceName = execution.getVariable("serviceInstanceName") ?: "" + def callbackURL = execution.getVariable("sdncCallbackUrl") ?: "" + def requestId = execution.getVariable("msoRequestId") ?: "" + def serviceId = execution.getVariable("productFamilyId") ?: "" + def subscriptionServiceType = execution.getVariable("subscriptionServiceType") ?: "" + def globalSubscriberId = execution.getVariable("globalSubscriberId") ?: "" //globalCustomerId + + String serviceModelInfo = execution.getVariable("serviceModelInfo") ?: "" + def modelInvariantUuid = "" + def modelVersion = "" + def modelUuid = "" + def modelName = "" + if (!isBlank(serviceModelInfo)) + { + modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") ?: "" + modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") ?: "" + modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") ?: "" + modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") ?: "" + + } + + def siParamsXml = execution.getVariable("siParamsXml") ?: "" + def msoAction = "" + // special URL for SDNW, msoAction helps set diff url in SDNCA + if("TRANSPORT".equalsIgnoreCase(execution.getVariable("serviceType"))) + { + msoAction = "TRANSPORT" + } + + def sdncRequestId = UUID.randomUUID().toString() + + String sdncDelete = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>delete</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + <request-action>DeleteServiceInstance</request-action> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id> + </service-information> + <service-request-input> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + ${siParamsXml} + </service-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + sdncDelete = utils.formatXml(sdncDelete) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + execution.setVariable("sdncDelete", sdncDelete) + execution.setVariable("sdncDeactivate", sdncDeactivate) + msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate) + msoLogger.debug("sdncDelete:\n" + sdncDelete) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage()) + } + msoLogger.debug(" *****Exit preProcessSDNCDelete *****") + } + + public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) { + + + msoLogger.trace("postProcessSDNC " + method + " ") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Good response from SDNC Adapter for service-instance " + method + "response:\n" + response) + + }else{ + msg = "Bad Response from SDNC Adapter for service-instance " + method + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg) + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in postProcessSDNC " + method + " Exception:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessSDNC " + method + " ") + } + + public void postProcessAAIGET(DelegateExecution execution) { + + msoLogger.trace("postProcessAAIGET ") + String msg = "" + + try { + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" + + if(foundInAAI == true){ + msoLogger.debug("Found Service-instance in AAI") + + //Extract GlobalSubscriberId + String siRelatedLink = execution.getVariable("GENGS_siResourceLink") + if (isBlank(siRelatedLink)) + { + msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else + { + msoLogger.debug("Found Service-instance in AAI. link: " + siRelatedLink) + String globalSubscriberId = execution.getVariable("globalSubscriberId") + if(isBlank(globalSubscriberId)){ + int custStart = siRelatedLink.indexOf("customer/") + int custEnd = siRelatedLink.indexOf("/service-subscriptions") + globalSubscriberId = siRelatedLink.substring(custStart + 9, custEnd) + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //Extract Service Type if not provided on request + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + if(isBlank(subscriptionServiceType)){ + int serviceStart = siRelatedLink.indexOf("service-subscription/") + int serviceEnd = siRelatedLink.indexOf("/service-instances/") + String serviceTypeEncoded = siRelatedLink.substring(serviceStart + 21, serviceEnd) + subscriptionServiceType = UriUtils.decode(serviceTypeEncoded, "UTF-8") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + } + + if (isBlank(globalSubscriberId) || isBlank(subscriptionServiceType)) + { + msg = "Could not retrive global-customer-id & subscription-service-type from AAI to delete id:" + serviceInstanceId + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + } + + String siData = execution.getVariable("GENGS_service") + msoLogger.debug("SI Data") + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + else + { + msoLogger.debug("SI Data" + siData) + serviceType = utils.getNodeText(siData,"service-type") + execution.setVariable("serviceType", serviceType) + execution.setVariable("serviceRole", utils.getNodeText(siData,"service-role")) + String orchestrationStatus = utils.getNodeText(siData,"orchestration-status") + + //Confirm there are no related service instances (vnf/network or volume) + if (utils.nodeExists(siData, "relationship-list")) { + msoLogger.debug("SI Data relationship-list exists:") + InputSource source = new InputSource(new StringReader(siData)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document serviceXml = docBuilder.parse(source) + + NodeList nodeList = serviceXml.getElementsByTagName("relationship") + for (int x = 0; x < nodeList.getLength(); x++) { + Node node = nodeList.item(x) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) node + def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() + if(e.equals("generic-vnf") || e.equals("l3-network") || e.equals("allotted-resource") ){ + msoLogger.debug("ServiceInstance still has relationship(s) to generic-vnfs, l3-networks or allotted-resources") + execution.setVariable("siInUse", true) + //there are relationship dependencies to this Service Instance + msg = " Stopped deleting Service Instance, it has dependencies. Service instance id: " + serviceInstanceId + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + }else{ + msoLogger.debug("Relationship NOT related to OpenStack") + } + } + } + } + + if ("TRANSPORT".equalsIgnoreCase(serviceType)) + { + if ("PendingDelete".equals(orchestrationStatus)) + { + execution.setVariable("skipDeactivate", true) + } + else + { + msg = "ServiceInstance of type TRANSPORT must in PendingDelete status to allow Delete. Orchestration-status:" + orchestrationStatus + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + } + + //alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable + String svcTypes = UrnPropertiesReader.getVariable("sdnc.si.svc.types",execution) ?: "" + msoLogger.debug("SDNC SI serviceTypes:" + svcTypes) + List<String> svcList = Arrays.asList(svcTypes.split("\\s*,\\s*")); + boolean isSdncService= false + for (String listEntry : svcList){ + if (listEntry.equalsIgnoreCase(serviceType)){ + isSdncService = true + break; + } + } + + //All Macros are sent to SDNC, TRANSPORT(Macro) is sent to SDNW + //Alacartes are sent to SDNC if they are listed in config variable above + execution.setVariable("sendToSDNC", true) + if(execution.getVariable("sdncVersion").equals("1610")) //alacarte + { + if(!isSdncService){ + execution.setVariable("sendToSDNC", false) + } + } + + msoLogger.debug("isSdncService: " + isSdncService) + msoLogger.debug("Send To SDNC: " + execution.getVariable("sendToSDNC")) + msoLogger.debug("Service Type: " + execution.getVariable("serviceType")) + + } + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(succInAAI != true){ + msoLogger.debug("Error getting Service-instance from AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + msoLogger.debug("Service-instance NOT found in AAI. Silent Success") + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteServiceInstance.postProcessAAIGET. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + /** + * Deletes the service instance in aai + */ + public void deleteServiceInstance(DelegateExecution execution) { + msoLogger.trace("Entered deleteServiceInstance") + try { + String globalCustId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("subscriptionServiceType") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + AAIResourcesClient resourceClient = new AAIResourcesClient(); + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + resourceClient.delete(serviceInstanceUri) + + msoLogger.trace("Exited deleteServiceInstance") + }catch(Exception e){ + msoLogger.debug("Error occured within deleteServiceInstance method: " + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Error occured during deleteServiceInstance from aai") + } + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy new file mode 100644 index 0000000000..0069bf4f0a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy @@ -0,0 +1,285 @@ +/*- + * ============LICENSE_START======================================================= + * OPENECOMP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.* + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig + +import groovy.json.* + +/** + * This groovy class supports the <class>DoDeleteVFCNetworkServiceInstance.bpmn</class> process. + * flow for E2E ServiceInstance Delete + */ +public class DoDeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVFCNetworkServiceInstance.class); + + + String vfcUrl = "/vfc/rest/v1/vfcadapter" + + String host = "http://mso.mso.testlab.openecomp.org:8080" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + */ + public void preProcessRequest (DelegateExecution execution) { + + String msg = "" + msoLogger.trace("preProcessRequest() ") + try { + //deal with operation key + String globalSubscriberId = execution.getVariable("globalSubscriberId") + msoLogger.info("globalSubscriberId:" + globalSubscriberId) + String serviceType = execution.getVariable("serviceType") + msoLogger.info("serviceType:" + serviceType) + String serviceId = execution.getVariable("serviceId") + msoLogger.info("serviceId:" + serviceId) + String operationId = execution.getVariable("operationId") + msoLogger.info("serviceType:" + serviceType) + String nodeTemplateUUID = execution.getVariable("resourceTemplateId") + msoLogger.info("nodeTemplateUUID:" + nodeTemplateUUID) + String nsInstanceId = execution.getVariable("resourceInstanceId") + msoLogger.info("nsInstanceId:" + nsInstanceId) + execution.setVariable("nsInstanceId",nsInstanceId) + String nsOperationKey = """{ + "globalSubscriberId":"${globalSubscriberId}", + "serviceType":"${serviceType}", + "serviceId":"${serviceId}", + "operationId":"${operationId}", + "nodeTemplateUUID":"${nodeTemplateUUID}" + }""" + execution.setVariable("nsOperationKey", nsOperationKey); + msoLogger.info("nsOperationKey:" + nsOperationKey) + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + /** + * unwind NS from AAI relationship + */ + public void deleteNSRelationship(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** deleteNSRelationship *****", isDebugEnabled) + String nsInstanceId = execution.getVariable("resourceInstanceId") + if(nsInstanceId == null || nsInstanceId == ""){ + utils.log("INFO"," Delete NS failed", isDebugEnabled) + return + } + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String serviceType = execution.getVariable("serviceType") + String serviceId = execution.getVariable("serviceId") + String deleteRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11"> + <related-to>service-instance</related-to> + <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link> + <relationship-data> + <relationship-key>customer.global-customer-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-subscription.service-type</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value> + </relationship-data> + <relationship-data> + <relationship-key>service-instance.service-instance-id</relationship-key> + <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value> + </relationship-data> + </relationship>""" + String endpoint = execution.getVariable("URN_aai_endpoint") + utils.log("INFO","Delete Relationship req:\n" + deleteRelationPayload, isDebugEnabled) + String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship" + + APIResponse aaiRsp = executeAAIDeleteCall(execution, url, deleteRelationPayload) + utils.log("INFO","aai response status code:" + aaiRsp.getStatusCode(), isDebugEnabled) + utils.log("INFO","aai response content:" + aaiRsp.getResponseBodyAsString(), isDebugEnabled) + utils.log("INFO"," *****Exit deleteNSRelationship *****", isDebugEnabled) + } + + public APIResponse executeAAIDeleteCall(DelegateExecution execution, String url, String payload){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO", " ======== Started Execute AAI Delete Process ======== ", isDebugEnabled) + APIResponse apiResponse = null + try{ + String uuid = utils.getRequestID() + utils.log("INFO","Generated uuid is: " + uuid, isDebugEnabled) + utils.log("INFO","URL to be used is: " + url, isDebugEnabled) + String userName = execution.getVariable("URN_aai_auth") + String password = execution.getVariable("URN_mso_msoKey") + String basicAuthCred = utils.getBasicAuth(userName,password) + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml"); + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.httpDelete(payload) + utils.log("INFO","======== Completed Execute AAI Delete Process ======== ", isDebugEnabled) + }catch(Exception e){ + utils.log("ERROR","Exception occured while executing AAI Put Call. Exception is: \n" + e, isDebugEnabled) + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + + /** + * delete NS task + */ + public void deleteNetworkService(DelegateExecution execution) { + + msoLogger.trace("deleteNetworkService start ") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String url = host + vfcUrl + "/ns/" + execution.getVariable("nsInstanceId") + APIResponse apiResponse = deleteRequest(execution, url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String apiResponseAsString = apiResponse.getResponseBodyAsString() + String operationStatus = "error"; + if(returnCode== "200" || returnCode== "202"){ + operationStatus = "finished" + } + execution.setVariable("operationStatus", operationStatus) + + msoLogger.trace("deleteNetworkService end ") + } + + /** + * instantiate NS task + */ + public void terminateNetworkService(DelegateExecution execution) { + + msoLogger.trace("terminateNetworkService start ") + String nsOperationKey = execution.getVariable("nsOperationKey") + String url = host + vfcUrl + "/ns/" + execution.getVariable("nsInstanceId") + "/terminate" + APIResponse apiResponse = postRequest(execution, url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String jobId = ""; + if(returnCode== "200" || returnCode== "202"){ + jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId") + } + execution.setVariable("jobId", jobId) + msoLogger.trace("terminateNetworkService end ") + } + + /** + * query NS task + */ + public void queryNSProgress(DelegateExecution execution) { + + msoLogger.trace("queryNSProgress start ") + String jobId = execution.getVariable("jobId") + String nsOperationKey = execution.getVariable("nsOperationKey"); + String url = host + vfcUrl + "/jobs/" + execution.getVariable("jobId") + APIResponse apiResponse = postRequest(execution, url, nsOperationKey) + String returnCode = apiResponse.getStatusCode() + String apiResponseAsString = apiResponse.getResponseBodyAsString() + String operationProgress = "100" + if(returnCode== "200"){ + operationProgress = jsonUtil.getJsonValue(apiResponseAsString, "responseDescriptor.progress") + } + execution.setVariable("operationProgress", operationProgress) + msoLogger.trace("queryNSProgress end ") + } + + /** + * delay 5 sec + */ + public void timeDelay(DelegateExecution execution) { + try { + Thread.sleep(5000); + } catch(InterruptedException e) { + msoLogger.info("Time Delay exception" + e) + } + } + + /** + * finish NS task + */ + public void finishNSDelete(DelegateExecution execution) { + //no need to do anything util now + } + + /** + * post request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){ + + msoLogger.trace("Started Execute VFC adapter Post Process ") + msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");; + apiResponse = client.httpPost(requestBody) + msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) + msoLogger.trace("Completed Execute VF-C adapter Post Process ") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VF-C Post Call. Exception is: \n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + /** + * delete request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse deleteRequest(DelegateExecution execution, String url, String requestBody){ + + msoLogger.trace("Started Execute VFC adapter Delete Process ") + msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk"); + apiResponse = client.httpDelete(requestBody) + msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) + msoLogger.trace("Completed Execute VF-C adapter Delete Process ") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VF-C Post Call. Exception is: \n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy new file mode 100644 index 0000000000..b41b74e509 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy @@ -0,0 +1,711 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VfModule +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.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.springframework.web.util.UriUtils +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource + +/* Subflow for Delete VF Module. When no DoDeleteVfModuleRequest is specified on input, + * functions as a building block subflow + +* Inputs for building block interface: +* @param - requestId +* @param - isDebugLogEnabled +* @param - vnfId +* @param - vfModuleId +* @param - serviceInstanceId +* @param - vfModuleName O +* @param - vfModuleModelInfo +* @param - cloudConfiguration* +* @param - sdncVersion ("1610") +* @param - retainResources +* @param - aLaCarte +* +* Outputs: +* @param - WorkflowException +* +*/ +public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModule.class); + + def Prefix="DoDVfMod_" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", null) + execution.setVariable("DoDVfMod_oamManagementV4Address", null) + execution.setVariable("DoDVfMod_oamManagementV6Address", null) + + } + + // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids + // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest + public void preProcessRequest(DelegateExecution execution) { + + initProcessVariables(execution) + + try { + def xml = execution.getVariable("DoDeleteVfModuleRequest") + String vnfId = "" + String vfModuleId = "" + + if (xml == null || xml.isEmpty()) { + // Building Block-type request + + // Set mso-request-id to request-id for VNF Adapter interface + String requestId = execution.getVariable("requestId") + execution.setVariable("mso-request-id", requestId) + + String cloudConfiguration = execution.getVariable("cloudConfiguration") + String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo") + String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId") + execution.setVariable("tenantId", tenantId) + String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId") + execution.setVariable("cloudSiteId", cloudSiteId) + // Source is HARDCODED + String source = "VID" + execution.setVariable("source", source) + // SrvInstId is hardcoded to empty + execution.setVariable("srvInstId", "") + // ServiceId is hardcoded to empty + execution.setVariable("serviceId", "") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + vnfId = execution.getVariable("vnfId") + vfModuleId = execution.getVariable("vfModuleId") + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId) + } + else { + execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId) + } + //vfModuleModelName + def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName") + execution.setVariable("vfModuleModelName", vfModuleModelName) + // retainResources + def retainResources = execution.getVariable("retainResources") + if (retainResources == null) { + retainResources = false + } + execution.setVariable("retainResources", retainResources) + } + else { + + msoLogger.debug("DoDeleteVfModule Request: " + xml) + + msoLogger.debug("input request xml: " + xml) + + vnfId = utils.getNodeText(xml,"vnf-id") + execution.setVariable("vnfId", vnfId) + vfModuleId = utils.getNodeText(xml,"vf-module-id") + execution.setVariable("vfModuleId", vfModuleId) + def srvInstId = execution.getVariable("mso-service-instance-id") + execution.setVariable("srvInstId", srvInstId) + String requestId = "" + try { + requestId = execution.getVariable("mso-request-id") + } catch (Exception ex) { + requestId = utils.getNodeText(xml, "request-id") + } + execution.setVariable("requestId", requestId) + String source = utils.getNodeText(xml, "source") + execution.setVariable("source", source) + String serviceId = utils.getNodeText(xml, "service-id") + execution.setVariable("serviceId", serviceId) + String tenantId = utils.getNodeText(xml, "tenant-id") + execution.setVariable("tenantId", tenantId) + + String serviceInstanceIdToSdnc = "" + if (xml.contains("service-instance-id")) { + serviceInstanceIdToSdnc = utils.getNodeText(xml, "service-instance-id") + } else { + serviceInstanceIdToSdnc = vfModuleId + } + execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceIdToSdnc) + String vfModuleName = utils.getNodeText(xml, "vf-module-name") + execution.setVariable("vfModuleName", vfModuleName) + String vfModuleModelName = utils.getNodeText(xml, "vf-module-model-name") + execution.setVariable("vfModuleModelName", vfModuleModelName) + String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region") + execution.setVariable("cloudSiteId", cloudSiteId) + } + + // formulate the request for PrepareUpdateAAIVfModule + String request = """<PrepareUpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <orchestration-status>pending-delete</orchestration-status> + </PrepareUpdateAAIVfModuleRequest>""" as String + msoLogger.debug("PrepareUpdateAAIVfModuleRequest :" + request) + msoLogger.debug("UpdateAAIVfModule Request: " + request) + execution.setVariable("PrepareUpdateAAIVfModuleRequest", request) + execution.setVariable("vfModuleFromAAI", null) + }catch(BpmnError b){ + throw b + }catch(Exception e){ + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!") + } + } + + // build a SDNC vnf-topology-operation request for the specified action + // (note: the action passed is expected to be 'changedelete' or 'delete') + public void prepSDNCAdapterRequest(DelegateExecution execution, String action) { + + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("requestId") + "-" + System.currentTimeMillis() + } + + def srvInstId = execution.getVariable("srvInstId") + def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String requestId = execution.getVariable("requestId") + String source = execution.getVariable("source") + String serviceId = execution.getVariable("serviceId") + String vnfId = execution.getVariable("vnfId") + String tenantId = execution.getVariable("tenantId") + String vfModuleId = execution.getVariable("vfModuleId") + String serviceInstanceIdToSdnc = execution.getVariable(Prefix + "serviceInstanceIdToSdnc") + String vfModuleName = execution.getVariable("vfModuleName") + // Get vfModuleName from AAI response if it was not specified on the request + if (vfModuleName == null || vfModuleName.isEmpty()) { + if (execution.getVariable("vfModuleFromAAI") != null) { + VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI") + vfModuleName = vfModuleFromAAI.getElementText("vf-module-name") + } + } + String vfModuleModelName = execution.getVariable("vfModuleModelName") + String cloudSiteId = execution.getVariable("cloudSiteId") + boolean retainResources = execution.getVariable("retainResources") + String requestSubActionString = "" + if (retainResources) { + requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>" + } + String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(vfModuleId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DisconnectVNFRequest</request-action> + ${requestSubActionString} + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceIdToSdnc)}</service-instance-id> + <subscriber-name>notsurewecare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type> + <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name> + <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id> + <generic-vnf-name></generic-vnf-name> + <generic-vnf-type></generic-vnf-type> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncAdapterWorkflowRequest: " + request) + msoLogger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request) + execution.setVariable("sdncAdapterWorkflowRequest", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing VnfAdapterDeleteV1 request + public void prepVNFAdapterRequest(DelegateExecution execution) { + + def requestId = UUID.randomUUID().toString() + def origRequestId = execution.getVariable('requestId') + def srvInstId = execution.getVariable("serviceInstanceId") + def aicCloudRegion = execution.getVariable("cloudSiteId") + def vnfId = execution.getVariable("vnfId") + def vfModuleId = execution.getVariable("vfModuleId") + def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId') + def tenantId = execution.getVariable("tenantId") + def messageId = execution.getVariable('requestId') + '-' + + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String request = """ + <deleteVfModuleRequest> + <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteVfModuleRequest> + """ as String + + msoLogger.debug("vnfAdapterRestV1Request: " + request) + msoLogger.debug("deleteVfModuleRequest: " + request) + execution.setVariable("vnfAdapterRestV1Request", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing UpdateAAIVfModuleRequest request + public void prepUpdateAAIVfModule(DelegateExecution execution) { + + def vnfId = execution.getVariable("vnfId") + def vfModuleId = execution.getVariable("vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<UpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <heat-stack-id>DELETE</heat-stack-id> + <orchestration-status>deleted</orchestration-status> + </UpdateAAIVfModuleRequest>""" as String + msoLogger.debug("UpdateAAIVfModuleRequest :" + request) + msoLogger.debug("UpdateAAIVfModuleRequest: " + request) + execution.setVariable("UpdateAAIVfModuleRequest", request) + } + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing DeleteAAIVfModuleRequest request + public void prepDeleteAAIVfModule(DelegateExecution execution) { + + + def vnfId = execution.getVariable("vnfId") + def vfModuleId = execution.getVariable("vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<DeleteAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + </DeleteAAIVfModuleRequest>""" as String + msoLogger.debug("DeleteAAIVfModuleRequest :" + request) + msoLogger.debug("DeleteAAIVfModuleRequest: " + request) + execution.setVariable("DeleteAAIVfModuleRequest", request) + } + + // generates a WorkflowException if + // - + public void handleDoDeleteVfModuleFailure(DelegateExecution execution) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + String processKey = getProcessKey(execution); + WorkflowException exception = new WorkflowException(processKey, 5000, + execution.getVariable("DoDVfMod_deleteGenericVnfResponse")) + execution.setVariable("WorkflowException", exception) + } + + public void sdncValidateResponse(DelegateExecution execution, String response){ + + execution.setVariable("prefix",Prefix) + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Successfully Validated SDNC Response") + }else{ + throw new BpmnError("MSOWorkflowException") + } + } + + public void postProcessVNFAdapterRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix",Prefix) + try{ + msoLogger.trace("STARTED postProcessVNFAdapterRequest Process") + + String vnfResponse = execution.getVariable("DoDVfMod_doDeleteVfModuleResponse") + msoLogger.debug("VNF Adapter Response is: " + vnfResponse) + msoLogger.debug("deleteVnfAResponse is: \n" + vnfResponse) + + if(vnfResponse != null){ + + if(vnfResponse.contains("deleteVfModuleResponse")){ + msoLogger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.") + execution.setVariable("DoDVfMod_vnfVfModuleDeleteCompleted", true) + + // Parse vnfOutputs for contrail network polcy FQDNs + if (vnfResponse.contains("vfModuleOutputs")) { + def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs") + InputSource source = new InputSource(new StringReader(vfModuleOutputsXml)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setNamespaceAware(true) + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document outputsXml = docBuilder.parse(source) + + NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry") + List contrailNetworkPolicyFqdnList = [] + for (int i = 0; i< entries.getLength(); i++) { + Node node = entries.item(i) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element element = (Element) node + String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent() + if (key.endsWith("contrail_network_policy_fqdn")) { + String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn) + contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn) + } + else if (key.equals("oam_management_v4_address")) { + String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address) + execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address) + } + else if (key.equals("oam_management_v6_address")) { + String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent() + msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address) + execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address) + } + + } + } + if (!contrailNetworkPolicyFqdnList.isEmpty()) { + msoLogger.debug("Setting the fqdn list") + execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList) + } + } + }else{ + msoLogger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error") + } + }else{ + msoLogger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter") + } + + }catch(BpmnError b){ + throw b + }catch(Exception e){ + msoLogger.debug("Internal Error Occured in PostProcess Method") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method") + } + msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process") + } + + public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI ") + + try { + // get variables + List fqdnList = execution.getVariable("DoDVfMod_contrailNetworkPolicyFqdnList") + if (fqdnList == null) { + msoLogger.debug("No network policies to delete") + return + } + int fqdnCount = fqdnList.size() + + execution.setVariable("DoDVfMod_networkPolicyFqdnCount", fqdnCount) + msoLogger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + if (fqdnCount > 0) { + // AII loop call over contrail network policy fqdn list + for (i in 0..fqdnCount-1) { + + int counting = i+1 + String fqdn = fqdnList[i] + + // Query AAI for this network policy FQDN + + String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8") + msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest) + msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest) + int returnCode = response.getStatusCode() + execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (isOneOf(returnCode, 200, 201)) { + msoLogger.debug("The return code is: " + returnCode) + // This network policy FQDN exists in AAI - need to delete it now + msoLogger.debug(aaiResponseAsString) + execution.setVariable("DoDVfMod_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString) + msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + // Retrieve the network policy id for this FQDN + def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id") + msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId) + + // Retrieve the resource version for this network policy + def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version") + msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion) + + String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") + + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8") + msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest) + msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest) + + msoLogger.debug("invoking DELETE call to AAI") + msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest) + APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest) + int returnCodeDel = responseDel.getStatusCode() + execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", returnCodeDel) + msoLogger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel) + + if (isOneOf(returnCodeDel, 200, 201, 204)) { + msoLogger.debug("The return code from deleting network policy is: " + returnCodeDel) + // This network policy was deleted from AAI successfully + msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ") + + } else { + // aai all errors + String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel + msoLogger.debug(delErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage) + } + } else if (returnCode == 404) { + // This network policy FQDN is not in AAI. No need to delete. + msoLogger.debug("The return code is: " + returnCode) + msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn) + msoLogger.debug("Network policy FQDN is not in AAI") + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + + + + } // end loop + + + } else { + msoLogger.debug("No contrail network policies to query/create") + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('vnfId') + def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address') + def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address') + def ipv4OamAddressElement = '' + def managementV6AddressElement = '' + + if (oamManagementV4Address != null) { + ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>' + } + + if (oamManagementV6Address != null) { + managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>' + } + + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + ${ipv4OamAddressElement} + ${managementV6AddressElement} + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + /** + * Using the vnfId and vfModuleId provided in the inputs, + * query AAI to get the corresponding VF Module info. + * A 200 response is expected with the VF Module info in the response body, + * Will determine VF Module's orchestration status if one exists + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModuleForStatus(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + execution.setVariable(Prefix + 'orchestrationStatus', '') + + try { + def vnfId = execution.getVariable('vnfId') + def vfModuleId = execution.getVariable('vfModuleId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + + "/vf-modules/vf-module/" + UriUtils.encode(vfModuleId, "UTF-8") + msoLogger.debug("AAI endPoint: " + endPoint) + + try { + RESTConfig config = new RESTConfig(endPoint); + def responseData = '' + def aaiRequestId = UUID.randomUUID().toString() + RESTClient client = new RESTClient(config). + addHeader('X-TransactionId', aaiRequestId). + addHeader('X-FromAppId', 'MSO'). + addHeader('Content-Type', 'application/xml'). + addHeader('Accept','application/xml'); + msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'') + APIResponse response = client.httpGet() + msoLogger.debug("createVfModule - invoking httpGet() to AAI") + + responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + msoLogger.debug("deleteVfModule - queryAAIVfModule Response: " + responseData) + msoLogger.debug("deleteVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode()) + + execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', response.getStatusCode()) + execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + // Retrieve VF Module info and its orchestration status; if not found, do nothing + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find orchestration status') + if (responseData != null) { + def vfModuleText = utils.getNodeXml(responseData, "vf-module") + //def xmlVfModule= new XmlSlurper().parseText(vfModuleText) + def orchestrationStatus = utils.getNodeText(vfModuleText, "orchestration-status") + execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus) + msoLogger.debug("Received orchestration status from A&AI: " + orchestrationStatus) + + } + } + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage()) + } + } + + + + + +}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy new file mode 100644 index 0000000000..1024fc57da --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy @@ -0,0 +1,609 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.* + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VfModule +import org.onap.so.bpmn.common.scripts.VfModuleBase +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.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +public class DoDeleteVfModuleFromVnf extends VfModuleBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModuleFromVnf.class); + + def Prefix="DDVFMV_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null) + } + + // parse the incoming request + public void preProcessRequest(DelegateExecution execution) { + + initProcessVariables(execution) + + try { + + // Building Block-type request + + // Set mso-request-id to request-id for VNF Adapter interface + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("mso-request-id", requestId) + execution.setVariable("requestId", requestId) + msoLogger.debug("msoRequestId: " + requestId) + String tenantId = execution.getVariable("tenantId") + msoLogger.debug("tenantId: " + tenantId) + String cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("cloudSiteId", cloudSiteId) + msoLogger.debug("cloudSiteId: " + cloudSiteId) + // Source is HARDCODED + String source = "VID" + execution.setVariable("source", source) + // isVidRequest is hardcoded to "true" + execution.setVariable("isVidRequest", "true") + // SrvInstId is hardcoded to empty + execution.setVariable("srvInstId", "") + // ServiceId is hardcoded to empty + execution.setVariable("serviceId", "") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + msoLogger.debug("serviceInstanceId: " + serviceInstanceId) + String vnfId = execution.getVariable("vnfId") + msoLogger.debug("vnfId: " + vnfId) + String vfModuleId = execution.getVariable("vfModuleId") + msoLogger.debug("vfModuleId: " + vfModuleId) + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId) + } + else { + execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId) + } + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null) { + sdncVersion = "1707" + } + execution.setVariable(Prefix + "sdncVersion", sdncVersion) + msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion) + + String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl) + + + + }catch(BpmnError b){ + throw b + }catch(Exception e){ + msoLogger.debug("Exception is: " + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!") + } + } + + public void queryAAIForVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.queryAAIForVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('vnfId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + def aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1" + + msoLogger.debug("DoDeleteVfModuleFromVnf: AAI endPoint : " + endPoint) + + try { + msoLogger.debug("DoDeleteVfModuleFromVnf: - invoking httpGet to AAI") + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint) + + def responseData = response.getResponseBodyAsString() + execution.setVariable('DDVMFV_getVnfResponseCode', response.getStatusCode()) + execution.setVariable('DDVMFV_getVnfResponse', responseData) + + msoLogger.debug("DoDeleteVfModuleFromVnf: AAI Response : " + responseData) + msoLogger.debug("DoDeleteVfModuleFromVnf: AAI ResponseCode : " + response.getStatusCode()) + + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + execution.setVariable('DDVMFV_getVnfResponseCode', 500) + execution.setVariable('DDVFMV_getVnfResponse', 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVfModule(): ' + e.getMessage()) + } + } + + /** + * Validate the VF Module. That is, confirm that a VF Module with the input VF Module ID + * exists in the retrieved Generic VNF. Then, check to make sure that if that VF Module + * is the base VF Module and it's not the only VF Module for this Generic VNF, that we're not + * attempting to delete it. + * + * @param execution The flow's execution instance. + */ + public void validateVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateVfModule(' + + 'execution=' + execution.getId() + + ')' + def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') + msoLogger.trace('Entered ' + method) + + try { + def genericVnf = execution.getVariable('DDVMFV_getVnfResponse') + def vnfId = execution.getVariable('_vnfId') + def vfModuleId = execution.getVariable('vfModuleId') + def VfModule vfModule = findVfModule(genericVnf, vfModuleId) + if (vfModule == null) { + def String msg = 'VF Module \'' + vfModuleId + '\' does not exist in Generic VNF \'' + vnfId + '\'' + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, msg) + } else { + + if (isDebugLogEnabled) { + msoLogger.debug('VF Module \'' + vfModuleId + '\': isBaseVfModule=' + vfModule.isBaseVfModule() + ', isOnlyVfModule=' + vfModule.isOnlyVfModule()) + } + if (vfModule.isBaseVfModule() && !vfModule.isOnlyVfModule()) { + def String msg = 'Cannot delete VF Module \'' + vfModuleId + + '\'since it is the base VF Module and it\'s not the only VF Module in Generic VNF \'' + vnfId + '\'' + msoLogger.debug("Received a BAD Response from VNF Adapter for CREATE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error") + } + + def heatStackId = vfModule.getElementText('heat-stack-id') + execution.setVariable('DDVMFV_heatStackId', heatStackId) + msoLogger.debug('VF Module heatStackId retrieved from AAI: ' + heatStackId) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in validateVfModule(): ' + e.getMessage()) + } + } + + + public void preProcessSDNCDeactivateRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCDeactivateRequest ") + + def serviceInstanceId = execution.getVariable("serviceInstanceId") + + try{ + //Build SDNC Request + + String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate") + + deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest) + execution.setVariable("DDVMFV_deactivateSDNCRequest", deactivateSDNCRequest) + msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest ") + } + + public void preProcessSDNCUnassignRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process ") + try{ + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign") + + execution.setVariable("DDVMFV_unassignSDNCRequest", unassignSDNCRequest) + msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCUnassignRequest Process ") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def serviceId = execution.getVariable("serviceId") + def serviceInstanceId = execution.getVariable("serviceInstanceId") + def vfModuleId = execution.getVariable("vfModuleId") + def source = execution.getVariable("source") + def vnfId = execution.getVariable("vnfId") + + def sdncVersion = execution.getVariable(Prefix + "sdncVersion") + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteVfModuleInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id/> + <subscription-service-type/> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id/> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type/> + </vnf-information> + <vf-module-information> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + </vf-module-information> + <vf-module-request-input/> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + msoLogger.debug("SDNCResponse: " + response) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("COMPLETED ValidateSDNCResponse Process") + } + + + // parse the incoming DELETE_VF_MODULE request + // and formulate the outgoing VnfAdapterDeleteV1 request + public void prepVNFAdapterRequest(DelegateExecution execution) { + + def requestId = UUID.randomUUID().toString() + def origRequestId = execution.getVariable('requestId') + def srvInstId = execution.getVariable("serviceInstanceId") + def aicCloudRegion = execution.getVariable("cloudSiteId") + def vnfId = execution.getVariable("vnfId") + def vfModuleId = execution.getVariable("vfModuleId") + def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId') + def tenantId = execution.getVariable("tenantId") + def messageId = execution.getVariable('requestId') + '-' + + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String request = """ + <deleteVfModuleRequest> + <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteVfModuleRequest> + """ as String + + msoLogger.debug("vnfAdapterRestV1Request: " + request) + msoLogger.debug("deleteVfModuleRequest: " + request) + execution.setVariable("vnfAdapterRestV1Request", request) + } + + + // generates a WorkflowException if + // - + public void handleDoDeleteVfModuleFailure(DelegateExecution execution) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DDVFMV_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + String processKey = getProcessKey(execution); + WorkflowException exception = new WorkflowException(processKey, 5000, + execution.getVariable("DDVFMV_deleteGenericVnfResponse")) + execution.setVariable("WorkflowException", exception) + } + + public void postProcessVNFAdapterRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix",Prefix) + try{ + msoLogger.trace("STARTED postProcessVNFAdapterRequest Process") + + String vnfResponse = execution.getVariable("DDVMFV_doDeleteVfModuleResponse") + msoLogger.debug("VNF Adapter Response is: " + vnfResponse) + msoLogger.debug("deleteVnfAResponse is: \n" + vnfResponse) + + if(vnfResponse != null){ + + if(vnfResponse.contains("deleteVfModuleResponse")){ + msoLogger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.") + execution.setVariable("DDVFMV_vnfVfModuleDeleteCompleted", true) + + // Parse vnfOutputs for contrail network polcy FQDNs + def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs") + if(!isBlank(vfModuleOutputsXml)) { + vfModuleOutputsXml = utils.removeXmlNamespaces(vfModuleOutputsXml) + List contrailNetworkPolicyFqdnList = [] + for(Node node: utils.getMultNodeObjects(vfModuleOutputsXml, "entry")) { + String key = utils.getChildNodeText(node, "key") + if(key == null) { + + } else if (key.endsWith("contrail_network_policy_fqdn")) { + String contrailNetworkPolicyFqdn = utils.getChildNodeText(node, "value") + msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn) + contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn) + } + else if (key.equals("oam_management_v4_address")) { + String oamManagementV4Address = utils.getChildNodeText(node, "value") + msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address) + execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address) + } + else if (key.equals("oam_management_v6_address")) { + String oamManagementV6Address = utils.getChildNodeText(node, "value") + msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address) + execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address) + } + } + if (!contrailNetworkPolicyFqdnList.isEmpty()) { + msoLogger.debug("Setting the fqdn list") + execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList) + } + } + }else{ + msoLogger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error") + } + }else{ + msoLogger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter") + } + + }catch(BpmnError b){ + throw b + }catch(Exception e){ + msoLogger.debug("Internal Error Occured in PostProcess Method") + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method") + } + msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process") + } + + public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI ") + + try { + // get variables + List fqdnList = execution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList") + if (fqdnList == null) { + msoLogger.debug("No network policies to delete") + return + } + int fqdnCount = fqdnList.size() + + execution.setVariable("DDVFMV_networkPolicyFqdnCount", fqdnCount) + msoLogger.debug("DDVFMV_networkPolicyFqdnCount - " + fqdnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + if (fqdnCount > 0) { + // AII loop call over contrail network policy fqdn list + for (i in 0..fqdnCount-1) { + + int counting = i+1 + String fqdn = fqdnList[i] + + // Query AAI for this network policy FQDN + + String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8") + msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest) + + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest) + int returnCode = response.getStatusCode() + execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (isOneOf(returnCode, 200, 201)) { + msoLogger.debug("The return code is: " + returnCode) + // This network policy FQDN exists in AAI - need to delete it now + msoLogger.debug(aaiResponseAsString) + execution.setVariable("DDVFMV_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString) + msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + // Retrieve the network policy id for this FQDN + def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id") + msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId) + + // Retrieve the resource version for this network policy + def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version") + msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion) + + String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") + + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8") + msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest) + + msoLogger.debug("invoking DELETE call to AAI") + msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest) + APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest) + int returnCodeDel = responseDel.getStatusCode() + execution.setVariable("DDVFMV_aaiDeleteNetworkPolicyReturnCode", returnCodeDel) + msoLogger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel) + + if (isOneOf(returnCodeDel, 200, 201, 204)) { + msoLogger.debug("The return code from deleting network policy is: " + returnCodeDel) + // This network policy was deleted from AAI successfully + msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ") + + } else { + // aai all errors + String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel + msoLogger.debug(delErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage) + } + } else if (returnCode == 404) { + // This network policy FQDN is not in AAI. No need to delete. + msoLogger.debug("The return code is: " + returnCode) + msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn) + msoLogger.debug("Network policy FQDN is not in AAI") + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + + + + } // end loop + + + } else { + msoLogger.debug("No contrail network policies to query/create") + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + // and formulate the outgoing DeleteAAIVfModuleRequest request + public void prepDeleteAAIVfModule(DelegateExecution execution) { + + + def vnfId = execution.getVariable("vnfId") + def vfModuleId = execution.getVariable("vfModuleId") + // formulate the request for UpdateAAIVfModule + String request = """<DeleteAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + </DeleteAAIVfModuleRequest>""" as String + msoLogger.debug("DeleteAAIVfModuleRequest :" + request) + + execution.setVariable("DeleteAAIVfModuleRequest", request) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy new file mode 100644 index 0000000000..b1cef477be --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy @@ -0,0 +1,355 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.core.UrnPropertiesReader; +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModuleVolumeV2.class); + + String prefix="DDVMV_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + XmlParser xmlParser = new XmlParser() + JsonUtils jsonUtil = new JsonUtils() + + @Override + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + preProcessRequest(execution, isDebugEnabled) + } + + /** + * Set default variable values + * @param execution + * @param isDebugLogEnabled + */ + public void preProcessRequest (DelegateExecution execution, isDebugEnabled) { + + //Input: + // msoRequestId + // isDebugLogEnabled + // failIfNotFound (Optional) + // serviceInstanceId (Optional) + // vnfId (Optional) + // volumeGroupId + // vfModuleModelInfo (Optional) + // lcpCloudRegionId (Optional) @TODO: this is actually required + // tenantId (Optional) @TODO: this is actually required + // cloudConfiguration @TODO: temporary solution? this contains lcpCloudregion and tenantId + // + //Output: + // workflowException @TODO: actual variable name is WorkflowException + // rolledBack + // wasDeleted + + execution.setVariable('prefix', prefix) + execution.setVariable('wasDeleted', 'false') + + def tenantId = execution.getVariable("tenantId") + def cloudSiteId = execution.getVariable("lcpCloudRegionId") + + // if tenantId or lcpCloudregionId is not passed, get it from cloudRegionConfiguration variable + if(!tenantId || !cloudSiteId) { + def cloudConfiguration = execution.getVariable("cloudConfiguration") + msoLogger.debug("Using cloudConfiguration variable to get tenantId and lcpCloudRegionId - " + cloudConfiguration) + tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId") + execution.setVariable("tenantId", tenantId) + cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId") + execution.setVariable("lcpCloudRegionId", cloudSiteId) + } + } + + + /** + * Set out 'wasDeleted' variable to 'true' + * @param execution + * @param isDebugLogEnabled + */ + public void postProcess(DelegateExecution execution, isDebugLogEnabled) { + execution.setVariable('wasDeleted', 'true') + } + + + /** + * Query and set cloud region to use for AAI calls + * Output variables: prefix+'aicCloudRegion', prefix+'cloudRegion' + * @param execution + * @param isDebugEnabled + */ + public void callRESTQueryAAICloudRegion(DelegateExecution execution, isDebugEnabled) { + + String cloudRegion = execution.getVariable('lcpCloudRegionId') + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + msoLogger.debug(queryCloudRegionRequest) + msoLogger.debug("AAI query cloud region URI - " + queryCloudRegionRequest) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + + if ((cloudRegion != "ERROR")) { + if(execution.getVariable(prefix+"queryCloudRegionReturnCode") == "404") { + execution.setVariable(prefix+"aicCloudRegion", "AAIAIC25") + } + else{ + execution.setVariable(prefix+"aicCloudRegion", cloudRegion) + } + } + else { + msoLogger.debug("AAI Query Cloud Region Unsuccessful.") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode")) + } + } + + + /** + * Query AAI Volume Group + * Output variables: prefix+'queryAAIVolGrpResponse'; prefix+'volumeGroupHeatStackId' + * @param execution + * @param isDebugLogEnabled + */ + public void callRESTQueryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) { + + def tenantId = execution.getVariable('tenantId') + def volumeGroupId = execution.getVariable('volumeGroupId') + if(volumeGroupId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, 'volumeGroupId is not provided in the request') + throw new Exception('volume-group-id is not provided in the request') + } + String cloudRegion = execution.getVariable(prefix+'aicCloudRegion') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8") + + msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest) + msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query volume group by id return code: " + returnCode) + msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString) + msoLogger.debug('AAI query volume group by id return code: ' + returnCode) + msoLogger.debug('AAI query volume group by id response: ' + aaiResponseAsString) + + execution.setVariable(prefix+"queryAAIVolGrpResponse", aaiResponseAsString) + + if (returnCode=='200' || returnCode == '204') { + + def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id') + execution.setVariable(prefix+'volumeGroupHeatStackId', heatStackId) + + msoLogger.debug('Heat stack id from AAI response: ' + heatStackId) + + if(hasVfModuleRelationship(aaiResponseAsString)){ + msoLogger.debug('Volume Group ' + volumeGroupId + ' currently in use') + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.") + } + + def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString) + msoLogger.debug('Tenant ID from AAI response: ' + volumeGroupTenantId) + + if (volumeGroupTenantId == null) { + msoLogger.debug("Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}") + } + + if (volumeGroupTenantId != tenantId) { + def String errorMessage = 'TenantId ' + tenantId + ' in incoming request does not match Tenant Id ' + volumeGroupTenantId + ' retrieved from AAI for Volume Group Id ' + volumeGroupId + msoLogger.debug("Error in DeleteVfModuleVolume: " + errorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, errorMessage) + } + msoLogger.debug('Received Tenant Id ' + volumeGroupTenantId + ' from AAI for Volume Group with Volume Group Id ' + volumeGroupId ) + } + else { + if (returnCode=='404') { + msoLogger.debug("Volume Group ${volumeGroupId} not found in AAI") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} not found in AAI. Response code: 404") + } + else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + /** + * Format VNF Adapter subflow request XML + * Variables: prefix+'deleteVnfARequest' + * @param execution + * @param isDebugLogEnabled + */ + public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) { + def cloudRegion = execution.getVariable(prefix+'aicCloudRegion') + def tenantId = execution.getVariable('tenantId') // input parameter (optional) - see preProcessRequest + def volumeGroupId = execution.getVariable('volumeGroupId') // input parameter (required) + def volumeGroupHeatStackId = execution.getVariable(prefix+'volumeGroupHeatStackId') // from AAI query volume group + def requestId = execution.getVariable('msoRequestId') // input parameter (required) + def serviceId = execution.getVariable('serviceInstanceId') // imput parameter (optional) + + def messageId = UUID.randomUUID().toString() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String vnfAdapterRestRequest = """ + <deleteVolumeGroupRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </deleteVolumeGroupRequest> + """ + vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest) + execution.setVariable(prefix+'deleteVnfARequest', vnfAdapterRestRequest) + msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest) + } + + + /** + * Delete volume group in AAI + * @param execution + * @param isDebugEnabled + */ + public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) { + + // get variables + String queryAAIVolGrpIdResponse = execution.getVariable(prefix+"queryAAIVolGrpResponse") + String groupId = utils.getNodeText(queryAAIVolGrpIdResponse, "volume-group-id") + String resourceVersion = utils.getNodeText(queryAAIVolGrpIdResponse, "resource-version") + + String messageId = UUID.randomUUID().toString() + String cloudRegion = execution.getVariable(prefix+'aicCloudRegion') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(groupId, "UTF-8") + + if(resourceVersion !=null){ + deleteAAIVolumeGrpIdRequest = deleteAAIVolumeGrpIdRequest +'?resource-version=' + UriUtils.encode(resourceVersion, 'UTF-8') + } + + msoLogger.debug('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest) + msoLogger.debug("Delete AAI volume group : " + deleteAAIVolumeGrpIdRequest) + + APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI delete volume group return code: " + returnCode) + msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString) + msoLogger.debug("AAI delete volume group return code: " + returnCode) + msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + if (returnCode=='200' || (returnCode == '204')) { + msoLogger.debug("Volume group $groupId deleted.") + } else { + if (returnCode=='404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $groupId not found for delete in AAI Response code: 404") + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + + /** + * Check if volume group has a relationship to vf-module + * @param volumeGroupXml + * @return + */ + private boolean hasVfModuleRelationship(String volumeGroupXml) { + def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml) + def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list') + if (relationshipList != null) { + def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship') + for (Node relationship in relationships) { + def Node relatedTo = utils.getChildNode(relationship, 'related-to') + if ((relatedTo != null) && (relatedTo.text().equals('vf-module'))) { + def Node relatedLink = utils.getChildNode(relationship, 'related-link') + if (relatedLink !=null && relatedLink.text() != null){ + return true + } + } + } + } + return false + } + + + /** + * Extract the Tenant Id from the Volume Group information returned by AAI. + * @param volumeGroupXml Volume Group XML returned by AAI. + * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if + * the Tenant Id is missing or could not otherwise be extracted. + */ + private String getTenantIdFromVolumeGroup(String volumeGroupXml) { + def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml) + def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list') + if (relationshipList != null) { + def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship') + for (Node relationship in relationships) { + def Node relatedTo = utils.getChildNode(relationship, 'related-to') + if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) { + def NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data') + for (Node relationshipData in relationshipDataList) { + def Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key') + if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) { + def Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value') + if (relationshipValue != null) { + return relationshipValue.text() + } + } + } + } + } + } + return null + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy new file mode 100644 index 0000000000..699e9bf40a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy @@ -0,0 +1,161 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 javax.xml.parsers.DocumentBuilder +import javax.xml.parsers.DocumentBuilderFactory + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.AAIResourcesClient +import org.onap.so.client.aai.AAIObjectType +import org.onap.so.client.aai.entities.uri.AAIResourceUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.w3c.dom.Document +import org.w3c.dom.Element +import org.w3c.dom.Node +import org.w3c.dom.NodeList +import org.xml.sax.InputSource + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This class supports the DoDeleteVnf subFlow + * with the Deletion of a generic vnf for + * infrastructure. + * + */ +class DoDeleteVnf extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVnf.class); + + String Prefix="DoDVNF_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoDeleteVnf PreProcessRequest Process") + + execution.setVariable("DoDVNF_SuccessIndicator", false) + execution.setVariable("DoDVNF_vnfInUse", false) + + try{ + // Get Variables + + String vnfId = execution.getVariable("vnfId") + execution.setVariable("DoDVNF_vnfId", vnfId) + msoLogger.debug("Incoming Vnf(Instance) Id is: " + vnfId) + + // Setting for sub flow calls + execution.setVariable("DoDVNF_type", "generic-vnf") + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoDeleteVnf PreProcessRequest method!" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoDeleteVnf PreProcessRequest Process ") + } + + + public void processGetVnfResponse(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoDeleteVnf processGetVnfResponse Process ") + try { + String vnf = execution.getVariable("DoDVNF_genericVnf") + String resourceVersion = utils.getNodeText(vnf, "resource-version") + execution.setVariable("DoDVNF_resourceVersion", resourceVersion) + + if(utils.nodeExists(vnf, "relationship")){ + InputSource source = new InputSource(new StringReader(vnf)); + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder() + Document vnfXml = docBuilder.parse(source) + + NodeList nodeList = vnfXml.getElementsByTagName("relationship") + for (int x = 0; x < nodeList.getLength(); x++) { + Node node = nodeList.item(x) + if (node.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) node + def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() + if(e.equals("volume-group") || e.equals("l3-network")){ + msoLogger.debug("Generic Vnf still has relationship to OpenStack.") + execution.setVariable("DoDVNF_vnfInUse", true) + }else{ + msoLogger.debug("Relationship NOT related to OpenStack") + } + } + } + } + + if(utils.nodeExists(vnf, "vf-module")){ + execution.setVariable("DoDVNF_vnfInUse", true) + msoLogger.debug("Generic Vnf still has vf-modules.") + } + + + } catch (Exception ex) { + msoLogger.debug("Error Occured in DoDeleteVnf processGetVnfResponse Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf processGetVnfResponse Process") + + } + msoLogger.trace("COMPLETED DoDeleteVnf processGetVnfResponse Process ") + } + + /** + * Deletes the generic vnf from aai + */ + public void deleteVnf(DelegateExecution execution) { + msoLogger.trace("STARTED deleteVnf") + try { + String vnfId = execution.getVariable("DoDVNF_vnfId") + + AAIResourcesClient resourceClient = new AAIResourcesClient(); + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + resourceClient.delete(uri) + + msoLogger.trace("COMPLETED deleteVnf") + } catch (Exception ex) { + msoLogger.debug("Error Occured in DoDeleteVnf deleteVnf Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf deleteVnf Process") + } + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy new file mode 100644 index 0000000000..d448dd3e79 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy @@ -0,0 +1,538 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.json.JSONArray; +import org.json.JSONObject; +import org.onap.so.bpmn.common.scripts.AaiUtil +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.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ModuleResource +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils; + +/** + * This class supports the macro VID Flow + * with the deletion of a generic vnf and related VF modules. + */ +class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVnfAndModules.class); + + String Prefix="DDVAM_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoDeleteVnfAndModules PreProcessRequest Process") + + try{ + // Get Variables + + String cloudConfiguration = execution.getVariable("cloudConfiguration") + msoLogger.debug("Cloud Configuration: " + cloudConfiguration) + + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("requestId", requestId) + execution.setVariable("mso-request-id", requestId) + msoLogger.debug("Incoming Request Id is: " + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfId = execution.getVariable("vnfId") + msoLogger.debug("Incoming Vnf Id is: " + vnfId) + + String source = "VID" + execution.setVariable("DDVAM_source", source) + msoLogger.debug("Incoming Source is: " + source) + + execution.setVariable("DDVAM_isVidRequest", "true") + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null) { + sdncVersion = "1702" + } + execution.setVariable("DDVAM_sdncVersion", sdncVersion) + msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion) + + // Set aLaCarte flag to false + execution.setVariable("aLaCarte", false) + + String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback", execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl) + + + if (!sdncVersion.equals("1702")) { + //String vnfModelInfo = execution.getVariable("vnfModelInfo") + //String serviceModelInfo = execution.getVariable("serviceModelInfo") + + String serviceId = execution.getVariable("productFamilyId") + execution.setVariable("DDVAM_serviceId", serviceId) + msoLogger.debug("Incoming Service Id is: " + serviceId) + + + //String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantId") + //execution.setVariable("DDVAM_modelInvariantId", modelInvariantId) + //msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId) + + //String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelVersionId") + //if (modelVersionId == null) { + // modelVersionId = "" + //} + //execution.setVariable("DDVAM_modelVersionId", modelVersionId) + //msoLogger.debug("Incoming Version Id is: " + modelVersionId) + + //String modelVersion = jsonUtil.getJsonValue(vnfModelInfo, "modelVersion") + //execution.setVariable("DDVAM_modelVersion", modelVersion) + //msoLogger.debug("Incoming Model Version is: " + modelVersion) + + //String modelName = jsonUtil.getJsonValue(vnfModelInfo, "modelName") + //execution.setVariable("DDVAM_modelName", modelName) + //msoLogger.debug("Incoming Model Name is: " + modelName) + + //String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationId") + //if (modelCustomizationId == null) { + // modelCustomizationId = "" + //} + //execution.setVariable("DDVAM_modelCustomizationId", modelCustomizationId) + //msoLogger.debug("Incoming Model Customization Id is: " + modelCustomizationId) + + String cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DDVAM_cloudSiteId", cloudSiteId) + msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId) + + String tenantId = execution.getVariable("tenantId") + execution.setVariable("DDVAM_tenantId", tenantId) + msoLogger.debug("Incoming Tenant Id is: " + tenantId) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + if (globalSubscriberId == null) { + globalSubscriberId = "" + } + execution.setVariable("DDVAM_globalSubscriberId", globalSubscriberId) + msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId) + + } + execution.setVariable("DDVAM_vfModulesFromDecomposition", null) + // Retrieve serviceDecomposition if present + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + if (serviceDecomposition != null) { + msoLogger.debug("Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString()) + List<VnfResource> vnfs = serviceDecomposition.getVnfResources() + msoLogger.debug("Read vnfs") + if (vnfs == null) { + msoLogger.debug("Error - vnfs are empty in serviceDecomposition object") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in preProcessRequest - vnfs are empty") + } + VnfResource vnf = vnfs[0] + + if (vnf == null) { + msoLogger.debug("Error - vnf is empty in serviceDecomposition object") + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in preProcessRequest - vnf is empty") + } + + List<ModuleResource> vfModules = vnf.getAllVfModuleObjects() + + execution.setVariable("DDVAM_vfModulesFromDecomposition", vfModules) + } + + execution.setVariable("DDVAM_moduleCount", 0) + execution.setVariable("DDVAM_nextModule", 0) + + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoDeleteVnfAndModules PreProcessRequest Process ") + } + + + + public void preProcessAddOnModule(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessAddOnModule ") + + try { + JSONArray addOnModules = (JSONArray) execution.getVariable("addOnModules") + int addOnIndex = (int) execution.getVariable("addOnModulesDeployed") + + JSONObject addOnModule = addOnModules[addOnIndex] + + def newVfModuleId = UUID.randomUUID().toString() + execution.setVariable("addOnVfModuleId", newVfModuleId) + + execution.setVariable("instancesOfThisModelDeployed", 0) + + JSONObject addOnVfModuleModelInfoObject = jsonUtil.getJsonValueForKey(addOnModule, "modelInfo") + String addOnVfModuleModelInfo = addOnVfModuleModelInfoObject.toString() + execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo) + String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel") + execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel) + String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantUuid") + execution.setVariable("addOnPersonaModelId", addOnPersonaModelId) + String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount") + execution.setVariable("initialCount", addOnInitialCount) + + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCAssignRequest ") + } + + /** + * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info. + * A 200 response is expected with the VNF info in the response body. Will find out the base module info. + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModule(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.queryAAIVfModule(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('vnfId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1" + msoLogger.debug("AAI endPoint: " + endPoint) + + try { + msoLogger.debug("createVfModule - invoking httpGet() to AAI") + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint) + + def responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData) + msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode()) + + execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode()) + execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + //Map<String, String>[] vfModules = new HashMap<String,String>[] + List<ModuleResource> vfModulesFromDecomposition = execution.getVariable("DDVAM_vfModulesFromDecomposition") + def vfModulesList = new ArrayList<Map<String,String>>() + def vfModules = null + def vfModuleBaseEntry = null + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find base module info') + if (responseData != null) { + def vfModulesText = utils.getNodeXml(responseData, "vf-modules") + msoLogger.debug("vModulesText: " + vfModulesText) + if (vfModulesText != null && !vfModulesText.trim().isEmpty()) { + def xmlVfModules= new XmlSlurper().parseText(vfModulesText) + vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"} + execution.setVariable("DDVAM_moduleCount", vfModules.size()) + int vfModulesSize = 0 + ModelInfo vfModuleModelInfo = null + for (i in 0..vfModules.size()-1) { + def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i]) + + Map<String, String> vfModuleEntry = new HashMap<String, String>() + def vfModuleId = utils.getNodeText(vfModuleXml, "vf-module-id") + vfModuleEntry.put("vfModuleId", vfModuleId) + def vfModuleName = utils.getNodeText(vfModuleXml, "vf-module-name") + vfModuleEntry.put("vfModuleName", vfModuleName) + + // Find the model for this vf module in decomposition if specified + if (vfModulesFromDecomposition != null) { + msoLogger.debug("vfModulesFromDecomposition is not null") + def vfModuleUuid = utils.getNodeText(vfModuleXml, "model-version-id") + if (vfModuleUuid == null) { + vfModuleUuid = utils.getNodeText(vfModuleXml, "persona-model-version") + } + msoLogger.debug("vfModule UUID is: " + vfModuleUuid) + for (j in 0..vfModulesFromDecomposition.size()-1) { + ModuleResource mr = vfModulesFromDecomposition[j] + if (mr.getModelInfo().getModelUuid() == vfModuleUuid) { + msoLogger.debug("Found modelInfo") + vfModuleModelInfo = mr.getModelInfo() + break + } + + } + } + if (vfModuleModelInfo != null) { + String vfModuleModelInfoString = vfModuleModelInfo.toString() + def vfModuleModelInfoValue = jsonUtil.getJsonValue(vfModuleModelInfoString, "modelInfo") + vfModuleEntry.put("vfModuleModelInfo", vfModuleModelInfoValue) + } + else { + vfModuleEntry.put("vfModuleModelInfo", null) + } + + + def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module") + // Save base vf module for last + if (isBaseVfModule == "true") { + vfModuleBaseEntry = vfModuleEntry + } + else { + vfModulesList.add(vfModuleEntry) + } + } + if (vfModuleBaseEntry != null) { + vfModulesList.add(vfModuleBaseEntry) + } + } + + } + } + execution.setVariable("DDVAM_vfModules", vfModulesList) + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage()) + } + } + + public void prepareNextModuleToDelete(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED prepareNextModuleToDelete ") + + try { + int i = execution.getVariable("DDVAM_nextModule") + def vfModules = execution.getVariable("DDVAM_vfModules") + def vfModule = vfModules[i] + + def vfModuleId = vfModule.get("vfModuleId") + execution.setVariable("DDVAM_vfModuleId", vfModuleId) + + def vfModuleName = vfModule.get("vfModuleName") + execution.setVariable("DDVAM_vfModuleName", vfModuleName) + + def vfModuleModelInfo = vfModule.get("vfModuleModelInfo") + msoLogger.debug("vfModuleModelInfo for module delete: " + vfModuleModelInfo) + execution.setVariable("DDVAM_vfModuleModelInfo", vfModuleModelInfo) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToDelete Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED prepareNextModuleToDelete ") + } + + public void preProcessSDNCDeactivateRequest(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCDeactivateRequest ") + def vnfId = execution.getVariable("vnfId") + def serviceInstanceId = execution.getVariable("serviceInstanceId") + + try{ + //Build SDNC Request + + String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate") + + deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest) + execution.setVariable("DDVAM_deactivateSDNCRequest", deactivateSDNCRequest) + msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest ") + } + + public void preProcessSDNCUnassignRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process ") + try{ + String vnfId = execution.getVariable("vnfId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign") + + execution.setVariable("DDVAM_unassignSDNCRequest", unassignSDNCRequest) + msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest) + + }catch(Exception e){ + msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessSDNCUnassignRequest Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preProcessSDNCUnassignRequest Process ") + } + + public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){ + + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("msoRequestId") + "-" + System.currentTimeMillis() + } + def callbackURL = execution.getVariable("sdncCallbackUrl") + def requestId = execution.getVariable("msoRequestId") + def serviceId = execution.getVariable("DDVAM_serviceId") + def tenantId = execution.getVariable("DDVAM_tenantId") + def source = execution.getVariable("DDVAM_source") + def vnfId = execution.getVariable("vnfId") + def serviceInstanceId = execution.getVariable("serviceInstanceId") + def cloudSiteId = execution.getVariable("DDVAM_cloudSiteId") + def modelCustomizationId = execution.getVariable("DDVAM_modelCustomizationId") + //def serviceModelInfo = execution.getVariable("serviceModelInfo") + //def vnfModelInfo = execution.getVariable("vnfModelInfo") + //String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo) + //String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo) + def globalSubscriberId = execution.getVariable("DDVAM_globalSubscriberId") + def sdncVersion = execution.getVariable("DDVAM_sdncVersion") + + String sdncRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteVnfInstance</request-action> + <source>${MsoUtils.xmlEscape(source)}</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id/> + <subscription-service-type/> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <global-customer-id/> + </service-information> + <vnf-information> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vnf-type/> + </vnf-information> + <vnf-request-input> + <vnf-name/> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region> + </vnf-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest: " + sdncRequest) + return sdncRequest + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + msoLogger.debug("SDNCResponse: " + response) + + String sdncResponse = response + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("COMPLETED ValidateSDNCResponse Process") + } + + + + + + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy new file mode 100644 index 0000000000..41d9384f52 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 CMCC All rights reserved. * + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray; +import org.json.JSONObject; +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.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils; + + + +/** + * This groovy class supports the <class>DoScaleServiceInstance.bpmn</class> process. + * + */ +public class DoScaleE2EServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoScaleE2EServiceInstance.class); + + + String Prefix = "DCRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest(DelegateExecution execution) { + String msg = "" + msoLogger.trace("preProcessRequest ") + + try { + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("prefix", Prefix) + + //Inputs + String globalSubscriberId = execution.getVariable("globalSubscriberId") + + String serviceType = execution.getVariable("serviceType") + String serviceInstanceName = execution.getVariable("serviceInstanceName") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + execution.setVariable("serviceType", serviceType) + + String resourceTemplateUUIDs = "" + String scaleNsRequest = execution.getVariable("bpmnRequest") + JSONObject jsonObject = new JSONObject(scaleNsRequest).getJSONObject("service") + JSONArray jsonArray = jsonObject.getJSONArray("resources") + + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject reqBodyJsonObj = jsonArray.getJSONObject(i) + String nsInstanceId = reqBodyJsonObj.getString("resourceInstanceId") + resourceTemplateUUIDs = resourceTemplateUUIDs + nsInstanceId + ":" + } + + execution.setVariable("resourceTemplateUUIDs", resourceTemplateUUIDs) + + if (serviceInstanceName == null) { + execution.setVariable("serviceInstanceName", "") + } + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + + public void preInitResourcesOperStatus(DelegateExecution execution){ + msoLogger.trace("STARTED preInitResourcesOperStatus Process ") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = "SCALE" + + // resourceTemplateUUIDs should be created ?? + String resourceTemplateUUIDs = execution.getVariable("resourceTemplateUUIDs") + msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload) + msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy new file mode 100644 index 0000000000..e06e5238c6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy @@ -0,0 +1,332 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 CMCC. All rights reserved. + * ================================================================================ + * 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.DelegateExecution +import org.json.JSONArray +import org.json.JSONObject; + +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.core.json.JsonUtils + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.runtime.Execution +import com.fasterxml.jackson.databind.ObjectMapper + +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.onap.so.rest.APIResponse; + +import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleResource +import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleNsByStepsData +import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleNsData + +import org.onap.so.bpmn.infrastructure.vfcmodel.NSResourceInputParameter +import org.onap.so.bpmn.infrastructure.vfcmodel.NsOperationKey +import org.onap.so.bpmn.infrastructure.vfcmodel.NsScaleParameters +import org.onap.so.bpmn.infrastructure.vfcmodel.NsParameters +import org.onap.so.bpmn.infrastructure.vfcmodel.LocationConstraint +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + + + +/** + * This groovy class supports the <class>DoScaleVFCNetworkServiceInstance.bpmn</class> process. + * flow for VFC Network Service Scale + */ +public class DoScaleVFCNetworkServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoScaleVFCNetworkServiceInstance.class); + + + String host = "http://mso.mso.testlab.openecomp.org:8080" + + String scaleUrl = "/vfc/rest/v1/vfcadapter/ns/{nsInstanceId}/scale" + + String queryJobUrl = "/vfc/rest/v1/vfcadapter/jobs/{jobId}" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + JsonUtils jsonUtil = new JsonUtils() + + /** + * Pre Process the BPMN Flow Request + * Inclouds: + * generate the nsOperationKey + * generate the nsParameters + */ + public void preProcessRequest(DelegateExecution execution) { + msoLogger.trace("preProcessRequest() ") + + List<NSResourceInputParameter> nsRIPList = convertScaleNsReq2NSResInputParamList(execution) + String requestJsonStr = "" + int size = nsRIPList.size() + for (int i = 0; i < size; i++) { + NSResourceInputParameter nsRIP = nsRIPList.get(i) + + if (i == size - 1) { + requestJsonStr += objectToJsonStr(nsRIP) + } else { + requestJsonStr += objectToJsonStr(nsRIP) + "|" + } + } + + execution.setVariable("reqBody", requestJsonStr) + + msoLogger.trace("Exit preProcessRequest ") + } + + /** + * scale NS task + */ + public void scaleNetworkService(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + String saleNsRequest = execution.getVariable("reqBody") + String[] nsReqStr = saleNsRequest.split("\\|") + + for (int i = 0; i < nsReqStr.length; i++) { + JSONObject reqBodyJsonObj = new JSONObject(nsReqStr[i]) + String nsInstanceId = reqBodyJsonObj.getJSONObject("nsScaleParameters").getString("nsInstanceId") + String nodeTemplateUUID = reqBodyJsonObj.getJSONObject("nsOperationKey").getString("nodeTemplateUUID") + reqBodyJsonObj.getJSONObject("nsScaleParameters").remove("nsInstanceId") + String reqBody = reqBodyJsonObj.toString() + + String url = host + scaleUrl.replaceAll("\\{nsInstanceId\\}", nsInstanceId) + + APIResponse apiResponse = postRequest(execution, url, reqBody) + + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + String jobId = "" + if (returnCode == "200" || returnCode == "202") { + jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId") + } + utils.log("INFO", "scaleNetworkService get a ns scale job Id:" + jobId, isDebugEnabled) + execution.setVariable("jobId", jobId) + execution.setVariable("nodeTemplateUUID", nodeTemplateUUID) + + String isScaleFinished = "" + + if(jobId =="" || jobId == null){ + continue + } + // query the requested network service scale status, if finished, then start the next one, otherwise, wait + while (isScaleFinished != "finished" && isScaleFinished != "error"){ + timeDelay() + queryNSProgress(execution) + isScaleFinished = execution.getVariable("operationStatus") + } + } + } + + /** + * query NS task + */ + private void queryNSProgress(DelegateExecution execution) { + String jobId = execution.getVariable("jobId") + String url = host + queryJobUrl.replaceAll("\\{jobId\\}", jobId) + + NsOperationKey nsOperationKey = new NsOperationKey() + // is this net work service ID or E2E service ID? + nsOperationKey.setServiceId(execution.getVariable("serviceId")) + nsOperationKey.setServiceType(execution.getVariable("serviceType")) + nsOperationKey.setGlobalSubscriberId(execution.getVariable("globalSubscriberId")) + nsOperationKey.setNodeTemplateUUID(execution.getVariable("nodeTemplateUUID")) + nsOperationKey.setOperationId(execution.getVariable("operationId")) + String queryReqBody = objectToJsonStr(nsOperationKey) + + APIResponse apiResponse = postRequest(execution,url, queryReqBody) + + String returnCode = apiResponse.getStatusCode() + String aaiResponseAsString = apiResponse.getResponseBodyAsString() + + String operationStatus = "error" + + if (returnCode == "200") { + operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status") + } + + execution.setVariable("operationStatus", operationStatus) + } + + /** + * delay 5 sec + * + */ + private void timeDelay() { + try { + Thread.sleep(5000) + } catch (InterruptedException e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Time Delay exception" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + } + } + + /** + * finish NS task + */ + public void finishNSScale(DelegateExecution execution) { + //no need to do anything util now + System.out.println("Scale finished.") + } + + /** + * post request + * url: the url of the request + * requestBody: the body of the request + */ + private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){ + msoLogger.trace("Started Execute VFC adapter Post Process ") + msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody) + APIResponse apiResponse = null + try{ + RESTConfig config = new RESTConfig(url) + RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk") +// RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk") + apiResponse = client.httpPost(requestBody) + msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) + msoLogger.trace("Completed Execute VF-C adapter Post Process ") + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VFC Post Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + throw new BpmnError("MSOWorkflowException") + } + return apiResponse + } + + /** + * create a Scale Resource object list from a NSScaleRequestJso nString + * This method is for the specific request from Scale Network Service BPMN workflow + * @param nsScaleRequestJsonString , a specific request Json string which conform to ?? class + * @return List < ScaleResource > + */ + private List<ScaleResource> jsonGetNsResourceList(String nsScaleRequestJsonString) { + List<ScaleResource> list = new ArrayList<ScaleResource>() + JSONObject jsonObject = new JSONObject(nsScaleRequestJsonString) + + JSONObject jsonResource = jsonObject.getJSONObject("service") + JSONArray arr = jsonResource.getJSONArray("resources") + + for (int i = 0; i < arr.length(); i++) { + JSONObject tempResource = arr.getJSONObject(i) + ScaleResource resource = new ScaleResource() + resource.setResourceInstanceId(tempResource.getString("resourceInstanceId")) + resource.setScaleType(tempResource.getString("scaleType")) + + JSONObject jsonScaleNsData = tempResource.getJSONObject("scaleNsData") + JSONObject jsonScaleNsByStepData = jsonScaleNsData.getJSONObject("scaleNsByStepsData") + + ScaleNsData scaleNsData = new ScaleNsData() + ScaleNsByStepsData stepsData = new ScaleNsByStepsData() + + stepsData.setAspectId(jsonScaleNsByStepData.getString("aspectId")) + stepsData.setScalingDirection(jsonScaleNsByStepData.getString("scalingDirection")) + stepsData.setNumberOfSteps(Integer.parseInt(jsonScaleNsByStepData.getString("numberOfSteps"))) + + scaleNsData.setScaleNsByStepsData(stepsData) + resource.setScaleNsData(scaleNsData) + list.add(resource) + } + + return list + } + + /** + * Convert a java class to JSON string + * @param obj + * @return + */ + private String objectToJsonStr(Object obj) { + ObjectMapper mapper = new ObjectMapper() + String jsonStr = null + try { + jsonStr = mapper.writeValueAsString(obj) + } catch (IOException ioe) { + System.out.println(ioe.getMessage()) + } + return jsonStr + + } + + /** + * create a NSResourceInputParameter list from a Scale Network request Json string + * @return + */ + private List<NSResourceInputParameter> convertScaleNsReq2NSResInputParamList(DelegateExecution execution) { + String saleNsRequest = execution.getVariable("bpmnRequest") + + //String requestId = execution.getVariable("msoRequestId") + //String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceInstanceName = execution.getVariable("serviceInstanceName") + //String nodeTemplateUUID = execution.getVariable("nodeTemplateUUID") + String serviceType = execution.getVariable("serviceType") + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String operationId = execution.getVariable("operationId") + String serviceId = execution.getVariable("serviceId") + String nsServiceDescription = execution.getVariable("requestDescription") + + String resource = JsonUtils.getJsonValue(saleNsRequest, "service.resources") + + // set nsScaleParameters properties + List<ScaleResource> scaleResourcesList = jsonGetNsResourceList(saleNsRequest) + List<NSResourceInputParameter> nsResourceInputParameterList = new ArrayList<NSResourceInputParameter>() + + for (ScaleResource sr : scaleResourcesList) { + NSResourceInputParameter nsResourceInputParameter = new NSResourceInputParameter() + NsOperationKey nsOperationKey = new NsOperationKey() + NsParameters nsParameters = new NsParameters() + NsScaleParameters nsScaleParameters = new NsScaleParameters() + nsParameters.setLocationConstraints(new ArrayList<LocationConstraint>()) + nsParameters.setAdditionalParamForNs(new HashMap<String, Object>()) + + // set NsOperationKey properties + nsOperationKey.setGlobalSubscriberId(globalSubscriberId) + nsOperationKey.setServiceId(serviceId) + nsOperationKey.setServiceType(serviceType) + // for ns scale the resourceInstanceId is the nodeTemplateUUID + nsOperationKey.setNodeTemplateUUID(sr.getResourceInstanceId()) + nsOperationKey.setOperationId(operationId) + + nsScaleParameters.setScaleType(sr.getScaleType()) + nsScaleParameters.setNsInstanceId(sr.getResourceInstanceId()) + + ScaleNsByStepsData scaleNsByStepsData = new ScaleNsByStepsData() + scaleNsByStepsData.setScalingDirection(sr.getScaleNsData().getScaleNsByStepsData().getScalingDirection()) + scaleNsByStepsData.setNumberOfSteps(sr.getScaleNsData().getScaleNsByStepsData().getNumberOfSteps()) + scaleNsByStepsData.setAspectId(sr.getScaleNsData().getScaleNsByStepsData().getAspectId()) + + List<ScaleNsByStepsData> scaleNsByStepsDataList = new ArrayList<ScaleNsByStepsData>() + scaleNsByStepsDataList.add(scaleNsByStepsData) + nsScaleParameters.setScaleNsByStepsData(scaleNsByStepsDataList) + + nsResourceInputParameter.setNsOperationKey(nsOperationKey) + nsResourceInputParameter.setNsServiceName(serviceInstanceName) + nsResourceInputParameter.setNsServiceDescription(nsServiceDescription) + nsResourceInputParameter.setNsParameters(nsParameters) + nsResourceInputParameter.setNsScaleParameters(nsScaleParameters) + + nsResourceInputParameterList.add(nsResourceInputParameter) + } + return nsResourceInputParameterList + } +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy new file mode 100644 index 0000000000..5fb6a9df9a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy @@ -0,0 +1,451 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.json.JsonUtils +import org.springframework.web.util.UriUtils; + +import groovy.json.* + + +/** + * This groovy class supports the <class>DoUpdateE2EServiceInstance.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - globalSubscriberId + * @param - serviceType + * @param - serviceInstanceId + * @param - serviceInstanceName + * @param - serviceModelInfo + * @param - productFamilyId + * @param - uuiRequest + * @param - serviceDecomposition_Target + * @param - serviceDecomposition_Original + * @param - addResourceList + * @param - delResourceList + * + * Outputs: + * @param - rollbackData (localRB->null) + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * @param - WorkflowException + */ +public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor { + + String Prefix="DUPDSI_" + private static final String DebugFlag = "isDebugEnabled" + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** Enter DoUpdateE2EServiceInstance preProcessRequest *****", isDebugEnabled) + + String msg = "" + + try { + execution.setVariable("prefix", Prefix) + //Inputs + //for AAI GET & PUT & SDNC assignToplology + String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + utils.log("INFO"," ***** globalSubscriberId *****" + globalSubscriberId, isDebugEnabled) + + //for AAI PUT & SDNC assignTopology + String serviceType = execution.getVariable("serviceType") + utils.log("INFO"," ***** serviceType *****" + serviceType, isDebugEnabled) + + //for SDNC assignTopology + String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId + + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + if (isBlank(serviceType)) { + msg = "Input serviceType is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + //Generated in parent for AAI + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)){ + msg = "Input serviceInstanceId is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + String serviceInstanceName = execution.getVariable("serviceInstanceName") + + // user params + String uuiRequest = execution.getVariable("uuiRequest") + + // target model Invariant uuid + String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid") + execution.setVariable("modelInvariantUuid", modelInvariantUuid) + utils.log("INFO", "modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled) + + // target model uuid + String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid") + execution.setVariable("modelUuid", modelUuid) + + utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled) + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO", "======== COMPLETED preProcessRequest Process ======== ", isDebugEnabled) + } + + + public void preInitResourcesOperStatus(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled) + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String resourceTemplateUUIDs = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service updating" + utils.log("INFO", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType, isDebugEnabled) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + List<Resource> resourceList = new ArrayList<String>() + List<Resource> addResourceList = execution.getVariable("addResourceList") + List<Resource> delResourceList = execution.getVariable("delResourceList") + resourceList.addAll(addResourceList) + resourceList.addAll(delResourceList) + for(Resource resource : resourceList){ + resourceTemplateUUIDs = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":" + } + + def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter" + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + utils.log("INFO", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs> + </ns:initResourceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_initResOperStatusRequest", payload) + utils.log("INFO", "Outgoing initResourceOperationStatus: \n" + payload, isDebugEnabled) + utils.logAudit("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing preInitResourcesOperStatus. Exception is:\n" + e, isDebugEnabled) + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage()) + } + utils.log("INFO", "======== COMPLETED preInitResourcesOperStatus Process ======== ", isDebugEnabled) + } + + + public void preProcessForAddResource(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessForAddResource ***** ", isDebugEnabled) + + execution.setVariable("operationType", "create") + + execution.setVariable("hasResourcetoAdd", false) + List<Resource> addResourceList = execution.getVariable("addResourceList") + if(addResourceList != null && !addResourceList.isEmpty()) { + execution.setVariable("hasResourcetoAdd", true) + } + + utils.log("INFO"," *** Exit preProcessForAddResource *** ", isDebugEnabled) + } + + public void postProcessForAddResource(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessForAddResource ***** ", isDebugEnabled) + + execution.setVariable("operationType", "update") + + utils.log("INFO"," *** Exit postProcessForAddResource *** ", isDebugEnabled) + } + + public void preProcessForDeleteResource(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessForDeleteResource ***** ", isDebugEnabled) + + execution.setVariable("operationType", "delete") + + def hasResourcetoDelete = false + List<Resource> delResourceList = execution.getVariable("delResourceList") + if(delResourceList != null && !delResourceList.isEmpty()) { + hasResourcetoDelete = true + } + execution.setVariable("hasResourcetoDelete", hasResourcetoDelete) + + if(hasResourcetoDelete) { + def jsonSlurper = new JsonSlurper() + String serviceRelationShip = execution.getVariable("serviceRelationShip") + List relationShipList = jsonSlurper.parseText(serviceRelationShip) + + //Set the real resource instance id to the decomosed resource list + for(Resource resource: delResourceList){ + //reset the resource instance id , because in the decompose flow ,its a random one. + resource.setResourceId(""); + //match the resource-instance-name and the model name + if (relationShipList != null) { + relationShipList.each { + if(StringUtils.containsIgnoreCase(it.resourceType, resource.getModelInfo().getModelName())){ + resource.setResourceId(it.resourceInstanceId); + } + } + } + } + } + + execution.setVariable("deleteResourceList", delResourceList) + + utils.log("INFO"," *** Exit preProcessForDeleteResource *** ", isDebugEnabled) + } + + public void postProcessForDeleteResource(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessForDeleteResource ***** ", isDebugEnabled) + + execution.setVariable("operationType", "update") + + utils.log("INFO"," *** Exit postProcessForDeleteResource *** ", isDebugEnabled) + } + + public void preProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + } + + public void postProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled) + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + utils.log("INFO","Error getting Service-instance from AAI in postProcessAAIGET", + serviceInstanceName, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + String aaiService = execution.getVariable("GENGS_service") + if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) { + execution.setVariable("serviceInstanceVersion", utils.getNodeText(aaiService, "resource-version")) + utils.log("INFO","Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"), isDebugEnabled) + } + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoUpdateE2EServiceInstance.postProcessAAIGET " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled) + } + + public void preProcessAAIPUT(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO","Entered " + method, isDebugEnabled) + String msg = "" + utils.log("INFO"," ***** preProcessAAIPUT *****", isDebugEnabled) + + + String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion") + //execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion) + + //requestDetails.modelInfo.for AAI PUT servieInstanceData + //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData + String serviceInstanceName = execution.getVariable("serviceInstanceName") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + //aai serviceType and Role can be setted as fixed value now. + String aaiServiceType = "E2E Service" + String aaiServiceRole = "E2E Service" + String modelInvariantUuid = execution.getVariable("modelInvariantUuid") + String modelUuid = execution.getVariable("modelUuid") + + + AaiUtil aaiUriUtil = new AaiUtil(this) + utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled) + String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) + utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled) + String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri) + utils.log("INFO","namespace: " + namespace, isDebugEnabled) + + //update target model to aai + String serviceInstanceData = + """<service-instance xmlns=\"${namespace}\"> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + <service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type> + <service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role> + <resource-version>${MsoUtils.xmlEscape(serviceInstanceVersion)}</resource-version> + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id> + </service-instance>""".trim() + + execution.setVariable("serviceInstanceData", serviceInstanceData) + utils.log("INFO","serviceInstanceData: " + serviceInstanceData, isDebugEnabled) + utils.logAudit(serviceInstanceData) + utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled) + utils.log("INFO", " 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled) + + utils.log("INFO", "Exited " + method, isDebugEnabled) + } + + public void postProcessAAIPUT(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIPUT ***** ", isDebugEnabled) + String msg = "" + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator") + if(!succInAAI){ + utils.log("INFO","Error putting Service-instance in AAI", + serviceInstanceId, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + } + else + { + //start rollback set up + RollbackData rollbackData = new RollbackData() + def disableRollback = execution.getVariable("disableRollback") + rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString()) + rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") + rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId) + rollbackData.put("SERVICEINSTANCE", "serviceType", execution.getVariable("serviceType")) + rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId")) + execution.setVariable("rollbackData", rollbackData) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," *** Exit postProcessAAIPUT *** ", isDebugEnabled) + } + + public void preProcessRollback (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessRollback ***** ", isDebugEnabled) + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + utils.log("INFO", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + utils.log("INFO", "BPMN Error during preProcessRollback", isDebugEnabled) + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + } + utils.log("INFO"," *** Exit preProcessRollback *** ", isDebugEnabled) + } + + public void postProcessRollback (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessRollback ***** ", isDebugEnabled) + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + utils.log("INFO", "Setting prevException to WorkflowException: ", isDebugEnabled) + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + utils.log("INFO", "BPMN Error during postProcessRollback", isDebugEnabled) + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + } + utils.log("INFO"," *** Exit postProcessRollback *** ", isDebugEnabled) + } + + + public void postConfigRequest(execution){ + //now do noting + } + + +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy new file mode 100644 index 0000000000..a2d94baaed --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy @@ -0,0 +1,345 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.logger.MsoLogger + +import groovy.json.* + + +/** + * This groovy class supports the <class>DoUpdateE2EServiceInstanceRollback.bpmn</class> process. + * + * Inputs: + * @param - msoRequestId + * @param - rollbackData with + * globalCustomerId + * subscriptionServiceType + * serviceInstanceId + * disableRollback + * rollbackAAI + * rollbackAdded + * rollbackDeleted + * + * + * Outputs: + * @param - rollbackError + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * + */ +public class DoUpdateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateE2EServiceInstanceRollback.class); + + + String Prefix="DUPDSIRB_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void preProcessRequest(DelegateExecution execution) { + execution.setVariable("prefix",Prefix) + String msg = "" + msoLogger.trace("preProcessRequest ") + execution.setVariable("rollbackAAI",false) + execution.setVariable("rollbackAdded",false) + execution.setVariable("rollbackDeleted",false) + + List addResourceList = execution.getVariable("addResourceList") + List delResourceList = execution.getVariable("delResourceList") + execution.setVariable("addResourceList_o", addResourceList) + execution.setVariable("delResourceList_o", delResourceList) + //exchange add and delete resource list + execution.setVariable("addResourceList", delResourceList) + execution.setVariable("delResourceList", addResourceList) + + try { + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + if (rollbackData.hasType("SERVICEINSTANCE")) { + + def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + + def globalSubscriberId = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId") + execution.setVariable("globalSubscriberId", globalSubscriberId) + + def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI") + if ("true".equals(rollbackAAI)) + { + execution.setVariable("rollbackAAI",true) + } + + def rollbackAdded = rollbackData.get("SERVICEINSTANCE", "rollbackAdded") + if ("true".equals(rollbackAdded)) + { + execution.setVariable("rollbackAdded", true) + } + + def rollbackDeleted = rollbackData.get("SERVICEINSTANCE", "rollbackDeleted") + if ("true".equals(rollbackDeleted)) + { + execution.setVariable("rollbackDeleted", true) + } + + if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackAdded") != true + && execution.getVariable("rollbackDeleted") != true) + { + execution.setVariable("skipRollback", true) + } + + } + else { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in Update ServiceInstance Rollback preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void postProcessRequest(DelegateExecution execution) { + msoLogger.trace("postProcessRequest ") + String msg = "" + try { + execution.setVariable("rollbackData", null) + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean rollbackAAI = execution.getVariable("rollbackAAI") + boolean rollbackAdded = execution.getVariable("rollbackAdded") + boolean rollbackDeleted = execution.getVariable("rollbackDeleted") + + List addResourceList = execution.getVariable("addResourceList_o") + List delResourceList = execution.getVariable("delResourceList_o") + execution.setVariable("addResourceList", addResourceList) + execution.setVariable("delResourceList", delResourceList) + + if (rollbackAAI || rollbackAdded || rollbackDeleted) + { + execution.setVariable("rolledBack", true) + } + if (rollbackAAI) + { + boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator") + if(!succInAAI){ + execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful + execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback") + msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId) + } + } + msoLogger.trace("Exit postProcessRequest ") + + } catch (BpmnError e) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage() + msoLogger.debug(msg) + } catch (Exception ex) { + msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage() + msoLogger.debug(msg) + } + } + + + public void preProcessForAddResource(DelegateExecution execution) { + } + + public void postProcessForAddResource(DelegateExecution execution) { + } + + public void preProcessForDeleteResource(DelegateExecution execution) { + } + + public void postProcessForDeleteResource(DelegateExecution execution) { + } + + public void preProcessAAIGET(DelegateExecution execution) { + } + + public void postProcessAAIGET(DelegateExecution execution) { + msoLogger.trace("postProcessAAIGET ") + String msg = "" + + try { + String serviceInstanceName = execution.getVariable("serviceInstanceName") + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET", + serviceInstanceName) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + else + { + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + if(foundInAAI){ + String aaiService = execution.getVariable("GENGS_service") + if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) { + execution.setVariable("serviceInstanceVersion_n", utils.getNodeText(aaiService, "resource-version")) + msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName")) + } + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIGET " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIGET ") + } + + public void preProcessAAIPUT(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')' + msoLogger.info("Entered " + method) + String msg = "" + msoLogger.trace("preProcessAAIPUT ") + + String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion_n") +// execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion) + + //requestDetails.modelInfo.for AAI PUT servieInstanceData + //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData + String serviceInstanceName = execution.getVariable("serviceInstanceName") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + //aai serviceType and Role can be setted as fixed value now. + String aaiServiceType = "E2E Service" + String aaiServiceRole = "E2E Service" + String modelInvariantUuid = execution.getVariable("modelInvariantUuid") + String modelUuid = execution.getVariable("model-version-id-original") + + //AAI PUT + AaiUtil aaiUriUtil = new AaiUtil(this) + utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled) + String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution) + utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled) + String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri) + utils.log("INFO","namespace: " + namespace, isDebugEnabled) + + String serviceInstanceData = + """<service-instance xmlns=\"${namespace}\"> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name> + <service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type> + <service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role> + <resource-version>${MsoUtils.xmlEscape(serviceInstanceVersion)}</resource-version> + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id> + </service-instance>""".trim() + + execution.setVariable("serviceInstanceData", serviceInstanceData) + msoLogger.info("serviceInstanceData: " + serviceInstanceData) + msoLogger.debug(serviceInstanceData) + msoLogger.info(" aai_uri " + aai_uri + " namespace:" + namespace) + msoLogger.info(" 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData) + + msoLogger.info("Exited " + method) + } + + public void postProcessAAIPUT(DelegateExecution execution) { + msoLogger.trace("postProcessAAIPUT ") + String msg = "" + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator") + if(!succInAAI){ + msoLogger.info("Error putting Service-instance in AAI", + serviceInstanceId) + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + } + else + { + + } + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage() + msoLogger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit postProcessAAIPUT ") + } + + public void processRollbackException(DelegateExecution execution){ + msoLogger.trace("processRollbackException ") + try{ + msoLogger.debug("Caught an Exception in DoUpdateE2EServiceInstanceRollback") + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught exception in ServiceInstance Update Rollback") + execution.setVariable("WorkflowException", null) + + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during processRollbackExceptions Method: ") + }catch(Exception e){ + msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage()) + } + + msoLogger.debug(" Exit processRollbackException") + } + + public void processRollbackJavaException(DelegateExecution execution){ + msoLogger.trace("processRollbackJavaException ") + try{ + execution.setVariable("rollbackData", null) + execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Update Rollback") + msoLogger.debug("Caught Exception in processRollbackJavaException") + + }catch(Exception e){ + msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage()) + } + msoLogger.trace("Exit processRollbackJavaException ") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy new file mode 100644 index 0000000000..7272f421fc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy @@ -0,0 +1,1408 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +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.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +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.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +import groovy.json.* +import groovy.xml.XmlUtil + +/** + * This groovy class supports the <class>DoUpdateNetworkInstance.bpmn</class> process. + * + */ +public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateNetworkInstance.class); + + String Prefix="UPDNETI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + /** + * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "messageId", "") + execution.setVariable("BasicAuthHeaderValuePO", "") + execution.setVariable("BasicAuthHeaderValueSDNC", "") + execution.setVariable(Prefix + "networkRequest", "") + execution.setVariable(Prefix + "networkInputs", "") + execution.setVariable(Prefix + "networkOutputs", "") + execution.setVariable(Prefix + "requestId", "") + execution.setVariable(Prefix + "source", "") + execution.setVariable(Prefix + "networkId", "") + + execution.setVariable(Prefix + "isPONR", false) // Point-of-no-return, means, rollback is not needed + + // AAI query Cloud Region + execution.setVariable(Prefix + "queryCloudRegionRequest","") + execution.setVariable(Prefix + "queryCloudRegionReturnCode","") + execution.setVariable(Prefix + "queryCloudRegionResponse","") + execution.setVariable(Prefix + "cloudRegionPo","") + execution.setVariable(Prefix + "cloudRegionSdnc","") + execution.setVariable(Prefix + "isCloudRegionGood", false) + + // AAI query Id + execution.setVariable(Prefix + "queryIdAAIRequest","") + execution.setVariable(Prefix + "queryIdAAIResponse", "") + execution.setVariable(Prefix + "aaiIdReturnCode", "") + + // AAI query vpn binding + execution.setVariable(Prefix + "queryVpnBindingAAIRequest","") + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "") + execution.setVariable(Prefix + "vpnBindings", null) + execution.setVariable(Prefix + "vpnCount", 0) + execution.setVariable(Prefix + "routeCollection", "") + + // AAI query network policy + execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest","") + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "") + execution.setVariable(Prefix + "networkPolicyUriList", null) + execution.setVariable(Prefix + "networkPolicyCount", 0) + execution.setVariable(Prefix + "networkCollection", "") + + // AAI query route table reference + execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest","") + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", "") + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "") + execution.setVariable(Prefix + "networkTableRefUriList", null) + execution.setVariable(Prefix + "networkTableRefCount", 0) + execution.setVariable(Prefix + "tableRefCollection", "") + + // AAI requery Id + execution.setVariable(Prefix + "requeryIdAAIRequest","") + execution.setVariable(Prefix + "requeryIdAAIResponse", "") + execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "") + + // AAI update contrail + execution.setVariable(Prefix + "updateContrailAAIUrlRequest","") + execution.setVariable(Prefix + "updateContrailAAIPayloadRequest","") + execution.setVariable(Prefix + "updateContrailAAIResponse", "") + execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", "") + + execution.setVariable(Prefix + "updateNetworkRequest", "") + execution.setVariable(Prefix + "updateNetworkResponse", "") + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + execution.setVariable(Prefix + "networkReturnCode", "") + execution.setVariable(Prefix + "isNetworkRollbackNeeded", false) + + execution.setVariable(Prefix + "changeAssignSDNCRequest", "") + execution.setVariable(Prefix + "changeAssignSDNCResponse", "") + execution.setVariable(Prefix + "rollbackSDNCRequest", "") + execution.setVariable(Prefix + "sdncReturnCode", "") + execution.setVariable(Prefix + "isSdncRollbackNeeded", false) + execution.setVariable(Prefix + "sdncResponseSuccess", false) + + execution.setVariable(Prefix + "isVnfBindingPresent", false) + execution.setVariable(Prefix + "Success", false) + execution.setVariable(Prefix + "serviceInstanceId", "") + + execution.setVariable(Prefix + "isException", false) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest DoUpdateNetworkInstance Request ") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // GET Incoming request & validate 3 kinds of format. + execution.setVariable("action", "UPDATE") + String networkRequest = execution.getVariable("bpmnRequest") + if (networkRequest != null) { + if (networkRequest.contains("requestDetails")) { + // JSON format request is sent, create xml + try { + def prettyJson = JsonOutput.prettyPrint(networkRequest.toString()) + msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson) + networkRequest = vidUtils.createXmlNetworkRequestInfra(execution, networkRequest) + + } catch (Exception ex) { + String dataErrorMessage = " Invalid json format Request - " + ex.getMessage() + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } else { + // XML format request is sent + + } + } else { + // vIPR format request is sent, create xml from individual variables + networkRequest = vidUtils.createXmlNetworkRequestInstance(execution) + } + + networkRequest = utils.formatXml(networkRequest) + msoLogger.debug(networkRequest) + execution.setVariable(Prefix + "networkRequest", networkRequest) + msoLogger.debug(" network-request - " + '\n' + networkRequest) + + // validate 'disableRollback' (aka, 'suppressRollback') + boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, networkRequest) + execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled) + msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled) + + String networkInputs = utils.getNodeXml(networkRequest, "network-inputs", false).replace("tag0:","").replace(":tag0","") + execution.setVariable(Prefix + "networkInputs", networkInputs) + msoLogger.debug(Prefix + "networkInputs - " + '\n' + networkInputs) + + // prepare messageId + String messageId = execution.getVariable(Prefix + "messageId") // for testing + if (messageId == null || messageId == "") { + messageId = UUID.randomUUID() + msoLogger.debug(" UPDNETI_messageId, random generated: " + messageId) + } else { + msoLogger.debug(" UPDNETI_messageId, pre-assigned: " + messageId) + } + execution.setVariable(Prefix + "messageId", messageId) + + String source = utils.getNodeText(networkRequest, "source") + execution.setVariable(Prefix + "source", source) + msoLogger.debug(Prefix + "source - " + source) + + String networkId = "" + if (utils.nodeExists(networkRequest, "network-id")) { + networkId = utils.getNodeText(networkRequest, "network-id") + if (networkId == 'null' || networkId == "") { + sendSyncError(execution) + // missing value of networkId + String dataErrorMessage = "Variable 'network-id' value/element is missing." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + + String lcpCloudRegion = "" + if (utils.nodeExists(networkRequest, "aic-cloud-region")) { + lcpCloudRegion = utils.getNodeText(networkRequest, "aic-cloud-region") + if ((lcpCloudRegion == 'null') || (lcpCloudRegion == "")) { + sendSyncError(execution) + String dataErrorMessage = "requestDetails has missing 'aic-cloud-region' value/element." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } + + String serviceInstanceId = "" + if (utils.nodeExists(networkRequest, "service-instance-id")) { + serviceInstanceId = utils.getNodeText(networkRequest, "service-instance-id") + if ((serviceInstanceId == 'null') || (lcpCloudRegion == "")) { + sendSyncError(execution) + String dataErrorMessage = "Variable 'serviceInstanceId' value/element is missing." + msoLogger.debug(" Invalid Request - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + } + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution) + + + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String exceptionMessage = "Exception Encountered in DoUpdateNetworkInstance, PreProcessRequest() - " + String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + // Set variables for Generic Get Sub Flow use + execution.setVariable(Prefix + "serviceInstanceId", serviceInstanceId) + msoLogger.debug(Prefix + "serviceInstanceId - " + serviceInstanceId) + + execution.setVariable("GENGS_type", "service-instance") + msoLogger.debug("GENGS_type - " + "service-instance") + msoLogger.debug(" Url for SDNC adapter: " + UrnPropertiesReader.getVariable("mso.adapters.sdnc.endpoint",execution)) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // build 'networkOutputs' + networkId = utils.getNodeText(networkRequest, "network-id") + if ((networkId == null) || (networkId == "null")) { + networkId = "" + } + String networkName = utils.getNodeText(networkRequest, "network-name") + if ((networkName == null) || (networkName == "null")) { + networkName = "" + } + String networkOutputs = + """<network-outputs> + <network-id>${MsoUtils.xmlEscape(networkId)}</network-id> + <network-name>${MsoUtils.xmlEscape(networkName)}</network-name> + </network-outputs>""" + execution.setVariable(Prefix + "networkOutputs", networkOutputs) + msoLogger.debug(Prefix + "networkOutputs - " + '\n' + networkOutputs) + execution.setVariable(Prefix + "networkId", networkId) + execution.setVariable(Prefix + "networkName", networkName) + + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex){ + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in DoUpdateNetworkInstance, PreProcessRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + } + + public void callRESTQueryAAICloudRegion (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoUpdateNetworkInstance ***** " ) + + try { + String networkInputs = execution.getVariable(Prefix + "networkInputs") + String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region") + cloudRegion = UriUtils.encode(cloudRegion,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + msoLogger.debug(queryCloudRegionRequest) + execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug(" UPDNETI_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) + String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion) + + if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) { + execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo) + execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc) + execution.setVariable(Prefix + "isCloudRegionGood", true) + + } else { + String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode") + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(Prefix + "isCloudRegionGood")) + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // try error + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow - callRESTQueryAAICloudRegion() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkId(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkId of DoUpdateNetworkInstance ***** " ) + + try { + // get variables + String networkRequest = execution.getVariable(Prefix + "networkRequest") + String networkId = utils.getNodeText(networkRequest, "network-id") + networkId = UriUtils.encode(networkId,"UTF-8") + execution.setVariable(Prefix + "networkId", networkId) + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + msoLogger.debug(queryIdAAIRequest) + execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest) + msoLogger.debug(Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryIdAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiIdReturnCode", returnCode) + msoLogger.debug(" ***** AAI Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "queryIdAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString) + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkId is 404 (Not Found)." + msoLogger.debug(" AAI Query Failed. " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkId - " + returnCode + msoLogger.debug("Unexpected Response from QueryAAINetworkId - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkId() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTReQueryAAINetworkId(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTReQueryAAINetworkId of DoUpdateNetworkInstance ***** " ) + + try { + // get variables + String networkRequest = execution.getVariable(Prefix + "networkRequest") + String networkId = utils.getNodeText(networkRequest, "network-id") + networkId = UriUtils.encode(networkId,"UTF-8") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + msoLogger.debug(requeryIdAAIRequest) + execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest) + msoLogger.debug(" UPDNETI_requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, requeryIdAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiRequeryIdReturnCode", returnCode) + msoLogger.debug(" ***** AAI ReQuery Response Code : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "requeryIdAAIResponse", aaiResponseAsString) + msoLogger.debug(" ReQueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString) + + String netId = utils.getNodeText(aaiResponseAsString, "network-id") + String netName = utils.getNodeText(aaiResponseAsString, "network-name") + String networkOutputs = + """<network-outputs> + <network-id>${MsoUtils.xmlEscape(netId)}</network-id> + <network-name>${MsoUtils.xmlEscape(netName)}</network-name> + </network-outputs>""" + execution.setVariable(Prefix + "networkOutputs", networkOutputs) + msoLogger.debug(" networkOutputs - " + '\n' + networkOutputs) + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from ReQueryAAINetworkId is 404 (Not Found)." + msoLogger.debug(" AAI ReQuery Failed. - " + dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from ReQueryAAINetworkId - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTReQueryAAINetworkId() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkVpnBinding of DoUpdateNetworkInstance ***** " ) + + try { + + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Vnf Binding is present, then build a List of vnfBinding + List vpnBindingUri = networkUtils.getVnfBindingObject(relationship) + int vpnCount = vpnBindingUri.size() + execution.setVariable(Prefix + "vpnCount", vpnCount) + msoLogger.debug(" UPDNETI_vpnCount - " + vpnCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (vpnCount > 0) { + execution.setVariable(Prefix + "vpnBindings", vpnBindingUri) + msoLogger.debug(" vpnBindingUri List - " + vpnBindingUri) + + String routeTargets = "" + // AII loop call using list vpnBindings + for (i in 0..vpnBindingUri.size()-1) { + + int counting = i+1 + + // prepare url using vpnBinding + String queryVpnBindingAAIRequest = "" + String aai_uri = aaiUriUtil.getNetworkVpnBindingUri(execution) + + // Note: By default, the vpnBinding url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') { + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all" + } else { + queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all" + } + + } else { + // using uri value in URN mapping + String vpnBindingId = vpnBindingUri[i].substring(vpnBindingUri[i].indexOf("/vpn-binding/")+13, vpnBindingUri[i].length()) + if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') { + vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1) + } + queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all" + } + + msoLogger.debug(queryVpnBindingAAIRequest) + execution.setVariable(Prefix + "queryVpnBindingAAIRequest", queryVpnBindingAAIRequest) + msoLogger.debug(" UPDNETI_queryVpnBindingAAIRequest, , vpnBinding #" + counting + " : " + "\n" + queryVpnBindingAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryVpnBindingAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", returnCode) + msoLogger.debug(" ***** AAI query vpn binding Response Code, vpnBinding #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiResponseAsString) + msoLogger.debug(" AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString) + + String routeTarget = "" + String routeRole = "" + if (utils.nodeExists(aaiResponseAsString, "route-targets")) { + String aaiRouteTargets = utils.getNodeXml(aaiResponseAsString, "route-targets", false) + def aaiRouteTargetsXml = new XmlSlurper().parseText(aaiRouteTargets) + def aaiRouteTarget = aaiRouteTargetsXml.'**'.findAll {it.name() == "route-target"} + for (j in 0..aaiRouteTarget.size()-1) { + routeTarget = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target") + routeRole = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role") + routeTargets += "<routeTargets>" + '\n' + + " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' + + " <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' + + "</routeTargets>" + '\n' + } + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from AAINetworkVpnBinding is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = " Unexpected Response from AAINetworkVpnBinding - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "routeCollection", routeTargets) + msoLogger.debug(" UPDNETI_routeCollection - " + '\n' + routeTargets) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <vpn-binding xmlns="${schemaVersion}"> + <global-route-target/> + </vpn-binding> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "routeCollection", "<routeTargets/>") + msoLogger.debug(" No vpnBinding, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkVpnBinding() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkPolicy of DoUpdateNetworkInstance ***** " ) + + try { + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Network Policy is present, then build a List of network policy + List networkPolicyUriList = networkUtils.getNetworkPolicyObject(relationship) + int networkPolicyCount = networkPolicyUriList.size() + execution.setVariable(Prefix + "networkPolicyCount", networkPolicyCount) + msoLogger.debug(" UPDNETI_networkPolicyCount - " + networkPolicyCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (networkPolicyCount > 0) { + execution.setVariable(Prefix + "networkPolicyUriList", networkPolicyUriList) + msoLogger.debug(" networkPolicyUri List - " + networkPolicyUriList) + + String networkPolicies = "" + // AII loop call using list vpnBindings + for (i in 0..networkPolicyUriList.size()-1) { + + int counting = i+1 + + // prepare url using vpnBinding + String queryNetworkPolicyAAIRequest = "" + + String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution) + + // Note: By default, the network policy url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') { + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all" + } else { + queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all" + } + } else { + // using uri value in URN mapping + String networkPolicyId = networkPolicyUriList[i].substring(networkPolicyUriList[i].indexOf("/network-policy/")+16, networkPolicyUriList[i].length()) + println " networkPolicyId - " + networkPolicyId + if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') { + networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1) + } + queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all" + + } + + + msoLogger.debug(queryNetworkPolicyAAIRequest) + execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest", queryNetworkPolicyAAIRequest) + msoLogger.debug(" UPDNETI_queryNetworkPolicyAAIRequest, , NetworkPolicy #" + counting + " : " + "\n" + queryNetworkPolicyAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString) + + String networkPolicy = "" + if (utils.nodeExists(aaiResponseAsString, "network-policy-fqdn")) { + networkPolicy = utils.getNodeText(aaiResponseAsString, "network-policy-fqdn") + networkPolicies += "<policyFqdns>" + networkPolicy + "</policyFqdns>" + '\n' + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkPolicy is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkPolicy - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "networkCollection", networkPolicies) + msoLogger.debug(" UPDNETI_networkCollection - " + '\n' + networkPolicies) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <network-policy xmlns="${schemaVersion}"> + <network-policy-fqdn/> + </network-policy> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "networkCollection", "<policyFqdns/>") + msoLogger.debug(" No net policies, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkPolicy() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTQueryAAINetworkTableRef of DoUpdateNetworkInstance ***** " ) + + try { + // get variables + String queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "") + String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","") + msoLogger.debug(" relationship - " + relationship) + + // Check if Network TableREf is present, then build a List of network policy + List networkTableRefUriList = networkUtils.getNetworkTableRefObject(relationship) + int networkTableRefCount = networkTableRefUriList.size() + execution.setVariable(Prefix + "networkTableRefCount", networkTableRefCount) + msoLogger.debug(" UPDNETI_networkTableRefCount - " + networkTableRefCount) + + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + + if (networkTableRefCount > 0) { + execution.setVariable(Prefix + "networkTableRefUriList", networkTableRefUriList) + msoLogger.debug(" networkTableRefUri List - " + networkTableRefUriList) + + // AII loop call using list vpnBindings + String networkTableRefs = "" + for (i in 0..networkTableRefUriList.size()-1) { + + int counting = i+1 + + // prepare url using tableRef + String queryNetworkTableRefAAIRequest = "" + + String aai_uri = aaiUriUtil.getNetworkTableReferencesUri(execution) + + // Note: By default, the network policy url is found in 'related-link' of the response, + // so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping. + if (aai_uri == null || aai_uri == "") { + // using value of 'related-link' from response + if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') { + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all" + } else { + queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all" + } + } else { + // using uri value in URN mapping + String networkTableRefId = networkTableRefUriList[i].substring(networkTableRefUriList[i].indexOf("/route-table-reference/")+23, networkTableRefUriList[i].length()) + + if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') { + networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1) + } + queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all" + + } + + + msoLogger.debug(queryNetworkTableRefAAIRequest) + execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest", queryNetworkTableRefAAIRequest) + msoLogger.debug(" UPDNETI_queryNetworkTableRefAAIRequest, , NetworkTableRef #" + counting + " : " + "\n" + queryNetworkTableRefAAIRequest) + + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkTableRefAAIRequest) + String returnCode = response.getStatusCode() + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", returnCode) + msoLogger.debug(" ***** AAI query network Table Reference Response Code, NetworkTableRef #" + counting + " : " + returnCode) + + String aaiResponseAsString = response.getResponseBodyAsString() + + if (returnCode=='200') { + msoLogger.debug(aaiResponseAsString) + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiResponseAsString) + msoLogger.debug(" QueryAAINetworkTableRef Success REST Response, , NetworkTableRef #" + counting + " : " + "\n" + aaiResponseAsString) + + String networkTableRef = "" + if (utils.nodeExists(aaiResponseAsString, "route-table-reference-fqdn")) { + networkTableRef = utils.getNodeText(aaiResponseAsString, "route-table-reference-fqdn") + networkTableRefs += "<routeTableFqdns>" + networkTableRef + "</routeTableFqdns>" + '\n' + } + + } else { + if (returnCode=='404') { + String dataErrorMessage = "Response Error from QueryAAINetworkTableRef is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String dataErrorMessage = "Unexpected Response from QueryAAINetworkTableRef - " + returnCode + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + } + } + + } // end loop + + execution.setVariable(Prefix + "tableRefCollection", networkTableRefs) + msoLogger.debug(" UPDNETI_tableRefCollection - " + '\n' + networkTableRefs) + + } else { + // reset return code to success + execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200") + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String aaiStubResponse = + """ <rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"> + <route-table-references xmlns="${schemaVersion}"> + <route-table-reference-fqdn/> + </route-table-references> + </rest:payload>""" + String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse) + execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiStubResponseAsXml) + execution.setVariable(Prefix + "tableRefCollection", "<routeTableFqdns/>") + msoLogger.debug(" No net table references, using this stub as response - " + '\n' + aaiStubResponseAsXml) + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkTableRef() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.debug(" ***** Inside callRESTUpdateContrailAAINetwork of DoUpdateNetworkInstance ***** " ) + + try { + // get variables + String networkRequest = execution.getVariable(Prefix + "networkRequest") + String networkId = utils.getNodeText(networkRequest, "network-id") + networkId = UriUtils.encode(networkId,"UTF-8") + String requeryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") + String updateNetworkResponse = execution.getVariable(Prefix + "updateNetworkResponse") + + // Prepare url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution) + String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all" + + msoLogger.debug(updateContrailAAIUrlRequest) + execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest) + msoLogger.debug(" UPDNETI_updateContrailAAIUrlRequest - " + "\n" + updateContrailAAIUrlRequest) + + //Prepare payload (PUT) + String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri) + String payload = networkUtils.ContrailNetworkCreatedUpdate(requeryIdAAIResponse, updateNetworkResponse, schemaVersion) + String payloadXml = utils.formatXml(payload) + msoLogger.debug(payloadXml) + execution.setVariable(Prefix + "updateContrailAAIPayloadRequest", payloadXml) + msoLogger.debug(" 'payload' to Update Contrail - " + "\n" + payloadXml) + + APIResponse response = aaiUriUtil.executeAAIPutCall(execution, updateContrailAAIUrlRequest, payload) + String returnCode = response.getStatusCode() + String aaiUpdateContrailResponseAsString = response.getResponseBodyAsString() + + execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", returnCode) + msoLogger.debug(" ***** AAI Update Contrail Response Code : " + returnCode) + + + if (returnCode=='200') { + msoLogger.debug(aaiUpdateContrailResponseAsString) + execution.setVariable(Prefix + "updateContrailAAIResponse", aaiUpdateContrailResponseAsString) + msoLogger.debug(" AAI Update Contrail Success REST Response - " + "\n" + aaiUpdateContrailResponseAsString) + // Point-of-no-return is set to false, rollback not needed. + execution.setVariable(Prefix + "isPONR", true) + + } else { + if (returnCode=='404') { + String dataErrorMessage = " Response Error from UpdateContrailAAINetwork is 404 (Not Found)." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + if (aaiUpdateContrailResponseAsString.contains("RESTFault")) { + WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiUpdateContrailResponseAsString, execution) + execution.setVariable("WorkflowException", exceptionObject) + throw new BpmnError("MSOWorkflowException") + + } else { + // aai all errors + String errorMessage = "Unexpected Response from UpdateContrailAAINetwork - " + returnCode + msoLogger.debug(errorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + } + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTUpdateContrailAAINetwork() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareUpdateNetworkRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareUpdateNetworkRequest of DoUpdateNetworkInstance ") + + try { + + // get variables + String requestId = execution.getVariable(Prefix + "requestId") + String messageId = execution.getVariable(Prefix + "messageId") + String source = execution.getVariable(Prefix + "source") + + String requestInput = execution.getVariable(Prefix + "networkRequest") + String queryIdResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionPo") + String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled") + + // Prepare Network request + String routeCollection = execution.getVariable(Prefix + "routeCollection") + String policyCollection = execution.getVariable(Prefix + "networkCollection") + String tableCollection = execution.getVariable(Prefix + "tableRefCollection") + String updateNetworkRequest = networkUtils.UpdateNetworkRequestV2(execution, requestId, messageId, requestInput, queryIdResponse, routeCollection, policyCollection, tableCollection, cloudRegionId, backoutOnFailure, source ) + // Format Response + String buildUpdateNetworkRequestAsString = utils.formatXml(updateNetworkRequest) + buildUpdateNetworkRequestAsString = buildUpdateNetworkRequestAsString.replace(":w1aac13n0", "").replace("w1aac13n0:", "") + msoLogger.debug(buildUpdateNetworkRequestAsString) + + execution.setVariable(Prefix + "updateNetworkRequest", buildUpdateNetworkRequestAsString) + msoLogger.debug(" UPDNETI_updateNetworkRequest - " + "\n" + buildUpdateNetworkRequestAsString) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareUpdateNetworkRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareSDNCRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareSDNCRequest of DoUpdateNetworkInstance ") + + try { + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String updateNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + + String networkId = "" + if (utils.nodeExists(updateNetworkInput, "network-id")) { + networkId = utils.getNodeText(updateNetworkInput, "network-id") + } + if (networkId == null) {networkId = ""} + + String serviceInstanceId = utils.getNodeText(updateNetworkInput, "service-instance-id") + + String queryAAIResponse = execution.getVariable(Prefix + "queryIdAAIResponse") + + // 1. prepare assign topology via SDNC Adapter SUBFLOW call + String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, updateNetworkInput, serviceInstanceId, sdncCallback, "changeassign", "NetworkActivateRequest", cloudRegionId, networkId, queryAAIResponse, null) + + String sndcTopologyUpdateRequesAsString = utils.formatXml(sndcTopologyCreateRequest) + msoLogger.debug(sndcTopologyUpdateRequesAsString) + execution.setVariable(Prefix + "changeAssignSDNCRequest", sndcTopologyUpdateRequesAsString) + msoLogger.debug(" UPDNETI_changeAssignSDNCRequest - " + "\n" + sndcTopologyUpdateRequesAsString) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSDNCRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void validateUpdateNetworkResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside validateUpdateNetworkResponse of DoUpdateNetworkInstance ") + + try { + String returnCode = execution.getVariable(Prefix + "networkReturnCode") + String networkResponse = execution.getVariable(Prefix + "updateNetworkResponse") + if (networkResponse==null) { + networkResponse="" // reset + } + + msoLogger.debug(" Network Adapter update responseCode: " + returnCode) + + String errorMessage = "" + if (returnCode == "200") { + execution.setVariable(Prefix + "isNetworkRollbackNeeded", true) + msoLogger.debug(networkResponse) + execution.setVariable(Prefix + "updateNetworkResponse", networkResponse) + msoLogger.debug(" Network Adapter update Success Response - " + "\n" + networkResponse) + + // prepare rollback data + String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","") + rollbackData = rollbackData.replace("rollback>", "networkRollback>") + String rollbackNetwork = + """<rollbackNetworkRequest> + ${rollbackData} + </rollbackNetworkRequest>""" + String rollbackNetworkXml = utils.formatXml(rollbackNetwork) + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml) + msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml) + + } else { // network error + if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx + if (networkResponse.contains("updateNetworkError")) { + networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '') + errorMessage = utils.getNodeText(networkResponse, "message") + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } else { // CatchAll exception + if (returnCode == "500") { + errorMessage = "JBWEB000065: HTTP Status 500." + } else { + errorMessage = "Return code is " + returnCode + } + errorMessage = "Received error from Network Adapter: " + errorMessage + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + + } + + } else { // CatchAll exception + String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } + + } + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. validateUpdateNetworkResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + public void validateSDNCResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside validateSDNCResponse of DoUpdateNetworkInstance ") + + String response = execution.getVariable(Prefix + "changeAssignSDNCResponse") + WorkflowException workflowException = null + try { + workflowException = execution.getVariable(Prefix + "WorkflowException") + //execution.setVariable("WorkflowException", workflowException) + } catch (Exception ex) { + msoLogger.debug(" Sdnc 'WorkflowException' object is empty or null. ") + } + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + // reset variable + String changeAssignSDNCResponseDecodeXml = execution.getVariable(Prefix + "changeAssignSDNCResponse") + changeAssignSDNCResponseDecodeXml = changeAssignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "") + execution.setVariable(Prefix + "changeAssignSDNCResponse", changeAssignSDNCResponseDecodeXml) + + if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess' + execution.setVariable(Prefix + "isSdncRollbackNeeded", true) + msoLogger.debug("Successfully Validated SDNC Response") + + } else { + msoLogger.debug("Did NOT Successfully Validated SDNC Response") + throw new BpmnError("MSOWorkflowException") + } + + } + + + public void postProcessResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside postProcessResponse of DoUpdateNetworkInstance ") + + try { + msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException")) + if (execution.getVariable(Prefix + "isException") == false) { + // set rollback data + execution.setVariable("orchestrationStatus", "") + execution.setVariable("networkId", execution.getVariable(Prefix + "networkId")) + execution.setVariable("networkName", execution.getVariable(Prefix + "networkName")) + prepareSuccessRollbackData(execution) // populate rollbackData + execution.setVariable("WorkflowException", null) + execution.setVariable(Prefix + "Success", true) + msoLogger.debug(" ***** postProcessResponse(), GOOD !!!") + } else { + execution.setVariable(Prefix + "Success", false) + execution.setVariable("rollbackData", null) + String exceptionMessage = " Exception encountered in MSO Bpmn. " + if (execution.getVariable("workflowException") != null) { // Output of Rollback flow. + msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException")) + WorkflowException wfex = execution.getVariable("workflowException") + exceptionMessage = wfex.getErrorMessage() + } else { + if (execution.getVariable(Prefix + "WorkflowException") != null) { + WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException") + exceptionMessage = pwfex.getErrorMessage() + } + } + // going to the Main flow: a-la-carte or macro + msoLogger.debug(" ***** postProcessResponse(), BAD !!!") + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + } + + } catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + public void prepareSDNCRollbackRequest (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside prepareSDNCRollbackRequest of DoUpdateNetworkInstance ") + + try { + // for some reason the WorkflowException object is null after the sdnc rollback call task, need to save WorkflowException. + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + // get variables + String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + String updateNetworkInput = execution.getVariable(Prefix + "networkRequest") + String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc") + String changeAssignSDNCResponse = execution.getVariable(Prefix + "changeAssignSDNCResponse") + String networkId = utils.getNodeText(changeAssignSDNCResponse, "network-id") + + String serviceInstanceId = utils.getNodeText(updateNetworkInput, "service-instance-id") + + // 2. prepare rollback topology via SDNC Adapter SUBFLOW call + String sndcTopologyRollbackRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, updateNetworkInput, serviceInstanceId, sdncCallback, "rollback", "NetworkActivateRequest", cloudRegionId, networkId, null, null) + String sndcTopologyRollbackRequestAsString = utils.formatXml(sndcTopologyRollbackRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRequestAsString) + msoLogger.debug(" Preparing request for SDNC Topology assign's rollback/compensation . . . - " + "\n" + sndcTopologyRollbackRequestAsString) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSDNCRollbackRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareRollbackData() of DoUpdateNetworkInstance ") + + try { + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + if (rollbackSDNCRequest != null) { + if (rollbackSDNCRequest != "") { + rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest")) + } + } + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest")) + } + } + execution.setVariable("rollbackData", rollbackData) + msoLogger.debug("** rollbackData : " + rollbackData) + + execution.setVariable("WorkflowException", execution.getVariable(Prefix + "WorkflowException")) + msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException")) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void prepareSuccessRollbackData(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareSuccessRollbackData() of DoUpdateNetworkInstance ") + + try { + + if (execution.getVariable("sdncVersion") != '1610') { + // skip: 1702 for 'changeassign' or equivalent not yet defined in SNDC, so no rollback. + } else { + prepareSDNCRollbackRequest(execution) + } + + Map<String, String> rollbackData = new HashMap<String, String>(); + String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest") + if (rollbackSDNCRequest != null) { + if (rollbackSDNCRequest != "") { + rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest) + } + } + String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest") + if (rollbackNetworkRequest != null) { + if (rollbackNetworkRequest != "") { + rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest) + } + } + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("** 'rollbackData' for Full Rollback : " + rollbackData) + execution.setVariable("WorkflowException", null) + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void setExceptionFlag(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside setExceptionFlag() of DoUpdateNetworkInstance ") + + try { + + execution.setVariable(Prefix + "isException", true) + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException")) + + } catch(Exception ex){ + String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. setExceptionFlag(): " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.debug("Completed processJavaException Method") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy new file mode 100644 index 0000000000..8a13b3c392 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy @@ -0,0 +1,310 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 groovy.xml.XmlUtil +import groovy.json.* + +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.apache.commons.codec.binary.Base64; +import org.springframework.web.util.UriUtils + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process. + * + */ +public class DoUpdateNetworkInstanceRollback extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateNetworkInstanceRollback.class); + + String Prefix="UPDNETIR_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils(this) + NetworkUtils networkUtils = new NetworkUtils() + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils() + + def className = getClass().getSimpleName() + + /** + * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable(Prefix + "rollbackNetworkRequest", null) + execution.setVariable(Prefix + "rollbackSDNCRequest", null) + execution.setVariable(Prefix + "WorkflowException", null) + + execution.setVariable(Prefix + "rollbackNetworkRequest", "") + execution.setVariable(Prefix + "rollbackNetworkResponse", "") + execution.setVariable(Prefix + "rollbackNetworkReturnCode", "") + + execution.setVariable(Prefix + "rollbackSDNCRequest", "") + execution.setVariable(Prefix + "rollbackSDNCResponse", "") + execution.setVariable(Prefix + "rollbackSDNCReturnCode", "") + + execution.setVariable(Prefix + "Success", false) + execution.setVariable(Prefix + "fullRollback", false) + + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy ") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // GET Incoming request/variables + String rollbackNetworkRequest = null + String rollbackSDNCRequest = null + + // Partial Rollback + Map<String, String> rollbackData = execution.getVariable("rollbackData") + if (rollbackData != null && rollbackData instanceof Map) { + + if(rollbackData.containsKey("rollbackNetworkRequest")) { + rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"] + } + + if(rollbackData.containsKey("rollbackSDNCRequest")) { + rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"] + } + } + + execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest) + execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest) + msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData")) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion? : " + sdncVersion) + + // PO Authorization Info / headers Authorization= + String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution) + + try { + def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution)) + execution.setVariable("BasicAuthHeaderValuePO",encodedString) + execution.setVariable("BasicAuthHeaderValueSDNC", encodedString) + + } catch (IOException ex) { + String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - " + String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage() + msoLogger.debug(dataErrorMessage ) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + if (execution.getVariable("SavedWorkflowException1") != null) { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1")) + } else { + execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException")) + } + msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException")) + if(execution.getVariable(Prefix + "WorkflowException") != null) { + // called by: DoCreateNetworkInstance, partial rollback + execution.setVariable(Prefix + "fullRollback", false) + + } else { + // called by: Macro - Full Rollback, WorkflowException = null + execution.setVariable(Prefix + "fullRollback", true) + + } + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + public void validateRollbackResponses (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside validateRollbackResponses() of DoUpdateNetworkInstanceRollback ") + + try { + // validate PO network rollback response + String rollbackNetworkErrorMessages = "" + String rollbackNetworkReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) { + rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode") + String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse") + msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode) + msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse) + if (rollbackNetworkReturnCode != "200") { + rollbackNetworkErrorMessages = " + PO Network rollback failed. " + } else { + rollbackNetworkErrorMessages = " + PO Network rollback completed." + } + } + + // validate SDNC rollback response + String rollbackSdncErrorMessages = "" + String rollbackSDNCReturnCode = "200" + if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) { + rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode") + String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse") + String rollbackSDNCReturnInnerCode = "" + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "") + if (rollbackSDNCReturnCode == "200") { + if (utils.nodeExists(rollbackSDNCResponse, "response-code")) { + rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code") + if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") { + rollbackSdncErrorMessages = " + SNDC changeassign rollback completed." + } else { + rollbackSdncErrorMessages = " + SDNC changeassign rollback failed. " + } + } else { + rollbackSdncErrorMessages = " + SNDC changeassign rollback completed." + } + } else { + rollbackSdncErrorMessages = " + SDNC changeassign rollback failed. " + } + msoLogger.debug(" SDNC changeassign rollback Code - " + rollbackSDNCReturnCode) + msoLogger.debug(" SDNC changeassign rollback Response - " + rollbackSDNCResponse) + } + + String statusMessage = "" + int errorCode = 7000 + msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback")) + if (execution.getVariable(Prefix + "fullRollback") == false) { + // original WorkflowException, + WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") + if (wfe != null) { + // rollback due to failure in DoCreate - Partial rollback + statusMessage = wfe.getErrorMessage() + errorCode = wfe.getErrorCode() + } else { + statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + errorCode = '7000' + } + + // set if all rolledbacks are successful + if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") { + execution.setVariable("rolledBack", true) + + } else { + execution.setVariable("rolledBack", false) + + } + + statusMessage = statusMessage + rollbackNetworkErrorMessages + rollbackSdncErrorMessages + msoLogger.debug("Final DoUpdateNetworkInstanceRollback status message: " + statusMessage) + String processKey = getProcessKey(execution); + WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage); + execution.setVariable("workflowException", exception); + + } else { + // rollback due to failures in Main flow (Macro) - Full rollback + // WorkflowException = null + if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") { + execution.setVariable("rollbackSuccessful", true) + execution.setVariable("rollbackError", false) + } else { + String exceptionMessage = "Network Update Rollback was not Successful. " + msoLogger.debug(exceptionMessage) + execution.setVariable("rollbackSuccessful", false) + execution.setVariable("rollbackError", true) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + throw new BpmnError("MSOWorkflowException") + } + + } + + + } catch (Exception ex) { + execution.setVariable("WorkflowException", null) + String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception." + String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage) + execution.setVariable("WorkflowException", execution.getVariable("WorkflowException")) + + } + + } + + // ******************************* + // Build Error Section + // ******************************* + + + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.trace("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy new file mode 100644 index 0000000000..451e0293ef --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy @@ -0,0 +1,1040 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.bpmn.common.scripts.VfModule +import org.onap.so.bpmn.common.scripts.VfModuleBase +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.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +public class DoUpdateVfModule extends VfModuleBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateVfModule.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + CatalogDbUtils catalog = new CatalogDbUtils() + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'DOUPVfMod_') + execution.setVariable('DOUPVfMod_requestInfo', null) + execution.setVariable('DOUPVfMod_serviceInstanceId', null) + execution.setVariable('DOUPVfMod_requestId', null) + execution.setVariable('DOUPVfMod_vnfInputs', null) + execution.setVariable('DOUPVfMod_vnfId', null) + execution.setVariable('DOUPVfMod_vnfName', null) + execution.setVariable('DOUPVfMod_vnfNameFromAAI', null) + execution.setVariable('DOUPVfMod_vfModuleName', null) + execution.setVariable('DOUPVfMod_vfModuleId', null) + execution.setVariable('DOUPVfMod_vnfType', null) + execution.setVariable('DOUPVfMod_asdcServiceModelVersion', null) + execution.setVariable('DOUPVfMod_vfModuleModelName', null) + execution.setVariable('DOUPVfMod_modelCustomizationUuid', null) + execution.setVariable("DOUPVfMod_isBaseVfModule", "false") + execution.setVariable('DOUPVfMod_serviceId', null) + execution.setVariable('DOUPVfMod_aicCloudRegion', null) + execution.setVariable('DOUPVfMod_tenantId', null) + execution.setVariable('DOUPVfMod_volumeGroupId', null) + execution.setVariable("DOUPVfMod_volumeGroupStackId", "") + execution.setVariable('DOUPVfMod_vfModule', null) + execution.setVariable('DOUPVfMod_vnfParams', null) + execution.setVariable("DOUPVfMod_baseVfModuleId", "") + execution.setVariable("DOUPVfMod_baseVfModuleHeatStackId", "") + execution.setVariable('DOUPVfMod_prepareUpdateAAIVfModuleRequest', null) + execution.setVariable('DOUPVfMod_sdncChangeAssignRequest', null) + execution.setVariable('DOUPVfMod_sdncChangeAssignResponse', null) + execution.setVariable('DOUPVfMod_sdncActivateRequest', null) + execution.setVariable('DOUPVfMod_sdncActivateResponse', null) + execution.setVariable('DOUPVfMod_sdncTopologyRequest', null) + execution.setVariable('DOUPVfMod_sdncTopologyResponse', null) + execution.setVariable('DOUPVfMod_vnfAdapterRestRequest', null) + execution.setVariable('DOUPVfMod_updateAAIGenericVnfRequest', null) + execution.setVariable('DOUPVfMod_updateAAIVfModuleRequest', null) + execution.setVariable('DOUPVfMod_skipUpdateGenericVnf', false) + execution.setVariable('DoUpdateVfModuleSuccessIndicator', false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + initProcessVariables(execution) + def xml = getVariable(execution, 'DoUpdateVfModuleRequest') + msoLogger.debug("DoUpdateVfModule request: " + xml) + msoLogger.debug('Received request xml:\n' + xml) + + if (xml == null || xml.isEmpty()) { + // Building Block-type request + + String cloudConfiguration = execution.getVariable("cloudConfiguration") + String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo") + + def serviceModelInfo = execution.getVariable("serviceModelInfo") + msoLogger.debug("serviceModelInfo: " + serviceModelInfo) + String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") + msoLogger.debug("modelInvariantUuid: " + modelInvariantUuid) + def vnfModelInfo = execution.getVariable("vnfModelInfo") + + //tenantId + def tenantId = execution.getVariable("tenantId") + execution.setVariable("DOUPVfMod_tenantId", tenantId) + + //volumeGroupId + def volumeGroupId = execution.getVariable("volumeGroupId") + execution.setVariable("DOUPVfMod_volumeGroupId", volumeGroupId) + + //cloudSiteId + def cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DOUPVfMod_aicCloudRegion", cloudSiteId) + + msoLogger.debug("cloudSiteId: " + cloudSiteId) + //vnfType + def vnfType = execution.getVariable("vnfType") + execution.setVariable("DOUPVfMod_vnfType", vnfType) + + msoLogger.debug("vnfType: " + vnfType) + //vnfName + def vnfName = execution.getVariable("vnfName") + execution.setVariable("DOUPVfMod_vnfName", vnfName) + + msoLogger.debug("vnfName: " + vnfName) + //vnfId + def vnfId = execution.getVariable("vnfId") + execution.setVariable("DOUPVfMod_vnfId", vnfId) + + msoLogger.debug("vnfId: " + vnfId) + //vfModuleName + def vfModuleName = execution.getVariable("vfModuleName") + execution.setVariable("DOUPVfMod_vfModuleName", vfModuleName) + + msoLogger.debug("vfModuleName: " + vfModuleName) + //vfModuleModelName + def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName") + execution.setVariable("DOUPVfMod_vfModuleModelName", vfModuleModelName) + + msoLogger.debug("vfModuleModelName: " + vfModuleModelName) + //modelCustomizationUuid + def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid") + if (modelCustomizationUuid == null) { + modelCustomizationUuid = "" + } + execution.setVariable("DOUPVfMod_modelCustomizationUuid", modelCustomizationUuid) + + msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid) + //vfModuleId + def vfModuleId = execution.getVariable("vfModuleId") + execution.setVariable("DOUPVfMod_vfModuleId", vfModuleId) + msoLogger.debug("vfModuleId: " + vfModuleId) + def requestId = execution.getVariable("msoRequestId") + execution.setVariable("DOUPVfMod_requestId", requestId) + msoLogger.debug("requestId: " + requestId) + // Set mso-request-id to request-id for VNF Adapter interface + execution.setVariable("mso-request-id", requestId) + //serviceId + def serviceId = execution.getVariable("serviceId") + execution.setVariable("DOUPVfMod_serviceId", serviceId) + msoLogger.debug("serviceId: " + serviceId) + //serviceInstanceId + def serviceInstanceId = execution.getVariable("serviceInstanceId") + execution.setVariable("DOUPVfMod_serviceInstanceId", serviceInstanceId) + + msoLogger.debug("serviceInstanceId: " + serviceInstanceId) + //source - HARDCODED + def source = "VID" + execution.setVariable("DOUPVfMod_source", source) + + msoLogger.debug("source: " + source) + //backoutOnFailure + def disableRollback = execution.getVariable("disableRollback") + def backoutOnFailure = true + if (disableRollback != null && disableRollback.equals("true")) { + backoutOnFailure = false + } + execution.setVariable("DOUPVfMod_backoutOnFailure", backoutOnFailure) + msoLogger.debug("backoutOnFailure: " + backoutOnFailure) + //isBaseVfModule + def isBaseVfModule = execution.getVariable("isBaseVfModule") + execution.setVariable("DOUPVfMod_isBaseVfModule", isBaseVfModule) + msoLogger.debug("isBaseVfModule: " + isBaseVfModule) + //asdcServiceModelVersion + def asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion") + execution.setVariable("DOUPVfMod_asdcServiceModelVersion", asdcServiceModelVersion) + msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion) + //personaModelId + execution.setVariable("DOUPVfMod_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid")) + //personaModelVersion + execution.setVariable("DOUPVfMod_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelVersion")) + //Get or Generate UUID + String uuid = execution.getVariable("DOUPVfMod_uuid") + if(uuid == null){ + uuid = UUID.randomUUID() + msoLogger.debug("Generated messageId (UUID) is: " + uuid) + }else{ + msoLogger.debug("Found messageId (UUID) is: " + uuid) + } + //isVidRequest + String isVidRequest = execution.getVariable("isVidRequest") + // default to true + if (isVidRequest == null || isVidRequest.isEmpty()) { + execution.setVariable("isVidRequest", "true") + } + //usePreload + def usePreload = execution.getVariable("usePreload") + execution.setVariable("DOUPVfMod_usePreload", usePreload) + msoLogger.debug("usePreload: " + usePreload) + //globalSubscriberId + String globalSubscriberId = execution.getVariable("globalSubscriberId") + execution.setVariable("DOUPVfMod_globalSubscriberId", globalSubscriberId) + msoLogger.debug("globalSubsrciberId: " + globalSubscriberId) + //vnfQueryPath + String vnfQueryPath = execution.getVariable("vnfQueryPath") + execution.setVariable("DOUPVfMod_vnfQueryPath", vnfQueryPath) + msoLogger.debug("vnfQueryPath: " + vnfQueryPath) + + Map<String,String> vfModuleInputParams = execution.getVariable("vfModuleInputParams") + if (vfModuleInputParams != null) { + execution.setVariable("DOUPVfMod_vnfParamsMap", vfModuleInputParams) + } + //get workload and environment context from parent SI + String environmentContext = "" + String workloadContext ="" + String serviceType ="" + + try{ + String json = catalog.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid ) + serviceType = jsonUtil.getJsonValue(json, "serviceResources.serviceType") + }catch(BpmnError e){ + throw e + } catch (Exception ex){ + String msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + try{ + AAIUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId) + AAIResourcesClient aaiRC = new AAIResourcesClient() + AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI) + Map<String, Object> aaiJson = aaiRW.asMap() + environmentContext = aaiJson.getOrDefault("environment-context","") + workloadContext = aaiJson.getOrDefault("workload-context","") + + }catch (Exception ex) { + msoLogger.debug("Error retreiving parent service instance information") + } + + execution.setVariable("DCVFM_environmentContext",environmentContext) + execution.setVariable("DCVFM_workloadContext",workloadContext) + } + else { + + def requestInfo = getRequiredNodeXml(execution, xml, 'request-info') + execution.setVariable('DOUPVfMod_requestInfo', requestInfo) + execution.setVariable('DOUPVfMod_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) + def serviceInstanceId = execution.getVariable('mso-service-instance-id') + if (serviceInstanceId == null) { + serviceInstanceId = '' + } + execution.setVariable('DOUPVfMod_serviceInstanceId', serviceInstanceId) + + def vnfInputs = getRequiredNodeXml(execution, xml, 'vnf-inputs') + execution.setVariable('DOUPVfMod_vnfInputs', vnfInputs) + execution.setVariable('DOUPVfMod_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id')) + execution.setVariable('DOUPVfMod_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id')) + execution.setVariable('DOUPVfMod_vfModuleName', getNodeTextForce(vnfInputs, 'vf-module-name')) + execution.setVariable('DOUPVfMod_vnfType', getNodeTextForce(vnfInputs, 'vnf-type')) + execution.setVariable('DOUPVfMod_vnfName', getNodeTextForce(vnfInputs, 'vnf-name')) + execution.setVariable('DOUPVfMod_asdcServiceModelVersion', getNodeTextForce(vnfInputs, 'asdc-service-model-version')) + execution.setVariable('DOUPVfMod_vfModuleModelName', getRequiredNodeText(execution, vnfInputs, 'vf-module-model-name')) + execution.setVariable('DOUPVfMod_modelCustomizationUuid', getNodeTextForce(vnfInputs, 'model-customization-id')) + execution.setVariable('DOUPVfMod_serviceId', getRequiredNodeText(execution, vnfInputs, 'service-id')) + execution.setVariable('DOUPVfMod_aicCloudRegion', getRequiredNodeText(execution, vnfInputs, 'aic-cloud-region')) + execution.setVariable('DOUPVfMod_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id')) + //isBaseVfModule + def isBaseVfModule = "false" + if (utils.nodeExists(xml, "is-base-vf-module")) { + isBaseVfModule = utils.getNodeText(xml, "is-base-vf-module") + execution.setVariable("DOUPVfMod_isBaseVfModule", isBaseVfModule) + } + msoLogger.debug("isBaseVfModule: " + isBaseVfModule) + + NetworkUtils networkUtils = new NetworkUtils() + def backoutOnFailure = networkUtils.isRollbackEnabled(execution, xml) + execution.setVariable("DOUPVfMod_backoutOnFailure", backoutOnFailure) + + def String vgi = getNodeTextForce(vnfInputs, 'volume-group-id') + execution.setVariable('DOUPVfMod_volumeGroupId', vgi) + + execution.setVariable('DOUPVfMod_vnfParams', utils.getNodeXml(xml, 'vnf-params', false)) + } + + def sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) { + def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing' + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the PrepareUpdateAAIVfModule subflow. This will + * set the orchestration-status to 'pending-update'. + * + * @param execution The flow's execution instance. + */ + public void prepPrepareUpdateAAIVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preparePrepareUpdateAAIVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + def orchestrationStatus = 'pending-update' + + String prepareUpdateAAIVfModuleRequest = """ + <PrepareUpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <orchestration-status>${MsoUtils.xmlEscape(orchestrationStatus)}</orchestration-status> + </PrepareUpdateAAIVfModuleRequest> + """ + prepareUpdateAAIVfModuleRequest = utils.formatXml(prepareUpdateAAIVfModuleRequest) + execution.setVariable('DOUPVfMod_prepareUpdateAAIVfModuleRequest', prepareUpdateAAIVfModuleRequest) + msoLogger.debug("DoUpdateAAIVfModule request: " + prepareUpdateAAIVfModuleRequest) + msoLogger.debug('Request for PrepareUpdateAAIVfModule:\n' + prepareUpdateAAIVfModuleRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preparePrepareUpdateAAIVfModule(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the ConfirmVolumeGroupTenant subflow. + * Determine cloud region id for the volume group. + * + * @param execution The flow's execution instance. + */ + public void prepConfirmVolumeGroupTenant(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepConfirmVolumeGroupTenant(' + + 'execution=' + execution.getId() + + ')' + + def prefix = execution.getVariable("prefix") + + msoLogger.trace('Entered ' + method) + + try { + String cloudRegion = execution.getVariable(prefix + "aicCloudRegion") + + // Prepare AA&I url + String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + AaiUtil aaiUtil = new AaiUtil(this) + String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution) + String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion + msoLogger.debug("CloudRegion Request: " + queryCloudRegionRequest) + + execution.setVariable(prefix + "queryCloudRegionRequest", queryCloudRegionRequest) + msoLogger.debug(prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest) + + cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "AAI", cloudRegion) + + if ((cloudRegion != "ERROR")) { + if(execution.getVariable(prefix + "queryCloudRegionReturnCode") == "404"){ + execution.setVariable(prefix + "cloudRegionForVolume", "AAIAIC25") + }else{ + execution.setVariable(prefix + "cloudRegionForVolume", cloudRegion) + } + execution.setVariable(prefix + "isCloudRegionGood", true) + } else { + String errorMessage = "AAI Query Cloud Region Unsuccessful. AAI Response Code: " + execution.getVariable(prefix + "queryCloudRegionReturnCode") + msoLogger.debug(errorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + execution.setVariable(prefix + "isCloudRegionGood", false) + } + msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(prefix + "isCloudRegionGood")) + + } catch(BpmnError b){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + b); + throw b + }catch (Exception e) { + // try error + String errorMessage = "Bpmn error encountered in CreateVfModule flow. Unexpected Response from AAI - " + e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " AAI Query Cloud Region Failed. Exception - " + "\n" + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during prepConfirmVolumeGroupTenant(): " + e.getMessage()) + } + msoLogger.trace('Exited ' + method) + + } + + /** + * Prepare a Request for invoking the SDNC Adapter subflow to perform + * a VNF topology 'changeassign' operation. + * + * @param execution The flow's execution instance. + */ + public void prepSDNCTopologyChg(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepSDNCTopologyChg(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('DOUPVfMod_requestId') + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } + def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') + def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + def serviceId = execution.getVariable('DOUPVfMod_serviceId') + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vnfType = execution.getVariable('DOUPVfMod_vnfType') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName') + def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') + def vfModuleName = vfModule.getElementText('vf-module-name') + def tenantId = execution.getVariable('DOUPVfMod_tenantId') + def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') + boolean usePreload = execution.getVariable("DOUPVfMod_usePreload") + String usePreloadToSDNC = usePreload ? "Y" : "N" + def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid") + def modelCustomizationUuidString = "" + if (!usePreload) { + modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>" + } + + // Retrieve vnf name from AAI response + def vnfName = execution.getVariable('DOUPVfMod_vnfNameFromAAI') + execution.setVariable('DOUPVfMod_vnfName', vnfName) + + def vnfParamsXml = execution.getVariable('DOUPVfMod_vnfParams') + def vnfNetworks = transformNetworkParamsToVnfNetworks(vnfParamsXml) + + String sdncTopologyRequest = """ + <sdncadapterworkflow:SDNCAdapterWorkflowRequest + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>changeassign</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>ChangeVNFActivateRequest</request-action> + <source>PORTAL</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(vnfId)}</service-instance-id> + <subscriber-name>dontcare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type> + <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name> + <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id> + <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name> + <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region> + ${modelCustomizationUuidString} + <use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload> + ${vnfNetworks} + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest> + """ + sdncTopologyRequest = utils.formatXml(sdncTopologyRequest) + execution.setVariable('DOUPVfMod_sdncChangeAssignRequest', sdncTopologyRequest) + msoLogger.debug("sdncChangeAssignRequest : " + sdncTopologyRequest) + msoLogger.debug('Request for SDNCAdapter topology/changeassign:\n' + sdncTopologyRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyChg(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the SDNC Adapter subflow to perform + * a VNF topology 'query' operation. + * + * @param execution The flow's execution instance. + */ + public void prepSDNCTopologyQuery(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepSDNCTopologyQuery(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } + def requestId = execution.getVariable('DOUPVfMod_requestId') + def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') + def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + + def svcInstId = "" + if (serviceInstanceId == null || serviceInstanceId.isEmpty()) { + svcInstId = vfModuleId + } + else { + svcInstId = serviceInstanceId + } + + //!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE + sleep(5000) + + String sdncTopologyRequest = """ + <sdncadapterworkflow:SDNCAdapterWorkflowRequest + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>/VNF-API:vnfs/vnf-list/${vfModuleId}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>mobility</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest> + """ + sdncTopologyRequest = utils.formatXml(sdncTopologyRequest) + execution.setVariable('DOUPVfMod_sdncTopologyRequest', sdncTopologyRequest) + msoLogger.debug("sdncTopologyRequest : " + sdncTopologyRequest) + msoLogger.debug('Request for SDNCAdapter query:\n' + sdncTopologyRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyQuery(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the VnfAdapterRest subflow. + * + * @param execution The flow's execution instance. + */ + public void prepVnfAdapterRest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('DOUPVfMod_requestId') + def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + def vfModuleName = execution.getVariable('DOUPVfMod_vfModuleName') + def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs') + def tenantId = execution.getVariable('DOUPVfMod_tenantId') + def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId') + def volumeGroupStackId = execution.getVariable('DOUPVfMod_volumeGroupStackId') + def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') + def heatStackId = vfModule.getElementText('heat-stack-id') + def cloudId = execution.getVariable('DOUPVfMod_aicCloudRegion') + def vnfType = execution.getVariable('DOUPVfMod_vnfType') + def vnfName = execution.getVariable('DOUPVfMod_vnfName') + def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName') + def baseVfModuleId = execution.getVariable("DOUPVfMod_baseVfModuleId") + def baseVfModuleStackId = execution.getVariable("DOUPVfMod_baseVfModuleHeatStackId") + def asdcServiceModelVersion = execution.getVariable('DOUPVfMod_asdcServiceModelVersion') + def modelCustomizationUuid = execution.getVariable('DOUPVfMod_modelCustomizationUuid') + def backoutOnFailure = execution.getVariable("DOUPVfMod_backoutOnFailure") + + def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String environmentContext = execution.getVariable("DOUPVEnvironment_context") + String workloadContext = execution.getVariable("DOUPVWorkload_context") + msoLogger.debug("workloadContext: " + workloadContext) + msoLogger.debug("environmentContext: " + environmentContext) + + Map<String, String> vnfParamsMap = execution.getVariable("DOUPVfMod_vnfParamsMap") + + String sdncGetResponse = execution.getVariable('DOUPVfMod_sdncTopologyResponse') + + String vfModuleParams = buildVfModuleParams(vnfParamsMap, sdncGetResponse, vnfId, vnfName, + vfModuleId, vfModuleName, null, environmentContext, workloadContext) + + + String vnfAdapterRestRequest = """ + <updateVfModuleRequest> + <cloudSiteId>${MsoUtils.xmlEscape(cloudId)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId> + <vfModuleStackId>${MsoUtils.xmlEscape(heatStackId)}</vfModuleStackId> + <vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType> + <vnfVersion>${MsoUtils.xmlEscape(asdcServiceModelVersion)}</vnfVersion> + <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid> + <vfModuleType>${MsoUtils.xmlEscape(vfModuleModelName)}</vfModuleType> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupStackId)}</volumeGroupStackId> + <baseVfModuleId>${MsoUtils.xmlEscape(baseVfModuleId)}</baseVfModuleId> + <baseVfModuleStackId>${MsoUtils.xmlEscape(baseVfModuleStackId)}</baseVfModuleStackId> + <skipAAI>true</skipAAI> + <backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout> + <failIfExists>false</failIfExists> + <vfModuleParams> + ${vfModuleParams} + </vfModuleParams> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </updateVfModuleRequest> + """ + vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest) + execution.setVariable('DOUPVfMod_vnfAdapterRestRequest', vnfAdapterRestRequest) + msoLogger.debug("vnfAdapterRestRequest : " + vnfAdapterRestRequest) + msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepVnfAdapterRest(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs') + + def personaModelId = utils.getNodeText(vnfInputs, 'vnf-persona-model-id') + def personaModelVersion = utils.getNodeText(vnfInputs, 'vnf-persona-model-version') + if ((personaModelId == null) || (personaModelVersion == null)) { + msoLogger.debug("Skipping update for Generic VNF ' + vnfId + ' because either \'vnf-persona-model-id\' or \'vnf-persona-model-version\' is absent") + execution.setVariable('DOUPVfMod_skipUpdateGenericVnf', true) + } else { + def personaModelIdElement = '<model-invariant-id>' + personaModelId + '</model-invariant-id>' + def personaModelVersionElement = '<model-version-id>' + personaModelVersion + '</model-version-id>' + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + ${personaModelIdElement} + ${personaModelVersionElement} + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable('DOUPVfMod_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the UpdateAAIVfModule subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + def orchestrationStatus = 'updated' + def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs') + + def volumeGroupIdElement = '' + def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId') + if (volumeGroupId != null) { + volumeGroupIdElement = '<volume-group-id>' + volumeGroupId + '</volume-group-id>' + } + def personaModelIdElement = '' + def personaModelId = utils.getNodeText(vnfInputs, 'persona-model-id') + if (personaModelId != null) { + personaModelIdElement = '<model-invariant-id>' + personaModelId + '</model-invariant-id>' + } + def personaModelVersionElement = '' + def personaModelVersion = utils.getNodeText(vnfInputs, 'persona-model-version') + if (personaModelVersion != null) { + personaModelVersionElement = '<model-version-id>' + personaModelVersion + '</model-version-id>' + } + def contrailServiceInstanceFqdnElement = '' + def contrailServiceInstanceFqdn = utils.getNodeText(vnfInputs, 'contrail-service-instance-fqdn') + if (contrailServiceInstanceFqdn != null) { + contrailServiceInstanceFqdnElement = '<contrail-service-instance-fqdn>' + contrailServiceInstanceFqdn + '</contrail-service-instance-fqdn>' + } + def personaModelCustomizationIdElement = '' + def modelCustomizationId = execution.getVariable('DOUPVfMod_modelCustomizationUuid') + if (modelCustomizationId != null) { + personaModelCustomizationIdElement = '<model-customization-id>' + modelCustomizationId + '</model-customization-id>' + } + + String updateAAIVfModuleRequest = """ + <UpdateAAIVfModuleRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <orchestration-status>${MsoUtils.xmlEscape(orchestrationStatus)}</orchestration-status> + ${volumeGroupIdElement} + ${personaModelIdElement} + ${personaModelVersionElement} + ${contrailServiceInstanceFqdnElement} + ${personaModelCustomizationIdElement} + </UpdateAAIVfModuleRequest> + """ + + msoLogger.debug('Unformatted updateAAIVfModuleRequest: ' + updateAAIVfModuleRequest) + updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest) + execution.setVariable('DOUPVfMod_updateAAIVfModuleRequest', updateAAIVfModuleRequest) + msoLogger.debug("updateAAIVfModuleRequest : " + updateAAIVfModuleRequest) + msoLogger.debug('Request for UpdateAAIVfModule:\n' + updateAAIVfModuleRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIVfModule(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the SDNC Adapter subflow to perform + * a VNF topology 'activate' operation. + * + * @param execution The flow's execution instance. + */ + public void prepSDNCTopologyAct(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepSDNCTopologyAct(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + String uuid = execution.getVariable('testReqId') // for junits + if(uuid==null){ + uuid = execution.getVariable("DOUPVfMod_requestId") + "-" + System.currentTimeMillis() + } + def requestId = execution.getVariable('DOUPVfMod_requestId') + def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId') + def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + def serviceId = execution.getVariable('DOUPVfMod_serviceId') + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vnfName = execution.getVariable('DOUPVfMod_vnfName') + def vnfType = execution.getVariable('DOUPVfMod_vnfType') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName') + def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') + def vfModuleName = vfModule.getElementText('vf-module-name') + def tenantId = execution.getVariable('DOUPVfMod_tenantId') + def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') + + boolean usePreload = execution.getVariable("DOUPVfMod_usePreload") + String usePreloadToSDNC = usePreload ? "Y" : "N" + def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid") + def modelCustomizationUuidString = "" + if (!usePreload) { + modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>" + } + + def vnfParamsXml = execution.getVariable('DOUPVfMod_vnfParams') + def vnfNetworks = transformNetworkParamsToVnfNetworks(vnfParamsXml) + + String sdncTopologyRequest = """ + <sdncadapterworkflow:SDNCAdapterWorkflowRequest + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>activate</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>ChangeVNFActivateRequest</request-action> + <source>PORTAL</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type> + <service-instance-id>${MsoUtils.xmlEscape(vnfId)}</service-instance-id> + <subscriber-name>dontcare</subscriber-name> + </service-information> + <vnf-request-information> + <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id> + <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type> + <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name> + <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id> + <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name> + <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type> + <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant> + <aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region> + ${modelCustomizationUuidString} + <use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload> + </vnf-request-information> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest> + """ + sdncTopologyRequest = utils.formatXml(sdncTopologyRequest) + execution.setVariable('DOUPVfMod_sdncActivateRequest', sdncTopologyRequest) + msoLogger.debug("sdncActivateRequest : " + sdncTopologyRequest) + msoLogger.debug('Request for SDNCAdapter topology/activate:\n' + sdncTopologyRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyAct(): ' + e.getMessage()) + } + } + + /** + * Log a WorkflowException that has been created. + * + * @param execution The flow's execution instance. + */ + public void handleWorkflowException(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.handleWorkflowException(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def WorkflowException workflowException = (WorkflowException) execution.getVariable('WorkflowException') + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, method + ' caught WorkflowException: ' + workflowException.getErrorMessage(), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 1002, 'Error in handleWorkflowException(): ' + e.getMessage()) + } + } + + public void validateSDNCResponse(DelegateExecution execution, String response, String method){ + + def prefix = execution.getVariable("prefix") + + msoLogger.trace("STARTED ValidateSDNCResponse Process") + + WorkflowException workflowException = execution.getVariable("WorkflowException") + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + + msoLogger.debug("workflowException: " + workflowException) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + msoLogger.debug("SDNCResponse: " + response) + + String sdncResponse = response + if(execution.getVariable(prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + sdncResponse) + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + msoLogger.trace("COMPLETED ValidateSDNCResponse Process") + } + + /** + * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info. + * A 200 response is expected with the VNF info in the response body. Will find out the base module info. + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModule(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.getVfModule(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('DOUPVfMod_vnfId') + def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1" + msoLogger.debug("AAI endPoint: " + endPoint) + + try { + def aaiRequestId = UUID.randomUUID().toString() + msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'') + APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint) + msoLogger.debug("createVfModule - invoking httpGet() to AAI") + + def responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData) + msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode()) + + execution.setVariable('DOUPVfMod_queryAAIVfModuleResponseCode', response.getStatusCode()) + execution.setVariable('DOUPVfMod_queryAAIVfModuleResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find base module info') + if (responseData != null) { + def vfModulesText = utils.getNodeXml(responseData, "vf-modules") + def xmlVfModules= new XmlSlurper().parseText(vfModulesText) + def vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"} + int vfModulesSize = 0 + for (i in 0..vfModules.size()-1) { + def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i]) + def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module") + + if (isBaseVfModule == "true") { + String baseModuleId = utils.getNodeText(vfModuleXml, "vf-module-id") + execution.setVariable("DOUPVfMod_baseVfModuleId", baseModuleId) + msoLogger.debug('Received baseVfModuleId: ' + baseModuleId) + String baseModuleHeatStackId = utils.getNodeText(vfModuleXml, "heat-stack-id") + execution.setVariable("DOUPVfMod_baseVfModuleHeatStackId", baseModuleHeatStackId) + msoLogger.debug('Received baseVfModuleHeatStackId: ' + baseModuleHeatStackId) + } + } + } + } + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage()) + } + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy new file mode 100644 index 0000000000..34a73bd35c --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy @@ -0,0 +1,414 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.onap.so.bpmn.common.scripts.AaiUtil +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.core.UrnPropertiesReader +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ModuleResource +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.springframework.web.util.UriUtils; + +/** + * This class supports the VID Flow + * with the update of a generic vnf and related VF modules. + */ +class DoUpdateVnfAndModules extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateVnfAndModules.class); + + String Prefix="DUVAM_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + /** + * This method gets and validates the incoming + * request. + * + * @param - execution + * + */ + public void preProcessRequest(DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + msoLogger.trace("STARTED DoUpdateVnfAndModules PreProcessRequest Process") + + try{ + // Get Variables + + String requestId = execution.getVariable("msoRequestId") + execution.setVariable("requestId", requestId) + execution.setVariable("mso-request-id", requestId) + msoLogger.debug("Incoming Request Id is: " + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId) + + String vnfId = execution.getVariable("vnfId") + msoLogger.debug("Incoming Vnf Id is: " + vnfId) + + String source = "VID" + execution.setVariable("DUVAM_source", source) + msoLogger.debug("Incoming Source is: " + source) + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null) { + sdncVersion = "1702" + } + execution.setVariable("DUVAM_sdncVersion", sdncVersion) + msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion) + + VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition") + + String vnfModelInfo = execution.getVariable("vnfModelInfo") + String serviceModelInfo = execution.getVariable("serviceModelInfo") + + String serviceId = execution.getVariable("productFamilyId") + execution.setVariable("DUVAM_serviceId", serviceId) + msoLogger.debug("Incoming Service Id is: " + serviceId) + + String modelUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid") + execution.setVariable("DUVAM_modelUuid", modelUuid) + msoLogger.debug("Incoming modelUuid is: " + modelUuid) + + String modelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid") + execution.setVariable("DUVAM_modelCustomizationUuid", modelCustomizationUuid) + msoLogger.debug("Incoming Model Customization Uuid is: " + modelCustomizationUuid) + + String cloudSiteId = execution.getVariable("lcpCloudRegionId") + execution.setVariable("DUVAM_cloudSiteId", cloudSiteId) + msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId) + + String tenantId = execution.getVariable("tenantId") + execution.setVariable("DUVAM_tenantId", tenantId) + msoLogger.debug("Incoming Tenant Id is: " + tenantId) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + if (globalSubscriberId == null) { + globalSubscriberId = "" + } + execution.setVariable("DUVAM_globalSubscriberId", globalSubscriberId) + msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId) + + execution.setVariable("DUVAM_moduleCount", 0) + execution.setVariable("DUVAM_nextModule", 0) + + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + }catch(Exception e){ + msoLogger.debug(" Error Occured in DoUpdateVnfAndModules PreProcessRequest method!" + e.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoUpdateVnfAndModules PreProcessRequest") + + } + msoLogger.trace("COMPLETED DoUpdateVnfAndModules PreProcessRequest Process ") + } + + /** + * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info. + * A 200 response is expected with the VNF info in the response body. Will find out the base module info. + * + * @param execution The flow's execution instance. + */ + public void queryAAIVfModule(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.queryAAIVfModule(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('vnfId') + + AaiUtil aaiUriUtil = new AaiUtil(this) + String aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution) + msoLogger.debug('AAI URI is: ' + aai_uri) + + String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1" + msoLogger.debug("AAI endPoint: " + endPoint) + + try { + RESTConfig config = new RESTConfig(endPoint); + def responseData = '' + def aaiRequestId = UUID.randomUUID().toString() + RESTClient client = new RESTClient(config). + addHeader('X-TransactionId', aaiRequestId). + addHeader('X-FromAppId', 'MSO'). + addHeader('Content-Type', 'application/xml'). + addHeader('Accept','application/xml'); + msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'') + APIResponse response = client.httpGet() + msoLogger.debug("createVfModule - invoking httpGet() to AAI") + + responseData = response.getResponseBodyAsString() + if (responseData != null) { + msoLogger.debug("Received generic VNF data: " + responseData) + + } + + msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData) + msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode()) + + execution.setVariable('DUVAM_queryAAIVfModuleResponseCode', response.getStatusCode()) + execution.setVariable('DUVAM_queryAAIVfModuleResponse', responseData) + msoLogger.debug('Response code:' + response.getStatusCode()) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + //Map<String, String>[] vfModules = new HashMap<String,String>[] + def vfModulesList = new ArrayList<Map<String,String>>() + def vfModules = null + def vfModuleBaseEntry = null + if (response.getStatusCode() == 200) { + // Parse the VNF record from A&AI to find base module info + msoLogger.debug('Parsing the VNF data to find base module info') + if (responseData != null) { + def vfModulesText = utils.getNodeXml(responseData, "vf-modules") + msoLogger.debug("vModulesText: " + vfModulesText) + if (vfModulesText != null && !vfModulesText.trim().isEmpty()) { + def xmlVfModules= new XmlSlurper().parseText(vfModulesText) + vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"} + execution.setVariable("DUVAM_moduleCount", vfModules.size()) + int vfModulesSize = 0 + for (i in 0..vfModules.size()-1) { + def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i]) + + Map<String, String> vfModuleEntry = new HashMap<String, String>() + def vfModuleId = utils.getNodeText(vfModuleXml, "vf-module-id") + vfModuleEntry.put("vfModuleId", vfModuleId) + def vfModuleName = utils.getNodeText(vfModuleXml, "vf-module-name") + vfModuleEntry.put("vfModuleName", vfModuleName) + def modelInvariantUuid = utils.getNodeText(vfModuleXml, "model-invariant-id") + vfModuleEntry.put("modelInvariantUuid", modelInvariantUuid) + def modelUuid = utils.getNodeText(vfModuleXml, "model-version-id") + vfModuleEntry.put("modelUuid", modelUuid) + def modelCustomizationUuid = utils.getNodeText(vfModuleXml, "model-customization-id") + vfModuleEntry.put("modelCustomizationUuid", modelCustomizationUuid) + + def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module") + vfModuleEntry.put("isBaseVfModule", isBaseVfModule) + + String volumeGroupId = '' + + msoLogger.debug("Next module!") + def vfModuleRelationships = vfModules[i].'**'.findAll {it.name() == 'relationship-data'} + if (vfModuleRelationships.size() > 0) { + for (j in 0..vfModuleRelationships.size()-1) { + if (vfModuleRelationships[j] != null) { + + def relationshipKey = vfModuleRelationships[j].'**'.findAll {it.name() == 'relationship-key'} + + if (relationshipKey[0] == 'volume-group.volume-group-id') { + def relationshipValue = vfModuleRelationships[j].'**'.findAll {it.name() == 'relationship-value'} + volumeGroupId = relationshipValue[0] + break + } + } + } + } + + vfModuleEntry.put("volumeGroupId", volumeGroupId) + msoLogger.debug("volumeGroupId is: " + volumeGroupId) + + // Save base vf module to add it to the start of the list later + if (isBaseVfModule == "true") { + vfModuleBaseEntry = vfModuleEntry + } + else { + vfModulesList.add(vfModuleEntry) + } + } + // Start the list with the base module if any + if (vfModuleBaseEntry != null) { + vfModulesList.add(0, vfModuleBaseEntry) + } + } + + } + } + else { + msoLogger.debug('Response code from AAI GET is: ' + response.getStatusCode()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Response code from AAI GET is: ' + response.getStatusCode()) + } + execution.setVariable("DUVAM_vfModules", vfModulesList) + } catch (Exception ex) { + ex.printStackTrace() + msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage()) + } + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage()) + } + } + + public void prepareNextModuleToUpdate(DelegateExecution execution){ + + execution.setVariable("prefix", Prefix) + msoLogger.trace("STARTED prepareNextModuleToUpdate ") + + try { + int i = execution.getVariable("DUVAM_nextModule") + def vfModules = execution.getVariable("DUVAM_vfModules") + def vfModule = vfModules[i] + + def vfModuleId = vfModule.get("vfModuleId") + execution.setVariable("DUVAM_vfModuleId", vfModuleId) + + def vfModuleName = vfModule.get("vfModuleName") + execution.setVariable("DUVAM_vfModuleName", vfModuleName) + + def isBaseVfModule = vfModule.get("isBaseVfModule") + execution.setVariable("DUVAM_isBaseVfModule", isBaseVfModule) + + String modelInvariantUuid = vfModule.get("modelInvariantUuid") + msoLogger.debug("ModelInvariantUuid: " + modelInvariantUuid) + + def volumeGroupId = vfModule.get("volumeGroupId") + execution.setVariable("DUVAM_volumeGroupId", volumeGroupId) + + execution.setVariable("DUVAM_volumeGroupName", "") + + VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition") + List<ModuleResource> moduleResources = vnfResource.getVfModules() + + for (j in 0..moduleResources.size()-1) { + ModelInfo modelInfo = moduleResources[j].getModelInfo() + String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid() + msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition) + + if (modelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) { + String vfModuleModelInfo = modelInfo.toJsonString() + String vfModuleModelInfoValue = jsonUtil.getJsonValue(vfModuleModelInfo, "modelInfo") + execution.setVariable("DUVAM_vfModuleModelInfo", vfModuleModelInfoValue) + msoLogger.debug("vfModuleModelInfo: " + vfModuleModelInfoValue) + break + } + + } + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToUpdate Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED prepareNextModuleToUpdate ") + } + + + /** + * Prepare a Request for invoking the UpdateAAIGenericVnf subflow. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateAAIGenericVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def vnfId = execution.getVariable('vnfId') + VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition") + ModelInfo vnfDecompModelInfo = vnfResource.getModelInfo() + String vnfModelInfo = execution.getVariable("vnfModelInfo") + String modelUuid = execution.getVariable("DUVAM_modelUuid") + if (modelUuid == null || modelUuid.isEmpty()) { + modelUuid = vnfDecompModelInfo.getModelUuid() + } + String modelCustomizationUuid = execution.getVariable("DUVAM_modelCustomizationUuid") + if (modelCustomizationUuid == null || modelCustomizationUuid.isEmpty()) { + modelCustomizationUuid = vnfDecompModelInfo.getModelCustomizationUuid() + } + String nfType = vnfResource.getNfType() + String nfTypeString = '' + if (nfType != null && !nfType.isEmpty()) { + nfTypeString = "<nf-type>" + nfType + "</nf-type>" + } + String nfRole = vnfResource.getNfRole() + String nfRoleString = '' + if (nfRole != null && !nfRole.isEmpty()) { + nfRoleString = "<nf-role>" + nfRole + "</nf-role>" + } + String nfFunction = vnfResource.getNfFunction() + String nfFunctionString = '' + if (nfFunction != null && !nfFunction.isEmpty()) { + nfFunctionString = "<nf-function>" + nfFunction + "</nf-function>" + } + String nfNamingCode = vnfResource.getNfNamingCode() + String nfNamingCodeString = '' + if (nfNamingCode != null && !nfNamingCode.isEmpty()) { + nfNamingCodeString = "<nf-naming-code>" + nfNamingCode + "</nf-naming-code>" + } + + String updateAAIGenericVnfRequest = """ + <UpdateAAIGenericVnfRequest> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id> + <model-customization-id>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-id> + ${nfTypeString} + ${nfRoleString} + ${nfFunctionString} + ${nfNamingCodeString} + </UpdateAAIGenericVnfRequest> + """ + updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest) + execution.setVariable('DUVAM_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest) + msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest) + msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage()) + } + } + + /** + * APP-C Call - placeholder. + * + * @param execution The flow's execution instance. + */ + public void callAppCf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.callAppC(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy new file mode 100644 index 0000000000..4deb53f0ce --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy @@ -0,0 +1,59 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor; +import org.apache.commons.lang3.* +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + + +public class HealthCheckActivate extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, HealthCheckActivate.class); + + + /** + * Validates the request message and sets up the workflow. + * @param execution the execution + */ + public void preProcessRequest(DelegateExecution execution) { + + } + + + /** + * Sends the synchronous response back to the API Handler. + * @param execution the execution + */ + public void sendResponse(DelegateExecution execution) { + def status = execution.getVariable("healthyStatus") + def healthcheckmessage = execution.getVariable("healthcheckmessage") + if (status == "true") { + sendWorkflowResponse(execution, 200, healthcheckmessage) + }else{ + sendWorkflowResponse(execution, 503, healthcheckmessage) + } + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy new file mode 100644 index 0000000000..8673ee7662 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy @@ -0,0 +1,611 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.appc.client.lcm.model.Action; +import org.onap.appc.client.lcm.model.Status +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.* +import org.onap.so.client.appc.ApplicationControllerOrchestrator +import org.onap.so.client.appc.ApplicationControllerSupport +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class ReplaceVnfInfra extends VnfCmBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ReplaceVnfInfra.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "RPLVnfI_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'RPLVnfI_') + execution.setVariable('Request', null) + execution.setVariable('requestInfo', null) + execution.setVariable('source', null) + execution.setVariable('vnfInputs', null) + execution.setVariable('tenantId', null) + execution.setVariable('vnfParams', null) + execution.setVariable('controllerType', null) + execution.setVariable('cloudConfiguration', null) + execution.setVariable('ReplaceVnfSuccessIndicator', false) + execution.setVariable('serviceType', null) + execution.setVariable('nfRole', null) + execution.setVariable('currentActivity', 'RPLVnfI') + execution.setVariable('workStep', null) + execution.setVariable('failedActivity', null) + execution.setVariable('errorCode', "0") + execution.setVariable('errorText', null) + execution.setVariable('healthCheckIndex', 1) + execution.setVariable('retainResources', true) + execution.setVariable('productFamilyId', null) + execution.setVariable('healthCheckIndex0', 0) + execution.setVariable('healthCheckIndex1', 1) + execution.setVariable("rollbackSetClosedLoopDisabledFlag", false) + execution.setVariable("rollbackVnfStop", false) + execution.setVariable("rollbackVnfLock", false) + execution.setVariable("rollbackQuiesceTraffic", false) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", false) + execution.setVariable("platform", null) + execution.setVariable("lineOfBusiness", null) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def incomingRequest = execution.getVariable('bpmnRequest') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + + execution.setVariable('serviceInstanceId', serviceInstanceId) + execution.setVariable("isVidRequest", "true") + execution.setVariable('serviceType', 'Mobility') + execution.setVariable('retainResources', true) + execution.setVariable('disableRollback', true) + execution.setVariable('payload', "") + execution.setVariable('actionLock', Action.Lock) + execution.setVariable('actionUnlock', Action.Unlock) + execution.setVariable('actionHealthCheck', Action.HealthCheck) + execution.setVariable('actionStart', Action.Start) + execution.setVariable('actionStop', Action.Stop) + + def asdcServiceModelVersion = '' + def serviceModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + msoLogger.debug("PROCESSING SERVICE INFO") + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + msoLogger.debug("ServiceModelInfo: " + serviceModelInfo) + def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid") + msoLogger.debug("modelInvariant: " + modelInvariant) + } + + } + } + + execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable('serviceModelInfo', serviceModelInfo) + def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable('vnfModelInfo', vnfModelInfo) + def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid") + execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid) + msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid) + + def vnfType = execution.getVariable('vnfType') + execution.setVariable('vnfType', vnfType) + + + def controllerType = reqMap.requestDetails?.requestParameters?.controllerType + execution.setVariable('controllerType', controllerType) + + msoLogger.debug('Controller Type: ' + controllerType) + + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug('Processed user params: ' + userParamsMap) + + execution.setVariable('vfModuleInputParams', userParamsMap) + + def requestId = execution.getVariable("requestId") + execution.setVariable('msoRequestId', requestId) + msoLogger.debug("requestId is: " + requestId) + + def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable('vnfName', vnfName) + + def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null + execution.setVariable('requestorId', requestorId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable('usePreload', usePreload) + + def productFamilyId = reqMap.requestDetails?.requestInfo?.productFamilyId ?: null + execution.setVariable('productFamilyId', productFamilyId) + + def cloudConfiguration = jsonOutput.toJson(reqMap.requestDetails?.cloudConfiguration) + execution.setVariable('cloudConfiguration', cloudConfiguration) + def lcpCloudRegionId = jsonUtils.getJsonValue(cloudConfiguration, "lcpCloudRegionId") + execution.setVariable('lcpCloudRegionId', lcpCloudRegionId) + def tenantId = jsonUtils.getJsonValue(cloudConfiguration, "tenantId") + execution.setVariable('tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable('globalSubscriberId', globalSubscriberId) + + execution.setVariable('sdncVersion', '1702') + + execution.setVariable("ReplaceVnfInfraSuccessIndicator", false) + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable("source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>REPLACE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("requestInfo", requestInfo) + + msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo")) + + msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('requestInfo') + def requestId = execution.getVariable('requestId') + def source = execution.getVariable('source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vnfId = execution.getVariable("vnfId") + String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + + + /** + * Get VnfResource decomposition object for this VNF. + * + * + * @param execution The flow's execution instance. + */ + public void getVnfResourceDecomposition(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid') + msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid) + List<VnfResource> vnfResources = serviceDecomposition.getVnfResources() + + for (i in 0..vnfResources.size()-1) { + ModelInfo modelInfo = vnfResources[i].getModelInfo() + String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid() + msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition) + + if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) { + VnfResource vnfResourceDecomposition = vnfResources[i] + execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition) + def nfRole = vnfResourceDecomposition.getNfRole() + execution.setVariable('nfRole', nfRole) + msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString()) + break + } + else { + //exception! + } + + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage()) + } + } + + /** + * Check if this VNF is already in maintenance in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfVnfInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkIfVnfInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("isInMaint result: " + isInMaint) + execution.setVariable('isVnfInMaintenance', isInMaint) + + if (isInMaint) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "VNF is in maintenance in A&AI") + } + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF's pservers are locked in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfPserversInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "checkIfPserversInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("areLocked result: " + areLocked) + execution.setVariable('arePserversLocked', areLocked) + + if (areLocked) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "pServers are locked in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set inMaint flag for this VNF to the specified value in A&AI. + * + * + * @param execution The flow's execution instance. + * @param inMaint The boolean value of the flag to set + */ + public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) { + def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + if (inMaint) { + execution.setVariable("workStep", "setVnfInMaintFlagInAAI") + } + else { + execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI") + } + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl() + aaiUpdator.setClient(client) + def vnfId = execution.getVariable("vnfId") + if (inMaint) { + aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage()) + } + } + + /** + * Call APP-C client to execute specified APP-C command for this VNF. + * + * + * @param execution The flow's execution instance. + * @param action The action to take in APP-C. + */ + public void runAppcCommand(DelegateExecution execution, Action action) { + def method = getClass().getSimpleName() + '.runAppcCommand(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + + try { + msoLogger.debug("Running APP-C action: " + action.toString()) + String vnfId = execution.getVariable('vnfId') + String msoRequestId = execution.getVariable('requestId') + execution.setVariable('msoRequestId', msoRequestId) + execution.setVariable("failedActivity", "APP-C") + execution.setVariable("workStep", action.toString() + "VNF") + + ApplicationControllerOrchestrator appcClient = new ApplicationControllerOrchestrator() + Status appcStatus = null + switch(action) { + case Action.Lock: + execution.setVariable('workStep', "LockVNF") + appcStatus = appcClient.runCommand(Action.Lock,msoRequestId,vnfId,null) + break + case Action.Unlock: + execution.setVariable('workStep', "UnlockVNF") + appcStatus = appcClient.runCommand(Action.Unlock,msoRequestId,vnfId,null) + break + case Action.HealthCheck: + def healthCheckIndex = execution.getVariable('healthCheckIndex') + execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex) + execution.setVariable('healthCheckIndex', healthCheckIndex + 1) + appcStatus = appcClient.runCommand(Action.HealthCheck,msoRequestId,vnfId,null) + break + case Action.Start: + execution.setVariable('workStep', "StartVNF") + appcStatus = appcClient.runCommand(Action.Start,msoRequestId,vnfId,null) + break + case Action.Stop: + execution.setVariable('workStep', "StopVNF") + appcStatus = appcClient.runCommand(Action.Stop,msoRequestId,vnfId,null) + break + default: + break + } + msoLogger.debug("Completed AppC request") + int appcCode = appcStatus.getCode() + msoLogger.debug("AppC status code is: " + appcCode) + msoLogger.debug("AppC status message is: " + appcStatus.getMessage()) + if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) { + execution.setVariable("errorCode", Integer.toString(appcCode)) + execution.setVariable("errorText", appcStatus.getMessage()) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } catch (java.lang.NoSuchMethodError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + + + /** + * Prepare DoDeleteVnfAndModules call. + * + * + * @param execution The flow's execution instance. + */ + public void prepDoDeleteVnfAndModules(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoDeleteVnfAndModules(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "doDeleteVnfAndModules") + execution.setVariable("failedActivity", "MSO Delete VNF") + msoLogger.trace('Exited ' + method) + + } + + /** + * Prepare DoCreateVnfAndModules call. + * + * + * @param execution The flow's execution instance. + */ + public void prepDoCreateVnfAndModules(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoReplaceVnfAndModules(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "doCreateVnfAndModules") + execution.setVariable("failedActivity", "MSO Create VNF") + msoLogger.trace('Exited ' + method) + + } + + + /** + * Handle Abort disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void abortProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.abortProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def errorText = execution.getVariable("errorText") + def errorCode = execution.getVariable("errorCode") + + exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText) + } + + /** + * Handle Manual disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void manualProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.manualProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def taskId = execution.getVariable("taskId") + + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId) + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy new file mode 100644 index 0000000000..d729c770ca --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy @@ -0,0 +1,148 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 groovy.json.JsonOutput + +import groovy.json.JsonSlurper +import groovy.util.Node +import groovy.util.XmlParser; +import groovy.xml.QName + +import java.io.Serializable; +import java.util.UUID; +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor; +import org.onap.so.bpmn.common.scripts.VidUtils; +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.client.aai.* + +import org.onap.so.client.appc.ApplicationControllerClient; +import org.onap.so.client.appc.ApplicationControllerSupport; +import org.onap.so.client.aai.AAIResourcesClient +import org.onap.so.client.aai.entities.AAIResultWrapper +import org.onap.so.client.aai.entities.uri.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.appc.client.lcm.model.Action; + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +public class RollbackVnf extends VnfCmBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, RollbackVnf.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "VnfIPU_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'RVnf_') + + execution.setVariable('rollbackSuccessful', false) + execution.setVariable('currentActivity', 'RVnf') + execution.setVariable('workStep', null) + execution.setVariable('failedActivity', null) + execution.setVariable('errorCode', "0") + execution.setVariable('actionUnlock', Action.Unlock) + execution.setVariable('actionStart', Action.Start) + execution.setVariable('actionResumeTraffic', Action.ResumeTraffic) + + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + try { + + execution.setVariable("rollbackErrorCode", "0") + + if (execution.getVariable("rollbackSetClosedLoopDisabledFlag") == true) { + msoLogger.debug("Will call setClosedLoopDisabledFlag") + } + + + msoLogger.trace('Exited ' + method) + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("rollbackErrorCode", "1") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Determine success of rollback execution. + * + * @param execution The flow's execution instance. + */ + public void setRollbackResult(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.setRollbackResult(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + def rollbackErrorCode = execution.getVariable('rollbackErrorCode') + if (rollbackErrorCode == "0") { + execution.setVariable('rollbackSuccessful', true) + msoLogger.debug("rollback successful") + } + else { + execution.setVariable('rollbackSuccessful', false) + msoLogger.debug("rollback unsuccessful") + } + + msoLogger.trace('Exited ' + method) + + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy new file mode 100644 index 0000000000..3a309cf5a2 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy @@ -0,0 +1,296 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 CMCC. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.* + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.utils.UUIDChecker +import org.springframework.web.util.UriUtils + + +/** + * This groovy class supports the <class>ScaleCustomE2EServiceInstance.bpmn</class> process. + * + */ +public class ScaleCustomE2EServiceInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ScaleCustomE2EServiceInstance.class); + + String Prefix = "CRESI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest(DelegateExecution execution) { + execution.setVariable("prefix", Prefix) + String msg = "" + msoLogger.trace("preProcessRequest() ") + + try { + + String siRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(siRequest) + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + serviceInstanceId = "NULL".toString() + } + msoLogger.debug("Generated new Service Instance:" + serviceInstanceId) + serviceInstanceId = UriUtils.encode(serviceInstanceId, "UTF-8") + execution.setVariable("serviceInstanceId", serviceInstanceId) + + // service instance ID is also service ID + execution.setVariable("serviceId", serviceInstanceId) + // service instance name + String serviceInstanceName = jsonUtil.getJsonValue(siRequest, "service.serviceInstanceName") + execution.setVariable("serviceInstanceName", serviceInstanceName) + + // service instance name + String serviceType = jsonUtil.getJsonValue(siRequest, "service.serviceType") + execution.setVariable("serviceType", serviceType) + + // operationa ID (key) + //String operationKey = UUIDChecker.generateUUID(msoLogger) + String operationId = jsonUtil.getJsonValue(siRequest, "operationId") + execution.setVariable("operationId", operationId) + msoLogger.debug("Input Request:" + siRequest + " operationId:" + operationId) + + + String resources = jsonUtil.getJsonValue(siRequest, "service.resources") + execution.setVariable("resources", resources) + + // node template UUID + String nodeTemplateUUID = UUIDChecker.generateUUID(msoLogger) + execution.setVariable("nodeTemplateUUID", nodeTemplateUUID) + + //subscriberInfo + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "service.globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + String requestDescription = "request description for test" + execution.setVariable("requestDescription", requestDescription) + execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit preProcessRequest ") + } + + public void sendSyncResponse(DelegateExecution execution) { + msoLogger.trace("sendSyncResponse ") + + try { + String operationId = execution.getVariable("operationId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + // RESTResponse for API Handler (APIH) Reply Task + String scaleServiceRestRequest = """{"operationId":"${operationId}"}""".trim() + msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + scaleServiceRestRequest) + sendWorkflowResponse(execution, 202, scaleServiceRestRequest) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit sendSyncResopnse ") + } + + + public void sendSyncError(DelegateExecution execution) { + msoLogger.trace("sendSyncError ") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + + } + + public void prepareCompletionRequest(DelegateExecution execution) { + msoLogger.trace("prepareCompletion ") + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String source = execution.getVariable("source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>SCALE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <status-message>Service Instance was scaled successfully.</status-message> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <mso-bpel-name>ScaleGenericALaCarteServiceInstance</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit prepareCompletionRequest ") + } + + public void prepareFalloutRequest(DelegateExecution execution) { + msoLogger.trace("prepareFalloutRequest ") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Input Workflow Exception: " + wfex.toString()) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>SCALE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage()) + String errorException = " Bpmn error encountered in ScaleGenericALaCarteServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>SCALE</action> + <source>UUI</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + msoLogger.trace("Exit prepareFalloutRequest ") + } + + + /** + * Init the service Operation Status + */ + public void prepareInitServiceOperationStatus(DelegateExecution execution){ + msoLogger.trace("STARTED prepareInitServiceOperationStatus Process ") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + //String serviceName = execution.getVariable("serviceInstanceName") + String operationId = execution.getVariable("operationId") + String operationType = "SCALE" + String userId = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service scaling" + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <serviceName>${MsoUtils.xmlEscape(serviceName)}</serviceName> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + msoLogger.info("Outgoing updateServiceOperStatusRequest: \n" + payload) + msoLogger.debug("Scale network service updateServiceOperStatusRequest Request: " + payload) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage()) + } + msoLogger.trace("COMPLETED prepareInitServiceOperationStatus Process ") + } +}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy new file mode 100644 index 0000000000..538f882c2b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy @@ -0,0 +1,570 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * 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 static org.apache.commons.lang3.StringUtils.*; + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.json.JSONArray +import org.json.JSONObject +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.core.WorkflowException +import org.onap.so.bpmn.core.domain.Resource +import org.onap.so.bpmn.core.json.JsonUtils +import org.springframework.web.util.UriUtils + +import groovy.json.* + +/** + * This groovy class supports the <class>UpdateCustomE2EServiceInstance.bpmn</class> process. + * AlaCarte flow for 1702 ServiceInstance Update + * + */ +public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor { + String Prefix="UPDSI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + execution.setVariable("prefix",Prefix) + String msg = "" + utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled) + + try { + + String siRequest = execution.getVariable("bpmnRequest") + utils.logAudit(siRequest) + + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + utils.log("INFO", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if (isBlank(serviceInstanceId)) { + msg = "Input serviceInstanceId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + //subscriberInfo for aai + String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId") + if (isBlank(globalSubscriberId)) { + msg = "Input globalSubscriberId' is null" + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + } + + //requestDetails + execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source")) + execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName")) + execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback")) + String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId") + if (isBlank(productFamilyId)) + { + msg = "Input productFamilyId is null" + utils.log("INFO", msg, isDebugEnabled) + } else { + execution.setVariable("productFamilyId", productFamilyId) + } + + //user params + String userParams = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams") + utils.log("INFO", "userParams:" + userParams, isDebugEnabled) + List<String> paramList = jsonUtil.StringArrayToList(execution, userParams) + String uuiRequest = jsonUtil.getJsonValue(paramList.get(0), "UUIRequest") + if (isBlank(uuiRequest)) { + msg = "Input uuiRequest is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else + { + execution.setVariable("uuiRequest", uuiRequest) + } + + utils.log("INFO", "uuiRequest:\n" + uuiRequest, isDebugEnabled) + + //serviceType for aai + String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.serviceType") + if (isBlank(serviceType)) { + msg = "Input serviceType is null" + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } else { + execution.setVariable("serviceType", serviceType) + } + + // target model info + String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid") + utils.log("INFO","modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled) + execution.setVariable("modelInvariantUuid", modelInvariantUuid) + execution.setVariable("model-invariant-id-target", modelInvariantUuid) + + String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid") + utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled) + execution.setVariable("modelUuid", modelUuid) + execution.setVariable("model-version-id-target", modelUuid) + + String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName") + utils.log("INFO","serviceModelName: " + serviceModelName, isDebugEnabled) + if(serviceModelName == null) { + serviceModelName = "" + } + execution.setVariable("serviceModelName", serviceModelName) + + //operationId + String operationId = jsonUtil.getJsonValue(siRequest, "operationId") + if (isBlank(operationId)) { + operationId = UUID.randomUUID().toString() + } + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", "update") + execution.setVariable("hasResourcetoUpdate", false) + + execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," ***** Exit preProcessRequest *****", isDebugEnabled) + } + + + public void postProcessAAIGET(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled) + String msg = "" + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator") + String serviceType = "" + + if(foundInAAI){ + utils.log("INFO","Found Service-instance in AAI", isDebugEnabled) + + String siData = execution.getVariable("GENGS_service") + utils.log("INFO", "SI Data", isDebugEnabled) + if (isBlank(siData)) + { + msg = "Could not retrive ServiceInstance data from AAI, Id:" + serviceInstanceId + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + utils.log("INFO", "SI Data" + siData, isDebugEnabled) + + // serviceInstanceName + String serviceInstanceName = execution.getVariable("serviceInstanceName") + if(isBlank(serviceInstanceName) && utils.nodeExists(siData, "service-instance-name")) { + serviceInstanceName = utils.getNodeText(siData, "service-instance-name") + execution.setVariable("serviceInstanceName", serviceInstanceName) + } + + // Get Template uuid and version + if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) { + utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled) + + def modelInvariantId = utils.getNodeText(siData, "model-invariant-id") + def modelVersionId = utils.getNodeText(siData, "model-version-id") + + // Set Original Template info + execution.setVariable("model-invariant-id-original", modelInvariantId) + execution.setVariable("model-version-id-original", modelVersionId) + } + + //get related service instances (vnf/network or volume) for delete + if (utils.nodeExists(siData, "relationship-list")) { + utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled) + + JSONArray jArray = new JSONArray() + + XmlParser xmlParser = new XmlParser() + Node root = xmlParser.parseText(siData) + def relation_list = utils.getChildNode(root, 'relationship-list') + def relationships = utils.getIdenticalChildren(relation_list, 'relationship') + + for (def relation: relationships) { + def jObj = getRelationShipData(relation, isDebugEnabled) + jArray.put(jObj) + } + + execution.setVariable("serviceRelationShip", jArray.toString()) + } + }else{ + boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator") + if(!succInAAI){ + utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + + utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled) + } + }catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled) + } + + private JSONObject getRelationShipData(node, isDebugEnabled){ + JSONObject jObj = new JSONObject() + + def relation = utils.nodeToString(node) + def rt = utils.getNodeText(relation, "related-to") + + def rl = utils.getNodeText(relation, "related-link") + utils.log("INFO", "ServiceInstance Related NS/Configuration :" + rl, isDebugEnabled) + + def rl_datas = utils.getIdenticalChildren(node, "relationship-data") + for(def rl_data : rl_datas) { + def eKey = utils.getChildNodeText(rl_data, "relationship-key") + def eValue = utils.getChildNodeText(rl_data, "relationship-value") + + if ((rt == "service-instance" && eKey.equals("service-instance.service-instance-id")) + //for overlay/underlay + || (rt == "configuration" && eKey.equals("configuration.configuration-id"))){ + jObj.put("resourceInstanceId", eValue) + } + } + + def rl_props = utils.getIdenticalChildren(node, "related-to-property") + for(def rl_prop : rl_props) { + def eKey = utils.getChildNodeText(rl_prop, "property-key") + def eValue = utils.getChildNodeText(rl_prop, "property-value") + if((rt == "service-instance" && eKey.equals("service-instance.service-instance-name")) + //for overlay/underlay + || (rt == "configuration" && eKey.equals("configuration.configuration-type"))){ + jObj.put("resourceType", eValue) + } + } + + utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled) + + return jObj + } + + + public void preCompareModelVersions(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + } + + public void postCompareModelVersions(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " ======== STARTED postCompareModelVersions Process ======== ", isDebugEnabled) + + def hasResourcetoUpdate = false + def hasResourcetoAdd = false + def hasResourcetoDelete = false + List<Resource> addResourceList = execution.getVariable("addResourceList") + List<Resource> delResourceList = execution.getVariable("delResourceList") + + if(addResourceList != null && !addResourceList.isEmpty()) { + hasResourcetoAdd = true + } + + if(delResourceList != null && !delResourceList.isEmpty()) { + hasResourcetoDelete = true + } + + hasResourcetoUpdate = hasResourcetoAdd || hasResourcetoDelete + execution.setVariable("hasResourcetoUpdate", hasResourcetoUpdate) + + utils.log("DEBUG", "======== COMPLETED postCompareModelVersions Process ======== ", isDebugEnabled) + } + + /** + * Init the service Operation Status + */ + public void prepareInitServiceOperationStatus(DelegateExecution execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("DEBUG", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled) + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String userId = "" + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service updating" + utils.log("DEBUG", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId, isDebugEnabled) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint") + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + utils.log("DEBUG", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled) + + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + utils.log("DEBUG", "Outgoing updateServiceOperStatusRequest: \n" + payload, isDebugEnabled) + utils.logAudit("CreateVfModuleInfra Outgoing updateServiceOperStatusRequest Request: " + payload) + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing prepareInitServiceOperationStatus. Exception is:\n" + e, isDebugEnabled) + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage()) + } + utils.log("DEBUG", "======== COMPLETED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled) + } + + /** + * Update the service Operation Status + */ + public void preUpdateServiceOperationStatus(DelegateExecution execution){ + def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')' + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO","Entered " + method, isDebugEnabled) + + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = execution.getVariable("operationType") + String serviceName = execution.getVariable("serviceInstanceName") + String result = execution.getVariable("operationResult") + String progress = execution.getVariable("progress") + String reason = execution.getVariable("operationReason") + String userId = "" + utils.log("INFO", "progress: " + progress , isDebugEnabled) + + String operationContent = "Prepare service : " + execution.getVariable("operationStatus") + + utils.log("INFO", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId, isDebugEnabled) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationId", operationId) + execution.setVariable("operationType", operationType) + + def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter" + execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint) + utils.log("INFO", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled) + + execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter") + String payload = + """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:ns="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> + <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> + <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> + <operationType>${MsoUtils.xmlEscape(operationType)}</operationType> + <userId>${MsoUtils.xmlEscape(userId)}</userId> + <result>${MsoUtils.xmlEscape(result)}</result> + <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <reason>${MsoUtils.xmlEscape(reason)}</reason> + </ns:updateServiceOperationStatus> + </soapenv:Body> + </soapenv:Envelope>""" + + payload = utils.formatXml(payload) + execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload) + utils.log("INFO", "Outgoing preUpdateServiceOperationStatus: \n" + payload, isDebugEnabled) + + + }catch(Exception e){ + utils.log("ERROR", "Exception Occured Processing preUpdateServiceOperationStatus. Exception is:\n" + e, isDebugEnabled) + execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preUpdateServiceOperationStatus Method:\n" + e.getMessage()) + } + utils.log("INFO", "======== COMPLETED preUpdateServiceOperationStatus Process ======== ", isDebugEnabled) + utils.log("INFO", "Exited " + method, isDebugEnabled) + } + + public void sendSyncResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", " *** sendSyncResponse *** ", isDebugEnabled) + + try { + String operationId = execution.getVariable("operationId") + def hasResourcetoUpdate = execution.getVariable("hasResourcetoUpdate") + + String updateServiceResp = "" + if(hasResourcetoUpdate) { + // RESTResponse for API Handler (APIH) Reply Task + updateServiceResp = """{"operationId":"${operationId}"}""".trim() + } + else { + updateServiceResp = """{"OperationResult":"No Resource to Add or Delete or Service Instance not found in AAI."}""" + } + + utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + updateServiceResp, isDebugEnabled) + sendWorkflowResponse(execution, 202, updateServiceResp) + execution.setVariable("sentSyncResponse", true) + + } catch (Exception ex) { + String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," ***** Exit sendSyncResopnse *****", isDebugEnabled) + } + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled) + + try { + String errorMessage = "" + int errorCode = 7000 + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("WorkflowException") + errorMessage = wfe.getErrorMessage() + errorCode = wfe.getErrorCode() + } 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>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException>""" + + utils.logAudit(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + + } catch (Exception ex) { + utils.log("INFO", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled) + } + + } + + public void prepareCompletionRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", " *** prepareCompletion *** ", isDebugEnabled) + + try { + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String source = execution.getVariable("source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <status-message>Service Instance was updated successfully.</status-message> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <mso-bpel-name>UpdateCustomE2EServiceInstance</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + execution.setVariable("completionRequest", xmlMsoCompletionRequest) + utils.log("INFO", " Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled) + + } catch (Exception ex) { + String msg = " Exception in prepareCompletion:" + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO", "*** Exit prepareCompletionRequest ***", isDebugEnabled) + } + + public void prepareFalloutRequest(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", " *** prepareFalloutRequest *** ", isDebugEnabled) + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + utils.log("INFO", " Input Workflow Exception: " + wfex.toString(), isDebugEnabled) + String requestId = execution.getVariable("msoRequestId") + String source = execution.getVariable("source") + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + execution.setVariable("falloutRequest", falloutRequest) + } catch (Exception ex) { + utils.log("INFO", "Exception prepareFalloutRequest:" + ex.getMessage(), isDebugEnabled) + String errorException = " Bpmn error encountered in UpdateCustomE2EServiceInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + ex.getMessage() + String requestId = execution.getVariable("msoRequestId") + String falloutRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>UUI</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable("falloutRequest", falloutRequest) + } + utils.log("INFO", "*** Exit prepareFalloutRequest ***", isDebugEnabled) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy new file mode 100644 index 0000000000..329d58aa58 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy @@ -0,0 +1,403 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +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.core.WorkflowException +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MsoLogger + +import groovy.json.* + +/** + * This groovy class supports the <class>UpdateNetworkInstance.bpmn</class> process. + * + */ +public class UpdateNetworkInstance extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateNetworkInstance.class); + + String Prefix="UPDNI_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public InitializeProcessVariables(DelegateExecution execution){ + + execution.setVariable(Prefix + "source", "") + execution.setVariable(Prefix + "Success", false) + + execution.setVariable(Prefix + "CompleteMsoProcessRequest", "") + execution.setVariable(Prefix + "FalloutHandlerRequest", "") + + } + + + /** + * This method is executed during the preProcessRequest task of the <class>UpdateNetworkInstance.bpmn</class> process. + * @param execution + */ + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>UpdateNetworkInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest() of UpdateNetworkInstance Request") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + String sdncVersion = execution.getVariable("sdncVersion") + if (sdncVersion == null || sdncVersion == "1610") { + // 'a-la-cart' default, sdncVersion = '1610' + execution.setVariable("sdncVersion", "1610") + String bpmnRequest = execution.getVariable("bpmnRequest") + if (bpmnRequest != null) { + String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback") + if (disableRollback != null) { + execution.setVariable("disableRollback", disableRollback) + msoLogger.debug("Received 'suppressRollback': " + disableRollback ) + } else { + execution.setVariable("disableRollback", false) + } + msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") ) + } else { + String dataErrorMessage = " Invalid 'bpmnRequest' request." + msoLogger.debug(dataErrorMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + } else { + // 'macro' TEST ONLY, sdncVersion = '1702' + msoLogger.debug(" \'disableRollback\' : " + execution.getVariable("disableRollback") ) + } + + String requestId = execution.getVariable("msoRequestId") + if (requestId != null) { + execution.setVariable("mso-request-id", requestId) + } else { + requestId = execution.getVariable("mso-request-id") + } + execution.setVariable(Prefix + "requestId", requestId) + + // get/set 'requestId' + if (execution.getVariable("requestId") == null) { + execution.setVariable("requestId", requestId) + } + + //Place holder for additional code. + + // TODO ??? + // userParams??? 1) pre-loads indicator, 2) 'auto-activation' + // Tag/Value parameters + // + // Map: 'networkInputParams': 'auto-activation'' + // Sample format? + // "requestParameters": { + // "userParams": [ + // { + // "name": "someUserParam1", + // "value": "someValue1" + // } + // ] + // } + // + // String userParams = //use json util to extract "userParams"// + // execution.setVariable("networkInputParams", userParams) + // else: execution.setVariable("networkInputParams", null) + // + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex){ + sendSyncError(execution) + // caught exception + String exceptionMessage = "Exception Encountered in UpdateNetworkInstance, PreProcessRequest() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + } + + public void sendSyncResponse (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside sendSyncResponse() of UpdateNetworkInstance") + + try { + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // RESTResponse (for API Handler (APIH) Reply Task) + String updateNetworkRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + updateNetworkRestRequest) + sendWorkflowResponse(execution, 202, updateNetworkRestRequest) + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in UpdateNetworkInstance flow. sendSyncResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + } + + + public void getNetworkModelInfo (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside getNetworkModelInfo() of UpdateNetworkInstance") + + try { + + // For Ala-Carte (sdnc = 1610): + // 1. the Network ModelInfo is expected to be sent + // via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId + // 2. the Service ModelInfo is expected to be sent but will be IGNORE + // via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service) + + } catch (Exception ex) { + sendSyncError(execution) + String exceptionMessage = "Bpmn error encountered in UpdateNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + public void sendSyncError (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside sendSyncError() of UpdateNetworkInstance") + + try { + + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // REST Error (for API Handler (APIH) Reply Task) + String syncError = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 500, syncError) + + } catch (Exception ex) { + msoLogger.debug(" Bpmn error encountered in UpdateNetworkInstance flow. sendSyncError() - " + ex.getMessage()) + } + + } + + public void prepareCompletion (DelegateExecution execution) { + + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside prepareCompletion() of UpdateNetworkInstance") + + try { + + String requestId = execution.getVariable("mso-request-id") + String source = execution.getVariable(Prefix + "source") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>VID</source> + </request-info> + <aetgt:status-message>Network has been updated successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN Network action: UPDATE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + // normal path + execution.setVariable(Prefix + "Success", true) + execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in UpdateNetworkInstance flow. prepareCompletion() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + + } + + + + + // ************************************************** + // Post or Validate Response Section + // ************************************************** + + public void postProcessResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside postProcessResponse() of UpdateNetworkInstance") + + try { + + if (execution.getVariable("CMSO_ResponseCode") == "200") { + execution.setVariable(Prefix + "Success", true) + msoLogger.trace("UpdateNetworkInstance Success ") + // Place holder for additional code. + + } else { + execution.setVariable(Prefix + "Success", false) + msoLogger.trace("UpdateNetworkInstance Failed in CompletionMsoProces flow!. ") + + } + + + } catch (Exception ex) { + String exceptionMessage = " Bpmn error encountered in UpdateNetworkInstance flow. postProcessResponse() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + + } + + } + + + // ******************************* + // Build Error Section + // ******************************* + + public void processRollbackData (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside processRollbackData() of UpdateNetworkInstance") + + try { + //execution.getVariable("orchestrationStatus") + //execution.getVariable("networkId") + //execution.getVariable("networkName") + //networkOutputParams + //rollbackData + //rolledBack + + } catch (Exception ex) { + msoLogger.debug(" Bpmn error encountered in UpdateNetworkInstance flow. callDBCatalog() - " + ex.getMessage()) + } + + } + + // Prepare for FalloutHandler + public void buildErrorResponse (DelegateExecution execution) { + + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler. ") + + String falloutHandlerRequest = "" + String requestId = execution.getVariable("mso-request-id") + + try { + + WorkflowException wfe = execution.getVariable("WorkflowException") + String errorCode = String.valueOf(wfe.getErrorCode()) + String errorMessage = wfe.getErrorMessage() + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + msoLogger.debug(falloutHandlerRequest) + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.debug(" Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest) + + } catch (Exception ex) { + String errorException = " Bpmn error encountered in UpdateNetworkInstance flow. FalloutHandlerRequest, buildErrorResponse() - " + msoLogger.debug("Exception error in UpdateNetworkInstance flow, buildErrorResponse(): " + ex.getMessage()) + falloutHandlerRequest = + """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1" + xmlns:wfsch="http://org.onap/so/workflow/schema/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>VID</source> + </request-info> + <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1"> + <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage> + <aetgt:ErrorCode>7000</aetgt:ErrorCode> + </aetgt:WorkflowException> + </aetgt:FalloutHandlerRequest>""" + + execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest) + msoLogger.debug(" Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest) + + } + + } + + public void processJavaException(DelegateExecution execution){ + + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception in " + Prefix) + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception") + + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix) // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix) + } + msoLogger.debug("Completed processJavaException Method in " + Prefix) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy new file mode 100644 index 0000000000..b1aaf5ea5f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy @@ -0,0 +1,326 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.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.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + + +public class UpdateVfModule extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModule.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVfMod_') + execution.setVariable('UPDVfMod_Request', null) + execution.setVariable('UPDVfMod_requestInfo', null) + execution.setVariable('UPDVfMod_requestId', null) + execution.setVariable('UPDVfMod_source', null) + execution.setVariable('UPDVfMod_vnfInputs', null) + execution.setVariable('UPDVfMod_vnfId', null) + execution.setVariable('UPDVfMod_vfModuleId', null) + execution.setVariable('UPDVfMod_tenantId', null) + execution.setVariable('UPDVfMod_volumeGroupId', null) + execution.setVariable('UPDVfMod_vnfParams', null) + execution.setVariable('UPDVfMod_updateInfraRequest', null) + execution.setVariable('UpdateVfModuleSuccessIndicator', false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + initProcessVariables(execution) + String request = validateRequest(execution) + + msoLogger.debug("UpdateVfModule request: " + request) + def requestInfo = getRequiredNodeXml(execution, request, 'request-info') + execution.setVariable('UPDVfMod_requestInfo', requestInfo) + execution.setVariable('UPDVfMod_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) + execution.setVariable('UPDVfMod_source', getNodeTextForce(requestInfo, 'source')) + + def vnfInputs = getRequiredNodeXml(execution, request, 'vnf-inputs') + execution.setVariable('UPDVfMod_vnfInputs', vnfInputs) + execution.setVariable('UPDVfMod_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id')) + execution.setVariable('UPDVfMod_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id')) + execution.setVariable('UPDVfMod_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id')) + execution.setVariable('UPDVfMod_volumeGroupId', getNodeTextForce(vnfInputs, 'volume-group-id')) + + def vnfParams = utils.getNodeXml(request, 'vnf-params') + execution.setVariable('UPDVfMod_vnfParams', vnfParams) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage()) + } + } + + /** + * Prepare and send the synchronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = execution.getVariable('UPDVfMod_requestInfo') + def requestId = execution.getVariable('UPDVfMod_requestId') + def source = execution.getVariable('UPDVfMod_source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + def vnfInputs = execution.getVariable('UPDVfMod_vnfInputs') + + String synchResponse = """ + <vnf-request xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-info> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE_VF_MODULE</action> + <request-status>IN_PROGRESS</request-status> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <start-time>${MsoUtils.xmlEscape(startTime)}</start-time> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + ${vnfInputs} + </vnf-request> + """ + + synchResponse = utils.formatXml(synchResponse) + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.debug("UpdateVfModule Synch Response: " + synchResponse) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendSynchResponse(): ' + e.getMessage()) + } + } + + /** + * Prepare the Request for invoking the DoUpdateVfModule subflow. + * + * NOTE: Currently, the method just logs passing through as the + * incoming Request to this main flow is used as the Request to + * the DoUpdateVfModule subflow. No preparation processing is + * necessary. + * + * @param execution The flow's execution instance. + */ + public void prepDoUpdateVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage()) + } + } + + /** + * Prepare the Request for updating the DB for this Infra Request. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('UPDVfMod_requestId') + def vnfId = execution.getVariable('UPDVfMod_vnfId') + def vfModuleId = execution.getVariable('UPDVfMod_vfModuleId') + def tenantId = execution.getVariable('UPDVfMod_tenantId') + def volumeGroupId = execution.getVariable('UPDVfMod_volumeGroupId') + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPEL</lastModifiedBy> + <requestStatus>COMPLETE</requestStatus> + <progress>100</progress> + <vnfOutputs> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <tenant-id>${MsoUtils.xmlEscape(tenantId)}</tenant-id> + <volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id> + </vnfOutputs> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('UPDVfMod_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + + msoLogger.debug("UpdateVfModule Infra Request: " + updateInfraRequest) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateInfraRequest(): ' + e.getMessage()) + } + } + + /** + * Builds a "CompletionHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void completionHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.completionHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = getVariable(execution, 'UPDVfMod_requestInfo') + + String content = """ + <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1"> + ${requestInfo} + <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name> + </sdncadapterworkflow:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.debug("UpdateVfModule CompletionHandler Request: " + content) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Builds a "FalloutHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void falloutHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.falloutHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def prefix = execution.getVariable('prefix') + def request = getVariable(execution, prefix+'Request') + def requestInformation = utils.getNodeXml(request, 'request-information', false) + + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInformation} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.debug("UpdateVfModule fallOutHandler Request: " + content) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error') + } + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy new file mode 100644 index 0000000000..416d0d6e60 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy @@ -0,0 +1,504 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.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.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class UpdateVfModuleInfra extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleInfra.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVfModI_') + execution.setVariable('UPDVfModI_Request', null) + execution.setVariable('UPDVfModI_requestInfo', null) + execution.setVariable('UPDVfModI_requestId', null) + execution.setVariable('UPDVfModI_source', null) + execution.setVariable('UPDVfModI_vnfInputs', null) + execution.setVariable('UPDVfModI_vnfId', null) + execution.setVariable('UPDVfModI_vfModuleId', null) + execution.setVariable('UPDVfModI_tenantId', null) + execution.setVariable('UPDVfModI_volumeGroupId', null) + execution.setVariable('UPDVfModI_vnfParams', null) + execution.setVariable('UPDVfModI_updateInfraRequest', null) + execution.setVariable('UpdateVfModuleSuccessIndicator', false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def prefix = "UPDVfModI_" + + def incomingRequest = execution.getVariable('bpmnRequest') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + + execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId) + execution.setVariable(prefix+'vnfId', vnfId) + execution.setVariable("isVidRequest", "true") + + def vnfName = '' + def asdcServiceModelVersion = '' + def serviceModelInfo = null + def vnfModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + + } + if (it.relatedInstance.modelInfo.modelType == 'vnf') { + vnfName = it.relatedInstance.instanceName ?: '' + vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + } + } + } + + execution.setVariable(prefix + 'vnfName', vnfName) + execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo) + execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo) + + def vnfType = execution.getVariable('vnfType') + execution.setVariable(prefix + 'vnfType', vnfType) + def vfModuleId = execution.getVariable('vfModuleId') + execution.setVariable(prefix + 'vfModuleId', vfModuleId) + def volumeGroupId = execution.getVariable('volumeGroupId') + execution.setVariable(prefix + 'volumeGroupId', volumeGroupId) + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug('Processed user params: ' + userParamsMap) + + execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap) + + def isBaseVfModule = "false" + if (execution.getVariable('isBaseVfModule') == true) { + isBaseVfModule = "true" + } + + execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable(prefix + 'requestId', requestId) + + def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo) + + def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback + + + def backoutOnFailure = "" + if(suppressRollback != null){ + if ( suppressRollback == true) { + backoutOnFailure = "false" + } else if ( suppressRollback == false) { + backoutOnFailure = "true" + } + } + + execution.setVariable('disableRollback', suppressRollback) + + def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable(prefix + 'vfModuleName', vfModuleName) + + def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: '' + execution.setVariable(prefix + 'serviceId', serviceId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable(prefix + 'usePreload', usePreload) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable(prefix + 'tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId) + + execution.setVariable(prefix + 'sdncVersion', '1702') + + execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false) + + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable(prefix + "source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable(prefix + "requestInfo", requestInfo) + + //backoutOnFailure + + msoLogger.debug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo")) + + msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('UPDVfModI_requestInfo') + def requestId = execution.getVariable('UPDVfModI_requestId') + def source = execution.getVariable('UPDVfModI_source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vfModuleId = execution.getVariable("vfModuleId") + String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + /** + * Prepare the Request for invoking the DoUpdateVfModule subflow. + * + * NOTE: Currently, the method just logs passing through as the + * incoming Request to this main flow is used as the Request to + * the DoUpdateVfModule subflow. No preparation processing is + * necessary. + * + * @param execution The flow's execution instance. + */ + public void prepDoUpdateVfModule(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage()) + } + } + + /** + * Prepare the Request for updating the DB for this Infra Request. + * + * @param execution The flow's execution instance. + */ + public void prepUpdateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('UPDVfModI_requestId') + def vnfId = execution.getVariable('UPDVfModI_vnfId') + def vfModuleId = execution.getVariable('UPDVfModI_vfModuleId') + def tenantId = execution.getVariable('UPDVfModI_tenantId') + def volumeGroupId = execution.getVariable('UPDVfModI_volumeGroupId') + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPEL</lastModifiedBy> + <requestStatus>COMPLETE</requestStatus> + <progress>100</progress> + <vnfOutputs> + <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id> + <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id> + <tenant-id>${MsoUtils.xmlEscape(tenantId)}</tenant-id> + <volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id> + </vnfOutputs> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('UPDVfModI_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateInfraRequest(): ' + e.getMessage()) + } + } + + /** + * Builds a "CompletionHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void completionHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.completionHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = getVariable(execution, 'UPDVfModI_requestInfo') + + String content = """ + <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1"> + ${requestInfo} + <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name> + </sdncadapterworkflow:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Builds a "FalloutHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void falloutHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.falloutHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def prefix = execution.getVariable('prefix') + def request = getVariable(execution, prefix+'Request') + def requestInformation = execution.getVariable(prefix + "requestInfo") + + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInformation} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Validates the request, request id and service instance id. If a problem is found, + * a WorkflowException is generated and an MSOWorkflowException event is thrown. This + * method also sets up the log context for the workflow. + * @param execution the execution + * @return the validated request + */ + public String validateInfraRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.validateInfraRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String processKey = getProcessKey(execution); + def prefix = execution.getVariable("prefix") + + if (prefix == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null") + } + + try { + def request = execution.getVariable(prefix + 'Request') + + if (request == null) { + request = execution.getVariable(processKey + 'Request') + + if (request == null) { + request = execution.getVariable('bpmnRequest') + } + + setVariable(execution, processKey + 'Request', null); + setVariable(execution, 'bpmnRequest', null); + setVariable(execution, prefix + 'Request', request); + } + + if (request == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null") + } + + /* + + def requestId = execution.getVariable("mso-request-id") + + if (requestId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id") + } + + setVariable(execution, prefix + 'requestId', requestId) + + def serviceInstanceId = execution.getVariable("mso-service-instance-id") + + if (serviceInstanceId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id") + } + + utils.logContext(requestId, serviceInstanceId) + */ + msoLogger.debug('Incoming message: ' + System.lineSeparator() + request) + msoLogger.trace('Exited ' + method) + return request + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message") + } + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy new file mode 100644 index 0000000000..a926030924 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy @@ -0,0 +1,468 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.client.aai.AAIValidatorImpl +import org.onap.so.client.appc.ApplicationControllerClient +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class UpdateVfModuleInfraV2 { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleInfraV2.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + boolean preProcessRequestCheck = true; + boolean sendSynchResponseCheck = true; + boolean checkPserverFlagCheck = true; + boolean vfFlagCheckSetCheck = true; + boolean lockAppCCheck = true; + boolean healthDiagnosticSDNOCheck = true; + boolean healthCheckAppCCheck = true; + boolean stopVfModuleControllerCheck = true; + boolean healthCheckControllerCheck = true; + boolean doUpdateVfModulePrepCheck = true; + boolean completionHandlerPrepCheck = true; + boolean startVfModuleControllerCheck = true; + boolean vFFlagUnsetCheck = true; + boolean unlockAppCCheck = true; + boolean postUpgradeHealthCheckControllerCheck = true; + + + + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVfModI_') + execution.setVariable('UPDVfModI_Request', null) + execution.setVariable('UPDVfModI_requestInfo', null) + execution.setVariable('UPDVfModI_requestId', null) + execution.setVariable('UPDVfModI_source', null) + execution.setVariable('UPDVfModI_vnfInputs', null) + execution.setVariable('UPDVfModI_vnfId', null) + execution.setVariable('UPDVFModI_moduleUuid', null) + execution.setVariable('UPDVfModI_vfModuleId', null) + execution.setVariable('UPDVfModI_tenantId', null) + execution.setVariable('UPDVfModI_volumeGroupId', null) + execution.setVariable('UPDVfModI_vnfParams', null) + execution.setVariable('UPDVfModI_updateInfraRequest', null) + execution.setVariable('UpdateVfModuleSuccessIndicator', false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + System.out.print("*****************************PreProcessRequest**************************") + + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + //msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def prefix = "UPDVfModI_" + + def incomingRequest = execution.getVariable('bpmnRequest') + + //msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + //msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + def moduleUuid = execution.getVariable('moduleUuid') + execution.setVariable(prefix + 'moduleUuid',moduleUuid) + execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId) + execution.setVariable(prefix+'vnfId', vnfId) + execution.setVariable("isVidRequest", "true") + + def vnfName = '' + def asdcServiceModelVersion = '' + def serviceModelInfo = null + def vnfModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + } + if (it.relatedInstance.modelInfo.modelType == 'vnf') { + vnfName = it.relatedInstance.instanceName ?: '' + vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + } + } + } + + execution.setVariable(prefix + 'vnfName', vnfName) + execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo) + execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo) + + def vnfType = execution.getVariable('vnfType') + execution.setVariable(prefix + 'vnfType', vnfType) + def vfModuleId = execution.getVariable('vfModuleId') + execution.setVariable(prefix + 'vfModuleId', vfModuleId) + def volumeGroupId = execution.getVariable('volumeGroupId') + execution.setVariable(prefix + 'volumeGroupId', volumeGroupId) + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value.toString()) + } + } + + //msoLogger.debug('Processed user params: ' + userParamsMap) + + execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap) + + def isBaseVfModule = "false" + if (execution.getVariable('isBaseVfModule') == true) { + isBaseVfModule = "true" + } + + execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable(prefix + 'requestId', requestId) + + def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo) + + def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback + + + def backoutOnFailure = "" + if(suppressRollback != null){ + if ( suppressRollback == true) { + backoutOnFailure = "false" + } else if ( suppressRollback == false) { + backoutOnFailure = "true" + } + } + + execution.setVariable('disableRollback', suppressRollback) + + def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable(prefix + 'vfModuleName', vfModuleName) + + def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: '' + execution.setVariable(prefix + 'serviceId', serviceId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable(prefix + 'usePreload', usePreload) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable(prefix + 'tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId) + + execution.setVariable(prefix + 'sdncVersion', '1702') + + execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false) + + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable(prefix + "source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable(prefix + "requestInfo", requestInfo) + + //backoutOnFailure + + //msoLogger.debug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo")) + + //msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + //msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + //msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the synchronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + System.out.print("*****************************SendSynchResponse**************************") + + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + //msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('UPDVfModI_requestInfo') + def requestId = execution.getVariable('UPDVfModI_requestId') + def source = execution.getVariable('UPDVfModI_source') + + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + // RESTResponse (for API Handler (APIH) Reply Task) + def vfModuleId = execution.getVariable("vfModuleId") + String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim() + sendWorkflowResponse(execution, 200, synchResponse) + //msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + //msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + //check to see if the Pserver Flag is locked + public void checkPserverFlag(DelegateExecution execution) { + + System.out.println("*****************************CheckingPserverFlag*************************") + String vnfId = (String)execution.getVariable('vnfId') + String uuid = (String)execution.getVariable('moduleUuid') + AAIValidatorImpl aaiVI = new AAIValidatorImpl() + boolean flag = aaiVI.isPhysicalServerLocked(vnfId, uuid) + } + + //check to see if the VFFlag is locked + public void vfFlagCheck(DelegateExecution execution) { + + System.out.print("*****************************VfFlagCheck*************************") + String vnfId = (String)execution.getVariable('vnfId') + String uuid = (String)execution.getVariable('moduleUuid') + AAIValidatorImpl aaiVI = new AAIValidatorImpl() + boolean flag = aaiVI.isVNFLocked(vnfId, uuid) + + } + //lock the VF Flag + public void vfFlagSet(DelegateExecution execution) { + + System.out.print("*****************************VfFlagSet*************************") + String vnfId = (String)execution.getVariable('vnfId') + String uuid = (String)execution.getVariable('moduleUuid') + AAIValidatorImpl aaiVI = new AAIValidatorImpl() + aaiVI.updateVnfToLocked(vnfId,uuid); + + } + + //Lock AppC + public void lockAppC(DelegateExecution execution) { + + System.out.print("*****************************lockAppC*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("Lock",vfModuleId) + + + } + //run health check + public void healthCheckAppC(DelegateExecution execution) { + + System.out.print("*****************************healthCheckAppC*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("HealthCheck",vfModuleId) + + } + //SDNO health diagnostic + public void healthDiagnosticSDNO(DelegateExecution execution) { + + System.out.print("*****************************healthDiagnosticSDNO is currently ignored*************************") + //SDNOValidatorImpl.healthDiagnostic("",""); + + } + //stop VF module controller + public void stopVfModuleController(DelegateExecution execution) { + + System.out.print("*****************************stopVfModuleController*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("Stop",vfModuleId) + + + } + + public void doUpdateVfModulePrep(DelegateExecution execution) { + + System.out.print("*****************************doUpdateVfModulePrep*************************") + def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' + + 'execution=' + execution.getId() + + ')' + + //msoLogger.trace('Entered ' + method) + + try { + + //msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + //msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage()) + + } + + } + + public void completionHandlerPrep(DelegateExecution execution,String resultVar) { + + System.out.print("*****************************completionHandlerPrep*************************") + def method = getClass().getSimpleName() + '.completionHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + //msoLogger.trace('Entered ' + method) + + try { + def requestInfo = getVariable(execution, 'UPDVfModI_requestInfo') + + String content = """ + <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1"> + ${requestInfo} + <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name> + </sdncadapterworkflow:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + //msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + //msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + //msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error') + + } + + } + + public void healthCheckController(DelegateExecution execution) { + + System.out.print("*****************************healthCheckController*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("HealthCheck",vfModuleId) + + } + + public void startVfModuleController(DelegateExecution execution) { + + System.out.print("*****************************startVfModuleController*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("Start",vfModuleId) + + } + + public void vFFlagUnset(DelegateExecution execution) { + + System.out.print("*****************************vFFlagUnset*************************") + String vnfId = (String)execution.getVariable('vnfId') + String uuid = (String)execution.getVariable('moduleUuid') + AAIValidatorImpl aaiVI = new AAIValidatorImpl() + aaiVI.updateVnfToUnLocked(vnfId,uuid); + + + } + + public void unlockAppC(DelegateExecution execution) { + + System.out.print("*****************************unlockAppC*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("Unlock",vfModuleId) + + } + + public void postUpgradeHealthCheckController(DelegateExecution execution) { + + System.out.print("*****************************postUpgradeHealthCheckController*************************") + def vfModuleId = "" + ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties()) + def status = aCC.runCommand("HealthCheck",vfModuleId) + + } + + Properties getLCMProperties() { + Properties properties = new Properties() + + properties.put("topic.read", UrnPropertiesReader.getVariable("appc.client.topic.read.name")) + properties.put("topic.read.timeout", UrnPropertiesReader.getVariable("appc.client.topic.read.timeout")) + properties.put("client.response.timeout", UrnPropertiesReader.getVariable("appc.client.response.timeout")) + properties.put("topic.write", UrnPropertiesReader.getVariable("appc.client.topic.write")) + properties.put("poolMembers", UrnPropertiesReader.getVariable("appc.client.poolMembers")) + properties.put("client.key", UrnPropertiesReader.getVariable("appc.client.key")) + properties.put("client.secret", UrnPropertiesReader.getVariable("appc.client.secret")) + properties.put("client.name", "MSO") + properties.put("service", UrnPropertiesReader.getVariable("appc.client.service")) + return properties + } + +} + diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy new file mode 100644 index 0000000000..b7f31d7823 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy @@ -0,0 +1,445 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.VfModuleBase +import org.onap.so.bpmn.core.UrnPropertiesReader; +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +class UpdateVfModuleVolume extends VfModuleBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleVolume.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + private void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVfModVol_') + execution.setVariable('UPDVfModVol_Request', null) + execution.setVariable('UPDVfModVol_requestInfo', null) + execution.setVariable('UPDVfModVol_requestId', null) + execution.setVariable('UPDVfModVol_source', null) + execution.setVariable('UPDVfModVol_volumeInputs', null) + execution.setVariable('UPDVfModVol_volumeGroupId', null) + execution.setVariable('UPDVfModVol_vnfType', null) + execution.setVariable('UPDVfModVol_serviceId', null) + execution.setVariable('UPDVfModVol_aicCloudRegion', null) + execution.setVariable('UPDVfModVol_tenantId', null) + execution.setVariable('UPDVfModVol_volumeParams', null) + execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', null) + execution.setVariable('UPDVfModVol_volumeGroupTenantId', null) + execution.setVariable('UpdateVfModuleVolumeSuccessIndicator', false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + @Override + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + initProcessVariables(execution) + String request = validateRequest(execution) + + def requestInfo = getRequiredNodeXml(execution, request, 'request-info') + execution.setVariable('UPDVfModVol_requestInfo', requestInfo) + execution.setVariable('UPDVfModVol_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) + execution.setVariable('UPDVfModVol_source', getNodeTextForce(requestInfo, 'source')) + + def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs') + execution.setVariable('UPDVfModVol_volumeInputs', volumeInputs) + execution.setVariable('UPDVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id')) + execution.setVariable('UPDVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type')) + execution.setVariable('UPDVfModVol_serviceId', getRequiredNodeText(execution, volumeInputs, 'service-id')) + execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region')) + execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id')) + + def volumeParams = utils.getNodeXml(request, 'volume-params') + execution.setVariable('UPDVfModVol_volumeParams', volumeParams) + + msoLogger.trace('Exited ' + method) + msoLogger.debug("UpdateVfModuleVolume request: " + request) + } catch (BpmnError bpmnError) { + throw bpmnError + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage()) + } + } + + /** + * Prepare and send the synchronous response. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = execution.getVariable('UPDVfModVol_requestInfo') + def requestId = execution.getVariable('UPDVfModVol_requestId') + def source = execution.getVariable('UPDVfModVol_source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + def volumeInputs = execution.getVariable('UPDVfModVol_volumeInputs') + + String synchResponse = """ + <volume-request xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-info> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE_VF_MODULE_VOL</action> + <request-status>IN_PROGRESS</request-status> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <start-time>${MsoUtils.xmlEscape(startTime)}</start-time> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + ${volumeInputs} + </volume-request> + """ + + synchResponse = utils.formatXml(synchResponse) + sendWorkflowResponse(execution, 200, synchResponse) + msoLogger.debug("UpdateVfModuleVolume Synch Response: " + synchResponse) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendSynchResponse(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for querying AAI for Volume Group information using the + * Volume Group Id and Aic Cloud Region. + * + * @param execution The flow's execution instance. + */ + public void queryAAIForVolumeGroup(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.queryAAIForVolumeGroup(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + def endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + + '/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/' + UriUtils.encode(aicCloudRegion, "UTF-8") + + '/volume-groups/volume-group/' + UriUtils.encode(volumeGroupId, "UTF-8") + + msoLogger.debug('Sending GET to AAI endpoint \'' + endPoint + '\'') + msoLogger.debug("UpdateVfModuleVolume sending GET for quering AAI endpoint: " + endPoint) + + AaiUtil aaiUtil = new AaiUtil(this) + APIResponse response = aaiUtil.executeAAIGetCall(execution, endPoint) + def int statusCode = response.getStatusCode() + def responseData = response.getResponseBodyAsString() + msoLogger.debug('Response code:' + statusCode) + msoLogger.debug('Response:' + System.lineSeparator() + responseData) + msoLogger.debug("UpdateVfModuleVolume response data: " + responseData) + + def volumeGroup = responseData + def heatStackId = getNodeTextForce(volumeGroup, 'heat-stack-id') + execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', heatStackId) + if ((statusCode == 200) || (statusCode == 204)) { + def volumeGroupTenantId = getTenantIdFromVolumeGroup(volumeGroup) + if (volumeGroupTenantId == null) { + throw new Exception('Could not find Tenant Id element in Volume Group with Volume Group Id \'' + volumeGroupId + '\'' + + '\', AIC Cloud Region \'' + aicCloudRegion + '\'') + } + execution.setVariable('UPDVfModVol_volumeGroupTenantId', volumeGroupTenantId) + msoLogger.debug('Received Tenant Id \'' + volumeGroupTenantId + '\' from AAI for Volume Group with Volume Group Id \'' + volumeGroupId + '\'' + + '\', AIC Cloud Region \'' + aicCloudRegion + '\'') + } else if (statusCode == 404) { + throw new Exception('Volume Group \'' + volumeGroupId + '\' not found at AAI') + } else { + throw new Exception('Bad status code ' + statusCode + ' received from AAI; Response data: ' + responseData) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVolumeGroup(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for invoking the VnfAdapterRest subflow to do + * a Volume Group update. + * + * @param execution The flow's execution instance. + */ + public void prepVnfAdapterRest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + def tenantId = execution.getVariable('UPDVfModVol_tenantId') + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + def volumeGroupHeatStackId = execution.getVariable('UPDVfModVol_volumeGroupHeatStackId') + def vnfType = execution.getVariable('UPDVfModVol_vnfType') + + def volumeParamsXml = execution.getVariable('UPDVfModVol_volumeParams') + def volumeGroupParams = transformParamsToEntries(volumeParamsXml) + + def requestId = execution.getVariable('UPDVfModVol_requestId') + def serviceId = execution.getVariable('UPDVfModVol_serviceId') + + def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String vnfAdapterRestRequest = """ + <updateVolumeGroupRequest> + <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId> + <vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType> + <vnfVersion></vnfVersion> + <vfModuleType></vfModuleType> + <volumeGroupParams> + ${volumeGroupParams} + </volumeGroupParams> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </updateVolumeGroupRequest> + """ + vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest) + execution.setVariable('UPDVfModVol_vnfAdapterRestRequest', vnfAdapterRestRequest) + msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest) + + msoLogger.debug("UpdateVfModuleVolume Request for VNFAdapter Rest: " + vnfAdapterRestRequest) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepVnfAdapterRest(): ' + e.getMessage()) + } + } + + /** + * Prepare a Request for updating the DB for this Infra request. + * + * @param execution The flow's execution instance. + */ + public void prepDbInfraDbRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDbInfraDbRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestId = execution.getVariable('UPDVfMod_requestId') + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPEL</lastModifiedBy> + <requestStatus>COMPLETE</requestStatus> + <progress>100</progress> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('UPDVfModVol_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + + msoLogger.debug("UpdateVfModuleVolume Request for Updating DB for Infra: " + updateInfraRequest) + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 1002, 'Error in prepDbInfraDbRequest(): ' + e.getMessage()) + } + } + + /** + * Build a "CompletionHandler" request. + * + * @param execution The flow's execution instance. + */ + public void prepCompletionHandlerRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepCompletionHandlerRequest(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = execution.getVariable('UPDVfModVol_requestInfo') + + String content = """ + <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1"> + ${requestInfo} + <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name> + </sdncadapterworkflow:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + msoLogger.debug('Request for Completion Handler:\n' + content) + msoLogger.debug("UpdateVfModuleVolume Completion Handler request: " + content) + execution.setVariable('UPDVfModVol_CompletionHandlerRequest', content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepCompletionHandlerRequest(): ' + e.getMessage()) + } + } + + /** + * Build a "FalloutHandler" request. + * + * @param execution The flow's execution instance. + */ + public void prepFalloutHandler(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepFalloutHandler(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def requestInfo = execution.getVariable('UPDVfModVol_requestInfo') + + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInfo} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug('Request for Fallout Handler:\n' + content) + msoLogger.debug("UpdateVfModuleVolume Fallout request: " + content) + execution.setVariable('UPDVfModVol_FalloutHandlerRequest', content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 1002, 'Error in prepFalloutHandler(): ' + e.getMessage()) + } + } + + /** + * Create a WorkflowException for the error case where the Tenant Id from + * AAI did not match the Tenant Id in the incoming request. + * + * @param execution The flow's execution instance. + */ + public void handleTenantIdMismatch(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.handleTenantIdMismatch(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String processKey = getProcessKey(execution); + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + def tenantId = execution.getVariable('UPDVfModVol_tenantId') + def volumeGroupTenantId = execution.getVariable('UPDVfModVol_volumeGroupTenantId') + + def String errorMessage = 'TenantId \'' + tenantId + '\' in incoming request does not match Tenant Id \'' + volumeGroupTenantId + + '\' retrieved from AAI for Volume Group Id \'' + volumeGroupId + '\', AIC Cloud Region \'' + aicCloudRegion + '\'' + + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + + WorkflowException exception = new WorkflowException(processKey, 5000, errorMessage); + execution.setVariable("WorkflowException", exception); + + msoLogger.trace('Exited ' + method) + msoLogger.debug("UpdateVfModuleVolume workflowException in Tenant Mismatch: " + errorMessage) + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy new file mode 100644 index 0000000000..7b2d1b78e4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy @@ -0,0 +1,561 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil; +import org.onap.so.bpmn.common.scripts.ExceptionUtil; +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.VfModuleBase; +import org.onap.so.bpmn.common.scripts.VidUtils; +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse +import org.springframework.web.util.UriUtils + +import groovy.json.JsonSlurper + +class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleVolumeInfraV1.class); + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + private void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVfModVol_') + execution.setVariable('UPDVfModVol_Request', null) + execution.setVariable('UPDVfModVol_requestInfo', null) + execution.setVariable('UPDVfModVol_requestId', null) + execution.setVariable('UPDVfModVol_source', null) + execution.setVariable('UPDVfModVol_volumeInputs', null) + execution.setVariable('UPDVfModVol_volumeGroupId', null) + execution.setVariable('UPDVfModVol_vnfType', null) + execution.setVariable('UPDVfModVol_serviceId', null) + execution.setVariable('UPDVfModVol_aicCloudRegion', null) + execution.setVariable('UPDVfModVol_tenantId', null) + execution.setVariable('UPDVfModVol_volumeParams', null) + execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', null) + execution.setVariable('UPDVfModVol_volumeGroupTenantId', null) + execution.setVariable('UpdateVfModuleVolumeSuccessIndicator', false) + } + + + /** + * Perform initial processing, such as request validation, initialization of variables, etc. + * * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + preProcessRequest(execution, isDebugEnabled) + } + + public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) { + + initProcessVariables(execution) + String jsonRequest = validateRequest(execution) + + def request = "" + + try { + def jsonSlurper = new JsonSlurper() + Map reqMap = jsonSlurper.parseText(jsonRequest) + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def volumeGroupId = execution.getVariable('volumeGroupId') + //def vnfId = execution.getVariable('vnfId') + + def vidUtils = new VidUtils(this) + request = vidUtils.createXmlVolumeRequest(reqMap, 'UPDATE_VF_MODULE_VOL', serviceInstanceId, volumeGroupId) + + execution.setVariable('UPDVfModVol_Request', request) + execution.setVariable("UPDVfModVol_isVidRequest", true) + + //need to get persona-model-id aka model-invariantId to use later to validate vf-module relation in AAI + + def modelInvariantId = reqMap.requestDetails.modelInfo.modelInvariantUuid ?: '' + execution.setVariable('UPDVfModVol_modelInvariantId', modelInvariantId) + + msoLogger.debug("modelInvariantId from request: " + modelInvariantId) + msoLogger.debug("XML request:\n" + request) + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is in XML format.") + // assume request is in XML format - proceed as usual to process XML request + } + + def requestId = execution.getVariable('mso-request-id') + + def requestInfo = getRequiredNodeXml(execution, request, 'request-info') + execution.setVariable('UPDVfModVol_requestInfo', requestInfo) + execution.setVariable('UPDVfModVol_requestId', requestId) + //execution.setVariable('UPDVfModVol_requestId', getRequiredNodeText(execution, requestInfo, 'request-id')) + execution.setVariable('UPDVfModVol_source', getNodeTextForce(requestInfo, 'source')) + + def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs') + execution.setVariable('UPDVfModVol_volumeInputs', volumeInputs) + execution.setVariable('UPDVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id')) + execution.setVariable('UPDVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type')) + execution.setVariable('UPDVfModVol_vnfVersion', getRequiredNodeText(execution, volumeInputs, 'asdc-service-model-version')) + execution.setVariable('UPDVfModVol_serviceId', utils.getNodeText(volumeInputs, 'service-id')) + execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region')) + execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id')) + //execution.setVariable('UPDVfModVol_modelCustomizationId', getRequiredNodeText(execution, volumeInputs, 'model-customization-id')) + + setBasicDBAuthHeader(execution, isDebugLogEnabled) + + def volumeParams = utils.getNodeXml(request, 'volume-params') + execution.setVariable('UPDVfModVol_volumeParams', volumeParams) + } + + /** + * Prepare and send the synchronous response. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution, isDebugLogEnabled) { + + def requestInfo = execution.getVariable('UPDVfModVol_requestInfo') + def requestId = execution.getVariable('UPDVfModVol_requestId') + def source = execution.getVariable('UPDVfModVol_source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + def volumeInputs = execution.getVariable('UPDVfModVol_volumeInputs') + + String xmlSyncResponse = """ + <volume-request xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-info> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE_VF_MODULE_VOL</action> + <request-status>IN_PROGRESS</request-status> + <progress>${MsoUtils.xmlEscape(progress)}</progress> + <start-time>${MsoUtils.xmlEscape(startTime)}</start-time> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + ${volumeInputs} + </volume-request> + """ + + def syncResponse = '' + def isVidRequest = execution.getVariable('UPDVfModVol_isVidRequest') + + if(isVidRequest) { + def volumeGroupId = execution.getVariable('volumeGroupId') + syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim() + } + else { + syncResponse = utils.formatXml(xmlSyncResponse) + } + + msoLogger.debug('Sync response: ' + syncResponse) + execution.setVariable('UPDVfModVol_syncResponseSent', true) + sendWorkflowResponse(execution, 200, syncResponse) + } + + /** + * Prepare a Request for querying AAI for Volume Group information using the + * Volume Group Id and Aic Cloud Region. + * @param execution The flow's execution instance. + */ + public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) { + + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution) + String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(aicCloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8") + + msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest) + msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query volume group by id return code: " + returnCode) + msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString) + + msoLogger.debug("AAI Volume Group return code: " + returnCode) + msoLogger.debug("AAI Volume Group response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if ((returnCode == '200') || (returnCode == '204')) { + + execution.setVariable('UPDVfModVol_aaiVolumeGroupResponse', aaiResponseAsString) + //def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id') + //execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', heatStackId) + + def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString) + if (volumeGroupTenantId == null) { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id " + volumeGroupId + + ", AIC Cloud Region " + aicCloudRegion) + } + execution.setVariable('UPDVfModVol_volumeGroupTenantId', volumeGroupTenantId) + msoLogger.debug("Received Tenant Id " + volumeGroupTenantId + " from AAI for Volume Group with Volume Group Id " + volumeGroupId + ", AIC Cloud Region " + aicCloudRegion) + + def relatedVfModuleLink = getRelatedVfModuleRelatedLink(aaiResponseAsString) + msoLogger.debug("Related VF Module link: " + relatedVfModuleLink) + execution.setVariable('UPDVfModVol_relatedVfModuleLink', relatedVfModuleLink) + + } + else if (returnCode == '404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group " + volumeGroupId + " not found at AAI") + } + else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + + /** + * Query AAI service instance + * @param execution + * @param isDebugEnabled + */ + public void queryAAIForGenericVnf(DelegateExecution execution, isDebugEnabled) { + + def vnfId = execution.getVariable('vnfId') + + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution) + def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8") + + msoLogger.debug("AAI query generic vnf request: " + queryAAIRequest) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query generic vnf return code: " + returnCode) + msoLogger.debug("AAI query generic vnf response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if (returnCode=='200') { + msoLogger.debug('Generic vnf ' + vnfId + ' found in AAI.') + execution.setVariable('UPDVfModVol_AAIQueryGenericVfnResponse', aaiResponseAsString) + } else { + if (returnCode=='404') { + def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.' + msoLogger.debug(message) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message) + } else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + } + + /** + * Query AAI for VF Module using vf-module-id + * @param execution + * @param isDebugLogEnabled + */ + public void queryAAIForVfModule(DelegateExecution execution, isDebugLogEnabled) { + + AaiUtil aaiUtil = new AaiUtil(this) + String queryAAIVfModuleRequest = execution.getVariable('UPDVfModVol_relatedVfModuleLink') + execution.setVariable('UPDVfModVol_personaModelId', '') + + msoLogger.debug('Query AAI VF Module: ' + queryAAIVfModuleRequest) + msoLogger.debug('Query AAI VF Module: ' + queryAAIVfModuleRequest) + + def aaiUrl = UrnPropertiesReader.getVariable("aai.endpoint", execution) + msoLogger.debug('A&AI URL: ' + aaiUrl) + + def requestEndpoint = aaiUrl + queryAAIVfModuleRequest + msoLogger.debug('A&AI request endpoint: ' + requestEndpoint) + + APIResponse response = aaiUtil.executeAAIGetCall(execution, requestEndpoint) + + String returnCode = response.getStatusCode() + String aaiResponseAsString = response.getResponseBodyAsString() + + msoLogger.debug("AAI query vf-module: " + returnCode) + msoLogger.debug("AAI query vf-module response: " + aaiResponseAsString) + + msoLogger.debug("AAI query vf-module:: " + returnCode) + msoLogger.debug("AAI query vf-module response: " + aaiResponseAsString) + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + if ((returnCode == '200') || (returnCode == '204')) { + def personaModelId = utils.getNodeText(aaiResponseAsString, 'model-invariant-id') + if(personaModelId == null) { + //check old attribute name + personaModelId = utils.getNodeText(aaiResponseAsString, 'persona-model-id') + } + msoLogger.debug("vfModule personaModelId: " + personaModelId) + execution.setVariable('UPDVfModVol_personaModelId', personaModelId) + } + else if (returnCode == '404') { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "VF Module not found at AAI") + } + else { + WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution) + throw new BpmnError("MSOWorkflowException") + } + } + /** + * + */ + public String getRelatedVfModuleRelatedLink(xml) { + def list = new XmlSlurper().parseText(xml) + def vfModuleRelationship = list.'**'.find { node -> node.'related-to'.text() == 'vf-module' } + return vfModuleRelationship?.'related-link'?.text() ?: '' + } + + /** + * Prepare a Request for invoking the VnfAdapterRest subflow to do + * a Volume Group update. + * + * @param execution The flow's execution instance. + */ + public void prepVnfAdapterRest(DelegateExecution execution, isDebugLogEnabled) { + + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + def tenantId = execution.getVariable('UPDVfModVol_tenantId') + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + + def aaiVolumeGroupResponse = execution.getVariable('UPDVfModVol_aaiVolumeGroupResponse') + def volumeGroupHeatStackId = getNodeTextForce(aaiVolumeGroupResponse, 'heat-stack-id') + def volumeGroupName = getNodeTextForce(aaiVolumeGroupResponse, 'volume-group-name') + def modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-model-customization-id') + if(modelCustomizationId == null) { + // Check old attribute name + modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-persona-model-customization-id') + } + + def vnfType = execution.getVariable('UPDVfModVol_vnfType') + def vnfVersion = execution.getVariable('UPDVfModVol_vnfVersion') + + def aaiGenericVnfResponse = execution.getVariable('UPDVfModVol_AAIQueryGenericVfnResponse') + def vnfId = utils.getNodeText(aaiGenericVnfResponse, 'vnf-id') + def vnfName = utils.getNodeText(aaiGenericVnfResponse, 'vnf-name') + + + def volumeParamsXml = execution.getVariable('UPDVfModVol_volumeParams') + def volumeGroupParams = transformVolumeParamsToEntries(volumeParamsXml) + + def requestId = execution.getVariable('UPDVfModVol_requestId') + def serviceId = execution.getVariable('UPDVfModVol_serviceId') + + def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis() + def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) + def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution) + if ('true'.equals(useQualifiedHostName)) { + notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl) + } + + String vnfAdapterRestRequest = """ + <updateVolumeGroupRequest> + <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId> + <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId> + <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId> + <vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName> + <volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId> + <volumeGroupName>${MsoUtils.xmlEscape(volumeGroupName)}</volumeGroupName> + <volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId> + <vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType> + <vnfVersion>${MsoUtils.xmlEscape(vnfVersion)}</vnfVersion> + <vfModuleType></vfModuleType> + <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationId)}</modelCustomizationUuid> + <volumeGroupParams> + <entry> + <key>vnf_id</key> + <value>${MsoUtils.xmlEscape(vnfId)}</value> + </entry> + <entry> + <key>vnf_name</key> + <value>${MsoUtils.xmlEscape(vnfName)}</value> + </entry> + <entry> + <key>vf_module_id</key> + <value>${MsoUtils.xmlEscape(volumeGroupId)}</value> + </entry> + <entry> + <key>vf_module_name</key> + <value>${MsoUtils.xmlEscape(volumeGroupName)}</value> + </entry> + ${volumeGroupParams} + </volumeGroupParams> + <skipAAI>true</skipAAI> + <msoRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId> + </msoRequest> + <messageId>${MsoUtils.xmlEscape(messageId)}</messageId> + <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl> + </updateVolumeGroupRequest> + """ + vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest) + execution.setVariable('UPDVfModVol_vnfAdapterRestRequest', vnfAdapterRestRequest) + msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest) + } + + /** + * Prepare a Request for updating the DB for this Infra request. + * + * @param execution The flow's execution instance. + */ + public void prepDbInfraDbRequest(DelegateExecution execution, isDebugLogEnabled) { + + def requestId = execution.getVariable('UPDVfModVol_requestId') + ExceptionUtil exceptionUtil = new ExceptionUtil(); + + String updateInfraRequest = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" + xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPEL</lastModifiedBy> + <requestStatus>COMPLETE</requestStatus> + <progress>100</progress> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + + updateInfraRequest = utils.formatXml(updateInfraRequest) + execution.setVariable('UPDVfModVol_updateInfraRequest', updateInfraRequest) + msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest) + } + + /** + * Build a "CompletionHandler" request. + * @param execution The flow's execution instance. + */ + public void prepCompletionHandlerRequest(DelegateExecution execution, requestId, action, source, isDebugLogEnabled) { + + String content = """ + <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:mso-bpel-name>BPMN VF Module Volume action: UPDATE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + msoLogger.debug('Request for Completion Handler:\n' + content) + execution.setVariable('UPDVfModVol_CompletionHandlerRequest', content) + } + + + /** + * Build a "FalloutHandler" request. + * @param execution The flow's execution instance. + */ + public void prepFalloutHandler(DelegateExecution execution, isDebugLogEnabled) { + def requestId = execution.getVariable('UPDVfModVol_requestId') + def source = execution.getVariable('UPDVfModVol_source') + + String requestInfo = """ + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInfo} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug('Request for Fallout Handler:\n' + content) + execution.setVariable('UPDVfModVol_FalloutHandlerRequest', content) + } + + /** + * Create a WorkflowException for the error case where the Tenant Id from + * AAI did not match the Tenant Id in the incoming request. + * @param execution The flow's execution instance. + */ + public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) { + + def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') + def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') + def tenantId = execution.getVariable('UPDVfModVol_tenantId') + def volumeGroupTenantId = execution.getVariable('UPDVfModVol_volumeGroupTenantId') + + def String errorMessage = "TenantId " + tenantId + " in incoming request does not match Tenant Id " + volumeGroupTenantId + + " retrieved from AAI for Volume Group Id " + volumeGroupId + ", AIC Cloud Region " + aicCloudRegion + + ExceptionUtil exceptionUtil = new ExceptionUtil() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + + /** + * Create a WorkflowException for the error case where the Personal Model Id from + * AAI did not match the model invariant ID in the incoming request. + * @param execution The flow's execution instance. + */ + public void handlePersonaModelIdMismatch(DelegateExecution execution, isDebugLogEnabled) { + + def modelInvariantId = execution.getVariable('UPDVfModVol_modelInvariantId') + def personaModelId = execution.getVariable('UPDVfModVol_personaModelId') + + def String errorMessage = "Model Invariant ID " + modelInvariantId + " in incoming request does not match persona model ID " + personaModelId + + " retrieved from AAI for Volume Group Id " + + ExceptionUtil exceptionUtil = new ExceptionUtil() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception"); + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy new file mode 100644 index 0000000000..f251dc46f8 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy @@ -0,0 +1,481 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.appc.client.lcm.model.Action; +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.* +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class UpdateVnfInfra extends VnfCmBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVnfInfra.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "UPDVnfI_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'UPDVnfI_') + execution.setVariable('Request', null) + execution.setVariable('source', null) + execution.setVariable('vnfInputs', null) + execution.setVariable('tenantId', null) + execution.setVariable('vnfParams', null) + execution.setVariable('controllerType', null) + execution.setVariable('UpdateVnfSuccessIndicator', false) + execution.setVariable('serviceType', null) + execution.setVariable('nfRole', null) + execution.setVariable('currentActivity', 'UPDVnfI') + execution.setVariable('workStep', null) + execution.setVariable('failedActivity', null) + execution.setVariable('errorCode', "0") + execution.setVariable('errorText', null) + execution.setVariable('healthCheckIndex0', 0) + execution.setVariable('healthCheckIndex1', 1) + execution.setVariable("rollbackSetClosedLoopDisabledFlag", false) + execution.setVariable("rollbackVnfStop", false) + execution.setVariable("rollbackVnfLock", false) + execution.setVariable("rollbackQuiesceTraffic", false) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def incomingRequest = execution.getVariable('bpmnRequest') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + execution.setVariable("isVidRequest", "true") + execution.setVariable('serviceType', 'Mobility') + execution.setVariable('actionLock', Action.Lock) + execution.setVariable('actionUnlock', Action.Unlock) + execution.setVariable('actionHealthCheck', Action.HealthCheck) + execution.setVariable('actionStart', Action.Start) + execution.setVariable('actionStop', Action.Stop) + + def asdcServiceModelVersion = '' + def serviceModelInfo = null + + def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList + + if (relatedInstanceList != null) { + relatedInstanceList.each { + if (it.relatedInstance.modelInfo?.modelType == 'service') { + msoLogger.debug("PROCESSING SERVICE INFO") + asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion + serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo) + msoLogger.debug("ServiceModelInfo: " + serviceModelInfo) + def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid") + msoLogger.debug("modelInvariant: " + modelInvariant) + } + + } + } + + execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion) + execution.setVariable('serviceModelInfo', serviceModelInfo) + def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo) + execution.setVariable('vnfModelInfo', vnfModelInfo) + def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid") + execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid) + msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid) + + def vnfType = execution.getVariable('vnfType') + execution.setVariable('vnfType', vnfType) + + + def controllerType = reqMap.requestDetails?.requestParameters?.controllerType + execution.setVariable('controllerType', controllerType) + + msoLogger.debug('Controller Type: ' + controllerType) + + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> userParamsMap = [:] + if (userParams != null) { + userParams.each { userParam -> + userParamsMap.put(userParam.name, userParam.value.toString()) + } + } + + msoLogger.debug('Processed user params: ' + userParamsMap) + + execution.setVariable('vfModuleInputParams', userParamsMap) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable('requestId', requestId) + execution.setVariable('msoRequestId', requestId) + + + def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null + execution.setVariable('vnfName', vnfName) + + def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null + execution.setVariable('requestorId', requestorId) + + def usePreload = reqMap.requestDetails?.requestParameters?.usePreload + execution.setVariable('usePreload', usePreload) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable('lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable('tenantId', tenantId) + + def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: '' + execution.setVariable('globalSubscriberId', globalSubscriberId) + + execution.setVariable('sdncVersion', '1702') + + execution.setVariable("UpdateVnfInfraSuccessIndicator", false) + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable("source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("requestInfo", requestInfo) + + msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo")) + + msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('requestInfo') + def requestId = execution.getVariable('requestId') + def source = execution.getVariable('source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vnfId = execution.getVariable("vnfId") + String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + + + /** + * Get VnfResource decomposition object for this VNF. + * + * + * @param execution The flow's execution instance. + */ + public void getVnfResourceDecomposition(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid') + msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid) + List<VnfResource> vnfResources = serviceDecomposition.getVnfResources() + + for (i in 0..vnfResources.size()-1) { + ModelInfo modelInfo = vnfResources[i].getModelInfo() + String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid() + msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition) + + if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) { + VnfResource vnfResourceDecomposition = vnfResources[i] + execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition) + def nfRole = vnfResourceDecomposition.getNfRole() + execution.setVariable('nfRole', nfRole) + msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString()) + break + } + else { + //exception! + } + + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage()) + } + } + + /** + * Check if this VNF is already in maintenance in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfVnfInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkIfVnfInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("isInMaint result: " + isInMaint) + execution.setVariable('isVnfInMaintenance', isInMaint) + + if (isInMaint) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "VNF is in maintenance in A&AI") + } + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF's pservers are locked in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfPserversInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "checkIfPserversInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("areLocked result: " + areLocked) + execution.setVariable('arePserversLocked', areLocked) + + if (areLocked) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "pServers are locked in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set inMaint flag for this VNF to the specified value in A&AI. + * + * + * @param execution The flow's execution instance. + * @param inMaint The boolean value of the flag to set + */ + public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) { + def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + if (inMaint) { + execution.setVariable("workStep", "setVnfInMaintFlagInAAI") + } + else { + execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI") + } + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl() + aaiUpdator.setClient(client) + def vnfId = execution.getVariable("vnfId") + if (inMaint) { + aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage()) + } + } + + + + /** + * Prepare DoUpdateVnfAndModules call. + * + * + * @param execution The flow's execution instance. + */ + public void prepDoUpdateVnfAndModules(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "doUpdateVnfAndModules") + execution.setVariable("failedActivity", "MSO Update VNF") + msoLogger.trace('Exited ' + method) + + } + + + /** + * Handle Abort disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void abortProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.abortProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def errorText = execution.getVariable("errorText") + def errorCode = execution.getVariable("errorCode") + + exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText) + } + + + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy new file mode 100644 index 0000000000..fd9d9cc8a3 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy @@ -0,0 +1,835 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.json.JSONArray +import org.json.JSONObject +import org.onap.appc.client.lcm.model.Action; +import org.onap.appc.client.lcm.model.ActionIdentifiers +import org.onap.appc.client.lcm.model.Flags +import org.onap.appc.client.lcm.model.Status +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.core.WorkflowException +import org.onap.so.bpmn.core.domain.ModelInfo +import org.onap.so.bpmn.core.domain.ServiceDecomposition +import org.onap.so.bpmn.core.domain.VnfResource +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.* +import org.onap.so.client.aai.entities.AAIResultWrapper +import org.onap.so.client.aai.entities.Relationships +import org.onap.so.client.aai.entities.uri.AAIResourceUri +import org.onap.so.client.aai.entities.uri.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.client.appc.ApplicationControllerClient; +import org.onap.so.client.appc.ApplicationControllerSupport; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonSlurper + +public abstract class VnfCmBase extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfCmBase.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "VnfIPU_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('requestInfo') + def requestId = execution.getVariable('requestId') + def source = execution.getVariable('source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vnfId = execution.getVariable("vnfId") + String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + + + /** + * Get VnfResource decomposition object for this VNF. + * + * + * @param execution The flow's execution instance. + */ + public void getVnfResourceDecomposition(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' + + 'execution=' + execution.getId() + + ')' + msoLogger.trace('Entered ' + method) + + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid') + msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid) + List<VnfResource> vnfResources = serviceDecomposition.getVnfResources() + + for (i in 0..vnfResources.size()-1) { + ModelInfo modelInfo = vnfResources[i].getModelInfo() + String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid() + msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition) + + if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) { + VnfResource vnfResourceDecomposition = vnfResources[i] + execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition) + def nfRole = vnfResourceDecomposition.getNfRole() + execution.setVariable('nfRole', nfRole) + msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString()) + break + } + else { + //exception! + } + + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage()) + } + } + + /** + * Check if this VNF is already in maintenance in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfVnfInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkIfVnfInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("isInMaint result: " + isInMaint) + execution.setVariable('isVnfInMaintenance', isInMaint) + + if (isInMaint) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "VNF is in maintenance in A&AI") + } + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Get VNF info from A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void queryAAIForVnf(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.queryAAIForVnf(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + msoLogger.debug("vnfId is: " + vnfId) + def cloudRegionId = execution.getVariable("lcpCloudRegionId") + msoLogger.debug("cloudRegionId is: " + cloudRegionId) + + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + // Check if this VNF exists + if (!client.exists(genericVnfUri)) { + msoLogger.debug("VNF with vnfId " + vnfId + " does not exist in A&AI") + exceptionUtil.buildAndThrowWorkflowException(execution, 404, "VNF with vnfId " + vnfId + " does not exist in A&AI") + } + + AAIResultWrapper aaiRW = client.get(genericVnfUri) + + Map<String, Object> result = aaiRW.asMap() + + String vnfName = result.get("vnf-name") + msoLogger.debug("vnfName from A&AI is: " + vnfName) + execution.setVariable("vnfName", vnfName) + String nfRole = result.get("nf-role") + msoLogger.debug("nfRole from A&AI is: " + nfRole) + execution.setVariable("nfRole", nfRole) + String vnfHostIpAddress = result.get("ipv4-oam-address") + msoLogger.debug("vnfHostIpAddress from A&AI is: " + vnfHostIpAddress) + execution.setVariable("vnfHostIpAddress", vnfHostIpAddress) + execution.setVariable("vmIdList", null) + if (aaiRW.getRelationships() != null) { + Relationships relationships = aaiRW.getRelationships().get() + if (relationships != null) { + + List<AAIResourceUri> vserverUris = relationships.getRelatedAAIUris(AAIObjectType.VSERVER) + JSONArray vserverIds = new JSONArray() + JSONArray vserverSelfLinks = new JSONArray() + + for (AAIResourceUri j in vserverUris) { + + String vserverId = j.getURIKeys().get('vserver-id') + String vserverJson = client.get(j).getJson() + msoLogger.debug("Retrieved vserverJson from AAI: " + vserverJson) + String vserverSelfLink = jsonUtils.getJsonValue(vserverJson, "vserver-selflink") + + vserverIds.put(vserverId) + vserverSelfLinks.put(vserverSelfLink) + } + + JSONObject vmidsArray = new JSONObject() + JSONObject vserveridsArray = new JSONObject() + vmidsArray.put("vmIds", vserverSelfLinks.toString()) + vserveridsArray.put("vserverIds", vserverIds.toString()) + + msoLogger.debug("vmidsArray is: " + vmidsArray.toString()) + msoLogger.debug("vserveridsArray is: " + vserveridsArray.toString()) + + execution.setVariable("vmIdList", vmidsArray.toString()) + execution.setVariable("vserverIdList", vserveridsArray.toString()) + } + } + + if (cloudRegionId != null) { + AAIUri cloudRegionUri = AAIUriFactory.createResourceUri(AAIObjectType.DEFAULT_CLOUD_REGION, cloudRegionId) + // Check if this client region exists + if (!client.exists(cloudRegionUri)) { + msoLogger.debug("Cloud Region with cloudRegionId " + cloudRegionId + " does not exist in A&AI") + exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Cloud Region with cloudRegionId " + cloudRegionId + " does not exist in A&AI") + } + + AAIResultWrapper aaiRWCloud = client.get(cloudRegionUri) + + Map<String, Object> resultCloud = aaiRWCloud.asMap() + + String aicIdentity = resultCloud.get("identity-url") + msoLogger.debug("aicIdentity from A&AI is: " + aicIdentity) + execution.setVariable("aicIdentity", aicIdentity) + } + // preserve relationships if exist + Optional<Relationships> relationships = aaiRW.getRelationships() + + if(relationships.isPresent()) { + msoLogger.debug("relationships are present") + String rs = relationships.get().getJson() + def jsonSlurper = new JsonSlurper() + def map = jsonSlurper.parseText(rs) + if (map instanceof Map) { + List<Map<String, Object>> relationshipsList = (List<Map<String, Object>>)map.get("relationship"); + for (Map<String, Object> relationship : relationshipsList) { + final String relatedTo = (String)relationship.get("related-to"); + if (relatedTo.equals("platform")) { + List<Map<String, Object>> relationshipDataList = (List<Map<String, Object>>)relationship.get("relationship-data") + msoLogger.debug("Found platform entry") + for (Map<String, Object> relationshipData : relationshipDataList) { + String relationshipKey = (String)relationshipData.get("relationship-key"); + if (relationshipKey.equals("platform.platform-name")) { + String platformName = (String) relationshipData.get("relationship-value") + msoLogger.debug("platform from A&AI is: " + platformName) + execution.setVariable("platform", platformName) + break + } + } + } + if (relatedTo.equals("line-of-business")) { + List<Map<String, Object>> relationshipDataList = (List<Map<String, Object>>)relationship.get("relationship-data") + msoLogger.debug("Found line-of-business entry") + for (Map<String, Object> relationshipData : relationshipDataList) { + String relationshipKey = (String)relationshipData.get("relationship-key"); + if (relationshipKey.equals("line-of-business.line-of-business-name")) { + String lineOfBusinessName = (String) relationshipData.get("relationship-value") + msoLogger.debug("lineOfBusiness from A&AI is: " + lineOfBusinessName) + execution.setVariable("lineOfBusiness", lineOfBusinessName) + break + } + } + } + } + + } + + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVnf(): ' + e.getMessage()) + } + } + + + + /** + * Check if this VNF's pservers are locked in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfPserversInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "checkIfPserversInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("areLocked result: " + areLocked) + execution.setVariable('arePserversLocked', areLocked) + + if (areLocked) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "pServers are locked in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set inMaint flag for this VNF to the specified value in A&AI. + * + * + * @param execution The flow's execution instance. + * @param inMaint The boolean value of the flag to set + */ + public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) { + def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + if (inMaint) { + execution.setVariable("workStep", "setVnfInMaintFlagInAAI") + } + else { + execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI") + } + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl() + aaiUpdator.setClient(client) + def vnfId = execution.getVariable("vnfId") + if (inMaint) { + aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage()) + } + } + + /** + * Check if VF Closed Loop Disabled in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + msoLogger.debug("vnfId is: " + vnfId) + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResultWrapper aaiRW = client.get(genericVnfUri) + Map<String, Object> result = aaiRW.asMap() + boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) + + msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled) + execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled) + + if (isClosedLoopDisabled) { + execution.setVariable("errorCode", "1004") + execution.setVariable("errorText", "closedLoop is disabled in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + /** + * Set VF Closed Loop Disabled Flag in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) { + def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + if (setDisabled) { + execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI") + execution.setVariable("rollbackSetClosedLoopDisabledFlag", true) + } + else { + execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI") + execution.setVariable("rollbackSetClosedLoopDisabledFlag", false) + } + + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + + Map<String, Boolean> request = new HashMap<>() + request.put("is-closed-loop-disabled", setDisabled) + client.update(genericVnfUri, request) + msoLogger.debug("set isClosedLoop to: " + setDisabled) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + + + + /** + * Call APP-C client to execute specified APP-C command for this VNF. + * + * + * @param execution The flow's execution instance. + * @param action The action to take in APP-C. + */ + public void runAppcCommand(DelegateExecution execution, Action action) { + def method = getClass().getSimpleName() + '.runAppcCommand(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + + ApplicationControllerClient appcClient = null + + try { + msoLogger.debug("Running APP-C action: " + action.toString()) + String vnfId = execution.getVariable('vnfId') + String msoRequestId = execution.getVariable('requestId') + execution.setVariable('msoRequestId', msoRequestId) + execution.setVariable("failedActivity", "APP-C") + + appcClient = new ApplicationControllerClient() + ApplicationControllerSupport support = new ApplicationControllerSupport() + appcClient.appCSupport=support + org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.onap.appc.client.lcm.model"); + Flags flags = new Flags(); + ActionIdentifiers actionIdentifiers = new ActionIdentifiers(); + actionIdentifiers.setVnfId(vnfId); + Status appcStatus + switch(action) { + case Action.Lock: + execution.setVariable('workStep', "LockVNF") + appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,null,msoRequestId) + break + case Action.Unlock: + execution.setVariable('workStep', "UnlockVNF") + appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,null,msoRequestId) + break + case Action.HealthCheck: + def healthCheckIndex = execution.getVariable('healthCheckIndex') + execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex) + execution.setVariable('healthCheckIndex', healthCheckIndex + 1) + appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,null,msoRequestId) + break + case Action.Start: + execution.setVariable('workStep', "StartVNF") + appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,null,msoRequestId) + break + case Action.Stop: + execution.setVariable('workStep', "StopVNF") + appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,null,msoRequestId) + break + default: + break + } + msoLogger.debug("Completed AppC request") + int appcCode = appcStatus.getCode() + msoLogger.debug("AppC status code is: " + appcCode) + msoLogger.debug("AppC status message is: " + appcStatus.getMessage()) + if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) { + execution.setVariable("errorCode", Integer.toString(appcCode)) + execution.setVariable("errorText", appcStatus.getMessage()) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + + } catch (java.lang.NoSuchMethodError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + + } + } + + /** + * Placeholder for a call to APP-C client to execute specified APP-C command for this VNF. + * + * + * @param execution The flow's execution instance. + * @param action The action to take in APP-C. + */ + public void runAppcCommandPlaceholder(DelegateExecution execution, String action) { + def method = getClass().getSimpleName() + '.runAppcCommandPlaceholder(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("failedActivity", "APP-C") + execution.setVariable("workStep", action) + } + + + + + + + + /** + * Builds a "CompletionHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void completionHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.completionHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + + def requestInfo = execution.getVariable('requestInfo') + + String content = """ + <sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1"> + ${requestInfo} + <sdncadapterworkflow:status-message>Vnf has been updated successfully.</sdncadapterworkflow:status-message> + <sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name> + </sdncadapterworkflow:MsoCompletionRequest> + """ + + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Prepare DoUpdateVnfAndModules call. + * + * + * @param execution The flow's execution instance. + */ + public void prepDoUpdateVnfAndModules(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "doUpdateVnfAndModules") + execution.setVariable("failedActivity", "MSO Update VNF") + msoLogger.trace('Exited ' + method) + + } + + /** + * Builds a "FalloutHandler" request and stores it in the specified execution variable. + * + * @param execution the execution + * @param resultVar the execution variable in which the result will be stored + */ + public void falloutHandlerPrep(DelegateExecution execution, String resultVar) { + def method = getClass().getSimpleName() + '.falloutHandlerPrep(' + + 'execution=' + execution.getId() + + ', resultVar=' + resultVar + + ')' + + msoLogger.trace('Entered ' + method) + + try { + def prefix = execution.getVariable('prefix') + def requestInformation = execution.getVariable("requestInfo") + + def WorkflowException workflowException = execution.getVariable("WorkflowException") + def errorResponseCode = workflowException.getErrorCode() + def errorResponseMsg = workflowException.getErrorMessage() + def encErrorResponseMsg = "" + if (errorResponseMsg != null) { + encErrorResponseMsg = errorResponseMsg + } + + String content = """ + <sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:reqtype="http://org.onap/so/request/types/v1" + xmlns:msoservtypes="http://org.onap/so/request/types/v1" + xmlns:structuredtypes="http://org.onap/so/structured/types/v1"> + ${requestInformation} + <sdncadapterworkflow:WorkflowException> + <sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage> + <sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode> + </sdncadapterworkflow:WorkflowException> + </sdncadapterworkflow:FalloutHandlerRequest> + """ + content = utils.formatXml(content) + msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content) + execution.setVariable(resultVar, content) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error') + } + } + + /** + * Handle Abort disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void abortProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.abortProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def errorText = execution.getVariable("errorText") + def errorCode = execution.getVariable("errorCode") + + exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText) + } + + /** + * Increment Retry Count for Current Work Step + * + * @param execution The flow's execution instance. + */ + public void incrementRetryCount(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.incrementRetryCount(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String retryCountVariableName = execution.getVariable("workStep") + "RetryCount" + execution.setVariable("retryCountVariableName", retryCountVariableName) + + def retryCountVariable = execution.getVariable(retryCountVariableName) + int retryCount = 0 + + if (retryCountVariable != null) { + retryCount = (int) retryCountVariable + } + + retryCount += 1 + + execution.setVariable(retryCountVariableName, retryCount) + + msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount) + msoLogger.trace('Exited ' + method) + + + } + + + public void preProcessRollback (DelegateExecution execution) { + msoLogger.trace("preProcessRollback ") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit preProcessRollback ") + } + + public void postProcessRollback (DelegateExecution execution) { + msoLogger.trace("postProcessRollback ") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit postProcessRollback ") + } + + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy new file mode 100644 index 0000000000..8ca2871916 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy @@ -0,0 +1,483 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.appc.client.lcm.model.Action; +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.* +import org.onap.so.client.aai.entities.AAIResultWrapper +import org.onap.so.client.aai.entities.uri.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class VnfConfigUpdate extends VnfCmBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfConfigUpdate.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "VnfIPU_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'VnfCU_') + execution.setVariable('Request', null) + execution.setVariable('source', null) + execution.setVariable('controllerType', null) + execution.setVariable('UpdateVnfSuccessIndicator', false) + execution.setVariable('serviceType', null) + execution.setVariable('nfRole', null) + execution.setVariable('currentActivity', 'VnfCU') + execution.setVariable('workStep', null) + execution.setVariable('failedActivity', null) + execution.setVariable('errorCode', "0") + execution.setVariable('errorText', null) + execution.setVariable('healthCheckIndex0', 0) + execution.setVariable('healthCheckIndex1', 1) + execution.setVariable('maxRetryCount', 3) + execution.setVariable('retryCount', 0) + execution.setVariable("lcpCloudRegionId", null) + execution.setVariable("rollbackSetClosedLoopDisabledFlag", false) + execution.setVariable("rollbackVnfStop", false) + execution.setVariable("rollbackVnfLock", false) + execution.setVariable("rollbackQuiesceTraffic", false) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def incomingRequest = execution.getVariable('bpmnRequest') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + + execution.setVariable('serviceInstanceId', serviceInstanceId) + execution.setVariable('vnfId', vnfId) + execution.setVariable('serviceType', 'Mobility') + execution.setVariable('payload', "") + execution.setVariable('actionHealthCheck', Action.HealthCheck) + execution.setVariable('actionConfigModify', Action.ConfigModify) + + + def controllerType = reqMap.requestDetails?.requestParameters?.controllerType + execution.setVariable('controllerType', controllerType) + + msoLogger.debug('Controller Type: ' + controllerType) + + def payload = reqMap.requestDetails?.requestParameters?.payload + execution.setVariable('payload', payload) + + msoLogger.debug('Processed payload: ' + payload) + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable('requestId', requestId) + execution.setVariable('msoRequestId', requestId) + + def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null + execution.setVariable('requestorId', requestorId) + + execution.setVariable('sdncVersion', '1702') + + execution.setVariable("UpdateVnfInfraSuccessIndicator", false) + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable("source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("requestInfo", requestInfo) + + msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo")) + + msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('requestInfo') + def requestId = execution.getVariable('requestId') + def source = execution.getVariable('source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vnfId = execution.getVariable("vnfId") + String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF is already in maintenance in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfVnfInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkIfVnfInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("isInMaint result: " + isInMaint) + execution.setVariable('isVnfInMaintenance', isInMaint) + + if (isInMaint) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "VNF is in maintenance in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF's pservers are locked in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfPserversInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "checkIfPserversInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("areLocked result: " + areLocked) + execution.setVariable('arePserversLocked', areLocked) + + if (areLocked) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "pServers are locked in A&AI") + } + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set inMaint flag for this VNF to the specified value in A&AI. + * + * + * @param execution The flow's execution instance. + * @param inMaint The boolean value of the flag to set + */ + public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) { + def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + if (inMaint) { + execution.setVariable("workStep", "setVnfInMaintFlagInAAI") + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI") + } + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl() + aaiUpdator.setClient(client) + def vnfId = execution.getVariable("vnfId") + if (inMaint) { + aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage()) + } + } + + /** + * Check if VF Closed Loop Disabled in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + msoLogger.debug("vnfId is: " + vnfId) + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResultWrapper aaiRW = client.get(genericVnfUri) + Map<String, Object> result = aaiRW.asMap() + boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) + + msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled) + execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled) + + if (isClosedLoopDisabled) { + execution.setVariable("errorCode", "1004") + execution.setVariable("errorText", "closedLoop is disabled in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set VF Closed Loop Disabled Flag in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) { + def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + if (setDisabled) { + execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI") + execution.setVariable("rollbackSetClosedLoopDisabledFlag", true) + } + else { + execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI") + } + + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + + Map<String, Boolean> request = new HashMap<>() + request.put("is-closed-loop-disabled", setDisabled) + client.update(genericVnfUri, request) + msoLogger.debug("set isClosedLoop to: " + setDisabled) + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + + /** + * Handle Abort disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void abortProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.abortProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def errorText = execution.getVariable("errorText") + def errorCode = execution.getVariable("errorCode") + + exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText) + } + + /** + * Increment Retry Count for Current Work Step + * + * @param execution The flow's execution instance. + */ + public void incrementRetryCount(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.incrementRetryCount(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String retryCountVariableName = execution.getVariable("workStep") + "RetryCount" + execution.setVariable("retryCountVariableName", retryCountVariableName) + + def retryCountVariable = execution.getVariable(retryCountVariableName) + int retryCount = 0 + + if (retryCountVariable != null) { + retryCount = (int) retryCountVariable + } + + retryCount += 1 + + execution.setVariable(retryCountVariableName, retryCount) + + msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount) + msoLogger.trace('Exited ' + method) + + + } + + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy new file mode 100644 index 0000000000..68d5c19b80 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy @@ -0,0 +1,599 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.appc.client.lcm.model.Action +import org.onap.appc.client.lcm.model.ActionIdentifiers +import org.onap.appc.client.lcm.model.Flags +import org.onap.appc.client.lcm.model.Status +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.aai.* +import org.onap.so.client.aai.entities.AAIResultWrapper +import org.onap.so.client.aai.entities.uri.AAIUri +import org.onap.so.client.aai.entities.uri.AAIUriFactory +import org.onap.so.client.appc.ApplicationControllerClient; +import org.onap.so.client.appc.ApplicationControllerSupport; +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +public class VnfInPlaceUpdate extends VnfCmBase { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfInPlaceUpdate.class); + + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtils = new JsonUtils() + def prefix = "VnfIPU_" + + /** + * Initialize the flow's variables. + * + * @param execution The flow's execution instance. + */ + public void initProcessVariables(DelegateExecution execution) { + execution.setVariable('prefix', 'VnfIPU_') + execution.setVariable('Request', null) + execution.setVariable('requestInfo', null) + execution.setVariable('source', null) + execution.setVariable('vnfInputs', null) + execution.setVariable('tenantId', null) + execution.setVariable('vnfParams', null) + execution.setVariable('controllerType', null) + execution.setVariable('UpdateVnfSuccessIndicator', false) + execution.setVariable('serviceType', null) + execution.setVariable('nfRole', null) + execution.setVariable('currentActivity', 'VnfIPU') + execution.setVariable('workStep', null) + execution.setVariable('failedActivity', null) + execution.setVariable('errorCode', "0") + execution.setVariable('errorText', null) + execution.setVariable('healthCheckIndex0', 0) + execution.setVariable('healthCheckIndex1', 1) + execution.setVariable('maxRetryCount', 3) + execution.setVariable("rollbackSetClosedLoopDisabledFlag", false) + execution.setVariable("rollbackVnfStop", false) + execution.setVariable("rollbackVnfLock", false) + execution.setVariable("rollbackQuiesceTraffic", false) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", false) + } + + /** + * Check for missing elements in the received request. + * + * @param execution The flow's execution instance. + */ + public void preProcessRequest(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.preProcessRequest(' + + 'execution=' + execution.getId() + + ')' + initProcessVariables(execution) + + msoLogger.trace('Entered ' + method) + + initProcessVariables(execution) + + def incomingRequest = execution.getVariable('bpmnRequest') + + msoLogger.debug("Incoming Infra Request: " + incomingRequest) + try { + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + Map reqMap = jsonSlurper.parseText(incomingRequest) + msoLogger.debug(" Request is in JSON format.") + + def serviceInstanceId = execution.getVariable('serviceInstanceId') + def vnfId = execution.getVariable('vnfId') + + execution.setVariable('serviceInstanceId', serviceInstanceId) + execution.setVariable('vnfId', vnfId) + execution.setVariable("isVidRequest", "true") + execution.setVariable('serviceType', 'Mobility') + execution.setVariable('payload', "") + execution.setVariable('actionSnapshot', Action.Snapshot) + execution.setVariable('actionLock', Action.Lock) + execution.setVariable('actionUnlock', Action.Unlock) + execution.setVariable('actionUpgradePreCheck', Action.UpgradePreCheck) + execution.setVariable('actionUpgradePostCheck', Action.UpgradePostCheck) + execution.setVariable('actionQuiesceTraffic', Action.QuiesceTraffic) + execution.setVariable('actionUpgradeBackup', Action.UpgradeBackup) + execution.setVariable('actionUpgradeSoftware', Action.UpgradeSoftware) + execution.setVariable('actionResumeTraffic', Action.ResumeTraffic) + + + def controllerType = reqMap.requestDetails?.requestParameters?.controllerType + execution.setVariable('controllerType', controllerType) + + msoLogger.debug('Controller Type: ' + controllerType) + + def payload = reqMap.requestDetails?.requestParameters?.payload + execution.setVariable('payload', payload) + + msoLogger.debug('Processed payload: ' + payload) + + + def requestId = execution.getVariable("mso-request-id") + execution.setVariable('requestId', requestId) + execution.setVariable('msoRequestId', requestId) + + def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null + execution.setVariable('requestorId', requestorId) + + def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration + def lcpCloudRegionId = cloudConfiguration.lcpCloudRegionId + execution.setVariable('lcpCloudRegionId', lcpCloudRegionId) + def tenantId = cloudConfiguration.tenantId + execution.setVariable('tenantId', tenantId) + + execution.setVariable("UpdateVnfInfraSuccessIndicator", false) + + + + def source = reqMap.requestDetails?.requestInfo?.source + execution.setVariable("source", source) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>UPDATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable("requestInfo", requestInfo) + + msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo")) + + msoLogger.trace('Exited ' + method) + + } + catch(groovy.json.JsonException je) { + msoLogger.debug(" Request is not in JSON format.") + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format") + } + catch(Exception e) { + String restFaultMessage = e.getMessage() + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage) + } + } + + /** + * Prepare and send the sychronous response for this flow. + * + * @param execution The flow's execution instance. + */ + public void sendSynchResponse(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.sendSynchResponse(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + + try { + def requestInfo = execution.getVariable('requestInfo') + def requestId = execution.getVariable('requestId') + def source = execution.getVariable('source') + def progress = getNodeTextForce(requestInfo, 'progress') + if (progress.isEmpty()) { + progress = '0' + } + def startTime = getNodeTextForce(requestInfo, 'start-time') + if (startTime.isEmpty()) { + startTime = System.currentTimeMillis() + } + + // RESTResponse (for API Handler (APIH) Reply Task) + def vnfId = execution.getVariable("vnfId") + String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim() + + sendWorkflowResponse(execution, 200, synchResponse) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF is already in maintenance in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfVnfInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkIfVnfInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("isInMaint result: " + isInMaint) + execution.setVariable('isVnfInMaintenance', isInMaint) + + if (isInMaint) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "VNF is in maintenance in A&AI") + } + + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage()) + } + } + + + /** + * Check if this VNF's pservers are locked in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfPserversInMaintInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("workStep", "checkIfPserversInMaintInAAI") + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIValidatorImpl aaiValidator = new AAIValidatorImpl() + aaiValidator.setClient(client) + def vnfId = execution.getVariable("vnfId") + boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid) + msoLogger.debug("areLocked result: " + areLocked) + execution.setVariable('arePserversLocked', areLocked) + + if (areLocked) { + execution.setVariable("errorCode", "1003") + execution.setVariable("errorText", "pServers are locked in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage()) + } + } + + /** + * Set inMaint flag for this VNF to the specified value in A&AI. + * + * + * @param execution The flow's execution instance. + * @param inMaint The boolean value of the flag to set + */ + public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) { + def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + if (inMaint) { + execution.setVariable("workStep", "setVnfInMaintFlagInAAI") + } + else { + execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI") + } + execution.setVariable("failedActivity", "AAI") + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + AAIRestClientImpl client = new AAIRestClientImpl() + AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl() + aaiUpdator.setClient(client) + def vnfId = execution.getVariable("vnfId") + if (inMaint) { + aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid) + execution.setVariable("rollbackSetVnfInMaintenanceFlag", true) + } + else { + aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + //exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage()) + } + } + + /** + * Check if VF Closed Loop Disabled in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI") + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + msoLogger.debug("vnfId is: " + vnfId) + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResultWrapper aaiRW = client.get(genericVnfUri) + Map<String, Object> result = aaiRW.asMap() + boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) + + msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled) + execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled) + + if (isClosedLoopDisabled) { + execution.setVariable("errorCode", "1004") + execution.setVariable("errorText", "closedLoop is disabled in A&AI") + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + /** + * Set VF Closed Loop Disabled Flag in A&AI. + * + * + * @param execution The flow's execution instance. + */ + public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) { + def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + if (setDisabled) { + execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI") + execution.setVariable("rollbackSetClosedLoopDisabledFlag", true) + } + else { + execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI") + } + + execution.setVariable("failedActivity", "AAI") + msoLogger.trace('Entered ' + method) + + try { + def transactionLoggingUuid = UUID.randomUUID().toString() + def vnfId = execution.getVariable("vnfId") + AAIResourcesClient client = new AAIResourcesClient() + AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + + Map<String, Boolean> request = new HashMap<>() + request.put("is-closed-loop-disabled", setDisabled) + client.update(genericVnfUri, request) + msoLogger.debug("set isClosedLoop to: " + setDisabled) + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + + + + /** + * Call APP-C client to execute specified APP-C command for this VNF. + * + * + * @param execution The flow's execution instance. + * @param action The action to take in APP-C. + */ + public void runAppcCommand(DelegateExecution execution, Action action) { + def method = getClass().getSimpleName() + '.runAppcCommand(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + + ApplicationControllerClient appcClient = null + + try { + msoLogger.debug("Running APP-C action: " + action.toString()) + String vnfId = execution.getVariable('vnfId') + String msoRequestId = execution.getVariable('requestId') + execution.setVariable('msoRequestId', msoRequestId) + execution.setVariable("failedActivity", "APP-C") + + appcClient = new ApplicationControllerClient() + ApplicationControllerSupport support = new ApplicationControllerSupport() + appcClient.appCSupport=support + org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.onap.appc.client.lcm.model"); + Flags flags = new Flags(); + ActionIdentifiers actionIdentifiers = new ActionIdentifiers(); + actionIdentifiers.setVnfId(vnfId); + Status appcStatus + switch(action) { + case Action.Lock: + execution.setVariable('workStep', "LockVNF") + appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,null,msoRequestId) + break + case Action.Unlock: + execution.setVariable('workStep', "UnlockVNF") + appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,null,msoRequestId) + break + case Action.HealthCheck: + def healthCheckIndex = execution.getVariable('healthCheckIndex') + execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex) + execution.setVariable('healthCheckIndex', healthCheckIndex + 1) + appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,null,msoRequestId) + break + case Action.Start: + execution.setVariable('workStep', "StartVNF") + appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,null,msoRequestId) + break + case Action.Stop: + execution.setVariable('workStep', "StopVNF") + appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,null,msoRequestId) + break + default: + break + } + msoLogger.debug("Completed AppC request") + int appcCode = appcStatus.getCode() + msoLogger.debug("AppC status code is: " + appcCode) + msoLogger.debug("AppC status message is: " + appcStatus.getMessage()) + if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) { + execution.setVariable("errorCode", Integer.toString(appcCode)) + execution.setVariable("errorText", appcStatus.getMessage()) + } + + msoLogger.trace('Exited ' + method) + } catch (BpmnError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } catch (java.lang.NoSuchMethodError e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + execution.setVariable("errorCode", "1002") + execution.setVariable("errorText", e.getMessage()) + } + } + + /** + * Placeholder for a call to APP-C client to execute specified APP-C command for this VNF. + * + * + * @param execution The flow's execution instance. + * @param action The action to take in APP-C. + */ + public void runAppcCommandPlaceholder(DelegateExecution execution, String action) { + def method = getClass().getSimpleName() + '.runAppcCommandPlaceholder(' + + 'execution=' + execution.getId() + + ')' + + execution.setVariable('errorCode', "0") + msoLogger.trace('Entered ' + method) + execution.setVariable("failedActivity", "APP-C") + execution.setVariable("workStep", action) + } + + + + /** + * Handle Abort disposition from RainyDayHandler + * + * @param execution The flow's execution instance. + */ + public void abortProcessing(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.abortProcessing(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + def errorText = execution.getVariable("errorText") + def errorCode = execution.getVariable("errorCode") + + exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText) + } + + /** + * Increment Retry Count for Current Work Step + * + * @param execution The flow's execution instance. + */ + public void incrementRetryCount(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.incrementRetryCount(' + + 'execution=' + execution.getId() + + ')' + + msoLogger.trace('Entered ' + method) + + String retryCountVariableName = execution.getVariable("workStep") + "RetryCount" + execution.setVariable("retryCountVariableName", retryCountVariableName) + + def retryCountVariable = execution.getVariable(retryCountVariableName) + int retryCount = 0 + + if (retryCountVariable != null) { + retryCount = (int) retryCountVariable + } + + retryCount += 1 + + execution.setVariable(retryCountVariableName, retryCount) + + msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount) + msoLogger.trace('Exited ' + method) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy new file mode 100644 index 0000000000..86c5f65e8c --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy @@ -0,0 +1,814 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import static org.apache.commons.lang3.StringUtils.* + +import org.apache.commons.lang3.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.VidUtils +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.domain.* +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.springframework.web.util.UriUtils; + +import groovy.json.* + + + +/** + * This groovy class supports the <class>CreateVcpeResCustService.bpmn</class> process. + * + * @author ek1439 + * + */ +public class CreateVcpeResCustService extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVcpeResCustService.class); + + private static final String DebugFlag = "isDebugLogEnabled" + + String Prefix = "CVRCS_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils() + CatalogDbUtils catalogDbUtils = new CatalogDbUtils() + + /** + * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution) { + /* Initialize all the process variables in this block */ + + execution.setVariable("createVcpeServiceRequest", "") + execution.setVariable("globalSubscriberId", "") + execution.setVariable("serviceInstanceName", "") + execution.setVariable("msoRequestId", "") + execution.setVariable(Prefix + "VnfsCreatedCount", 0) + execution.setVariable("productFamilyId", "") + execution.setVariable("brgWanMacAddress", "") + execution.setVariable("customerLocation", "") + execution.setVariable("homingService", "") + execution.setVariable("cloudOwner", "") + execution.setVariable("cloudRegionId", "") + execution.setVariable("homingModelIds", "") + + //TODO + execution.setVariable("sdncVersion", "1707") + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside preProcessRequest CreateVcpeResCustService Request ") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + //Config Inputs + String aaiDistDelay = execution.getVariable('URN_mso_workflow_aai_distribution_delay') + if (isBlank(aaiDistDelay)) { + msg = "URN_mso_workflow_aai_distribution_delay is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("aaiDistDelay", aaiDistDelay) + msoLogger.debug("AAI distribution delay: " + aaiDistDelay) + + // check for incoming json message/input + String createVcpeServiceRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(createVcpeServiceRequest) + execution.setVariable("createVcpeServiceRequest", createVcpeServiceRequest); + println 'createVcpeServiceRequest - ' + createVcpeServiceRequest + + // extract requestId + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) { + serviceInstanceId = UUID.randomUUID().toString() + msoLogger.debug(" Generated new Service Instance: " + serviceInstanceId) + } else { + msoLogger.debug("Using provided Service Instance ID: " + serviceInstanceId) + } + + serviceInstanceId = UriUtils.encode(serviceInstanceId, "UTF-8") + execution.setVariable("serviceInstanceId", serviceInstanceId) + utils.log("DEBUG", "Incoming serviceInstanceId is: " + serviceInstanceId, isDebugEnabled) + + String serviceInstanceName = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.instanceName") + execution.setVariable("serviceInstanceName", serviceInstanceName) + utils.log("DEBUG", "Incoming serviceInstanceName is: " + serviceInstanceName, isDebugEnabled) + + String requestAction = execution.getVariable("requestAction") + execution.setVariable("requestAction", requestAction) + + setBasicDBAuthHeader(execution, isDebugEnabled) + + String source = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.source") + if ((source == null) || (source.isEmpty())) { + source = "VID" + } + execution.setVariable("source", source) + + // extract globalSubscriberId + String globalSubscriberId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId") + + // verify element global-customer-id is sent from JSON input, throw exception if missing + if ((globalSubscriberId == null) || (globalSubscriberId.isEmpty())) { + String dataErrorMessage = " Element 'globalSubscriberId' is missing. " + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + + } else { + execution.setVariable("globalSubscriberId", globalSubscriberId) + execution.setVariable("globalCustomerId", globalSubscriberId) + } + + // extract subscriptionServiceType + String subscriptionServiceType = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters.subscriptionServiceType") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + msoLogger.debug("Incoming subscriptionServiceType is: " + subscriptionServiceType) + + String suppressRollback = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.suppressRollback") + execution.setVariable("disableRollback", suppressRollback) + msoLogger.debug("Incoming Suppress/Disable Rollback is: " + suppressRollback) + + String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId") + execution.setVariable("productFamilyId", productFamilyId) + msoLogger.debug("Incoming productFamilyId is: " + productFamilyId) + + String subscriberInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo") + execution.setVariable("subscriberInfo", subscriberInfo) + msoLogger.debug("Incoming subscriberInfo is: " + subscriberInfo) + + // extract cloud configuration, split vid_ID into cloudOwner and cloudRegionId + String vimId = jsonUtil.getJsonValue(createVcpeServiceRequest, + "requestDetails.cloudConfiguration.lcpCloudRegionId") + def cloudRegion = vimId.split("_") + def cloudOwner = cloudRegion[0].toString() + def cloudRegionId = cloudRegion[1].toString() + execution.setVariable("cloudOwner", cloudOwner) + utils.log("DEBUG","cloudOwner: " + cloudOwner, isDebugEnabled) + execution.setVariable("cloudRegionId", cloudRegionId) + utils.log("DEBUG","cloudRegionId: " + cloudRegionId, isDebugEnabled) + + /* + * Extracting User Parameters from incoming Request and converting into a Map + */ + def jsonSlurper = new JsonSlurper() + def jsonOutput = new JsonOutput() + + Map reqMap = jsonSlurper.parseText(createVcpeServiceRequest) + + //InputParams + def userParams = reqMap.requestDetails?.requestParameters?.userParams + + Map<String, String> inputMap = [:] + if (userParams) { + userParams.each { + userParam -> + if ("Customer_Location".equals(userParam?.name)) { + execution.setVariable("customerLocation", userParam.value) + userParam.value.each { + param -> + inputMap.put(param.key, param.value) + } + } + if ("Homing_Model_Ids".equals(userParam?.name)) { + utils.log("DEBUG", "Homing_Model_Ids: " + userParam.value.toString() + " ---- Type is:" + + userParam.value.getClass() , isDebugEnabled) + def modelIdLst = [] + userParam.value.each { + param -> + def valueMap = [:] + param.each { + entry -> + valueMap.put(entry.key, entry.value) + } + modelIdLst.add(valueMap) + utils.log("DEBUG", "Param: " + param.toString() + " ---- Type is:" + + param.getClass() , isDebugEnabled) + } + execution.setVariable("homingModelIds", modelIdLst) + } + if ("BRG_WAN_MAC_Address".equals(userParam?.name)) { + execution.setVariable("brgWanMacAddress", userParam.value) + inputMap.put("BRG_WAN_MAC_Address", userParam.value) + } + if ("Homing_Solution".equals(userParam?.name)) { + execution.setVariable("homingService", userParam.value) + inputMap.put("Homing_Solution", userParam.value) + } + } + } + + if (execution.getVariable("homingService") == "") { + // Set Default Homing to OOF if not set + execution.setVariable("homingService", "oof") + } + + msoLogger.debug("User Input Parameters map: " + userParams.toString()) + execution.setVariable("serviceInputParams", inputMap) + + msoLogger.debug("Incoming brgWanMacAddress is: " + execution.getVariable('brgWanMacAddress')) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable(Prefix + "requestInfo", requestInfo) + + msoLogger.trace("Completed preProcessRequest CreateVcpeResCustService Request ") + + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void sendSyncResponse(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + msoLogger.trace("Inside sendSyncResponse of CreateVcpeResCustService ") + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String requestId = execution.getVariable("mso-request-id") + + // RESTResponse (for API Handler (APIH) Reply Task) + String syncResponse = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${ + requestId + }"}}""".trim() + + msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse) + sendWorkflowResponse(execution, 202, syncResponse) + + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method sendSyncResponse() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ******************************* + // + // ******************************* + public void prepareDecomposeService(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside prepareDecomposeService of CreateVcpeResCustService ") + + String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest") + + //serviceModelInfo JSON string will be used as-is for DoCreateServiceInstance BB + String serviceModelInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.modelInfo") + execution.setVariable("serviceModelInfo", serviceModelInfo) + + msoLogger.trace("Completed prepareDecomposeService of CreateVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ******************************* + // + // ******************************* + public void prepareCreateServiceInstance(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside prepareCreateServiceInstance of CreateVcpeResCustService ") + + /* + * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject + * ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + * ModelInfo modelInfo = serviceDecomposition.getModelInfo() + * + */ + String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest") +// String serviceInputParams = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters") +// execution.setVariable("serviceInputParams", serviceInputParams) + + + String serviceInstanceName = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.instanceName") + execution.setVariable("serviceInstanceName", serviceInstanceName) + + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonStringNoRootName()) + + msoLogger.trace("Completed prepareCreateServiceInstance of CreateVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void postProcessServiceInstanceCreate(DelegateExecution execution) { + def method = getClass().getSimpleName() + '.postProcessServiceInstanceCreate(' + 'execution=' + execution.getId() + ')' + def isDebugLogEnabled = execution.getVariable(DebugFlag) + msoLogger.trace('Entered ' + method) + + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceInstanceName = execution.getVariable("serviceInstanceName") + + try { + + String payload = """ + <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.onap.so/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <req:updateInfraRequest> + <requestId>${MsoUtils.xmlEscape(requestId)}</requestId> + <lastModifiedBy>BPEL</lastModifiedBy> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <serviceInstanceName>${MsoUtils.xmlEscape(serviceInstanceName)}</serviceInstanceName> + </req:updateInfraRequest> + </soapenv:Body> + </soapenv:Envelope> + """ + execution.setVariable(Prefix + "setUpdateDbInstancePayload", payload) + msoLogger.debug(Prefix + "setUpdateDbInstancePayload: " + payload) + msoLogger.trace('Exited ' + method) + + } catch (BpmnError e) { + throw e; + } catch (Exception e) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method) + } + } + + + public void processDecomposition(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + msoLogger.trace("Inside processDecomposition() of CreateVcpeResCustService ") + + try { + + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + // VNFs + List<VnfResource> vnfList = serviceDecomposition.getVnfResources() + filterVnfs(vnfList) + serviceDecomposition.setVnfResources(vnfList) + + execution.setVariable("vnfList", vnfList) + execution.setVariable("vnfListString", vnfList.toString()) + + String vnfModelInfoString = "" + if (vnfList != null && vnfList.size() > 0) { + execution.setVariable(Prefix + "VNFsCount", vnfList.size()) + msoLogger.debug("vnfs to create: " + vnfList.size()) + ModelInfo vnfModelInfo = vnfList[0].getModelInfo() + + vnfModelInfoString = vnfModelInfo.toString() + String vnfModelInfoWithRoot = vnfModelInfo.toString() + vnfModelInfoString = jsonUtil.getJsonValue(vnfModelInfoWithRoot, "modelInfo") + } else { + execution.setVariable(Prefix + "VNFsCount", 0) + msoLogger.debug("no vnfs to create based upon serviceDecomposition content") + } + + execution.setVariable("vnfModelInfo", vnfModelInfoString) + execution.setVariable("vnfModelInfoString", vnfModelInfoString) + msoLogger.debug(" vnfModelInfoString :" + vnfModelInfoString) + + msoLogger.trace("Completed processDecomposition() of CreateVcpeResCustService ") + } catch (Exception ex) { + sendSyncError(execution) + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. processDecomposition() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + private void filterVnfs(List<VnfResource> vnfList) { + if (vnfList == null) { + return + } + + // remove BRG & TXC from VNF list + + Iterator<VnfResource> it = vnfList.iterator() + while (it.hasNext()) { + VnfResource vr = it.next() + + String role = vr.getNfRole() + if (role == "BRG" || role == "TunnelXConn" || role == "Tunnel XConn") { + it.remove() + } + } + } + + + public void prepareCreateAllottedResourceTXC(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside prepareCreateAllottedResourceTXC of CreateVcpeResCustService ") + + /* + * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject + * ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + * ModelInfo modelInfo = serviceDecomposition.getModelInfo() + * + */ + String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest") + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + //allottedResourceModelInfo + //allottedResourceRole + //The model Info parameters are a JSON structure as defined in the Service Instantiation API. + //It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB. + List<AllottedResource> allottedResources = serviceDecomposition.getAllottedResources() + if (allottedResources != null) { + Iterator iter = allottedResources.iterator(); + while (iter.hasNext()) { + AllottedResource allottedResource = (AllottedResource) iter.next(); + + msoLogger.debug(" getting model info for AllottedResource # :" + allottedResource.toJsonStringNoRootName()) + msoLogger.debug(" allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType()) + if ("TunnelXConn".equalsIgnoreCase(allottedResource.getAllottedResourceType()) || "Tunnel XConn".equalsIgnoreCase(allottedResource.getAllottedResourceType())) { + //set create flag to true + execution.setVariable("createTXCAR", true) + ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo() + execution.setVariable("allottedResourceModelInfoTXC", allottedResourceModelInfo.toJsonStringNoRootName()) + execution.setVariable("allottedResourceRoleTXC", allottedResource.getAllottedResourceRole()) + execution.setVariable("allottedResourceTypeTXC", allottedResource.getAllottedResourceType()) + //After decomposition and homing BBs, there should be an allotted resource object in the decomposition that represents the TXC, + //and in its homingSolution section should be found the infraServiceInstanceId (i.e. infraServiceInstanceId in TXC Allotted Resource structure) (which the Homing BB would have populated). + execution.setVariable("parentServiceInstanceIdTXC", allottedResource.getHomingSolution().getServiceInstanceId()) + } + } + } + + //unit test only + String allottedResourceId = execution.getVariable("allottedResourceId") + execution.setVariable("allottedResourceIdTXC", allottedResourceId) + msoLogger.debug("setting allottedResourceId CreateVcpeResCustService " + allottedResourceId) + + msoLogger.trace("Completed prepareCreateAllottedResourceTXC of CreateVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceTXC flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void prepareCreateAllottedResourceBRG(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside prepareCreateAllottedResourceBRG of CreateVcpeResCustService ") + + /* + * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject + * ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + * ModelInfo modelInfo = serviceDecomposition.getModelInfo() + * + */ + String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest") + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + + //allottedResourceModelInfo + //allottedResourceRole + //The model Info parameters are a JSON structure as defined in the Service Instantiation API. + //It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB. + List<AllottedResource> allottedResources = serviceDecomposition.getAllottedResources() + if (allottedResources != null) { + Iterator iter = allottedResources.iterator(); + while (iter.hasNext()) { + AllottedResource allottedResource = (AllottedResource) iter.next(); + + msoLogger.debug(" getting model info for AllottedResource # :" + allottedResource.toJsonStringNoRootName()) + msoLogger.debug(" allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType()) + if ("BRG".equalsIgnoreCase(allottedResource.getAllottedResourceType())) { + //set create flag to true + execution.setVariable("createBRGAR", true) + ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo() + execution.setVariable("allottedResourceModelInfoBRG", allottedResourceModelInfo.toJsonStringNoRootName()) + execution.setVariable("allottedResourceRoleBRG", allottedResource.getAllottedResourceRole()) + execution.setVariable("allottedResourceTypeBRG", allottedResource.getAllottedResourceType()) + //After decomposition and homing BBs, there should be an allotted resource object in the decomposition that represents the BRG, + //and in its homingSolution section should be found the infraServiceInstanceId (i.e. infraServiceInstanceId in BRG Allotted Resource structure) (which the Homing BB would have populated). + execution.setVariable("parentServiceInstanceIdBRG", allottedResource.getHomingSolution().getServiceInstanceId()) + } + } + } + + //unit test only + String allottedResourceId = execution.getVariable("allottedResourceId") + execution.setVariable("allottedResourceIdBRG", allottedResourceId) + msoLogger.debug("setting allottedResourceId CreateVcpeResCustService " + allottedResourceId) + + msoLogger.trace("Completed prepareCreateAllottedResourceBRG of CreateVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceBRG flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ******************************* + // Generate Network request Section + // ******************************* + public void prepareVnfAndModulesCreate(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside prepareVnfAndModulesCreate of CreateVcpeResCustService ") + + // String disableRollback = execution.getVariable("disableRollback") + // def backoutOnFailure = "" + // if(disableRollback != null){ + // if ( disableRollback == true) { + // backoutOnFailure = "false" + // } else if ( disableRollback == false) { + // backoutOnFailure = "true" + // } + // } + //failIfExists - optional + + String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest") + String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId") + execution.setVariable("productFamilyId", productFamilyId) + msoLogger.debug("productFamilyId: " + productFamilyId) + + List<VnfResource> vnfList = execution.getVariable("vnfList") + + Integer vnfsCreatedCount = execution.getVariable(Prefix + "VnfsCreatedCount") + String vnfModelInfoString = null; + + if (vnfList != null && vnfList.size() > 0) { + msoLogger.debug("getting model info for vnf # " + vnfsCreatedCount) + ModelInfo vnfModelInfo1 = vnfList[0].getModelInfo() + msoLogger.debug("got 0 ") + ModelInfo vnfModelInfo = vnfList[vnfsCreatedCount.intValue()].getModelInfo() + vnfModelInfoString = vnfModelInfo.toString() + } else { + //TODO: vnfList does not contain data. Need to investigate why ... . Fro VCPE use model stored + vnfModelInfoString = execution.getVariable("vnfModelInfo") + } + + msoLogger.debug(" vnfModelInfoString :" + vnfModelInfoString) + + // extract cloud configuration + String vimId = jsonUtil.getJsonValue(createVcpeServiceRequest, + "requestDetails.cloudConfiguration.lcpCloudRegionId") + def cloudRegion = vimId.split("_") + execution.setVariable("cloudOwner", cloudRegion[0]) + msoLogger.debug("cloudOwner: "+ cloudRegion[0]) + execution.setVariable("cloudRegionId", cloudRegion[1]) + msoLogger.debug("cloudRegionId: "+ cloudRegion[1]) + execution.setVariable("lcpCloudRegionId", cloudRegion[1]) + msoLogger.debug("lcpCloudRegionId: "+ cloudRegion[1]) + String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest, + "requestDetails.cloudConfiguration.tenantId") + execution.setVariable("tenantId", tenantId) + msoLogger.debug("tenantId: " + tenantId) + + String sdncVersion = execution.getVariable("sdncVersion") + msoLogger.debug("sdncVersion: " + sdncVersion) + + msoLogger.trace("Completed prepareVnfAndModulesCreate of CreateVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareVnfAndModulesCreate() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ******************************* + // Validate Vnf request Section -> increment count + // ******************************* + public void validateVnfCreate(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + try { + msoLogger.trace("Inside validateVnfCreate of CreateVcpeResCustService ") + + Integer vnfsCreatedCount = execution.getVariable(Prefix + "VnfsCreatedCount") + vnfsCreatedCount++ + + execution.setVariable(Prefix + "VnfsCreatedCount", vnfsCreatedCount) + + msoLogger.debug(" ***** Completed validateVnfCreate of CreateVcpeResCustService ***** " + " vnf # " + vnfsCreatedCount) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateVnfCreate() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ***************************************** + // Prepare Completion request Section + // ***************************************** + public void postProcessResponse(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + msoLogger.trace("Inside postProcessResponse of CreateVcpeResCustService ") + + try { + String source = execution.getVariable("source") + String requestId = execution.getVariable("mso-request-id") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>CREATE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <status-message>Service Instance has been created successfully via macro orchestration</status-message> + <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId> + <mso-bpel-name>BPMN macro create</mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + msoLogger.debug(xmlMsoCompletionRequest) + execution.setVariable(Prefix + "Success", true) + execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void preProcessRollback(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + msoLogger.trace("preProcessRollback of CreateVcpeResCustService ") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch (Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit preProcessRollback of CreateVcpeResCustService ") + } + + public void postProcessRollback(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + msoLogger.trace("postProcessRollback of CreateVcpeResCustService ") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch (Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("Exit postProcessRollback of CreateVcpeResCustService ") + } + + public void prepareFalloutRequest(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + + msoLogger.trace("STARTED CreateVcpeResCustService prepareFalloutRequest Process ") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString()) + String requestInfo = execution.getVariable(Prefix + "requestInfo") + msoLogger.debug(" Incoming Request Info: " + requestInfo) + + //TODO. hmmm. there is no way to UPDATE error message. +// String errorMessage = wfex.getErrorMessage() +// boolean successIndicator = execution.getVariable("DCRESI_rolledBack") +// if (successIndicator){ +// errorMessage = errorMessage + ". Rollback successful." +// } else { +// errorMessage = errorMessage + ". Rollback not completed." +// } + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + + execution.setVariable(Prefix + "falloutRequest", falloutRequest) + + } catch (Exception ex) { + msoLogger.debug("Error Occured in CreateVcpeResCustService prepareFalloutRequest Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVcpeResCustService prepareFalloutRequest Process") + } + msoLogger.trace("COMPLETED CreateVcpeResCustService prepareFalloutRequest Process ") + } + + + public void sendSyncError(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + execution.setVariable("prefix", Prefix) + + msoLogger.trace("Inside sendSyncError() of CreateVcpeResCustService ") + + try { + String errorMessage = "" + def wfe = execution.getVariable("WorkflowException") + if (wfe instanceof 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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + } + + public void processJavaException(DelegateExecution execution) { + def isDebugEnabled = execution.getVariable(DebugFlag) + execution.setVariable("prefix", Prefix) + try { + msoLogger.debug("Caught a Java Exception") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable(Prefix + "unexpectedError", "Caught a Java Lang Exception") + // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception") + } catch (BpmnError b) { + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + throw b + } catch (Exception e) { + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable(Prefix + "unexpectedError", "Exception in processJavaException method") + // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.debug("Completed processJavaException Method") + } +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy new file mode 100644 index 0000000000..eaf3631441 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy @@ -0,0 +1,461 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts + +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.CatalogDbUtils +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.NetworkUtils +import org.onap.so.bpmn.common.scripts.VidUtils +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.logger.MessageEnum +import org.onap.so.logger.MsoLogger +import org.onap.so.rest.APIResponse + +import static org.apache.commons.lang3.StringUtils.isBlank + + +/** + * This groovy class supports the <class>DeleteVcpeResCustService.bpmn</class> process. + * + * @author dm4252 + * + */ +public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor { + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVcpeResCustService.class); + + private static final String DebugFlag = "isDebugLogEnabled" + + String Prefix = "DVRCS_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + VidUtils vidUtils = new VidUtils() + CatalogDbUtils catalogDbUtils = new CatalogDbUtils() + NetworkUtils networkUtils = new NetworkUtils() + + /** + * This method is executed during the preProcessRequest task of the <class>DeleteVcpeResCustService.bpmn</class> process. + * @param execution + */ + public InitializeProcessVariables(DelegateExecution execution){ + /* Initialize all the process variables in this block */ + + execution.setVariable("DeleteVcpeResCustServiceRequest", "") + execution.setVariable("msoRequestId", "") + execution.setVariable(Prefix+"vnfsDeletedCount", 0) + execution.setVariable(Prefix+"vnfsCount", 0) + } + + // ************************************************** + // Pre or Prepare Request Section + // ************************************************** + /** + * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process. + * @param execution + */ + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + execution.setVariable("prefix",Prefix) + + msoLogger.trace("Inside preProcessRequest DeleteVcpeResCustService Request ") + + try { + // initialize flow variables + InitializeProcessVariables(execution) + + // check for incoming json message/input + String DeleteVcpeResCustServiceRequest = execution.getVariable("bpmnRequest") + msoLogger.debug(DeleteVcpeResCustServiceRequest) + execution.setVariable("DeleteVcpeResCustServiceRequest", DeleteVcpeResCustServiceRequest); + println 'DeleteVcpeResCustServiceRequest - ' + DeleteVcpeResCustServiceRequest + + // extract requestId + String requestId = execution.getVariable("mso-request-id") + execution.setVariable("msoRequestId", requestId) + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) { + String dataErrorMessage = " Element 'serviceInstanceId' is missing. " + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage) + } + + String requestAction = execution.getVariable("requestAction") + execution.setVariable("requestAction", requestAction) + + String source = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.source") + if ((source == null) || (source.isEmpty())) { + source = "VID" + } + execution.setVariable("source", source) + + // extract globalSubscriberId + String globalSubscriberId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId") + + // global-customer-id is optional on Delete + + execution.setVariable("globalSubscriberId", globalSubscriberId) + execution.setVariable("globalCustomerId", globalSubscriberId) + + String suppressRollback = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.suppressRollback") + execution.setVariable("disableRollback", suppressRollback) + msoLogger.debug("Incoming Suppress/Disable Rollback is: " + suppressRollback) + + String productFamilyId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.productFamilyId") + execution.setVariable("productFamilyId", productFamilyId) + msoLogger.debug("Incoming productFamilyId is: " + productFamilyId) + + // extract subscriptionServiceType + String subscriptionServiceType = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestParameters.subscriptionServiceType") + execution.setVariable("subscriptionServiceType", subscriptionServiceType) + msoLogger.debug("Incoming subscriptionServiceType is: " + subscriptionServiceType) + + // extract cloud configuration + String cloudConfiguration = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration") + execution.setVariable("cloudConfiguration", cloudConfiguration) + msoLogger.debug("cloudConfiguration: "+ cloudConfiguration) + String lcpCloudRegionId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId") + execution.setVariable("lcpCloudRegionId", lcpCloudRegionId) + msoLogger.debug("lcpCloudRegionId: "+ lcpCloudRegionId) + String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId") + execution.setVariable("tenantId", tenantId) + msoLogger.debug("tenantId: "+ tenantId) + + String sdncVersion = "1707" + execution.setVariable("sdncVersion", sdncVersion) + msoLogger.debug("sdncVersion: "+ sdncVersion) + + //For Completion Handler & Fallout Handler + String requestInfo = + """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info>""" + + execution.setVariable(Prefix+"requestInfo", requestInfo) + + //Setting for Generic Sub Flows + execution.setVariable("GENGS_type", "service-instance") + + msoLogger.trace("Completed preProcessRequest DeleteVcpeResCustServiceRequest Request ") + + } catch (BpmnError e) { + throw e; + } catch (Exception ex){ + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void sendSyncResponse(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + + msoLogger.trace("Inside sendSyncResponse of DeleteVcpeResCustService ") + + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String requestId = execution.getVariable("mso-request-id") + + // RESTResponse (for API Handler (APIH) Reply Task) + String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim() + + msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse) + sendWorkflowResponse(execution, 202, syncResponse) + } catch (Exception ex) { + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void prepareServiceDelete(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("Inside prepareServiceDelete() of DeleteVcpeResCustService ") + + try { + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + + // confirm if ServiceInstance was found + if ( !execution.getVariable("GENGS_FoundIndicator") ) + { + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Service Instance was not found in AAI by id: " + serviceInstanceId + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + + // get variable within incoming json + String DeleteVcpeResCustServiceRequest = execution.getVariable("DeleteVcpeResCustServiceRequest"); + + // get SI extracted by GenericGetService + String serviceInstanceAaiRecord = execution.getVariable("GENGS_service"); + + msoLogger.debug("serviceInstanceAaiRecord: "+serviceInstanceAaiRecord) + serviceInstanceAaiRecord = utils.removeXmlNamespaces(serviceInstanceAaiRecord) + + def (TXC_found, TXC_id) = new Tuple(false, null) + def (BRG_found, BRG_id) = new Tuple(false, null) + List relatedVnfIdList = [] + + for(Node rel: utils.getMultNodeObjects(serviceInstanceAaiRecord, "relationship")) { + def relto = utils.getChildNodeText(rel, "related-to") + def relink = utils.getChildNodeText(rel, "related-link") + msoLogger.debug("check: "+relto+" link: "+relink) + + if(isBlank(relto) || isBlank(relink)) { + + } else if(relto == "generic-vnf") { + def id = relink.substring(relink.indexOf("/generic-vnf/")+13) + if(id.endsWith("/")) { + id = id.substring(0, id.length()-1) + } + + relatedVnfIdList.add(id) + + } else if(relto == "allotted-resource") { + def (type, id) = getAaiAr(execution, relink) + + if(isBlank(type) || isBlank(id)) { + + } else if(type == "TunnelXConn" || type == "Tunnel XConn") { + msoLogger.debug("TunnelXConn AR found") + TXC_found = true + TXC_id = id + + } else if(type == "BRG") { + msoLogger.debug("BRG AR found") + BRG_found = true + BRG_id = id + } + } + } + + execution.setVariable(Prefix+"TunnelXConn", TXC_found) + execution.setVariable("TXC_allottedResourceId", TXC_id) + msoLogger.debug("TXC_allottedResourceId: " + TXC_id) + + execution.setVariable(Prefix+"BRG", BRG_found) + execution.setVariable("BRG_allottedResourceId", BRG_id) + msoLogger.debug("BRG_allottedResourceId: " + BRG_id) + + int vnfsCount = relatedVnfIdList.size() + execution.setVariable(Prefix+"vnfsCount", vnfsCount) + msoLogger.debug(" "+Prefix+"vnfsCount : " + vnfsCount) + if(vnfsCount > 0) { + execution.setVariable(Prefix+"relatedVnfIdList", relatedVnfIdList) + } + + msoLogger.trace("Completed prepareServiceDelete() of DeleteVcpeResCustService ") + } catch (BpmnError e){ + throw e; + } catch (Exception ex) { + sendSyncError(execution) + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. prepareServiceDelete() - " + ex.getMessage() + msoLogger.debug(exceptionMessage) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + private getAaiAr(DelegateExecution execution, String relink) { + def isDebugEnabled = execution.getVariable(DebugFlag) + AaiUtil aaiUtil = new AaiUtil(this) + String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + relink + + msoLogger.debug("get AR info " + aaiEndpoint) + APIResponse response = aaiUtil.executeAAIGetCall(execution, aaiEndpoint) + + int responseCode = response.getStatusCode() + msoLogger.debug("get AR info responseCode:" + responseCode) + + String aaiResponse = response.getResponseBodyAsString() + msoLogger.debug("get AR info " + aaiResponse) + + if(responseCode < 200 || responseCode >= 300 || isBlank(aaiResponse)) { + return new Tuple2(null, null) + } + + def type = utils.getNodeText(aaiResponse, "type") + def id = utils.getNodeText(aaiResponse, "id") + + return new Tuple2(type, id) + } + + + // ******************************* + // + // ******************************* + public void prepareVnfAndModulesDelete (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("Inside prepareVnfAndModulesDelete of DeleteVcpeResCustService ") + + try { + List vnfList = execution.getVariable(Prefix+"relatedVnfIdList") + int vnfsDeletedCount = execution.getVariable(Prefix+"vnfsDeletedCount") + String vnfModelInfoString = "" + String vnfId = "" + if (vnfList.size() > 0 ) { + vnfId = vnfList.get(vnfsDeletedCount.intValue()) + } + + execution.setVariable("vnfId", vnfId) + msoLogger.debug("need to delete vnfId:" + vnfId) + + msoLogger.trace("Completed prepareVnfAndModulesDelete of DeleteVcpeResCustService ") + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected Error from method prepareVnfAndModulesDelete() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + // ******************************* + // Validate Vnf request Section -> increment count + // ******************************* + public void validateVnfDelete (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("Inside validateVnfDelete of DeleteVcpeResCustService ") + + try { + int vnfsDeletedCount = execution.getVariable(Prefix+"vnfsDeletedCount") + vnfsDeletedCount++ + + execution.setVariable(Prefix+"vnfsDeletedCount", vnfsDeletedCount) + + msoLogger.debug(" ***** Completed validateVnfDelete of DeleteVcpeResCustService ***** "+" vnf # "+vnfsDeletedCount) + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected Error from method validateVnfDelete() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + + // ***************************************** + // Prepare Completion request Section + // ***************************************** + public void postProcessResponse (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("Inside postProcessResponse of DeleteVcpeResCustService ") + + try { + String source = execution.getVariable("source") + String requestId = execution.getVariable("msoRequestId") + + String msoCompletionRequest = + """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1" + xmlns:ns="http://org.onap/so/request/types/v1"> + <request-info xmlns="http://org.onap/so/infra/vnf-request/v1"> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <action>DELETE</action> + <source>${MsoUtils.xmlEscape(source)}</source> + </request-info> + <aetgt:status-message>vCPE Res Cust Service Instance has been deleted successfully.</aetgt:status-message> + <aetgt:mso-bpel-name>BPMN Service Instance macro action: DELETE</aetgt:mso-bpel-name> + </aetgt:MsoCompletionRequest>""" + + // Format Response + String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest) + + msoLogger.debug(xmlMsoCompletionRequest) + execution.setVariable(Prefix+"Success", true) + execution.setVariable(Prefix+"CompleteMsoProcessRequest", xmlMsoCompletionRequest) + msoLogger.debug(" SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest) + } catch (BpmnError e) { + throw e; + + } catch (Exception ex) { + // try error in method block + String exceptionMessage = "Bpmn error encountered in DeleteServiceInstance flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage() + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage) + } + } + + public void prepareFalloutRequest(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("STARTED DeleteVcpeResCustService prepareFalloutRequest Process ") + + try { + WorkflowException wfex = execution.getVariable("WorkflowException") + msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString()) + String requestInfo = execution.getVariable(Prefix+"requestInfo") + msoLogger.debug(" Incoming Request Info: " + requestInfo) + + String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo) + + execution.setVariable(Prefix+"falloutRequest", falloutRequest) + } catch (Exception ex) { + msoLogger.debug("Error Occured in DeleteVcpeResCustService prepareFalloutRequest Process " + ex.getMessage()) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVcpeResCustService prepareFalloutRequest Process") + } + msoLogger.trace("COMPLETED DeleteVcpeResCustService prepareFalloutRequest Process ") + } + + + public void sendSyncError (DelegateExecution execution) { + def isDebugEnabled=execution.getVariable(DebugFlag) + msoLogger.trace("Inside sendSyncError() of DeleteVcpeResCustService ") + + try { + String errorMessage = "" + if (execution.getVariable("WorkflowException") instanceof WorkflowException) { + WorkflowException wfe = execution.getVariable("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>""" + + msoLogger.debug(buildworkflowException) + sendWorkflowResponse(execution, 500, buildworkflowException) + } catch (Exception ex) { + msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage()) + } + } + + public void processJavaException(DelegateExecution execution){ + def isDebugEnabled=execution.getVariable(DebugFlag) + execution.setVariable("prefix",Prefix) + try{ + msoLogger.debug("Caught a Java Exception") + msoLogger.debug("Started processJavaException Method") + msoLogger.debug("Variables List: " + execution.getVariables()) + execution.setVariable(Prefix+"unexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception") + }catch(BpmnError b){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, ""); + throw b + }catch(Exception e){ + msoLogger.debug("Caught Exception during processJavaException Method: " + e) + execution.setVariable(Prefix+"unexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated + exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method") + } + msoLogger.debug("Completed processJavaException Method") + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy new file mode 100644 index 0000000000..8a8aa2b2ad --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy @@ -0,0 +1,678 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoCreateAllottedResourceBRG.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDEbugLogEnabled + * @param - disableRollback + * @param - failExists - O + * @param - serviceInstanceId + * @param - globalCustomerId - O + * @param - subscriptionServiceType - O + * @param - parentServiceInstanceId + * @param - allottedReourceId - O + * @param - allottedResourceModelInfo + * @param - allottedResourceRole + * @param - allottedResourceType + * @param - brgWanMacAddress + * @param - vni + * @param - vgmuxBearerIP + * + * Outputs: + * @param - rollbackData (localRB->null) + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * @param - WorkflowException - O + * @param - allottedResourceId + * @param - allottedResourceName + * + */ +public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceBRG.class); + + String Prefix="DCARBRG_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessRequest") + + try { + execution.setVariable("prefix", Prefix) + + //Config Inputs + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + String sdncReplDelay = UrnPropertiesReader.getVariable("mso.workflow.sdnc.replication.delay",execution) + if (isBlank(sdncReplDelay)) { + msg = "mso.workflow.sdnc.replication.delay is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncReplDelay", sdncReplDelay) + msoLogger.debug("SDNC replication delay: " + sdncReplDelay) + + //Request Inputs + if (isBlank(execution.getVariable("serviceInstanceId"))){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("parentServiceInstanceId"))) { + msg = "Input parentServiceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceModelInfo"))) { + msg = "Input allottedResourceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("vni"))) { + msg = "Input vni is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("vgmuxBearerIP"))) { + msg = "Input vgmuxBearerIP is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("brgWanMacAddress"))) { + msg = "Input brgWanMacAddress is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceRole"))) { + msg = "Input allottedResourceRole is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceType"))) { + msg = "Input allottedResourceType is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + public void getAaiAR (DelegateExecution execution) { + + + msoLogger.trace("start getAaiAR") + + String arType = execution.getVariable("allottedResourceType") + String arRole = execution.getVariable("allottedResourceRole") + + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String orchStatus = arUtils.getAROrchStatus(execution) + + String errorMsg = "" + + if (orchStatus != null) // AR was found + { + if ("true".equals(execution.getVariable("failExists"))) + { + errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists" + } + else + { + if ("Active".equals(orchStatus)) + { + execution.setVariable("foundActiveAR", true) + } + else // blanks included + { + errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -" + orchStatus + } + } + } + if (!isBlank(errorMsg)) { + msoLogger.debug(errorMsg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg) + } + msoLogger.trace("end getAaiAR") + } + + public void createAaiAR(DelegateExecution execution) { + + + msoLogger.trace("start createAaiAR") + String msg = "" + + String allottedResourceId = execution.getVariable("allottedResourceId") + if (isBlank(allottedResourceId)) + { + allottedResourceId = UUID.randomUUID().toString() + execution.setVariable("allottedResourceId", allottedResourceId) + } + String arUrl = "" + try { + + //AAI PUT + AaiUtil aaiUriUtil = new AaiUtil(this) + String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + String siResourceLink= execution.getVariable("PSI_resourceLink") + + String siUri = "" + msoLogger.debug("PSI_resourceLink:" + siResourceLink) + + if(!isBlank(siResourceLink)) { + msoLogger.debug("Incoming PSI Resource Link is: " + siResourceLink) + String[] split = siResourceLink.split("/aai/") + siUri = "/aai/" + split[1] + } + else + { + msg = "Parent Service Link in AAI is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + arUrl = "${aaiEndpoint}${siUri}" + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8") + execution.setVariable("aaiARPath", arUrl) + msoLogger.debug("GET AllottedResource AAI URL is:\n" + arUrl) + + String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl) + + String arType = execution.getVariable("allottedResourceType") + String arRole = execution.getVariable("allottedResourceRole") + String CSI_resourceLink = execution.getVariable("CSI_resourceLink") + String arModelInfo = execution.getVariable("allottedResourceModelInfo") + String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid") + String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid") + String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid") + + if (modelInvariantId == null) { + modelInvariantId = "" + } + if (modelVersionId == null) { + modelVersionId = "" + } + if (modelCustomizationId == null) { + modelCustomizationId = "" + } + + String payload = + """<allotted-resource xmlns="${namespace}"> + <id>${MsoUtils.xmlEscape(allottedResourceId)}</id> + <description></description> + <type>${MsoUtils.xmlEscape(arType)}</type> + <role>${MsoUtils.xmlEscape(arRole)}</role> + <selflink></selflink> + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelVersionId)}</model-version-id> + <model-customization-id>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-id> + <orchestration-status>PendingCreate</orchestration-status> + <operation-status></operation-status> + <relationship-list> + <relationship> + <related-to>service-instance</related-to> + <related-link>${MsoUtils.xmlEscape(CSI_resourceLink)}</related-link> + </relationship> + </relationship-list> + </allotted-resource>""".trim() + + execution.setVariable("AaiARPayload", payload) + msoLogger.debug(" payload to create AllottedResource in AAI:" + "\n" + payload) + + APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload) + int responseCode = response.getStatusCode() + msoLogger.debug("AllottedResource AAI PUT responseCode:" + responseCode) + + String aaiResponse = response.getResponseBodyAsString() + msoLogger.debug("AllottedResource AAI PUT responseStr:" + aaiResponse) + + //200 OK 201 CREATED 202 ACCEPTED + if(responseCode == 200 || responseCode == 201 || responseCode == 202 ) + { + msoLogger.debug("AAI PUT AllottedResource received a Good Response") + } + else{ + msoLogger.debug("AAI Put AllottedResouce received a Bad Response Code: " + responseCode) + exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode) + throw new BpmnError("MSOWorkflowException") + } + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex) { + msg = "Exception in createAaiAR " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + //start rollback set up + RollbackData rollbackData = new RollbackData() + def disableRollback = execution.getVariable("disableRollback") + rollbackData.put(Prefix, "disableRollback", disableRollback.toString()) + rollbackData.put(Prefix, "rollbackAAI", "true") + rollbackData.put(Prefix, "allottedResourceId", allottedResourceId) + rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId")) + rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId")) + rollbackData.put(Prefix, "aaiARPath", arUrl) + execution.setVariable("rollbackData", rollbackData) + msoLogger.trace("end createAaiAR") + } + + public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) { + + + String msg = "" + msoLogger.trace("start buildSDNCRequest") + String sdncReq = null + + try { + + String allottedResourceId = execution.getVariable("allottedResourceId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String globalCustomerId = execution.getVariable("globalCustomerId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId") + String callbackUrl = execution.getVariable("sdncCallbackUrl") + String requestId = execution.getVariable("msoRequestId") + + String brgWanMacAddress = execution.getVariable("brgWanMacAddress") + String vni = execution.getVariable("vni") + String vgmuxBearerIP = execution.getVariable("vgmuxBearerIP") + + String arModelInfo = execution.getVariable("allottedResourceModelInfo") + String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid") + String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion") + String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid") + String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid") + String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName") + + if (modelInvariantId == null) { + modelInvariantId = "" + } + if (modelVersion == null) { + modelVersion = "" + } + if (modelUUId == null) { + modelUUId = "" + } + if (modelName == null) { + modelName = "" + } + if (modelCustomizationId == null) { + modelCustomizationId = "" + } + + sdncReq = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>CreateBRGInstance</request-action> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id></service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information></onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <allotted-resource-information> + <allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id> + <allotted-resource-type>brg</allotted-resource-type> + <parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </allotted-resource-information> + <brg-request-input> + <brg-wan-mac-address>${MsoUtils.xmlEscape(brgWanMacAddress)}</brg-wan-mac-address> + <vni>${MsoUtils.xmlEscape(vni)}</vni> + <vgmux-bearer-ip>${MsoUtils.xmlEscape(vgmuxBearerIP)}</vgmux-bearer-ip> + </brg-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest:\n" + sdncReq) + sdncReq = utils.formatXml(sdncReq) + + } catch(Exception ex) { + msg = "Exception in buildSDNCRequest. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end buildSDNCRequest") + return sdncReq + } + + public void preProcessSDNCAssign(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCAssign") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId) + execution.setVariable("sdncAssignRequest", sdncAssignReq) + msoLogger.debug("sdncAssignRequest: " + sdncAssignReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncAssignRollbackReq:\n" + sdncAssignRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCAssign. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCAssign") + } + + public void preProcessSDNCCreate(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCCreate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId) + execution.setVariable("sdncCreateRequest", sdncCreateReq) + msoLogger.debug("sdncCreateReq: " + sdncCreateReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncCreateRollbackReq:\n" + sdncCreateRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCCreate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCCreate") + } + + public void preProcessSDNCActivate(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCActivate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId) + execution.setVariable("sdncActivateRequest", sdncActivateReq) + msoLogger.debug("sdncActivateReq: " + sdncActivateReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncActivateRollbackReq:\n" + sdncActivateRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCActivate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCActivate") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + + msoLogger.trace("ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + if (!"get".equals(method)) + { + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "rollback" + "SDNC" + method, "true") + execution.setVariable("rollbackData", rollbackData) + } + + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("End ValidateSDNCResp Process") + } + + public void preProcessSDNCGet(DelegateExecution execution){ + + msoLogger.trace("start preProcessSDNCGet") + try{ + + def callbackUrl = execution.getVariable("sdncCallbackUrl") + // serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI + // or from "object-path" in SDNC response for assign when AR does not exist in AA + + String serviceOperation = "" + + if (execution.getVariable("foundActiveAR")) { + def aaiQueryResponse = execution.getVariable("aaiARGetResponse") + serviceOperation = utils.getNodeText(aaiQueryResponse, "selflink") + msoLogger.debug("AR service operation/aaiARSelfLink: " + serviceOperation) + } + else + { + String response = execution.getVariable("sdncAssignResponse") + String data = utils.getNodeXml(response, "response-data") + msoLogger.debug("Assign responseData: " + data) + serviceOperation = utils.getNodeText(data, "object-path") + msoLogger.debug("AR service operation:" + serviceOperation) + } + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String sdncRequestId = UUID.randomUUID().toString() + + //neeed the same url as used by vfmodules + String SDNCGetRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + execution.setVariable("sdncGetRequest", SDNCGetRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage()) + } + msoLogger.trace("end preProcessSDNCGet") + } + + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + + msoLogger.trace("start updateAaiAROrchStatus") + String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public void generateOutputs(DelegateExecution execution) + { + + msoLogger.trace("start generateOutputs") + try { + String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped + msoLogger.debug("resp:" + sdncGetResponse) + String arData = utils.getNodeXml(sdncGetResponse, "brg-topology") + arData = utils.removeXmlNamespaces(arData) + + String brga = utils.getNodeXml(arData, "brg-assignments") + String ari = utils.getNodeXml(arData, "allotted-resource-identifiers") + execution.setVariable("allotedResourceName", utils.getNodeText(ari, "allotted-resource-name")) + } catch (BpmnError e) { + msoLogger.debug("BPMN Error in generateOutputs ") + } catch(Exception ex) { + String msg = "Exception in generateOutputs " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end generateOutputs") + + } + + public void preProcessRollback (DelegateExecution execution) { + + msoLogger.trace("start preProcessRollback") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end preProcessRollback") + } + + public void postProcessRollback (DelegateExecution execution) { + + msoLogger.trace("start postProcessRollback") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end postProcessRollback") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy new file mode 100644 index 0000000000..4d4f11c3e5 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy @@ -0,0 +1,279 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>CreateAllottedResourceBRGRollback.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDebugLogEnabled + * @param - disableRollback - O + * @param - rollbackData + * + * Outputs: + * @param - rollbackError + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * + */ +public class DoCreateAllottedResourceBRGRollback extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceBRGRollback.class); + + String Prefix="DCARBRGRB_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void preProcessRequest (DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessRequest") + execution.setVariable("prefix", Prefix) + String rbType = "DCARBRG_" + try { + + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + if (rollbackData.hasType(rbType)) { + + execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId")) + execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId")) + execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId")) + + + def rollbackAAI = rollbackData.get(rbType, "rollbackAAI") + if ("true".equals(rollbackAAI)) + { + execution.setVariable("rollbackAAI",true) + execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath")) + + } + def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign") + if ("true".equals(rollbackSDNC)) + { + execution.setVariable("rollbackSDNC", true) + execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate")) + execution.setVariable("deleteSdnc", rollbackData.get(rbType, "rollbackSDNCcreate")) + execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign")) + + msoLogger.debug("sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") ) + msoLogger.debug("sdncDelete:\n" + execution.getVariable("deleteSdnc")) + msoLogger.debug("sdncUnassign:\n" + execution.getVariable("unassignSdnc")) + + execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq")) + execution.setVariable("sdncDeleteRequest", rollbackData.get(rbType, "sdncCreateRollbackReq")) + execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq")) + } + + if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true) + { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + // aaiARPath set during query (existing AR) + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + + String msg = null; + msoLogger.trace("start updateAaiAROrchStatus") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String aaiARPath = execution.getVariable("aaiARPath") + msoLogger.debug(" aaiARPath:" + aaiARPath) + String ar = null; //need this for getting resourceVersion for delete + if (!isBlank(aaiARPath)) + { + ar = arUtils.getARbyLink(execution, aaiARPath, "") + } + if (isBlank(ar)) + { + msg = "AR not found in AAI at:" + aaiARPath + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + + msoLogger.trace("start ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + }else{ + + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + if ("404".contentEquals(e.getErrorCode())) + { + msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback" + msoLogger.debug(msg) + } + else { + throw e; + } + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end ValidateSDNCResp Process") + } + + public void deleteAaiAR(DelegateExecution execution){ + + try{ + msoLogger.trace("start deleteAaiAR") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = null //need to get resource-version + String arLink = execution.getVariable("aaiARPath") + if (!isBlank(arLink)) + { + ar = arUtils.getARbyLink(execution, arLink, "") + } + arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8")) + } catch (BpmnError e) { + throw e; + }catch(Exception ex){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage()) + } + msoLogger.trace("end deleteAaiAR") + } + + public void postProcessRequest(DelegateExecution execution) { + + msoLogger.trace("start postProcessRequest") + String msg = "" + try { + execution.setVariable("rollbackData", null) + boolean skipRollback = execution.getVariable("skipRollback") + if (skipRollback != true) + { + execution.setVariable("rolledBack", true) + msoLogger.debug("rolledBack") + } + msoLogger.trace("end postProcessRequest") + + } catch (BpmnError e) { + msg = "Bpmn Exception in postProcessRequest. " + msoLogger.debug(msg) + } catch (Exception ex) { + msg = "Exception in postProcessRequest. " + ex.getMessage() + msoLogger.debug(msg) + } + + } + + public void processRollbackException(DelegateExecution execution){ + + msoLogger.trace("start processRollbackException") + try{ + msoLogger.debug("Caught an Exception in DoCreateAllottedResourceRollback") + execution.setVariable("rollbackData", null) + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback") + execution.setVariable("WorkflowException", null) + + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during processRollbackExceptions Method: ") + }catch(Exception e){ + msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage()) + } + + msoLogger.trace("end processRollbackException") + } + + public void processRollbackJavaException(DelegateExecution execution){ + + msoLogger.trace("start processRollbackJavaException") + try{ + execution.setVariable("rollbackData", null) + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback") + msoLogger.debug("Caught Exception in processRollbackJavaException") + + }catch(Exception e){ + msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage()) + } + msoLogger.trace("end processRollbackJavaException") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy new file mode 100644 index 0000000000..5f9b4b8ecd --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy @@ -0,0 +1,674 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.core.RollbackData +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoCreateAllottedResourceTXC.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDEbugLogEnabled + * @param - disableRollback + * @param - failExists - O + * @param - serviceInstanceId + * @param - globalCustomerId - O + * @param - subscriptionServiceType - O + * @param - parentServiceInstanceId + * @param - allottedReourceId - O + * @param - allottedResourceModelInfo + * @param - allottedResourceRole + * @param - allottedResourceType + * @param - brgWanMacAddress + * + * Outputs: + * @param - rollbackData (localRB->null) + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * @param - WorkflowException - O + * @param - allottedResourceId + * @param - allottedResourceName + * @param - vni + * @param - vgmuxBearerIP + * @param - vgmuxLanIP + * + */ +public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceTXC.class); + + String Prefix="DCARTXC_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + JsonUtils jsonUtil = new JsonUtils() + + public void preProcessRequest (DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessRequest") + + try { + String msoRequestId = execution.getVariable("msoRequestId") + msoLogger.debug(" msoRequestId = " + msoRequestId) + + execution.setVariable("prefix", Prefix) + + //Config Inputs + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + String sdncReplDelay = UrnPropertiesReader.getVariable("mso.workflow.sdnc.replication.delay",execution) + if (isBlank(sdncReplDelay)) { + msg = "mso.workflow.sdnc.replication.delay is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncReplDelay", sdncReplDelay) + msoLogger.debug("SDNC replication delay: " + sdncReplDelay) + + //Request Inputs + if (isBlank(execution.getVariable("serviceInstanceId"))){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("parentServiceInstanceId"))) { + msg = "Input parentServiceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceModelInfo"))) { + msg = "Input allottedResourceModelInfo is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("brgWanMacAddress"))) { + msg = "Input brgWanMacAddress is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceRole"))) { + msg = "Input allottedResourceRole is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceType"))) { + msg = "Input allottedResourceType is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + public void getAaiAR (DelegateExecution execution) { + + + msoLogger.trace("start getAaiAR") + + String arType = execution.getVariable("allottedResourceType") + String arRole = execution.getVariable("allottedResourceRole") + + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String orchStatus = arUtils.getAROrchStatus(execution) + + String errorMsg = "" + + if (orchStatus != null) // AR was found + { + if ("true".equals(execution.getVariable("failExists"))) + { + errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists" + } + else + { + if ("Active".equals(orchStatus)) + { + execution.setVariable("foundActiveAR", true) + } + else // blanks included + { + errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -" + orchStatus + } + } + } + if (!isBlank(errorMsg)) { + msoLogger.debug(errorMsg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg) + } + msoLogger.trace("end getAaiAR") + } + + public void createAaiAR(DelegateExecution execution) { + + + msoLogger.trace("start createAaiAR") + String msg = "" + + String allottedResourceId = execution.getVariable("allottedResourceId") + if (isBlank(allottedResourceId)) + { + allottedResourceId = UUID.randomUUID().toString() + execution.setVariable("allottedResourceId", allottedResourceId) + } + String arUrl = "" + try { + + //AAI PUT + AaiUtil aaiUriUtil = new AaiUtil(this) + String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + String siResourceLink= execution.getVariable("PSI_resourceLink") + + String siUri = "" + msoLogger.debug("PSI_resourceLink:" + siResourceLink) + + if(!isBlank(siResourceLink)) { + msoLogger.debug("Incoming PSI Resource Link is: " + siResourceLink) + String[] split = siResourceLink.split("/aai/") + siUri = "/aai/" + split[1] + } + else + { + msg = "Parent Service Link in AAI is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + arUrl = "${aaiEndpoint}${siUri}" + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8") + execution.setVariable("aaiARPath", arUrl) + msoLogger.debug("GET AllottedResource AAI URL is:\n" + arUrl) + + String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl) + + String arType = execution.getVariable("allottedResourceType") + String arRole = execution.getVariable("allottedResourceRole") + String CSI_resourceLink = execution.getVariable("CSI_resourceLink") + String arModelInfo = execution.getVariable("allottedResourceModelInfo") + msoLogger.debug("arModelInfo is:\n" + arModelInfo) + String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid") + String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid") + String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid") + + if (modelInvariantId == null) { + modelInvariantId = "" + } + if (modelVersionId == null) { + modelVersionId = "" + } + if (modelCustomizationId == null) { + modelCustomizationId = "" + } + + String payload = + """<allotted-resource xmlns="${namespace}"> + <id>${MsoUtils.xmlEscape(allottedResourceId)}</id> + <description></description> + <type>${MsoUtils.xmlEscape(arType)}</type> + <role>${MsoUtils.xmlEscape(arRole)}</role> + <selflink></selflink> + <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-id> + <model-version-id>${MsoUtils.xmlEscape(modelVersionId)}</model-version-id> + <model-customization-id>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-id> + <orchestration-status>PendingCreate</orchestration-status> + <operation-status></operation-status> + <relationship-list> + <relationship> + <related-to>service-instance</related-to> + <related-link>${MsoUtils.xmlEscape(CSI_resourceLink)}</related-link> + </relationship> + </relationship-list> + </allotted-resource>""".trim() + + execution.setVariable("AaiARPayload", payload) + msoLogger.debug(" payload to create AllottedResource in AAI:" + "\n" + payload) + + APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload) + int responseCode = response.getStatusCode() + msoLogger.debug("AllottedResource AAI PUT responseCode:" + responseCode) + + String aaiResponse = response.getResponseBodyAsString() + msoLogger.debug("AllottedResource AAI PUT responseStr:" + aaiResponse) + + //200 OK 201 CREATED 202 ACCEPTED + if(responseCode == 200 || responseCode == 201 || responseCode == 202 ) + { + msoLogger.debug("AAI PUT AllottedResource received a Good Response") + } + else{ + msoLogger.debug("AAI Put AllottedResouce received a Bad Response Code: " + responseCode) + exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode) + throw new BpmnError("MSOWorkflowException") + } + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex) { + msg = "Exception in createAaiAR " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + //start rollback set up + RollbackData rollbackData = new RollbackData() + def disableRollback = execution.getVariable("disableRollback") + rollbackData.put(Prefix, "disableRollback", disableRollback.toString()) + rollbackData.put(Prefix, "rollbackAAI", "true") + rollbackData.put(Prefix, "allottedResourceId", allottedResourceId) + rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId")) + rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId")) + rollbackData.put(Prefix, "aaiARPath", arUrl) + execution.setVariable("rollbackData", rollbackData) + msoLogger.trace("end createAaiAR") + } + + public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) { + + + String msg = "" + msoLogger.trace("start buildSDNCRequest") + String sdncReq = null + + try { + + String allottedResourceId = execution.getVariable("allottedResourceId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String globalCustomerId = execution.getVariable("globalCustomerId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId") + String serviceChainServiceInstanceId = execution.getVariable("serviceChainServiceInstanceId") + String callbackUrl = execution.getVariable("sdncCallbackUrl") + String requestId = execution.getVariable("msoRequestId") + + String brgWanMacAddress = execution.getVariable("brgWanMacAddress") + + String arModelInfo = execution.getVariable("allottedResourceModelInfo") + String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid") + String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion") + String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid") + String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid") + String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName") + + if (modelInvariantId == null) { + modelInvariantId = "" + } + if (modelVersion == null) { + modelVersion = "" + } + if (modelUUId == null) { + modelUUId = "" + } + if (modelName == null) { + modelName = "" + } + if (modelCustomizationId == null) { + modelCustomizationId = "" + } + + sdncReq = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>CreateTunnelXConnInstance</request-action> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id></service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information></onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <allotted-resource-information> + <allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id> + <allotted-resource-type>tunnelxconn</allotted-resource-type> + <parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </allotted-resource-information> + <tunnelxconn-request-input> + <brg-wan-mac-address>${MsoUtils.xmlEscape(brgWanMacAddress)}</brg-wan-mac-address> + </tunnelxconn-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest:\n" + sdncReq) + sdncReq = utils.formatXml(sdncReq) + + } catch(Exception ex) { + msg = "Exception in buildSDNCRequest. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end buildSDNCRequest") + return sdncReq + } + + public void preProcessSDNCAssign(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCAssign") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId) + execution.setVariable("sdncAssignRequest", sdncAssignReq) + msoLogger.debug("sdncAssignRequest: " + sdncAssignReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncAssignRollbackReq:\n" + sdncAssignRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCAssign. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.debug("end preProcessSDNCAssign") + } + + public void preProcessSDNCCreate(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCCreate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId) + execution.setVariable("sdncCreateRequest", sdncCreateReq) + msoLogger.debug("sdncCreateReq: " + sdncCreateReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncCreateRollbackReq:\n" + sdncCreateRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCCreate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCCreate") + } + + public void preProcessSDNCActivate(DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessSDNCActivate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId) + execution.setVariable("sdncActivateRequest", sdncActivateReq) + msoLogger.debug("sdncActivateReq: " + sdncActivateReq) + def sdncRequestId2 = UUID.randomUUID().toString() + String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<") + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq) + execution.setVariable("rollbackData", rollbackData) + + msoLogger.debug("sdncActivateRollbackReq:\n" + sdncActivateRollbackReq) + msoLogger.debug("rollbackData:\n" + rollbackData.toString()) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCActivate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCActivate") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + + msoLogger.trace("start ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + if (!"get".equals(method)) + { + def rollbackData = execution.getVariable("rollbackData") + rollbackData.put(Prefix, "rollback" + "SDNC" + method, "true") + execution.setVariable("rollbackData", rollbackData) + } + + }else{ + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end ValidateSDNCResp Process") + } + + public void preProcessSDNCGet(DelegateExecution execution){ + + msoLogger.trace("start preProcessSDNCGet") + try{ + + def callbackUrl = execution.getVariable("sdncCallbackUrl") + // serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI + // or from "object-path" in SDNC response for assign when AR does not exist in AA + + String serviceOperation = "" + + if (execution.getVariable("foundActiveAR")) { + def aaiQueryResponse = execution.getVariable("aaiARGetResponse") + serviceOperation = utils.getNodeText(aaiQueryResponse, "selflink") + msoLogger.debug("AR service operation/aaiARSelfLink: " + serviceOperation) + } + else + { + String response = execution.getVariable("sdncAssignResponse") + String data = utils.getNodeXml(response, "response-data") + msoLogger.debug("Assign responseData: " + data) + serviceOperation = utils.getNodeText(data, "object-path") + msoLogger.debug("AR service operation:" + serviceOperation) + } + + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String sdncRequestId = UUID.randomUUID().toString() + + //neeed the same url as used by vfmodules + String SDNCGetRequest = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>query</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + execution.setVariable("sdncGetRequest", SDNCGetRequest) + + }catch(Exception e){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage()) + } + msoLogger.trace("end preProcessSDNCGet") + } + + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + + msoLogger.trace("start updateAaiAROrchStatus") + String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public void generateOutputs(DelegateExecution execution) + { + + msoLogger.trace("start generateOutputs") + try { + String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped + msoLogger.debug("resp:" + sdncGetResponse) + String arData = utils.getNodeXml(sdncGetResponse, "tunnelxconn-topology") + arData = utils.removeXmlNamespaces(arData) + + String txca = utils.getNodeXml(arData, "tunnelxconn-assignments") + execution.setVariable("vni", utils.getNodeText(txca, "vni")) + execution.setVariable("vgmuxBearerIP", utils.getNodeText(txca, "vgmux-bearer-ip")) + execution.setVariable("vgmuxLanIP", utils.getNodeText(txca, "vgmux-lan-ip")) + + String ari = utils.getNodeXml(arData, "allotted-resource-identifiers") + execution.setVariable("allotedResourceName", utils.getNodeText(ari, "allotted-resource-name")) + } catch (BpmnError e) { + msoLogger.debug("BPMN Error in generateOutputs ") + } catch(Exception ex) { + String msg = "Exception in generateOutputs " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end generateOutputs") + + } + + public void preProcessRollback (DelegateExecution execution) { + + msoLogger.trace("start preProcessRollback") + try { + + Object workflowException = execution.getVariable("WorkflowException"); + + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage()) + execution.setVariable("prevWorkflowException", workflowException); + //execution.setVariable("WorkflowException", null); + } + } catch (BpmnError e) { + msoLogger.debug("BPMN Error during preProcessRollback") + } catch(Exception ex) { + String msg = "Exception in preProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end preProcessRollback") + } + + public void postProcessRollback (DelegateExecution execution) { + + msoLogger.trace("start postProcessRollback") + String msg = "" + try { + Object workflowException = execution.getVariable("prevWorkflowException"); + if (workflowException instanceof WorkflowException) { + msoLogger.debug("Setting prevException to WorkflowException: ") + execution.setVariable("WorkflowException", workflowException); + } + execution.setVariable("rollbackData", null) + } catch (BpmnError b) { + msoLogger.debug("BPMN Error during postProcessRollback") + throw b; + } catch(Exception ex) { + msg = "Exception in postProcessRollback. " + ex.getMessage() + msoLogger.debug(msg) + } + msoLogger.trace("end postProcessRollback") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy new file mode 100644 index 0000000000..24b919524f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy @@ -0,0 +1,278 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>CreateAllottedResourceTXCRollback.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDebugLogEnabled + * @param - disableRollback - O + * @param - rollbackData + * + * Outputs: + * @param - rollbackError + * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true) + * + */ +public class DoCreateAllottedResourceTXCRollback extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceTXCRollback.class); + + String Prefix="DCARTXCRB_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void preProcessRequest (DelegateExecution execution) { + + + String msg = "" + msoLogger.trace("start preProcessRequest") + execution.setVariable("prefix", Prefix) + String rbType = "DCARTXC_" + try { + + def rollbackData = execution.getVariable("rollbackData") + msoLogger.debug("RollbackData:" + rollbackData) + + if (rollbackData != null) { + if (rollbackData.hasType(rbType)) { + + execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId")) + execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId")) + execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId")) + + + def rollbackAAI = rollbackData.get(rbType, "rollbackAAI") + if ("true".equals(rollbackAAI)) + { + execution.setVariable("rollbackAAI",true) + execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath")) + + } + def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign") + if ("true".equals(rollbackSDNC)) + { + execution.setVariable("rollbackSDNC", true) + execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate")) + execution.setVariable("deleteSdnc", rollbackData.get(rbType, "rollbackSDNCcreate")) + execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign")) + + msoLogger.debug("sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") ) + msoLogger.debug("sdncDelete:\n" + execution.getVariable("deleteSdnc")) + msoLogger.debug("sdncUnassign:\n" + execution.getVariable("unassignSdnc")) + + execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq")) + execution.setVariable("sdncDeleteRequest", rollbackData.get(rbType, "sdncCreateRollbackReq")) + execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq")) + } + + if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true) + { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + } + else { + execution.setVariable("skipRollback", true) + } + if (execution.getVariable("disableRollback").equals("true" )) + { + execution.setVariable("skipRollback", true) + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + // aaiARPath set during query (existing AR) + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + + String msg = null; + msoLogger.trace("start updateAaiAROrchStatus") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String aaiARPath = execution.getVariable("aaiARPath") + msoLogger.debug(" aaiARPath:" + aaiARPath) + String ar = null; //need this for getting resourceVersion for delete + if (!isBlank(aaiARPath)) + { + ar = arUtils.getARbyLink(execution, aaiARPath, "") + } + if (isBlank(ar)) + { + msg = "AR not found in AAI at:" + aaiARPath + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + + msoLogger.trace("start ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + }else{ + + msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.") + throw new BpmnError("MSOWorkflowException") + } + } catch (BpmnError e) { + if ("404".contentEquals(e.getErrorCode())) + { + msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback" + msoLogger.debug(msg) + } + else { + throw e; + } + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("Exit ValidateSDNCResp Process") + } + + public void deleteAaiAR(DelegateExecution execution){ + + try{ + msoLogger.trace("start deleteAaiAR") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = null //need to get resource-version + String arLink = execution.getVariable("aaiARPath") + if (!isBlank(arLink)) + { + ar = arUtils.getARbyLink(execution, arLink, "") + } + arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8")) + } catch (BpmnError e) { + throw e; + }catch(Exception ex){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage()) + } + msoLogger.trace("end deleteAaiAR") + } + + public void postProcessRequest(DelegateExecution execution) { + + msoLogger.trace("start postProcessRequest") + String msg = "" + try { + execution.setVariable("rollbackData", null) + boolean skipRollback = execution.getVariable("skipRollback") + if (skipRollback != true) + { + execution.setVariable("rolledBack", true) + msoLogger.debug("rolledBack") + } + msoLogger.trace("end postProcessRequest") + + } catch (BpmnError e) { + msoLogger.debug(msg) + } catch (Exception ex) { + msg = "Exception in postProcessRequest. " + ex.getMessage() + msoLogger.debug(msg) + } + + } + + public void processRollbackException(DelegateExecution execution){ + + msoLogger.trace("start processRollbackException") + try{ + msoLogger.debug("Caught an Exception in DoCreateAllottedResourceRollback") + execution.setVariable("rollbackData", null) + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback") + execution.setVariable("WorkflowException", null) + + }catch(BpmnError b){ + msoLogger.debug("BPMN Error during processRollbackExceptions Method: ") + }catch(Exception e){ + msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage()) + } + + msoLogger.trace("end processRollbackException") + } + + public void processRollbackJavaException(DelegateExecution execution){ + + msoLogger.trace("start processRollbackJavaException") + try{ + execution.setVariable("rollbackData", null) + execution.setVariable("rolledBack", false) + execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback") + msoLogger.debug("Caught Exception in processRollbackJavaException") + + }catch(Exception e){ + msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage()) + } + msoLogger.trace("end processRollbackJavaException") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy new file mode 100644 index 0000000000..a5125fea73 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy @@ -0,0 +1,368 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* +import org.onap.so.bpmn.core.UrnPropertiesReader; + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoDeleteAllottedResourceBRG.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDebugLogEnabled + * @param - disableRollback - O ignored + * @param - failNotfound - O + * @param - serviceInstanceId + * @param - globalCustomerId - O + * @param - subscriptionServiceType - O + * @param - parentServiceInstanceId + * @param - allottedResourceId + * + * Outputs: + * @param - rollbackData - N/A + * @param - rolledBack - true if no deletions performed + * @param - WorkflowException - O + * @param - wasDeleted - O (ie not silentSuccess) + * + */ +public class DoDeleteAllottedResourceBRG extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteAllottedResourceBRG.class); + + String Prefix="DDARBRG_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void preProcessRequest (DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessRequest") + + try { + execution.setVariable("prefix", Prefix) + + //Config Inputs + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + //Request Inputs + if (isBlank(execution.getVariable("serviceInstanceId"))){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceId"))){ + msg = "Input allottedResourceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + public void getAaiAR (DelegateExecution execution) { + + msoLogger.trace("start getAaiAR end") + + String allottedResourceId = execution.getVariable("allottedResourceId") + + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = arUtils.getARbyId(execution, allottedResourceId) + + String errorMsg = "" + if (isBlank(ar)) // AR was !found + { + errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId + } + else + { + String aaiARPath = execution.getVariable("aaiARPath") + String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath) + execution.setVariable("parentServiceInstanceId", parentServiceInstanceId) + } + if (!isBlank(errorMsg)) { + msoLogger.debug(errorMsg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg) + } + msoLogger.trace("end getAaiAR") + + } + + // aaiARPath set during query (existing AR) + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + msoLogger.trace("start updateAaiAROrchStatus") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) { + + String msg = "" + msoLogger.trace("start buildSDNCRequest") + String sdncReq = null + + try { + + String allottedResourceId = execution.getVariable("allottedResourceId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId") + String globalCustomerId = execution.getVariable("globalCustomerId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + String callbackUrl = execution.getVariable("sdncCallbackUrl") + String requestId = execution.getVariable("msoRequestId") + + String serviceChainServiceInstanceId = "" + String sourceNetworkId = "" + String sourceNetworkRole = "" + String allottedResourceRole = "" + + String arModelInfo = "" + String modelInvariantId = "" + String modelVersion = "" + String modelUUId = "" + String modelCustomizationId = "" + String modelName = "" + + + sdncReq = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteBRGInstance</request-action> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id></service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information></onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <allotted-resource-information> + <allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id> + <allotted-resource-type>brg</allotted-resource-type> + <parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </allotted-resource-information> + <brg-request-input> + </brg-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest:\n" + sdncReq) + sdncReq = utils.formatXml(sdncReq) + + } catch(Exception ex) { + msg = "Exception in buildSDNCRequest. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end buildSDNCRequest") + return sdncReq + } + + public void preProcessSDNCUnassign(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCUnassign") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId) + execution.setVariable("sdncUnassignRequest", sdncUnassignReq) + msoLogger.debug("sdncUnassignRequest: " + sdncUnassignReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCUnassign") + } + + public void preProcessSDNCDelete(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCDelete") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId) + execution.setVariable("sdncDeleteRequest", sdncDeleteReq) + msoLogger.debug("sdncDeleteReq: " + sdncDeleteReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCDelete") + } + + public void preProcessSDNCDeactivate(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCDeactivate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId) + execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq) + msoLogger.debug("sdncDeactivateReq: " + sdncDeactivateReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCDeactivate") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + msoLogger.trace("start ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + }else{ + String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode') + msoLogger.debug(method + " AllottedResource received error response from SDNC. ResponseCode:" + sdncRespCode) + if (sdncRespCode.equals("404") && "deactivate".equals(method)) + { + execution.setVariable("ARNotFoundInSDNC", true) + if ("true".equals(execution.getVariable("failNotFound"))) + { + msg = "Allotted Resource Not found in SDNC" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + else + { + execution.setVariable("wasDeleted", false) + } + } + else + { + throw new BpmnError("MSOWorkflowException") + } + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end ValidateSDNCResp Process") + } + + public void deleteAaiAR(DelegateExecution execution){ + msoLogger.trace("start deleteAaiAR") + + try{ + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = null //need to get resource-version again + String arLink = execution.getVariable("aaiARPath") + if (!isBlank(arLink)) + { + ar = arUtils.getARbyLink(execution, arLink, "") + } + arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8")) + } catch (BpmnError e) { + throw e; + }catch(Exception ex){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest." + ex, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:" + ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage()) + } + msoLogger.trace("end deleteAaiAR") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy new file mode 100644 index 0000000000..7ce606e685 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy @@ -0,0 +1,369 @@ +/* + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vcpe.scripts; + +import org.onap.so.bpmn.common.scripts.*; +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.MsoUtils +import org.onap.so.bpmn.common.scripts.AaiUtil +import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils +import org.onap.so.rest.APIResponse + +import java.util.UUID; +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.apache.commons.lang3.* +import org.springframework.web.util.UriUtils; +import static org.apache.commons.lang3.StringUtils.* +import org.onap.so.bpmn.core.UrnPropertiesReader; + +import org.onap.so.logger.MessageEnum +import org.onap.so.logger.MsoLogger + +/** + * This groovy class supports the <class>DoDeleteAllottedResourceTXC.bpmn</class> process. + * + * @author + * + * Inputs: + * @param - msoRequestId + * @param - isDebugLogEnabled + * @param - disableRollback - O ignored + * @param - failNotfound - O + * @param - serviceInstanceId + * @param - globalCustomerId - O + * @param - subscriptionServiceType - O + * @param - parentServiceInstanceId + * @param - allottedResourceId + * + * Outputs: + * @param - rollbackData - N/A + * @param - rolledBack - true if no deletions performed + * @param - WorkflowException - O + * @param - wasDeleted - O (ie not silentSuccess) + * + */ +public class DoDeleteAllottedResourceTXC extends AbstractServiceTaskProcessor{ + private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteAllottedResourceTXC.class); + + String Prefix="DDARTXC_" + ExceptionUtil exceptionUtil = new ExceptionUtil() + + public void preProcessRequest (DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessRequest") + + try { + execution.setVariable("prefix", Prefix) + + //Config Inputs + String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution) + if (isBlank(sdncCallbackUrl)) { + msg = "mso.workflow.sdncadapter.callback is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + execution.setVariable("sdncCallbackUrl", sdncCallbackUrl) + msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl) + + //Request Inputs + if (isBlank(execution.getVariable("serviceInstanceId"))){ + msg = "Input serviceInstanceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + if (isBlank(execution.getVariable("allottedResourceId"))){ + msg = "Input allottedResourceId is null" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + }catch(BpmnError b){ + msoLogger.debug("Rethrowing MSOWorkflowException") + throw b + } catch (Exception ex){ + msg = "Exception in preProcessRequest " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessRequest") + } + + public void getAaiAR (DelegateExecution execution) { + + msoLogger.trace("start getAaiAR") + + String allottedResourceId = execution.getVariable("allottedResourceId") + + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = arUtils.getARbyId(execution, allottedResourceId) + + String errorMsg = "" + if (isBlank(ar)) // AR was !found + { + errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId + } + else + { + String aaiARPath = execution.getVariable("aaiARPath") + String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath) + execution.setVariable("parentServiceInstanceId", parentServiceInstanceId) + } + if (!isBlank(errorMsg)) { + msoLogger.debug(errorMsg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg) + } + msoLogger.trace("end getAaiAR") + + } + + // aaiARPath set during query (existing AR) + public void updateAaiAROrchStatus(DelegateExecution execution, String status){ + msoLogger.trace("start updateAaiAROrchStatus") + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) + String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath) + msoLogger.trace("end updateAaiAROrchStatus") + } + + public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) { + + String msg = "" + msoLogger.trace("start buildSDNCRequest") + String sdncReq = null + + try { + + String allottedResourceId = execution.getVariable("allottedResourceId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId") + String globalCustomerId = execution.getVariable("globalCustomerId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + String callbackUrl = execution.getVariable("sdncCallbackUrl") + String requestId = execution.getVariable("msoRequestId") + + String serviceChainServiceInstanceId = "" + String sourceNetworkId = "" + String sourceNetworkRole = "" + String allottedResourceRole = "" + + String arModelInfo = "" + String modelInvariantId = "" + String modelVersion = "" + String modelUUId = "" + String modelCustomizationId = "" + String modelName = "" + + + sdncReq = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1" + xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1" + xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${MsoUtils.xmlEscape(requestId)}</request-id> + <request-action>DeleteTunnelXConnInstance</request-action> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + </request-information> + <service-information> + <service-id></service-id> + <subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type> + <onap-model-information></onap-model-information> + <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id> + <subscriber-name/> + <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id> + </service-information> + <allotted-resource-information> + <allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id> + <allotted-resource-type>tunnelxconn</allotted-resource-type> + <parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id> + <onap-model-information> + <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid> + <model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid> + <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid> + <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version> + <model-name>${MsoUtils.xmlEscape(modelName)}</model-name> + </onap-model-information> + </allotted-resource-information> + <tunnelxconn-request-input> + </tunnelxconn-request-input> + </sdncadapterworkflow:SDNCRequestData> + </sdncadapterworkflow:SDNCAdapterWorkflowRequest>""" + + msoLogger.debug("sdncRequest:\n" + sdncReq) + sdncReq = utils.formatXml(sdncReq) + + } catch(Exception ex) { + msg = "Exception in buildSDNCRequest. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end buildSDNCRequest") + return sdncReq + } + + public void preProcessSDNCUnassign(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCUnassign") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId) + execution.setVariable("sdncUnassignRequest", sdncUnassignReq) + msoLogger.debug("sdncUnassignRequest: " + sdncUnassignReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCUnassign") + } + + public void preProcessSDNCDelete(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCDelete") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId) + execution.setVariable("sdncDeleteRequest", sdncDeleteReq) + msoLogger.debug("sdncDeleteReq: " + sdncDeleteReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCDelete") + } + + public void preProcessSDNCDeactivate(DelegateExecution execution) { + + String msg = "" + msoLogger.trace("start preProcessSDNCDeactivate") + + try { + String sdncRequestId = UUID.randomUUID().toString() + String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId) + execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq) + msoLogger.debug("sdncDeactivateReq: " + sdncDeactivateReq) + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end preProcessSDNCDeactivate") + } + + public void validateSDNCResp(DelegateExecution execution, String response, String method){ + + msoLogger.trace("start ValidateSDNCResponse Process") + String msg = "" + + try { + WorkflowException workflowException = execution.getVariable("WorkflowException") + msoLogger.debug("workflowException: " + workflowException) + + boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator") + msoLogger.debug("SDNCResponse: " + response) + + SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this) + sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator) + + if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){ + msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call. Response is: \n" + response) + + }else{ + String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode') + msoLogger.debug(method + " AllottedResource received error response from SDNC. ResponseCode:" + sdncRespCode) + if (sdncRespCode.equals("404") && "deactivate".equals(method)) + { + execution.setVariable("ARNotFoundInSDNC", true) + if ("true".equals(execution.getVariable("failNotFound"))) + { + msg = "Allotted Resource Not found in SDNC" + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + else + { + execution.setVariable("wasDeleted", false) + } + } + else + { + throw new BpmnError("MSOWorkflowException") + } + } + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in validateSDNCResp. " + ex.getMessage() + msoLogger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + msoLogger.trace("end Exit ValidateSDNCResp Process") + } + + public void deleteAaiAR(DelegateExecution execution){ + msoLogger.trace("start deleteAaiAR") + + try{ + AllottedResourceUtils arUtils = new AllottedResourceUtils(this) + String ar = null //need to get resource-version again + String arLink = execution.getVariable("aaiARPath") + if (!isBlank(arLink)) + { + ar = arUtils.getARbyLink(execution, arLink, "") + } + arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8")) + } catch (BpmnError e) { + throw e; + }catch(Exception ex){ + msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), + MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex); + exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage()) + } + msoLogger.trace("end deleteAaiAR") + } + +} diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml new file mode 100644 index 0000000000..13a24c8b8b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + ============LICENSE_START======================================================= + ECOMP MSO + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + 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========================================================= + --> + + +<process-application + xmlns="http://www.camunda.org/schema/1.0/ProcessApplication" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <process-archive> + <properties> + <property name="isDeleteUponUndeploy">false</property> + <property name="isScanForProcessDefinitions">true</property> + <!-- history cleanup batch job starts at 6:00am UTC time (01:00am Central) --> + <property name="historyCleanupBatchWindowStartTime">06:00</property> + <property name="historyCleanupBatchWindowEndTime">09:00</property> + </properties> + </process-archive> + +</process-application> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn new file mode 100644 index 0000000000..086171ec98 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn @@ -0,0 +1,335 @@ +<?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="1.11.3"> + <bpmn:process id="CompareModelofE2EServiceInstance" name="CompareModelofE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_00qj6ro" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_0v1ffn4"> + <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0eznq6x"> + <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" /> + <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" /> + </bpmn:subProcess> + <bpmn:callActivity id="DoCompareModelofE2EServiceInstance" name="Call DoCompareModelofE2EServiceInstance " calledElement="DoCompareModelofE2EServiceInstance"> + <bpmn:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="modelInvariantIdTarget" target="modelInvariantIdTarget" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="compareModelsResult" target="compareModelsResult" /> + <camunda:in source="modelVersionIdTarget" target="modelVersionIdTarget" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="initialStatus" target="initialStatus" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="URN_mso_adapters_openecomp_db_endpoint" target="URN_mso_adapters_openecomp_db_endpoint" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0tm7z1o</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_0bpd6c0" name="End"> + <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0tm7z1o</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new CompareModelofE2EServiceInstance() +csi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0dug28e"> + <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_03wysuk"> + <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CompareModelofE2EServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response"> + <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CompareModelofE2EServiceInstance() +csi.sendSyncError(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" /> + <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" /> + <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" /> + <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_12jdmq5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CompareModelofE2EServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?"> + <bpmn:incoming>SequenceFlow_12jdmq5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0y8s0kd</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_07uk5iy"> + <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_0nbdy47" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" /> + <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoCompareModelofE2EServiceInstance" targetRef="ScriptTask_0xupxj9" /> + <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0tm7z1o" sourceRef="ScriptTask_1s09c7d" targetRef="DoCompareModelofE2EServiceInstance" /> + <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0a01ez6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" /> + <bpmn:sequenceFlow id="SequenceFlow_12jdmq5" sourceRef="ScriptTask_0xupxj9" targetRef="ExclusiveGateway_0aqn64l" /> + <bpmn:scriptTask id="ScriptTask_0hkyfdj" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0y8s0kd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0a01ez6</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CompareModelofE2EServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0a01ez6" sourceRef="ScriptTask_0hkyfdj" targetRef="CallActivity_02fyxz0" /> + <bpmn:sequenceFlow id="SequenceFlow_0y8s0kd" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0hkyfdj"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + </bpmn:process> + <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CompareModelofE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro"> + <dc:Bounds x="-6" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-12" y="221" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true"> + <dc:Bounds x="463" y="632" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoCompareModelofE2EServiceInstance"> + <dc:Bounds x="458" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0"> + <dc:Bounds x="1258" y="286" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1268" y="322" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d"> + <dc:Bounds x="214" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true"> + <dc:Bounds x="348" y="370" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9"> + <dc:Bounds x="683" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true"> + <dc:Bounds x="903" y="173" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="903" y="145" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy"> + <dc:Bounds x="910" y="286" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="322" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq"> + <di:waypoint xsi:type="dc:Point" x="30" y="198" /> + <di:waypoint xsi:type="dc:Point" x="214" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="77" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx"> + <di:waypoint xsi:type="dc:Point" x="558" y="198" /> + <di:waypoint xsi:type="dc:Point" x="683" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69"> + <di:waypoint xsi:type="dc:Point" x="928" y="223" /> + <di:waypoint xsi:type="dc:Point" x="928" y="250" /> + <di:waypoint xsi:type="dc:Point" x="928" y="250" /> + <di:waypoint xsi:type="dc:Point" x="928" y="286" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="901" y="228" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39"> + <dc:Bounds x="611" y="687" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4"> + <dc:Bounds x="496" y="709" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="469" y="750" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x"> + <dc:Bounds x="772" y="709" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="745" y="750" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e"> + <dc:Bounds x="363" y="456" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="336" y="497" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk"> + <dc:Bounds x="942" y="456" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="915" y="497" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2"> + <dc:Bounds x="621" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8"> + <dc:Bounds x="798" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi"> + <dc:Bounds x="443" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb"> + <di:waypoint xsi:type="dc:Point" x="532" y="727" /> + <di:waypoint xsi:type="dc:Point" x="611" y="727" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="529.5" y="727" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321"> + <di:waypoint xsi:type="dc:Point" x="711" y="727" /> + <di:waypoint xsi:type="dc:Point" x="772" y="727" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701.5" y="727" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n"> + <di:waypoint xsi:type="dc:Point" x="399" y="474" /> + <di:waypoint xsi:type="dc:Point" x="421" y="474" /> + <di:waypoint xsi:type="dc:Point" x="421" y="474" /> + <di:waypoint xsi:type="dc:Point" x="442" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391" y="474" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam"> + <di:waypoint xsi:type="dc:Point" x="898" y="474" /> + <di:waypoint xsi:type="dc:Point" x="942" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="875" y="459" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp"> + <di:waypoint xsi:type="dc:Point" x="543" y="474" /> + <di:waypoint xsi:type="dc:Point" x="570" y="474" /> + <di:waypoint xsi:type="dc:Point" x="570" y="474" /> + <di:waypoint xsi:type="dc:Point" x="621" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="540" y="474" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj"> + <di:waypoint xsi:type="dc:Point" x="721" y="474" /> + <di:waypoint xsi:type="dc:Point" x="798" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="715.5" y="459" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tm7z1o_di" bpmnElement="SequenceFlow_0tm7z1o"> + <di:waypoint xsi:type="dc:Point" x="314" y="198" /> + <di:waypoint xsi:type="dc:Point" x="458" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="386" y="177" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0"> + <dc:Bounds x="1226" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf"> + <di:waypoint xsi:type="dc:Point" x="1276" y="238" /> + <di:waypoint xsi:type="dc:Point" x="1276" y="286" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1201" y="262" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12jdmq5_di" bpmnElement="SequenceFlow_12jdmq5"> + <di:waypoint xsi:type="dc:Point" x="783" y="198" /> + <di:waypoint xsi:type="dc:Point" x="903" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="177" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0hkyfdj_di" bpmnElement="ScriptTask_0hkyfdj"> + <dc:Bounds x="1031" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a01ez6_di" bpmnElement="SequenceFlow_0a01ez6"> + <di:waypoint xsi:type="dc:Point" x="1131" y="198" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1178.5" y="177" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0y8s0kd_di" bpmnElement="SequenceFlow_0y8s0kd"> + <di:waypoint xsi:type="dc:Point" x="953" y="198" /> + <di:waypoint xsi:type="dc:Point" x="1031" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="983" y="177" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn new file mode 100644 index 0000000000..8f2bf67b71 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn @@ -0,0 +1,325 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3"> + <bpmn:collaboration id="Collaboration_1d0w8lf"> + <bpmn:participant id="Participant_1egg397" name="SO Create and Activate Pnf Resource" processRef="CreateAndActivatePnfResource" /> + <bpmn:participant id="Participant_0atuyq0" name="AAI" /> + <bpmn:participant id="Participant_19w87ws" name="Workflow Message Service (communication with DMAAP) " /> + <bpmn:messageFlow id="MessageFlow_1h3xu88" sourceRef="CreateAndActivatePnf_CreateAaiEntry" targetRef="Participant_0atuyq0" /> + <bpmn:messageFlow id="MessageFlow_09ibv5a" sourceRef="CheckAiiForCorrelationId" targetRef="Participant_0atuyq0" /> + <bpmn:messageFlow id="MessageFlow_0vjul4t" sourceRef="Participant_0atuyq0" targetRef="CheckAiiForCorrelationId" /> + <bpmn:messageFlow id="MessageFlow_1vrcp2d" sourceRef="Participant_19w87ws" targetRef="WaitForDmaapPnfReadyNotification" /> + <bpmn:messageFlow id="MessageFlow_0tg4hw9" sourceRef="InformDmaapClient" targetRef="Participant_19w87ws" /> + <bpmn:messageFlow id="MessageFlow_1py54jr" sourceRef="CancelDmaapClientSubscription" targetRef="Participant_19w87ws" /> + </bpmn:collaboration> + <bpmn:process id="CreateAndActivatePnfResource" name="CreateAndActivatePnfResource" isExecutable="true"> + <bpmn:sequenceFlow id="SequenceFlow_1kc34bc" sourceRef="WaitForDmaapTimeout" targetRef="CancelDmaapClientSubscription" /> + <bpmn:sequenceFlow id="SequenceFlow_1o8od8e" sourceRef="InformDmaapClient" targetRef="WaitForDmaapPnfReadyNotification" /> + <bpmn:sequenceFlow id="SequenceFlow_0v5ffpe" name="No" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="CreateAndActivatePnf_CreateAaiEntry"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!aaiContainsInfoAboutPnf}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0p09qgm" sourceRef="WaitForDmaapPnfReadyNotification" targetRef="AaiEntryUpdated" /> + <bpmn:sequenceFlow id="SequenceFlow_17s9025" sourceRef="AaiEntryExists" targetRef="InformDmaapClient" /> + <bpmn:sequenceFlow id="SequenceFlow_1qr6cmf" sourceRef="CreateAndActivatePnf_CreateAaiEntry" targetRef="AaiEntryExists" /> + <bpmn:sequenceFlow id="SequenceFlow_1j4r3zt" sourceRef="CheckAiiForCorrelationId" targetRef="DoesAaiContainInfoAboutPnf" /> + <bpmn:sequenceFlow id="SequenceFlow_0j5ksz1" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="CheckInputs" /> + <bpmn:sequenceFlow id="SequenceFlow_1miyzfe" sourceRef="CancelDmaapClientSubscription" targetRef="ThrowTimeoutException" /> + <bpmn:sequenceFlow id="SequenceFlow_1ls8pua" name="No" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryExists"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!aaiContainsInfoAboutIp}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1l1t6ak" name="Yes" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="DoesAaiContainInfoAboutIp"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutPnf}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1h6yz62" name="Yes" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryAlreadyUpToDate"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutIp}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="AaiEntryUpdated" name="AAI entry updated"> + <bpmn:incoming>SequenceFlow_0p09qgm</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="ThrowTimeoutException" name="Throw timeout exception"> + <bpmn:incoming>SequenceFlow_1miyzfe</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_1" /> + </bpmn:endEvent> + <bpmn:endEvent id="AaiEntryAlreadyUpToDate" name="AAI entry already up-to-date"> + <bpmn:incoming>SequenceFlow_1h6yz62</bpmn:incoming> + </bpmn:endEvent> + <bpmn:startEvent id="CreateAndActivatePnf_StartEvent"> + <bpmn:outgoing>SequenceFlow_0j5ksz1</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_0967g8p" sourceRef="CheckInputs" targetRef="CheckAiiForCorrelationId" /> + <bpmn:serviceTask id="CheckAiiForCorrelationId" name="Check AAI for correlation_id" camunda:delegateExpression="${checkAaiForCorrelationIdDelegate}"> + <bpmn:incoming>SequenceFlow_0967g8p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1j4r3zt</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutPnf" name="Does AAI contain info about pnf?"> + <bpmn:incoming>SequenceFlow_1j4r3zt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1l1t6ak</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0v5ffpe</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:serviceTask id="CreateAndActivatePnf_CreateAaiEntry" name="Create AAI entry with pnf-id = correlation_id" camunda:delegateExpression="${createAaiEntryWithPnfIdDelegate}"> + <bpmn:incoming>SequenceFlow_0v5ffpe</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1qr6cmf</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutIp" name="Does AAI contain info about IPv4 or IPv6?"> + <bpmn:incoming>SequenceFlow_1l1t6ak</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1h6yz62</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1ls8pua</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:intermediateThrowEvent id="AaiEntryExists" name="AAI entry exists, lacking IP"> + <bpmn:incoming>SequenceFlow_1qr6cmf</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1ls8pua</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17s9025</bpmn:outgoing> + </bpmn:intermediateThrowEvent> + <bpmn:serviceTask id="InformDmaapClient" name="Inform DmaapClient about business key and corresponding pnf-id" camunda:delegateExpression="${informDmaapClient}"> + <bpmn:incoming>SequenceFlow_17s9025</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1o8od8e</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:receiveTask id="WaitForDmaapPnfReadyNotification" name="Wait for DMAAP pnf-ready notification" messageRef="Message_13h1tlo"> + <bpmn:incoming>SequenceFlow_1o8od8e</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0p09qgm</bpmn:outgoing> + </bpmn:receiveTask> + <bpmn:boundaryEvent id="WaitForDmaapTimeout" name="Timeout" attachedToRef="WaitForDmaapPnfReadyNotification"> + <bpmn:outgoing>SequenceFlow_1kc34bc</bpmn:outgoing> + <bpmn:timerEventDefinition> + <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">#{timeoutForPnfEntryNotification}</bpmn:timeDuration> + </bpmn:timerEventDefinition> + </bpmn:boundaryEvent> + <bpmn:serviceTask id="CancelDmaapClientSubscription" name="Cancel DmaapClient subscription" camunda:delegateExpression="${cancelDmaapSubscription}"> + <bpmn:incoming>SequenceFlow_1kc34bc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1miyzfe</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="CheckInputs" name="Check inputs" camunda:delegateExpression="${pnfCheckInputs}"> + <bpmn:incoming>SequenceFlow_0j5ksz1</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0967g8p</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:textAnnotation id="TextAnnotation_1eyzes8"> + <bpmn:text><![CDATA[Inputs: +Â -Â timeoutForPnfEntryNotification - String + - correlationId - String +]]></bpmn:text> + </bpmn:textAnnotation> + <bpmn:association id="Association_0d7oxnz" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="TextAnnotation_1eyzes8" /> + </bpmn:process> + <bpmn:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn:message id="Message_13h1tlo" name="WorkflowMessage" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1d0w8lf"> + <bpmndi:BPMNShape id="Participant_1egg397_di" bpmnElement="Participant_1egg397"> + <dc:Bounds x="-113" y="0" width="1601" height="438" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1cttgdo_di" bpmnElement="DoesAaiContainInfoAboutPnf" isMarkerVisible="true"> + <dc:Bounds x="390" y="182" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="372" y="283" width="85" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0yamdfm_di" bpmnElement="DoesAaiContainInfoAboutIp" isMarkerVisible="true"> + <dc:Bounds x="682" y="41" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="663" y="5" width="87" height="30" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0k52gr7_di" bpmnElement="AaiEntryUpdated"> + <dc:Bounds x="1312" y="189" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1286" y="230" width="89" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0j5ok9h_di" bpmnElement="CreateAndActivatePnf_StartEvent"> + <dc:Bounds x="-54" y="189" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-80" y="228" width="90" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0a5uk9o_di" bpmnElement="CheckAiiForCorrelationId"> + <dc:Bounds x="219" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0iimk5v_di" bpmnElement="CreateAndActivatePnf_CreateAaiEntry"> + <dc:Bounds x="511" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1j4r3zt_di" bpmnElement="SequenceFlow_1j4r3zt"> + <di:waypoint xsi:type="dc:Point" x="319" y="207" /> + <di:waypoint xsi:type="dc:Point" x="390" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="309.5" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1l1t6ak_di" bpmnElement="SequenceFlow_1l1t6ak"> + <di:waypoint xsi:type="dc:Point" x="415" y="207" /> + <di:waypoint xsi:type="dc:Point" x="415" y="66" /> + <di:waypoint xsi:type="dc:Point" x="682" y="66" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="430" y="180.1206896551724" width="19" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0v5ffpe_di" bpmnElement="SequenceFlow_0v5ffpe"> + <di:waypoint xsi:type="dc:Point" x="440" y="207" /> + <di:waypoint xsi:type="dc:Point" x="511" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="447.32911392405055" y="210" width="15" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h6yz62_di" bpmnElement="SequenceFlow_1h6yz62"> + <di:waypoint xsi:type="dc:Point" x="732" y="66" /> + <di:waypoint xsi:type="dc:Point" x="1312" y="66" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="742.7435064935065" y="51" width="19" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ls8pua_di" bpmnElement="SequenceFlow_1ls8pua"> + <di:waypoint xsi:type="dc:Point" x="707" y="91" /> + <di:waypoint xsi:type="dc:Point" x="707" y="189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="116.1917808219178" width="15" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr6cmf_di" bpmnElement="SequenceFlow_1qr6cmf"> + <di:waypoint xsi:type="dc:Point" x="611" y="207" /> + <di:waypoint xsi:type="dc:Point" x="689" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="605" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j5ksz1_di" bpmnElement="SequenceFlow_0j5ksz1"> + <di:waypoint xsi:type="dc:Point" x="-18" y="207" /> + <di:waypoint xsi:type="dc:Point" x="48" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-30" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Participant_0i9ban2_di" bpmnElement="Participant_0atuyq0"> + <dc:Bounds x="123" y="523" width="502" height="60" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="MessageFlow_1h3xu88_di" bpmnElement="MessageFlow_1h3xu88"> + <di:waypoint xsi:type="dc:Point" x="561" y="247" /> + <di:waypoint xsi:type="dc:Point" x="561" y="523" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="531" y="380" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="MessageFlow_09ibv5a_di" bpmnElement="MessageFlow_09ibv5a"> + <di:waypoint xsi:type="dc:Point" x="250" y="247" /> + <di:waypoint xsi:type="dc:Point" x="250" y="523" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="220" y="380" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="MessageFlow_0vjul4t_di" bpmnElement="MessageFlow_0vjul4t"> + <di:waypoint xsi:type="dc:Point" x="289" y="523" /> + <di:waypoint xsi:type="dc:Point" x="289" y="247" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="259" y="380" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Participant_0vmrrhf_di" bpmnElement="Participant_19w87ws"> + <dc:Bounds x="804" y="523" width="463" height="60" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0wbx6tt_di" bpmnElement="ThrowTimeoutException"> + <dc:Bounds x="1312" y="345" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1305" y="382" width="70" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_00cy7r0_di" bpmnElement="AaiEntryAlreadyUpToDate"> + <dc:Bounds x="1312" y="48" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1288" y="89" width="85" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0fjcdy4_di" bpmnElement="AaiEntryExists"> + <dc:Bounds x="689" y="189" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="670" y="235" width="80" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_1eyzes8_di" bpmnElement="TextAnnotation_1eyzes8"> + <dc:Bounds x="-37" y="70" width="243" height="54" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0d7oxnz_di" bpmnElement="Association_0d7oxnz"> + <di:waypoint xsi:type="dc:Point" x="-36" y="189" /> + <di:waypoint xsi:type="dc:Point" x="-36" y="124" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="MessageFlow_1vrcp2d_di" bpmnElement="MessageFlow_1vrcp2d"> + <di:waypoint xsi:type="dc:Point" x="1026" y="523" /> + <di:waypoint xsi:type="dc:Point" x="1026" y="247" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="996" y="380" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17s9025_di" bpmnElement="SequenceFlow_17s9025"> + <di:waypoint xsi:type="dc:Point" x="725" y="207" /> + <di:waypoint xsi:type="dc:Point" x="803" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="BoundaryEvent_15eo1k9_di" bpmnElement="WaitForDmaapTimeout"> + <dc:Bounds x="1040" y="229" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1071" y="260" width="40" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1kc34bc_di" bpmnElement="SequenceFlow_1kc34bc"> + <di:waypoint xsi:type="dc:Point" x="1058" y="265" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="363" /> + <di:waypoint xsi:type="dc:Point" x="1145" y="363" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1028" y="309" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ReceiveTask_1sfysua_di" bpmnElement="WaitForDmaapPnfReadyNotification"> + <dc:Bounds x="974" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0p09qgm_di" bpmnElement="SequenceFlow_0p09qgm"> + <di:waypoint xsi:type="dc:Point" x="1074" y="207" /> + <di:waypoint xsi:type="dc:Point" x="1312" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1148" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1o8od8e_di" bpmnElement="SequenceFlow_1o8od8e"> + <di:waypoint xsi:type="dc:Point" x="903" y="207" /> + <di:waypoint xsi:type="dc:Point" x="974" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="893.5" y="187" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="MessageFlow_0tg4hw9_di" bpmnElement="MessageFlow_0tg4hw9"> + <di:waypoint xsi:type="dc:Point" x="853" y="247" /> + <di:waypoint xsi:type="dc:Point" x="853" y="523" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="823" y="380" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1iax11n_di" bpmnElement="InformDmaapClient"> + <dc:Bounds x="803" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1miyzfe_di" bpmnElement="SequenceFlow_1miyzfe"> + <di:waypoint xsi:type="dc:Point" x="1245" y="363" /> + <di:waypoint xsi:type="dc:Point" x="1312" y="363" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1233.5" y="343" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="MessageFlow_1py54jr_di" bpmnElement="MessageFlow_1py54jr"> + <di:waypoint xsi:type="dc:Point" x="1195" y="403" /> + <di:waypoint xsi:type="dc:Point" x="1195" y="523" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1165" y="458" width="90" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_12j7hox_di" bpmnElement="CancelDmaapClientSubscription"> + <dc:Bounds x="1145" y="323" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0967g8p_di" bpmnElement="SequenceFlow_0967g8p"> + <di:waypoint xsi:type="dc:Point" x="148" y="207" /> + <di:waypoint xsi:type="dc:Point" x="219" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="183.5" y="187" width="0" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0lx02qn_di" bpmnElement="CheckInputs"> + <dc:Bounds x="48" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn new file mode 100644 index 0000000000..6f73b46e2e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn @@ -0,0 +1,391 @@ +<?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="1.10.0"> + <bpmn:process id="CreateCustomE2EServiceInstance" name="CreateCustomE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_00qj6ro" name="Create SI Start Flow"> + <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_0v1ffn4"> + <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0eznq6x"> + <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" /> + <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" /> + </bpmn:subProcess> + <bpmn:callActivity id="DoCreateE2EServiceInstance" name="Call DoCreateE2EServiceInstance " calledElement="DoCreateE2EServiceInstanceV3"> + <bpmn:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in sourceExpression="1610" target="sdncVersion" /> + <camunda:in source="initialStatus" target="initialStatus" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:in source="requestAction" target="operationType" /> + <camunda:in source="operationId" target="operationId" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_19eilro</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_0bpd6c0" name="End"> + <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0z4faf9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new CreateCustomE2EServiceInstance() +csi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateCustomE2EServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0dug28e"> + <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_03wysuk"> + <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateCustomE2EServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response"> + <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateCustomE2EServiceInstance() +csi.sendSyncError(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" /> + <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" /> + <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" /> + <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_081z8l2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_19eilro</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateCustomE2EServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?"> + <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_07uk5iy"> + <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_0nbdy47" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" /> + <bpmn:sequenceFlow id="SequenceFlow_19eilro" sourceRef="ScriptTask_0xupxj9" targetRef="DoCreateE2EServiceInstance" /> + <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoCreateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" /> + <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" /> + <bpmn:sequenceFlow id="SequenceFlow_0z4faf9" sourceRef="ScriptTask_1s09c7d" targetRef="Task_1tqjch6" /> + <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" /> + <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1euqjsp" sourceRef="Task_1tqjch6" targetRef="Task_19mxcw3" /> + <bpmn:scriptTask id="Task_1tqjch6" name="Init Service Operation Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0z4faf9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1euqjsp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new CreateCustomE2EServiceInstance() +csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="Task_19mxcw3" name="Update Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1euqjsp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_081z8l2</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_081z8l2" sourceRef="Task_19mxcw3" targetRef="ScriptTask_0xupxj9" /> + </bpmn:process> + <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateCustomE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro"> + <dc:Bounds x="-6" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-24" y="221" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true"> + <dc:Bounds x="463" y="632" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoCreateE2EServiceInstance"> + <dc:Bounds x="751" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0"> + <dc:Bounds x="1258" y="286" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1268" y="322" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d"> + <dc:Bounds x="115" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r"> + <dc:Bounds x="1038" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0"> + <dc:Bounds x="1226" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true"> + <dc:Bounds x="348" y="370" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9"> + <dc:Bounds x="610" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true"> + <dc:Bounds x="903" y="173" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="903" y="145" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy"> + <dc:Bounds x="910" y="286" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="322" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq"> + <di:waypoint xsi:type="dc:Point" x="30" y="198" /> + <di:waypoint xsi:type="dc:Point" x="115" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="27.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19eilro_di" bpmnElement="SequenceFlow_19eilro"> + <di:waypoint xsi:type="dc:Point" x="710" y="198" /> + <di:waypoint xsi:type="dc:Point" x="751" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx"> + <di:waypoint xsi:type="dc:Point" x="851" y="198" /> + <di:waypoint xsi:type="dc:Point" x="903" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf"> + <di:waypoint xsi:type="dc:Point" x="1276" y="238" /> + <di:waypoint xsi:type="dc:Point" x="1276" y="286" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1246" y="262" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0z4faf9_di" bpmnElement="SequenceFlow_0z4faf9"> + <di:waypoint xsi:type="dc:Point" x="215" y="198" /> + <di:waypoint xsi:type="dc:Point" x="273" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="199" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr"> + <di:waypoint xsi:type="dc:Point" x="953" y="198" /> + <di:waypoint xsi:type="dc:Point" x="990" y="198" /> + <di:waypoint xsi:type="dc:Point" x="990" y="198" /> + <di:waypoint xsi:type="dc:Point" x="1038" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="987" y="195" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si"> + <di:waypoint xsi:type="dc:Point" x="1138" y="198" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1137" y="183" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69"> + <di:waypoint xsi:type="dc:Point" x="928" y="223" /> + <di:waypoint xsi:type="dc:Point" x="928" y="250" /> + <di:waypoint xsi:type="dc:Point" x="928" y="250" /> + <di:waypoint xsi:type="dc:Point" x="928" y="286" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="901" y="228" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39"> + <dc:Bounds x="611" y="687" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4"> + <dc:Bounds x="496" y="709" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="469" y="750" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x"> + <dc:Bounds x="772" y="709" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="745" y="750" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e"> + <dc:Bounds x="363" y="456" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="336" y="497" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk"> + <dc:Bounds x="942" y="456" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="915" y="497" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2"> + <dc:Bounds x="621" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8"> + <dc:Bounds x="798" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi"> + <dc:Bounds x="443" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb"> + <di:waypoint xsi:type="dc:Point" x="532" y="727" /> + <di:waypoint xsi:type="dc:Point" x="611" y="727" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="529.5" y="727" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321"> + <di:waypoint xsi:type="dc:Point" x="711" y="727" /> + <di:waypoint xsi:type="dc:Point" x="772" y="727" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701.5" y="727" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n"> + <di:waypoint xsi:type="dc:Point" x="399" y="474" /> + <di:waypoint xsi:type="dc:Point" x="421" y="474" /> + <di:waypoint xsi:type="dc:Point" x="421" y="474" /> + <di:waypoint xsi:type="dc:Point" x="442" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391" y="474" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam"> + <di:waypoint xsi:type="dc:Point" x="898" y="474" /> + <di:waypoint xsi:type="dc:Point" x="942" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="875" y="459" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp"> + <di:waypoint xsi:type="dc:Point" x="543" y="474" /> + <di:waypoint xsi:type="dc:Point" x="570" y="474" /> + <di:waypoint xsi:type="dc:Point" x="570" y="474" /> + <di:waypoint xsi:type="dc:Point" x="621" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="540" y="474" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj"> + <di:waypoint xsi:type="dc:Point" x="721" y="474" /> + <di:waypoint xsi:type="dc:Point" x="798" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="715.5" y="459" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1euqjsp_di" bpmnElement="SequenceFlow_1euqjsp"> + <di:waypoint xsi:type="dc:Point" x="373" y="198" /> + <di:waypoint xsi:type="dc:Point" x="446" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="364.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1a3vwas_di" bpmnElement="Task_1tqjch6"> + <dc:Bounds x="273" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1afiuuq_di" bpmnElement="Task_19mxcw3"> + <dc:Bounds x="446" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_081z8l2_di" bpmnElement="SequenceFlow_081z8l2"> + <di:waypoint xsi:type="dc:Point" x="546" y="198" /> + <di:waypoint xsi:type="dc:Point" x="610" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="533" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn new file mode 100644 index 0000000000..3d08fdb1d4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn @@ -0,0 +1,452 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateGenericALaCarteServiceInstance" name="CreateGenericALaCarteServiceInstance" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Create SI Start Flow"> + <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call DoCreateServiceInstance " calledElement="DoCreateServiceInstance"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in sourceExpression="1610" target="sdncVersion" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:in source="bpmnRequest" target="requestJson" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1hjh5zy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_0o440av" name="End"> + <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ExclusiveGateway_1x5i9c1" /> + <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ktadna</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateGenericALaCarteServiceInstance() +csi.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createSI_startEvent" targetRef="ScriptTask_0pvcr6j" /> + <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1o4wwba</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateGenericALaCarteServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" /> + <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_110xxgx"> + <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1rqikib"> + <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14eadeb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateGenericALaCarteServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_0o4smqp" /> + <bpmn2:scriptTask id="ScriptTask_0o4smqp" name="Send Error Response"> + <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14eadeb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateGenericALaCarteServiceInstance() +csi.sendSyncError(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14eadeb" sourceRef="ScriptTask_0o4smqp" targetRef="ScriptTask_1hql91g" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="EndEvent_0o440av" /> + <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ktadna</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16vhtu8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateGenericALaCarteServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ktadna" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_1nko5zz" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1x5i9c1" name="Success?"> + <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1o4wwba</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1mdnv3l</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:endEvent id="EndEvent_143akoz"> + <bpmn2:incoming>SequenceFlow_1mdnv3l</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1o4wwba" name="yes" sourceRef="ExclusiveGateway_1x5i9c1" targetRef="ScriptTask_0cihgpv"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1mdnv3l" name="no" sourceRef="ExclusiveGateway_1x5i9c1" targetRef="EndEvent_143akoz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0y5991s" name="GoDecompose"> + <bpmn2:incoming>SequenceFlow_16vhtu8</bpmn2:incoming> + <bpmn2:linkEventDefinition name="Decompose" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16vhtu8" sourceRef="Task_1nko5zz" targetRef="IntermediateThrowEvent_0y5991s" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_00tv706" name="Decompose"> + <bpmn2:outgoing>SequenceFlow_1tfe975</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="Decompose" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1aouco1" name="CreateSI"> + <bpmn2:outgoing>SequenceFlow_1hjh5zy</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateSI" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1tbopzu" name="GoToCreateSI"> + <bpmn2:incoming>SequenceFlow_14ajbme</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateSI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1vr3ks5" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1tfe975</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xhu1k3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new CreateGenericALaCarteServiceInstance() +csi.prepareDecomposeService(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1oc1h9q" name="DecomposeService" calledElement="DecomposeService"> + <bpmn2: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" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xhu1k3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1o3ihrh</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_04zaa1o" name="Prepare Create Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1o3ihrh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14ajbme</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new CreateGenericALaCarteServiceInstance() +csi.prepareCreateServiceInstance(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xhu1k3" sourceRef="ScriptTask_1vr3ks5" targetRef="CallActivity_1oc1h9q" /> + <bpmn2:sequenceFlow id="SequenceFlow_1o3ihrh" sourceRef="CallActivity_1oc1h9q" targetRef="ScriptTask_04zaa1o" /> + <bpmn2:sequenceFlow id="SequenceFlow_1tfe975" sourceRef="IntermediateCatchEvent_00tv706" targetRef="ScriptTask_1vr3ks5" /> + <bpmn2:sequenceFlow id="SequenceFlow_14ajbme" sourceRef="ScriptTask_04zaa1o" targetRef="IntermediateThrowEvent_1tbopzu" /> + <bpmn2:sequenceFlow id="SequenceFlow_1hjh5zy" sourceRef="IntermediateCatchEvent_1aouco1" targetRef="doCreateServiceInstance_CallActivity" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateGenericALaCarteServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="-6" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-25" y="120" width="74" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="300" y="880" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="333" y="957" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="351" y="998" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="448" y="935" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="609" y="957" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="627" y="998" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="369" y="975" /> + <di:waypoint xsi:type="dc:Point" x="448" y="975" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="411" y="975" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="548" y="975" /> + <di:waypoint xsi:type="dc:Point" x="609" y="975" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="583" y="975" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doCreateServiceInstance_CallActivity"> + <dc:Bounds x="112" y="452" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av"> + <dc:Bounds x="852" y="474" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="863" y="510" width="20" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp"> + <di:waypoint xsi:type="dc:Point" x="212" y="492" /> + <di:waypoint xsi:type="dc:Point" x="314" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="263" y="477" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j"> + <dc:Bounds x="112" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l"> + <di:waypoint xsi:type="dc:Point" x="30" y="97" /> + <di:waypoint xsi:type="dc:Point" x="112" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="71" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv"> + <dc:Bounds x="449" y="452" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre"> + <dc:Bounds x="637" y="452" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> + <di:waypoint xsi:type="dc:Point" x="549" y="492" /> + <di:waypoint xsi:type="dc:Point" x="637" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="593" y="477" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> + <dc:Bounds x="443" y="731" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> + <dc:Bounds x="620" y="731" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> + <dc:Bounds x="170" y="667" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> + <dc:Bounds x="185" y="753" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="203" y="794" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> + <dc:Bounds x="764" y="753" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="782" y="794" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> + <di:waypoint xsi:type="dc:Point" x="543" y="771" /> + <di:waypoint xsi:type="dc:Point" x="620" y="771" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="756" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> + <di:waypoint xsi:type="dc:Point" x="720" y="771" /> + <di:waypoint xsi:type="dc:Point" x="764" y="771" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="742" y="756" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> + <di:waypoint xsi:type="dc:Point" x="737" y="492" /> + <di:waypoint xsi:type="dc:Point" x="852" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="795" y="477" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> + <di:waypoint xsi:type="dc:Point" x="221" y="771" /> + <di:waypoint xsi:type="dc:Point" x="243" y="771" /> + <di:waypoint xsi:type="dc:Point" x="243" y="771" /> + <di:waypoint xsi:type="dc:Point" x="264" y="771" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="258" y="771" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz"> + <dc:Bounds x="342" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ktadna_di" bpmnElement="SequenceFlow_0ktadna"> + <di:waypoint xsi:type="dc:Point" x="212" y="97" /> + <di:waypoint xsi:type="dc:Point" x="342" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="277" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0o4smqp_di" bpmnElement="ScriptTask_0o4smqp"> + <dc:Bounds x="265" y="731" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_14eadeb_di" bpmnElement="SequenceFlow_14eadeb"> + <di:waypoint xsi:type="dc:Point" x="365" y="771" /> + <di:waypoint xsi:type="dc:Point" x="392" y="771" /> + <di:waypoint xsi:type="dc:Point" x="392" y="771" /> + <di:waypoint xsi:type="dc:Point" x="443" y="771" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="407" y="771" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1x5i9c1_di" bpmnElement="ExclusiveGateway_1x5i9c1" isMarkerVisible="true"> + <dc:Bounds x="314" y="467" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="314" y="439" width="50" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_143akoz_di" bpmnElement="EndEvent_143akoz"> + <dc:Bounds x="321" y="580" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="417" y="965" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1o4wwba_di" bpmnElement="SequenceFlow_1o4wwba"> + <di:waypoint xsi:type="dc:Point" x="364" y="492" /> + <di:waypoint xsi:type="dc:Point" x="401" y="492" /> + <di:waypoint xsi:type="dc:Point" x="401" y="492" /> + <di:waypoint xsi:type="dc:Point" x="449" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="399" y="489" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mdnv3l_di" bpmnElement="SequenceFlow_1mdnv3l"> + <di:waypoint xsi:type="dc:Point" x="339" y="517" /> + <di:waypoint xsi:type="dc:Point" x="339" y="544" /> + <di:waypoint xsi:type="dc:Point" x="339" y="544" /> + <di:waypoint xsi:type="dc:Point" x="339" y="580" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313" y="522" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0y5991s_di" bpmnElement="IntermediateThrowEvent_0y5991s"> + <dc:Bounds x="587" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="568" y="120" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16vhtu8_di" bpmnElement="SequenceFlow_16vhtu8"> + <di:waypoint xsi:type="dc:Point" x="442" y="97" /> + <di:waypoint xsi:type="dc:Point" x="587" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="515" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_00tv706_di" bpmnElement="IntermediateCatchEvent_00tv706"> + <dc:Bounds x="-6" y="272" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-19" y="308" width="59" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1aouco1_di" bpmnElement="IntermediateCatchEvent_1aouco1"> + <dc:Bounds x="-6" y="474" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-11" y="510" width="43" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1tbopzu_di" bpmnElement="IntermediateThrowEvent_1tbopzu"> + <dc:Bounds x="852" y="272" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="835" y="313" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1vr3ks5_di" bpmnElement="ScriptTask_1vr3ks5"> + <dc:Bounds x="112" y="250" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1oc1h9q_di" bpmnElement="CallActivity_1oc1h9q"> + <dc:Bounds x="342" y="250" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04zaa1o_di" bpmnElement="ScriptTask_04zaa1o"> + <dc:Bounds x="555" y="250" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xhu1k3_di" bpmnElement="SequenceFlow_0xhu1k3"> + <di:waypoint xsi:type="dc:Point" x="212" y="290" /> + <di:waypoint xsi:type="dc:Point" x="342" y="290" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="277" y="275" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1o3ihrh_di" bpmnElement="SequenceFlow_1o3ihrh"> + <di:waypoint xsi:type="dc:Point" x="442" y="290" /> + <di:waypoint xsi:type="dc:Point" x="555" y="290" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="275" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tfe975_di" bpmnElement="SequenceFlow_1tfe975"> + <di:waypoint xsi:type="dc:Point" x="30" y="290" /> + <di:waypoint xsi:type="dc:Point" x="69" y="290" /> + <di:waypoint xsi:type="dc:Point" x="69" y="290" /> + <di:waypoint xsi:type="dc:Point" x="112" y="290" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="84" y="290" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14ajbme_di" bpmnElement="SequenceFlow_14ajbme"> + <di:waypoint xsi:type="dc:Point" x="655" y="290" /> + <di:waypoint xsi:type="dc:Point" x="852" y="290" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="754" y="265" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hjh5zy_di" bpmnElement="SequenceFlow_1hjh5zy"> + <di:waypoint xsi:type="dc:Point" x="30" y="492" /> + <di:waypoint xsi:type="dc:Point" x="112" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="71" y="467" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn new file mode 100644 index 0000000000..9b21b9309f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateNetworkInstance" name="CreateNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def networkMod = new CreateNetworkInstance() +networkMod.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="doCreateNetworkInstance_CallActivity" name="DoCreate Network Instance " calledElement="DoCreateNetworkInstance"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="networkId" target="networkId" /> + <camunda:in source="networkName" target="networkName" /> + <camunda:in source="networkModelInfo" target="networkModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="networkInputParams" target="networkInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="networkId" target="networkId" /> + <camunda:out source="networkName" target="networkName" /> + <camunda:out source="networkOutputParams" target="networkOutputParams" /> + <camunda:in source="bpmnRequest" target="bpmnRequest" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="requestId" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="requestAction" target="requestAction" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_0o440av" name="End"> + <bpmn2:incoming>SequenceFlow_0x3znm5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_09qt0pi" name="CreateNetwork PostProcess Success " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.postProcessResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doCreateNetworkInstance_CallActivity" targetRef="ScriptTask_0cihgpv" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x3znm5" sourceRef="ScriptTask_09qt0pi" targetRef="EndEvent_0o440av" /> + <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ablr60</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def preProcess = new CreateNetworkInstance() +preProcess.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_0pvcr6j" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ablr60" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_19xbdbu" /> + <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.prepareCompletion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CRENI_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" /> + <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_110xxgx"> + <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1rqikib"> + <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1akfe0b" name="Prepare DB Infra Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s5niqb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s5niqb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.buildErrorResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CRENI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ScriptTask_1hql91g" /> + <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1akfe0b" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="ScriptTask_09qt0pi" /> + <bpmn2:sequenceFlow id="SequenceFlow_0rt8wax" sourceRef="Task_19xbdbu" targetRef="Task_1nko5zz" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doCreateNetworkInstance_CallActivity" /> + <bpmn2:scriptTask id="Task_19xbdbu" name="Get Network Model Info " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ablr60</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0rt8wax</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.getNetworkModelInfo(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0rt8wax</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def CreateNetworkInstance = new CreateNetworkInstance() +CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent"> + <dc:Bounds x="3" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-3" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="-8" y="786" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="25" y="863" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="43" y="904" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="140" y="841" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="301" y="863" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="319" y="904" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="61" y="881" /> + <di:waypoint xsi:type="dc:Point" x="140" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="881" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="240" y="881" /> + <di:waypoint xsi:type="dc:Point" x="301" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="275" y="881" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doCreateNetworkInstance_CallActivity"> + <dc:Bounds x="692" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av"> + <dc:Bounds x="1408" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="115" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi"> + <dc:Bounds x="1253" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp"> + <di:waypoint xsi:type="dc:Point" x="792" y="97" /> + <di:waypoint xsi:type="dc:Point" x="907" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="850" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5"> + <di:waypoint xsi:type="dc:Point" x="1353" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1381" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j"> + <dc:Bounds x="139" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l"> + <di:waypoint xsi:type="dc:Point" x="39" y="97" /> + <di:waypoint xsi:type="dc:Point" x="89" y="97" /> + <di:waypoint xsi:type="dc:Point" x="89" y="97" /> + <di:waypoint xsi:type="dc:Point" x="139" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="104" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60"> + <di:waypoint xsi:type="dc:Point" x="239" y="97" /> + <di:waypoint xsi:type="dc:Point" x="306" y="97" /> + <di:waypoint xsi:type="dc:Point" x="306" y="97" /> + <di:waypoint xsi:type="dc:Point" x="372" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="321" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv"> + <dc:Bounds x="907" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre"> + <dc:Bounds x="1071" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b"> + <dc:Bounds x="300" y="520" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> + <di:waypoint xsi:type="dc:Point" x="1007" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1039" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> + <dc:Bounds x="543" y="520" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> + <dc:Bounds x="807" y="520" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> + <dc:Bounds x="56" y="348" width="1021" height="404" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> + <dc:Bounds x="152" y="542" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="170" y="583" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> + <dc:Bounds x="982" y="542" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1000" y="583" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb"> + <di:waypoint xsi:type="dc:Point" x="400" y="560" /> + <di:waypoint xsi:type="dc:Point" x="543" y="560" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="472" y="545" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> + <di:waypoint xsi:type="dc:Point" x="643" y="560" /> + <di:waypoint xsi:type="dc:Point" x="807" y="560" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="545" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> + <di:waypoint xsi:type="dc:Point" x="907" y="560" /> + <di:waypoint xsi:type="dc:Point" x="982" y="560" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="545" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> + <di:waypoint xsi:type="dc:Point" x="1171" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1253" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1212" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> + <di:waypoint xsi:type="dc:Point" x="188" y="560" /> + <di:waypoint xsi:type="dc:Point" x="300" y="560" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="244" y="545" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax"> + <di:waypoint xsi:type="dc:Point" x="472" y="97" /> + <di:waypoint xsi:type="dc:Point" x="558" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="515" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn"> + <di:waypoint xsi:type="dc:Point" x="658" y="97" /> + <di:waypoint xsi:type="dc:Point" x="692" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="675" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu"> + <dc:Bounds x="372" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz"> + <dc:Bounds x="558" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn new file mode 100644 index 0000000000..29207131b6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn @@ -0,0 +1,287 @@ +<?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="1.16.2"> + <bpmn:process id="CreateSDNCNetworkResource" name="CreateSDNCNetworkResource" isExecutable="true"> + <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent"> + <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="Task_1dlrfiw" /> + <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0tezqd4" /> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="prepare SDNC Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_18l3crb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateSDNCNetworkResource() +dcsi.prepareSDNCRequest(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1x6k78c" name="create SDNC call end"> + <bpmn:incoming>SequenceFlow_0auvfvm</bpmn:incoming> + </bpmn:endEvent> + <bpmn:callActivity id="CallActivity_1600xlj" name="Call SDNC RSRC Create Adapter V1 " calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="CRESDNCRES_activateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKI_activateSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="CRESDNCRES_sdncCreateReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="CRESDNCRES_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_15mvedq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ex9ov6</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_023hred" name="post SDNC create call"> + <bpmn:incoming>SequenceFlow_1ex9ov6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1kzj1j5</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateSDNCNetworkResource() +dcsi.postCreateSDNCCall(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0w2es8j" sourceRef="Task_1dlrfiw" targetRef="Task_13sx2bp" /> + <bpmn:sequenceFlow id="SequenceFlow_18l3crb" sourceRef="Task_13sx2bp" targetRef="PreprocessIncomingRequest_task" /> + <bpmn:scriptTask id="Task_1dlrfiw" name="Set the Recipe DesignTimeParam" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0w2es8j</bpmn:outgoing> + <bpmn:script>String recipeParamXsdDemo="""{"operationType":"GRE"}""" +String recipeParamXsd="" +execution.setVariable("recipeParamXsd", recipeParamXsd)</bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_13sx2bp" name="Pre Process Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0w2es8j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18l3crb</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateSDNCNetworkResource() +dcsi.preProcessRequest(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1mz0vdx" sourceRef="Task_0tezqd4" targetRef="Task_18tomkl" /> + <bpmn:sequenceFlow id="SequenceFlow_15mvedq" sourceRef="Task_18tomkl" targetRef="CallActivity_1600xlj" /> + <bpmn:scriptTask id="Task_0tezqd4" name="Create progress update parameters before create" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1mz0vdx</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateSDNCNetworkResource() +dcsi.prepareUpdateBeforeCreateSDNCResource(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="Task_18tomkl" name="update progress update"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1mz0vdx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_15mvedq</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="ServiceTask_1cm8iwr" name="update progress update"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1kzj1j5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0o7h0ag</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:scriptTask id="ScriptTask_1g5zyi6" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1cd8ujq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0auvfvm</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateSDNCNetworkResource() +csi.sendSyncResponse(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0cdulnk" name="is activate required"> + <bpmn:incoming>SequenceFlow_0o7h0ag</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dww8ye</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_05m2j56</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1dww8ye" name="yes" sourceRef="ExclusiveGateway_0cdulnk" targetRef="Task_0bga3e8"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isActivateRequired") == "true")}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1ex9ov6" sourceRef="CallActivity_1600xlj" targetRef="Task_023hred" /> + <bpmn:sequenceFlow id="SequenceFlow_1kzj1j5" sourceRef="Task_023hred" targetRef="ServiceTask_1cm8iwr" /> + <bpmn:sequenceFlow id="SequenceFlow_0o7h0ag" sourceRef="ServiceTask_1cm8iwr" targetRef="ExclusiveGateway_0cdulnk" /> + <bpmn:scriptTask id="Task_0uwlr22" name="Create progress update parameters After create" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_05m2j56</bpmn:incoming> + <bpmn:incoming>SequenceFlow_05niqbf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1cd8ujq</bpmn:outgoing> + <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateSDNCNetworkResource() +dcsi.prepareUpdateAfterCreateSDNCResource(execution)</bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_05m2j56" name="No" sourceRef="ExclusiveGateway_0cdulnk" targetRef="Task_0uwlr22" /> + <bpmn:sequenceFlow id="SequenceFlow_05niqbf" sourceRef="Task_0bga3e8" targetRef="Task_0uwlr22" /> + <bpmn:sequenceFlow id="SequenceFlow_1cd8ujq" sourceRef="Task_0uwlr22" targetRef="ScriptTask_1g5zyi6" /> + <bpmn:sequenceFlow id="SequenceFlow_0auvfvm" sourceRef="ScriptTask_1g5zyi6" targetRef="EndEvent_1x6k78c" /> + <bpmn:callActivity id="Task_0bga3e8" name="call Activate SDNC network Resource" calledElement="ActivateSDNCNetworkResource"> + <bpmn:incoming>SequenceFlow_1dww8ye</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_05niqbf</bpmn:outgoing> + </bpmn:callActivity> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateSDNCNetworkResource"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent"> + <dc:Bounds x="-111" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-135" y="147" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint x="-75" y="129" /> + <di:waypoint x="-10" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-87.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova"> + <di:waypoint x="413" y="129" /> + <di:waypoint x="460" y="129" /> + <di:waypoint x="500" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="313" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="1046" y="317" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1009" y="359" width="84" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1600xlj_di" bpmnElement="CallActivity_1600xlj"> + <dc:Bounds x="-10" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0gyej62_di" bpmnElement="Task_023hred"> + <dc:Bounds x="172" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0w2es8j_di" bpmnElement="SequenceFlow_0w2es8j"> + <di:waypoint x="90" y="129" /> + <di:waypoint x="148" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="74" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18l3crb_di" bpmnElement="SequenceFlow_18l3crb"> + <di:waypoint x="248" y="129" /> + <di:waypoint x="313" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lc6l7a_di" bpmnElement="Task_1dlrfiw"> + <dc:Bounds x="-10" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_14l9mlv_di" bpmnElement="Task_13sx2bp"> + <dc:Bounds x="148" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1mz0vdx_di" bpmnElement="SequenceFlow_1mz0vdx"> + <di:waypoint x="606" y="129" /> + <di:waypoint x="638" y="129" /> + <di:waypoint x="638" y="129" /> + <di:waypoint x="738" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="608" y="123" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15mvedq_di" bpmnElement="SequenceFlow_15mvedq"> + <di:waypoint x="788" y="169" /> + <di:waypoint x="788" y="218" /> + <di:waypoint x="-89" y="218" /> + <di:waypoint x="-89" y="335" /> + <di:waypoint x="-10" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="197" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1kqf4ge_di" bpmnElement="Task_0tezqd4"> + <dc:Bounds x="506" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1q6ssz7_di" bpmnElement="Task_18tomkl"> + <dc:Bounds x="738" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1cm8iwr_di" bpmnElement="ServiceTask_1cm8iwr"> + <dc:Bounds x="366" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1g5zyi6_di" bpmnElement="ScriptTask_1g5zyi6"> + <dc:Bounds x="890" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0cdulnk_di" bpmnElement="ExclusiveGateway_0cdulnk" isMarkerVisible="true"> + <dc:Bounds x="539" y="310" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="539" y="273" width="49" height="27" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dww8ye_di" bpmnElement="SequenceFlow_1dww8ye"> + <di:waypoint x="564" y="360" /> + <di:waypoint x="564" y="471" /> + <di:waypoint x="608" y="471" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="571" y="391" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ex9ov6_di" bpmnElement="SequenceFlow_1ex9ov6"> + <di:waypoint x="90" y="335" /> + <di:waypoint x="172" y="335" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kzj1j5_di" bpmnElement="SequenceFlow_1kzj1j5"> + <di:waypoint x="272" y="335" /> + <di:waypoint x="366" y="335" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0o7h0ag_di" bpmnElement="SequenceFlow_0o7h0ag"> + <di:waypoint x="466" y="335" /> + <di:waypoint x="539" y="335" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0hu4lhm_di" bpmnElement="Task_0uwlr22"> + <dc:Bounds x="721" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05m2j56_di" bpmnElement="SequenceFlow_05m2j56"> + <di:waypoint x="589" y="335" /> + <di:waypoint x="721" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="317" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05niqbf_di" bpmnElement="SequenceFlow_05niqbf"> + <di:waypoint x="708" y="471" /> + <di:waypoint x="771" y="471" /> + <di:waypoint x="771" y="375" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1cd8ujq_di" bpmnElement="SequenceFlow_1cd8ujq"> + <di:waypoint x="821" y="335" /> + <di:waypoint x="890" y="335" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0auvfvm_di" bpmnElement="SequenceFlow_0auvfvm"> + <di:waypoint x="990" y="335" /> + <di:waypoint x="1046" y="335" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0aywvn3_di" bpmnElement="Task_0bga3e8"> + <dc:Bounds x="608" y="431" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn new file mode 100644 index 0000000000..9724a9313d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn @@ -0,0 +1,277 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="CreateVFCNSResource" name="CreateVFCNSResource" isExecutable="true"> + <bpmn:startEvent id="createNS_StartEvent" name="createNS_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="Task_09nzhwk" /> + <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" /> + <bpmn:scriptTask id="Task_09nzhwk" name="Create Network Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.createNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="instantiate_NSTask" name="Instantiate Network Service" scriptFormat="groovy"> + <bpmn:incoming>createNSSuccess_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.instantiateNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Create NS Success?"> + <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming> + <bpmn:outgoing>createNSSuccess_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>createNSFailed_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="createNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="instantiate_NSTask"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceId" ) != null && execution.getVariable("nsInstanceId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="createNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="createNSFailed_EndEvent"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceId" ) == null || execution.getVariable("nsInstanceId" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="Instantiate NS Success?"> + <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming> + <bpmn:outgoing>instantiateFailed_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>instantiateSuccess_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="instantiate_NSTask" targetRef="ExclusiveGateway_1is7zys" /> + <bpmn:sequenceFlow id="instantiateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) == null || execution.getVariable("jobId" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="instantiateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) != null && execution.getVariable("jobId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="Instantiate Finished?"> + <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming> + <bpmn:outgoing>operationFinished_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>operationProcessing_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="operationFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="finishNSCreate_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) != "processing" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="operationProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) == "processing" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="ScriptTask_1890l78" /> + <bpmn:endEvent id="createNSFailed_EndEvent" name="createNSFailed"> + <bpmn:incoming>createNSFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1gkvvpn"> + <bpmn:incoming>instantiateFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1x6k78c"> + <bpmn:incoming>SequenceFlow_1lwqmo9</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy"> + <bpmn:incoming>instantiateSuccess_SequenceFlow</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.queryNSProgress(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="finishNSCreate_Task" name="Add NS Relationship" scriptFormat="groovy"> + <bpmn:incoming>operationFinished_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.addNSRelationship(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" /> + <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy"> + <bpmn:incoming>operationProcessing_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new CreateVFCNSResource() +dcsi.timeDelay(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" /> + <bpmn:scriptTask id="ScriptTask_1890l78" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lwqmo9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new CreateVFCNSResource() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1lwqmo9" sourceRef="ScriptTask_1890l78" targetRef="EndEvent_1x6k78c" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVFCNSResource"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent"> + <dc:Bounds x="175" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="152" y="147" width="83" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint xsi:type="dc:Point" x="211" y="129" /> + <di:waypoint xsi:type="dc:Point" x="251" y="129" /> + <di:waypoint xsi:type="dc:Point" x="251" y="129" /> + <di:waypoint xsi:type="dc:Point" x="293" y="129" /> + <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 xsi:type="dc:Point" x="393" y="129" /> + <di:waypoint xsi:type="dc:Point" x="479" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="436" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h"> + <di:waypoint xsi:type="dc:Point" x="579" y="129" /> + <di:waypoint xsi:type="dc:Point" x="683" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="631" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk"> + <dc:Bounds x="479" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="293" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask"> + <dc:Bounds x="839" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true"> + <dc:Bounds x="683" y="104" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685" y="158" width="52" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rt03zl_di" bpmnElement="createNSSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="733" y="129" /> + <di:waypoint xsi:type="dc:Point" x="839" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777" y="108" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="createNSFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="708" y="104" /> + <di:waypoint xsi:type="dc:Point" x="708" y="33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="63" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true"> + <dc:Bounds x="1034" y="105" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1029" y="159" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t"> + <di:waypoint xsi:type="dc:Point" x="939" y="129" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="130" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986.5" y="108.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="instantiateFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="105" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1068" y="63" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="instantiateSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="155" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="271" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1066" y="207" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true"> + <dc:Bounds x="1034" y="570" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1038" y="624" width="50" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="operationFinished_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1034" y="595" /> + <di:waypoint xsi:type="dc:Point" x="902" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="929.1428571428571" y="574" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="operationProcessing_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1084" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1131" y="607" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g"> + <di:waypoint xsi:type="dc:Point" x="802" y="595" /> + <di:waypoint xsi:type="dc:Point" x="690" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701" y="574" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="createNSFailed_EndEvent"> + <dc:Bounds x="690" y="-3" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="37" width="75" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn"> + <dc:Bounds x="1041" y="-3" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1014" y="37" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="484" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412" y="617" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task"> + <dc:Bounds x="1009" y="271" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task"> + <dc:Bounds x="802" y="555" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p"> + <di:waypoint xsi:type="dc:Point" x="1059" y="351" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="454.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task"> + <dc:Bounds x="1162" y="406" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj"> + <di:waypoint xsi:type="dc:Point" x="1212" y="406" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="311" /> + <di:waypoint xsi:type="dc:Point" x="1109" y="311" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1227" y="352.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1890l78_di" bpmnElement="ScriptTask_1890l78"> + <dc:Bounds x="590" y="555" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lwqmo9_di" bpmnElement="SequenceFlow_1lwqmo9"> + <di:waypoint xsi:type="dc:Point" x="590" y="595" /> + <di:waypoint xsi:type="dc:Point" x="520" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="555" y="573" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn new file mode 100644 index 0000000000..9ea6a9b5c4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn @@ -0,0 +1,1539 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateVcpeResCustService" name="CreateVcpeResCustService" isExecutable="true"> + <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" /> + <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST"> + <bpmn2:outgoing>SequenceFlow_1eu60rt</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process & Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> + <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="CVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("CreateVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVCPE_EndEvent" /> + <bpmn2:endEvent id="CreateVCPE_EndEvent" name="End"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" /> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess"> + <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call Create ServiceInstance " calledElement="DoCreateServiceInstance"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="rollbackData" target="DCRESI_rollbackData" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="bpmnRequest" target="requestJson" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0j6sjye</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ky2sv9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovCPE-RESCUST"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vCPE-RESCUST" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler" triggeredByEvent="true"> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js"> + <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx"> + <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="is AR_TXC Ok?" default="SequenceFlow_19mxskt"> + <bpmn2:incoming>SequenceFlow_0t3mtod</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1sl79hn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CVRCS_falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_04xute7"> + <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" /> + <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" /> + <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_05indeh" /> + <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback Service " calledElement="DoCreateServiceInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="DCRESI_rollbackData" target="rollbackData" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rolledBack" target="DCRESI_rolledBack" /> + <camunda:out source="rollbackError" target="DCRESI_rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1a7e8l1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso"> + <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" /> + <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq"> + <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_17cz98f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1a7e8l1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" /> + <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka"> + <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1mbymcu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_00by7l7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lv5ld6</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ftzjjm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0dvsqpp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06gq6em" name="is AR_BRG Ok?" default="SequenceFlow_0ya1cr3"> + <bpmn2:incoming>SequenceFlow_12dakwh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0orpdrl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ya1cr3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="CallActivity_1bpuf2p" name="DoRollback BRG Allotted Resources " calledElement="DoCreateAllottedResourceBRGRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCARBRG_rollbackData" target="rollbackData" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCARBRG_rolledBack" /> + <camunda:out source="rollbackError" target="DCARBRG_rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0orpdrl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1t3cnnx</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:inclusiveGateway id="InclusiveGateway_131ozdf"> + <bpmn2:incoming>SequenceFlow_0ya1cr3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1sim44y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_027lz43</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0orpdrl" name="Yes" sourceRef="ExclusiveGateway_06gq6em" targetRef="CallActivity_1bpuf2p"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARBRG_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1t3cnnx" sourceRef="CallActivity_1bpuf2p" targetRef="ExclusiveGateway_1mjdcct" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ya1cr3" name="No" sourceRef="ExclusiveGateway_06gq6em" targetRef="InclusiveGateway_131ozdf" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_14tl857" name="is VNF Ok?" default="SequenceFlow_1kpdu1j"> + <bpmn2:incoming>SequenceFlow_027lz43</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kpdu1j</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_007p8k3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:inclusiveGateway id="InclusiveGateway_142br6v"> + <bpmn2:incoming>SequenceFlow_1kpdu1j</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1quvahv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t3mtod</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1kpdu1j" name="No" sourceRef="ExclusiveGateway_14tl857" targetRef="InclusiveGateway_142br6v" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1mjdcct" name="Rollback success?" default="SequenceFlow_0dr2fem"> + <bpmn2:incoming>SequenceFlow_1t3cnnx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sim44y</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dr2fem</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1sim44y" name="Yes" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_131ozdf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARBRG_rolledBack") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dr2fem" name="No" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_1xenadu" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_05dg1m1" name="Rollback success?" default="SequenceFlow_1mbymcu"> + <bpmn2:incoming>SequenceFlow_1mpsdaj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1quvahv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1mbymcu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1quvahv" name="Yes" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_142br6v"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCVAM_rolledBack") ==true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1mbymcu" name="No" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y7gtd9" name="rollback failed?" default="SequenceFlow_12dakwh"> + <bpmn2:incoming>SequenceFlow_0ftzjjm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12dakwh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_09nn9a9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ftzjjm" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_0y7gtd9" /> + <bpmn2:sequenceFlow id="SequenceFlow_12dakwh" name="No" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="ExclusiveGateway_06gq6em" /> + <bpmn2:inclusiveGateway id="InclusiveGateway_1xenadu"> + <bpmn2:incoming>SequenceFlow_1lv5ld6</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09nn9a9</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dr2fem</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0dvsqpp</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1lv5ld6" sourceRef="InclusiveGateway_0m9f5ka" targetRef="InclusiveGateway_1xenadu" /> + <bpmn2:sequenceFlow id="SequenceFlow_0dvsqpp" sourceRef="InclusiveGateway_1xenadu" targetRef="ScriptTask_0wyub4x" /> + <bpmn2:sequenceFlow id="SequenceFlow_09nn9a9" name="Yes" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="InclusiveGateway_1xenadu"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rolledBack") != null && execution.getVariable("rolledBack") == false}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_027lz43" sourceRef="InclusiveGateway_131ozdf" targetRef="ExclusiveGateway_14tl857" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t3mtod" sourceRef="InclusiveGateway_142br6v" targetRef="ExclusiveGateway_1kvn1pz" /> + <bpmn2:callActivity id="CallActivity_071yaf8" name="DoRollback TXC Allotted Resources " calledElement="DoCreateAllottedResourceTXCRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCARTXC_rollbackData" target="rollbackData" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCARTXC_rolledBack" /> + <camunda:out source="rollbackError" target="DCARTXC_rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1sl79hn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ne9n0g</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1sl79hn" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="CallActivity_071yaf8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARTXC_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y158bb" name="Rollback success?" default="SequenceFlow_00by7l7"> + <bpmn2:incoming>SequenceFlow_0ne9n0g</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00by7l7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_17cz98f</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ne9n0g" sourceRef="CallActivity_071yaf8" targetRef="ExclusiveGateway_0y158bb" /> + <bpmn2:sequenceFlow id="SequenceFlow_1a7e8l1" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="DoRollbackService_CallActivity"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_00by7l7" name="No" sourceRef="ExclusiveGateway_0y158bb" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_17cz98f" name="Yes" sourceRef="ExclusiveGateway_0y158bb" targetRef="ExclusiveGateway_05indeh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARTXC_rolledBack") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="CallActivity_1cl4iu4" name="DoRollback VNF and Modules " calledElement="DoCreateVnfAndModulesRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCVAM_rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="DCVAM_rolledBack" /> + <camunda:out source="rollbackError" target="DCVAM_rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_007p8k3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mpsdaj</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1mpsdaj" sourceRef="CallActivity_1cl4iu4" targetRef="ExclusiveGateway_05dg1m1" /> + <bpmn2:sequenceFlow id="SequenceFlow_007p8k3" name="Yes" sourceRef="ExclusiveGateway_14tl857" targetRef="CallActivity_1cl4iu4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAM_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + </bpmn2:subProcess> + <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare Create Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15odbkz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareCreateServiceInstance(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR"> + <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing> + <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartService"> + <bpmn2:incoming>SequenceFlow_1jbuf1t</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" /> + <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.db.endpoint", execution)} +]]></camunda:inputParameter> + <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CVRCS_setUpdateDbInstancePayload")}]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + </camunda:inputOutput> + <camunda:connectorId>soap-http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sjpja4</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="Post Process Create Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" /> + <bpmn2:callActivity id="DecomposeService" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn2: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" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_00h6hmd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17g05fd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareDecomposeService(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" /> + <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" /> + <bpmn2:scriptTask id="ScriptTask_0vf9bei" name="Prepare to create Allotted Resources TXC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0x9pjgm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kgaq0j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareCreateAllottedResourceTXC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_110rm9l" name="CreateAllottedResourcesTXC"> + <bpmn2:outgoing>SequenceFlow_0x9pjgm</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0x9pjgm" sourceRef="IntermediateCatchEvent_110rm9l" targetRef="ScriptTask_0vf9bei" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1oudh6l" name="Create TXC AR?" default="SequenceFlow_0ofjahh"> + <bpmn2:incoming>SequenceFlow_1kgaq0j</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ofjahh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16qob4p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_074qh5g"> + <bpmn2:incoming>SequenceFlow_0ofjahh</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1cgpklo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0o6tf9p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ofjahh" name="No" sourceRef="ExclusiveGateway_1oudh6l" targetRef="ExclusiveGateway_074qh5g" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kgaq0j" sourceRef="ScriptTask_0vf9bei" targetRef="ExclusiveGateway_1oudh6l" /> + <bpmn2:sequenceFlow id="SequenceFlow_16qob4p" name="Yes" sourceRef="ExclusiveGateway_1oudh6l" targetRef="CallActivity_1ymzucb"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createTXCAR") != null && execution.getVariable("createTXCAR") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1i1nwfx" name="StartService"> + <bpmn2:outgoing>SequenceFlow_15odbkz</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC"> + <bpmn2:incoming>SequenceFlow_1db0ri1</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" /> + <bpmn2:callActivity id="Task_1l0uvof" name="Call Homing Service" camunda:modelerTemplate="homingBlock" calledElement="Homing"> + <bpmn2:extensionElements> + <camunda:in source="true" target="isDebugLogEnabled" /> + <camunda:in source="null" target="timeout" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:in source="subscriberInfo" target="subscriberInfo" /> + <camunda:in source="homingService" target="homingService" /> + <camunda:in source="customerLocation" target="customerLocation" /> + <camunda:in source="cloudOwner" target="cloudOwner" /> + <camunda:in source="cloudRegionId" target="cloudRegionId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="homingModelIds" target="homingModelIds" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11efpvh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jbuf1t</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1jbuf1t" sourceRef="Task_1l0uvof" targetRef="IntermediateThrowEvent_0prlju0" /> + <bpmn2:sequenceFlow id="SequenceFlow_17g05fd" sourceRef="DecomposeService" targetRef="ScriptTask_0lpv2da" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17pzn7m" name="CreateAllottedResourcesBRG"> + <bpmn2:outgoing>SequenceFlow_15vce9o</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess"> + <bpmn2:incoming>SequenceFlow_0hwsm6n</bpmn2:incoming> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1xwfgxs" name="Create BRG AR?" default="SequenceFlow_0loks1u"> + <bpmn2:incoming>SequenceFlow_0yecpl2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0loks1u</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0b5ztoe</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0jqgskx"> + <bpmn2:incoming>SequenceFlow_0loks1u</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0e9e6fo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0hwsm6n</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0hwsm6n" sourceRef="ExclusiveGateway_0jqgskx" targetRef="IntermediateThrowEvent_0lt5ltv" /> + <bpmn2:sequenceFlow id="SequenceFlow_0loks1u" name="No" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="ExclusiveGateway_0jqgskx" /> + <bpmn2:sequenceFlow id="SequenceFlow_0b5ztoe" name="Yes" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="CallActivity_0xt1l8t"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createBRGAR") != null && execution.getVariable("createBRGAR") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_05epj75" name="Prepare to create Allotted Resources BRG" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15vce9o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yecpl2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareCreateAllottedResourceBRG(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15vce9o" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="ScriptTask_05epj75" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yecpl2" sourceRef="ScriptTask_05epj75" targetRef="ExclusiveGateway_1xwfgxs" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09vobbc" name="GoToCreateVG"> + <bpmn2:incoming>SequenceFlow_0o6tf9p</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateVG" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0o6tf9p" sourceRef="ExclusiveGateway_074qh5g" targetRef="IntermediateThrowEvent_09vobbc" /> + <bpmn2:callActivity id="CallActivity_1els13v" name="DoCreate VNF and Modules " calledElement="DoCreateVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rollbackData" target="DCVAM_rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="vnfId" target="vnfId" /> + <camunda:out source="vnfName" target="vnfName" /> + <camunda:out source="vnfOutputParams" target="vnfOutputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0n1k77c" name="Prepare to Create VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0p75l97</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ws7fjn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.prepareVnfAndModulesCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1xsowxp" name="GoToCreateAllottedResourcesBRG"> + <bpmn2:incoming>SequenceFlow_1ufio7c</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_19a50jz" name="CreateVG"> + <bpmn2:outgoing>SequenceFlow_0aza7xq</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateVG" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0yae9sb" name="Create VNF?" default="SequenceFlow_13iuk3s"> + <bpmn2:incoming>SequenceFlow_0aza7xq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0p75l97</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_13iuk3s</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1hlbkue"> + <bpmn2:incoming>SequenceFlow_13iuk3s</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0k5vcuu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ufio7c</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ws7fjn" sourceRef="ScriptTask_0n1k77c" targetRef="CallActivity_1els13v" /> + <bpmn2:sequenceFlow id="SequenceFlow_1mkdhw9" name="in 1702 scope only one VNF will be created - if needed" sourceRef="CallActivity_1els13v" targetRef="ScriptTask_18w0jud"> + <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0p75l97" name="Yes" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ScriptTask_0n1k77c"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVRCS_VNFsCount") >0}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ufio7c" sourceRef="ExclusiveGateway_1hlbkue" targetRef="IntermediateThrowEvent_1xsowxp" /> + <bpmn2:sequenceFlow id="SequenceFlow_0aza7xq" sourceRef="IntermediateCatchEvent_19a50jz" targetRef="ExclusiveGateway_0yae9sb" /> + <bpmn2:sequenceFlow id="SequenceFlow_13iuk3s" name="No" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ExclusiveGateway_1hlbkue" /> + <bpmn2:callActivity id="CallActivity_1ymzucb" name="Call Create TXC Allotted Resource " calledElement="DoCreateAllottedResourceTXC"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="failExists" target="failExists" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="parentServiceInstanceIdTXC" target="parentServiceInstanceId" /> + <camunda:in source="serviceChainServiceInstanceId" target="serviceChainServiceInstanceId" /> + <camunda:in source="allottedResourceIdTXC" target="allottedResourceId" /> + <camunda:in source="allottedResourceModelInfoTXC" target="allottedResourceModelInfo" /> + <camunda:in source="allottedResourceRoleTXC" target="allottedResourceRole" /> + <camunda:out source="rollbackData" target="DCARTXC_rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="allottedResourceId" target="DCARTXC_allottedResourceId" /> + <camunda:out source="vni" target="vni" /> + <camunda:out source="vgmuxBearerIP" target="vgmuxBearerIP" /> + <camunda:out source="vgmuxLanIP" target="vgmuxLanIP" /> + <camunda:in source="allottedResourceTypeTXC" target="allottedResourceType" /> + <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" /> + <camunda:in source="globalCustomerId" target="globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16qob4p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cgpklo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1cgpklo" sourceRef="CallActivity_1ymzucb" targetRef="ExclusiveGateway_074qh5g" /> + <bpmn2:scriptTask id="ScriptTask_0lpv2da" name="PostProcess Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17g05fd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11efpvh</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.processDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11efpvh" sourceRef="ScriptTask_0lpv2da" targetRef="Task_1l0uvof" /> + <bpmn2:scriptTask id="ScriptTask_18w0jud" name="Post Process Create VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1mkdhw9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k5vcuu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.validateVnfCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0k5vcuu" sourceRef="ScriptTask_18w0jud" targetRef="ExclusiveGateway_1hlbkue" /> + <bpmn2:callActivity id="CallActivity_0xt1l8t" name="Call Create BRG Allotted Resource " calledElement="DoCreateAllottedResourceBRG"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="failExists" target="failExists" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="parentServiceInstanceIdBRG" target="parentServiceInstanceId" /> + <camunda:in source="allottedResourceIdBRG" target="allottedResourceId" /> + <camunda:in source="allottedResourceModelInfoBRG" target="allottedResourceModelInfo" /> + <camunda:in source="allottedResourceRoleBRG" target="allottedResourceRole" /> + <camunda:out source="rollbackData" target="DCARBRG_rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="allottedResourceId" target="DCARBRG_allottedResourceId" /> + <camunda:out source="allottedResourceName" target="DCARBRG_allottedResourceName" /> + <camunda:in source="allottedResourceTypeBRG" target="allottedResourceType" /> + <camunda:in source="vni" target="vni" /> + <camunda:in source="vgmuxBearerIP" target="vgmuxBearerIP" /> + <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="globalCustomerId" target="globalCustomerId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1x88t9v" name="Await AAI Distribution "> + <bpmn2:incoming>SequenceFlow_0sjpja4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1db0ri1</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${aaiDistDelay}</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0sjpja4" sourceRef="updateInfraRequest" targetRef="IntermediateCatchEvent_1x88t9v" /> + <bpmn2:sequenceFlow id="SequenceFlow_1db0ri1" sourceRef="IntermediateCatchEvent_1x88t9v" targetRef="IntermediateThrowEvent_1as6hoa" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVcpeResCustService"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent"> + <dc:Bounds x="87" y="215" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="80" y="256" width="51" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="276" y="193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="123" y="233" /> + <di:waypoint xsi:type="dc:Point" x="276" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="165" y="233" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> + <dc:Bounds x="763" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> + <dc:Bounds x="490" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="376" y="233" /> + <di:waypoint xsi:type="dc:Point" x="467" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="265" y="194" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> + <dc:Bounds x="467" y="193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> + <di:waypoint xsi:type="dc:Point" x="590" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="763" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVCPE_EndEvent"> + <dc:Bounds x="1262" y="1452" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1269" y="1493" width="21" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337"> + <di:waypoint xsi:type="dc:Point" x="863" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="1471" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="967" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="1257" y="1702" width="409" height="232" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="1325" y="1807" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1343" y="1848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="1400" y="1785" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="1553" y="1807" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1571" y="1848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="1361" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1400" y="1825" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1389" y="1825" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="1500" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1533" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1533" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1553" y="1825" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1548" y="1825" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity"> + <dc:Bounds x="456" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="567" y="233" /> + <di:waypoint xsi:type="dc:Point" x="719" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="643" y="218" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2"> + <dc:Bounds x="1071" y="1431" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177"> + <di:waypoint xsi:type="dc:Point" x="1171" y="1470" /> + <di:waypoint xsi:type="dc:Point" x="1262" y="1470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1217" y="1455" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3"> + <dc:Bounds x="87" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="80" y="406" width="50" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4"> + <dc:Bounds x="60" y="1454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="1490" width="78" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2"> + <dc:Bounds x="719" y="215" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="256" width="79" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true"> + <dc:Bounds x="-266" y="1649" width="1482" height="1528" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true"> + <dc:Bounds x="50" y="2971" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="38" y="3031" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk"> + <dc:Bounds x="-63" y="2979" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-69" y="3020" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true"> + <dc:Bounds x="50" y="2888" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-15" y="2903" width="46" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true"> + <dc:Bounds x="177" y="1821" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="110" y="1815" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa"> + <dc:Bounds x="1023" y="2945" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7"> + <dc:Bounds x="1160" y="2967" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1133" y="3008" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3"> + <dc:Bounds x="891" y="2945" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl"> + <di:waypoint xsi:type="dc:Point" x="75" y="2971" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2938" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="81" y="2958" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js"> + <di:waypoint xsi:type="dc:Point" x="100" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2938" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="140" y="3001" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu"> + <di:waypoint xsi:type="dc:Point" x="100" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="405" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="405" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="709" y="2913" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="419" y="2917" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx"> + <di:waypoint xsi:type="dc:Point" x="75" y="2888" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2866" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="86" y="2871" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt"> + <di:waypoint xsi:type="dc:Point" x="202" y="1821" /> + <di:waypoint xsi:type="dc:Point" x="202" y="1725" /> + <di:waypoint xsi:type="dc:Point" x="681" y="1725" /> + <di:waypoint xsi:type="dc:Point" x="681" y="1941" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="392" y="1704" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask"> + <dc:Bounds x="250" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask"> + <dc:Bounds x="204" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1"> + <di:waypoint xsi:type="dc:Point" x="96" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="204" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="150" y="1447" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg"> + <di:waypoint xsi:type="dc:Point" x="304" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="447" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="490" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="376" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity"> + <dc:Bounds x="976" y="1926" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso"> + <dc:Bounds x="709" y="2888" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2943" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l"> + <di:waypoint xsi:type="dc:Point" x="1026" y="2006" /> + <di:waypoint xsi:type="dc:Point" x="1026" y="2103" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="996" y="2055" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm"> + <di:waypoint xsi:type="dc:Point" x="759" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="941" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="941" y="2945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="805" y="2898" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc"> + <di:waypoint xsi:type="dc:Point" x="991" y="2985" /> + <di:waypoint xsi:type="dc:Point" x="1023" y="2985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="962" y="2970" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8"> + <di:waypoint xsi:type="dc:Point" x="1123" y="2985" /> + <di:waypoint xsi:type="dc:Point" x="1160" y="2985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1097" y="2970" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0"> + <dc:Bounds x="1056" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1025" y="411" width="97" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye"> + <di:waypoint xsi:type="dc:Point" x="350" y="583" /> + <di:waypoint xsi:type="dc:Point" x="456" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="403" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true"> + <dc:Bounds x="656" y="1941" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="718" y="1923" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq"> + <di:waypoint xsi:type="dc:Point" x="681" y="1991" /> + <di:waypoint xsi:type="dc:Point" x="681" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2045" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest"> + <dc:Bounds x="794" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb"> + <dc:Bounds x="623" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9"> + <di:waypoint xsi:type="dc:Point" x="556" y="583" /> + <di:waypoint xsi:type="dc:Point" x="623" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej"> + <di:waypoint xsi:type="dc:Point" x="723" y="583" /> + <di:waypoint xsi:type="dc:Point" x="794" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="759" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz"> + <dc:Bounds x="25" y="2786" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q"> + <di:waypoint xsi:type="dc:Point" x="-27" y="2997" /> + <di:waypoint xsi:type="dc:Point" x="20" y="2997" /> + <di:waypoint xsi:type="dc:Point" x="20" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="50" y="2996" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-56" y="2998" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka"> + <dc:Bounds x="1001" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="981" y="2158" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x"> + <dc:Bounds x="684" y="2786" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0"> + <di:waypoint xsi:type="dc:Point" x="734" y="2866" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2888" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="704" y="2877" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService"> + <dc:Bounds x="467" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu"> + <dc:Bounds x="276" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt"> + <di:waypoint xsi:type="dc:Point" x="123" y="388" /> + <di:waypoint xsi:type="dc:Point" x="276" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="200" y="373" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd"> + <di:waypoint xsi:type="dc:Point" x="376" y="388" /> + <di:waypoint xsi:type="dc:Point" x="467" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="422" y="373" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0vf9bei_di" bpmnElement="ScriptTask_0vf9bei"> + <dc:Bounds x="184" y="801" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_110rm9l_di" bpmnElement="IntermediateCatchEvent_110rm9l"> + <dc:Bounds x="83" y="823" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="859" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0x9pjgm_di" bpmnElement="SequenceFlow_0x9pjgm"> + <di:waypoint xsi:type="dc:Point" x="119" y="841" /> + <di:waypoint xsi:type="dc:Point" x="184" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="826" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true"> + <dc:Bounds x="50" y="2603" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-37" y="2618" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p"> + <dc:Bounds x="152" y="2518" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf"> + <dc:Bounds x="50" y="2431" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="30" y="2486" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl"> + <di:waypoint xsi:type="dc:Point" x="100" y="2628" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2628" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2598" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="141" y="2613" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx"> + <di:waypoint xsi:type="dc:Point" x="202" y="2518" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="2500" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3"> + <di:waypoint xsi:type="dc:Point" x="75" y="2603" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2542" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2542" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="88" y="2508" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1oudh6l_di" bpmnElement="ExclusiveGateway_1oudh6l" isMarkerVisible="true"> + <dc:Bounds x="332" y="816" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="399" y="829" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_074qh5g_di" bpmnElement="ExclusiveGateway_074qh5g" isMarkerVisible="true"> + <dc:Bounds x="512" y="796" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="492" y="846" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ofjahh_di" bpmnElement="SequenceFlow_0ofjahh"> + <di:waypoint xsi:type="dc:Point" x="357" y="866" /> + <di:waypoint xsi:type="dc:Point" x="357" y="901" /> + <di:waypoint xsi:type="dc:Point" x="537" y="901" /> + <di:waypoint xsi:type="dc:Point" x="537" y="846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="441" y="886" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kgaq0j_di" bpmnElement="SequenceFlow_1kgaq0j"> + <di:waypoint xsi:type="dc:Point" x="284" y="841" /> + <di:waypoint xsi:type="dc:Point" x="332" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="263" y="826" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16qob4p_di" bpmnElement="SequenceFlow_16qob4p"> + <di:waypoint xsi:type="dc:Point" x="357" y="816" /> + <di:waypoint xsi:type="dc:Point" x="357" y="730" /> + <di:waypoint xsi:type="dc:Point" x="400" y="730" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="362" y="763" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true"> + <dc:Bounds x="50" y="2282" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-24" y="2297" width="57" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v"> + <dc:Bounds x="50" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="30" y="2158" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j"> + <di:waypoint xsi:type="dc:Point" x="75" y="2282" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="83" y="2218" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true"> + <dc:Bounds x="177" y="2431" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178" y="2393" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y"> + <di:waypoint xsi:type="dc:Point" x="177" y="2456" /> + <di:waypoint xsi:type="dc:Point" x="100" y="2456" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="2431" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem"> + <di:waypoint xsi:type="dc:Point" x="226" y="2457" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2457" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2695" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="316" y="2436" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true"> + <dc:Bounds x="177" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178" y="2064" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv"> + <di:waypoint xsi:type="dc:Point" x="177" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="100" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="2103" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu"> + <di:waypoint xsi:type="dc:Point" x="227" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="290" y="2097" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1i1nwfx_di" bpmnElement="IntermediateCatchEvent_1i1nwfx"> + <dc:Bounds x="87" y="565" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="72" y="601" width="65" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa"> + <dc:Bounds x="1027" y="666" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1002" y="707" width="85" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz"> + <di:waypoint xsi:type="dc:Point" x="123" y="583" /> + <di:waypoint xsi:type="dc:Point" x="250" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="187" y="558" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_07nu6s6_di" bpmnElement="Task_1l0uvof"> + <dc:Bounds x="856" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t"> + <di:waypoint xsi:type="dc:Point" x="956" y="388" /> + <di:waypoint xsi:type="dc:Point" x="1056" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="961" y="373" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd"> + <di:waypoint xsi:type="dc:Point" x="567" y="388" /> + <di:waypoint xsi:type="dc:Point" x="658" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="567.5" y="373" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true"> + <dc:Bounds x="50" y="2695" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-39" y="2708" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm"> + <di:waypoint xsi:type="dc:Point" x="75" y="2786" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="2766" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh"> + <di:waypoint xsi:type="dc:Point" x="75" y="2695" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2653" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="83" y="2666" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu"> + <dc:Bounds x="709" y="2695" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2750" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6"> + <di:waypoint xsi:type="dc:Point" x="1026" y="2153" /> + <di:waypoint xsi:type="dc:Point" x="1026" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="759" y="2720" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="996" y="2437" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp"> + <di:waypoint xsi:type="dc:Point" x="734" y="2745" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2786" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="704" y="2766" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9"> + <di:waypoint xsi:type="dc:Point" x="100" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="423" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="423" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="709" y="2720" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="144" y="2693" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43"> + <di:waypoint xsi:type="dc:Point" x="75" y="2431" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2332" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="2372" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod"> + <di:waypoint xsi:type="dc:Point" x="75" y="2103" /> + <di:waypoint xsi:type="dc:Point" x="75" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="177" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="1965" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_17pzn7m_di" bpmnElement="IntermediateCatchEvent_17pzn7m"> + <dc:Bounds x="83" y="1259" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="1295" width="80" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv"> + <dc:Bounds x="670" y="1274" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="644" y="1321" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1xwfgxs_di" bpmnElement="ExclusiveGateway_1xwfgxs" isMarkerVisible="true"> + <dc:Bounds x="312" y="1252" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="369" y="1271" width="70" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0jqgskx_di" bpmnElement="ExclusiveGateway_0jqgskx" isMarkerVisible="true"> + <dc:Bounds x="535" y="1267" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="515" y="1317" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hwsm6n_di" bpmnElement="SequenceFlow_0hwsm6n"> + <di:waypoint xsi:type="dc:Point" x="585" y="1292" /> + <di:waypoint xsi:type="dc:Point" x="628" y="1292" /> + <di:waypoint xsi:type="dc:Point" x="628" y="1292" /> + <di:waypoint xsi:type="dc:Point" x="670" y="1292" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="1292" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0loks1u_di" bpmnElement="SequenceFlow_0loks1u"> + <di:waypoint xsi:type="dc:Point" x="337" y="1302" /> + <di:waypoint xsi:type="dc:Point" x="337" y="1352" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1352" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1317" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="441" y="1337" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b5ztoe_di" bpmnElement="SequenceFlow_0b5ztoe"> + <di:waypoint xsi:type="dc:Point" x="337" y="1252" /> + <di:waypoint xsi:type="dc:Point" x="337" y="1191" /> + <di:waypoint xsi:type="dc:Point" x="395" y="1191" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="354" y="1216" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_05epj75_di" bpmnElement="ScriptTask_05epj75"> + <dc:Bounds x="184" y="1237" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15vce9o_di" bpmnElement="SequenceFlow_15vce9o"> + <di:waypoint xsi:type="dc:Point" x="119" y="1277" /> + <di:waypoint xsi:type="dc:Point" x="184" y="1277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151.5" y="1256" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yecpl2_di" bpmnElement="SequenceFlow_0yecpl2"> + <di:waypoint xsi:type="dc:Point" x="284" y="1277" /> + <di:waypoint xsi:type="dc:Point" x="312" y="1277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="298" y="1256" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_09vobbc_di" bpmnElement="IntermediateThrowEvent_09vobbc"> + <dc:Bounds x="670" y="803" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="651" y="844" width="85" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0o6tf9p_di" bpmnElement="SequenceFlow_0o6tf9p"> + <di:waypoint xsi:type="dc:Point" x="562" y="821" /> + <di:waypoint xsi:type="dc:Point" x="670" y="821" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="616" y="800" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1els13v_di" bpmnElement="CallActivity_1els13v"> + <dc:Bounds x="586" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c"> + <dc:Bounds x="413" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1xsowxp_di" bpmnElement="IntermediateThrowEvent_1xsowxp"> + <dc:Bounds x="1027" y="1031" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1001" y="1072" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_19a50jz_di" bpmnElement="IntermediateCatchEvent_19a50jz"> + <dc:Bounds x="77" y="1047" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="70" y="1083" width="48" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0yae9sb_di" bpmnElement="ExclusiveGateway_0yae9sb" isMarkerVisible="true"> + <dc:Bounds x="326" y="1040" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="1059" width="67" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1hlbkue_di" bpmnElement="ExclusiveGateway_1hlbkue" isMarkerVisible="true"> + <dc:Bounds x="892" y="1024" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="872" y="1079" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ws7fjn_di" bpmnElement="SequenceFlow_0ws7fjn"> + <di:waypoint xsi:type="dc:Point" x="513" y="982" /> + <di:waypoint xsi:type="dc:Point" x="586" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="504.5" y="961" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9"> + <di:waypoint xsi:type="dc:Point" x="686" y="982" /> + <di:waypoint xsi:type="dc:Point" x="749" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="888.7571646117599" y="923.4934735403681" width="84" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p75l97_di" bpmnElement="SequenceFlow_0p75l97"> + <di:waypoint xsi:type="dc:Point" x="351" y="1040" /> + <di:waypoint xsi:type="dc:Point" x="351" y="982" /> + <di:waypoint xsi:type="dc:Point" x="413" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="362" y="1015" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ufio7c_di" bpmnElement="SequenceFlow_1ufio7c"> + <di:waypoint xsi:type="dc:Point" x="942" y="1049" /> + <di:waypoint xsi:type="dc:Point" x="1027" y="1049" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="940.5" y="1024" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0aza7xq_di" bpmnElement="SequenceFlow_0aza7xq"> + <di:waypoint xsi:type="dc:Point" x="113" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="326" y="1065" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="175.5" y="1040" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13iuk3s_di" bpmnElement="SequenceFlow_13iuk3s"> + <di:waypoint xsi:type="dc:Point" x="351" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="351" y="1114" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1114" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1075" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="596" y="1090" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8"> + <dc:Bounds x="321" y="1806" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn"> + <di:waypoint xsi:type="dc:Point" x="227" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="256" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="256" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="321" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="1826" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true"> + <dc:Bounds x="521" y="1821" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="522" y="1782" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g"> + <di:waypoint xsi:type="dc:Point" x="421" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="521" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="1825" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1"> + <di:waypoint xsi:type="dc:Point" x="706" y="1966" /> + <di:waypoint xsi:type="dc:Point" x="976" y="1966" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="1945" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7"> + <di:waypoint xsi:type="dc:Point" x="546" y="1871" /> + <di:waypoint xsi:type="dc:Point" x="546" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="554" y="1994" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f"> + <di:waypoint xsi:type="dc:Point" x="559" y="1858" /> + <di:waypoint xsi:type="dc:Point" x="668" y="1954" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614.8182269768699" y="1888.8734385586085" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4"> + <dc:Bounds x="152" y="2193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj"> + <di:waypoint xsi:type="dc:Point" x="202" y="2193" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="2167" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3"> + <di:waypoint xsi:type="dc:Point" x="100" y="2307" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2307" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="142" y="2286" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1ymzucb_di" bpmnElement="CallActivity_1ymzucb"> + <dc:Bounds x="400" y="690" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cgpklo_di" bpmnElement="SequenceFlow_1cgpklo"> + <di:waypoint xsi:type="dc:Point" x="500" y="730" /> + <di:waypoint xsi:type="dc:Point" x="538" y="730" /> + <di:waypoint xsi:type="dc:Point" x="538" y="797" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="474" y="715" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lpv2da_di" bpmnElement="ScriptTask_0lpv2da"> + <dc:Bounds x="658" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11efpvh_di" bpmnElement="SequenceFlow_11efpvh"> + <di:waypoint xsi:type="dc:Point" x="758" y="388" /> + <di:waypoint xsi:type="dc:Point" x="856" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="807" y="367" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_18w0jud_di" bpmnElement="ScriptTask_18w0jud"> + <dc:Bounds x="749" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k5vcuu_di" bpmnElement="SequenceFlow_0k5vcuu"> + <di:waypoint xsi:type="dc:Point" x="849" y="982" /> + <di:waypoint xsi:type="dc:Point" x="917" y="982" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1024" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="961" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t"> + <dc:Bounds x="400" y="1151" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0e9e6fo_di" bpmnElement="SequenceFlow_0e9e6fo"> + <di:waypoint xsi:type="dc:Point" x="500" y="1191" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1191" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="440" y="1166" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1x88t9v_di" bpmnElement="IntermediateCatchEvent_1x88t9v"> + <dc:Bounds x="1027" y="565" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1018" y="530" width="54" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sjpja4_di" bpmnElement="SequenceFlow_0sjpja4"> + <di:waypoint xsi:type="dc:Point" x="894" y="583" /> + <di:waypoint xsi:type="dc:Point" x="1027" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="960.5" y="562" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1db0ri1_di" bpmnElement="SequenceFlow_1db0ri1"> + <di:waypoint xsi:type="dc:Point" x="1045" y="601" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="666" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1060" y="627.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn new file mode 100644 index 0000000000..06c517c12d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn @@ -0,0 +1,1443 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateVcpeResCustServiceV2" name="CreateVcpeResCustServiceV2" isExecutable="true"> + <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" /> + <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST"> + <bpmn2:outgoing>SequenceFlow_1eu60rt</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process & Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> + <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="CVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("CreateVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVCPE_EndEvent" /> + <bpmn2:endEvent id="CreateVCPE_EndEvent" name="End"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" /> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess"> + <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call Create ServiceInstance " calledElement="DoCreateServiceInstance"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="rollbackData" target="DCRESI_rollbackData" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="bpmnRequest" target="requestJson" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0j6sjye</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ky2sv9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovCPE-RESCUST"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vCPE-RESCUST" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler" triggeredByEvent="true"> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js"> + <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx"> + <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="is AR_TXC Ok?" default="SequenceFlow_19mxskt"> + <bpmn2:incoming>SequenceFlow_0t3mtod</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1sl79hn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CVRCS_falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_04xute7"> + <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" /> + <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" /> + <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_05indeh" /> + <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback Service " calledElement="DoCreateServiceInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="DCRESI_rollbackData" target="rollbackData" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rolledBack" target="DCRESI_rolledBack" /> + <camunda:out source="rollbackError" target="DCRESI_rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1a7e8l1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso"> + <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" /> + <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq"> + <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_17cz98f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1a7e8l1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" /> + <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka"> + <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1mbymcu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_00by7l7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lv5ld6</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ftzjjm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0dvsqpp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06gq6em" name="is AR_BRG Ok?" default="SequenceFlow_0ya1cr3"> + <bpmn2:incoming>SequenceFlow_12dakwh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0orpdrl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ya1cr3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="CallActivity_1bpuf2p" name="DoRollback BRG Allotted Resources " calledElement="DoCreateAllottedResourceBRGRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCARBRG_rollbackData" target="rollbackData" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCARBRG_rolledBack" /> + <camunda:out source="rollbackError" target="DCARBRG_rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0orpdrl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1t3cnnx</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:inclusiveGateway id="InclusiveGateway_131ozdf"> + <bpmn2:incoming>SequenceFlow_0ya1cr3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1sim44y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_027lz43</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0orpdrl" name="Yes" sourceRef="ExclusiveGateway_06gq6em" targetRef="CallActivity_1bpuf2p"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARBRG_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1t3cnnx" sourceRef="CallActivity_1bpuf2p" targetRef="ExclusiveGateway_1mjdcct" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ya1cr3" name="No" sourceRef="ExclusiveGateway_06gq6em" targetRef="InclusiveGateway_131ozdf" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_14tl857" name="is VNF Ok?" default="SequenceFlow_1kpdu1j"> + <bpmn2:incoming>SequenceFlow_027lz43</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kpdu1j</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_007p8k3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:inclusiveGateway id="InclusiveGateway_142br6v"> + <bpmn2:incoming>SequenceFlow_1kpdu1j</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1quvahv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t3mtod</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1kpdu1j" name="No" sourceRef="ExclusiveGateway_14tl857" targetRef="InclusiveGateway_142br6v" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1mjdcct" name="Rollback success?" default="SequenceFlow_0dr2fem"> + <bpmn2:incoming>SequenceFlow_1t3cnnx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sim44y</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dr2fem</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1sim44y" name="Yes" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_131ozdf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARBRG_rolledBack") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dr2fem" name="No" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_1xenadu" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_05dg1m1" name="Rollback success?" default="SequenceFlow_1mbymcu"> + <bpmn2:incoming>SequenceFlow_1mpsdaj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1quvahv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1mbymcu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1quvahv" name="Yes" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_142br6v"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCVAM_rolledBack") ==true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1mbymcu" name="No" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y7gtd9" name="rollback failed?" default="SequenceFlow_12dakwh"> + <bpmn2:incoming>SequenceFlow_0ftzjjm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12dakwh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_09nn9a9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ftzjjm" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_0y7gtd9" /> + <bpmn2:sequenceFlow id="SequenceFlow_12dakwh" name="No" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="ExclusiveGateway_06gq6em" /> + <bpmn2:inclusiveGateway id="InclusiveGateway_1xenadu"> + <bpmn2:incoming>SequenceFlow_1lv5ld6</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09nn9a9</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dr2fem</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0dvsqpp</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1lv5ld6" sourceRef="InclusiveGateway_0m9f5ka" targetRef="InclusiveGateway_1xenadu" /> + <bpmn2:sequenceFlow id="SequenceFlow_0dvsqpp" sourceRef="InclusiveGateway_1xenadu" targetRef="ScriptTask_0wyub4x" /> + <bpmn2:sequenceFlow id="SequenceFlow_09nn9a9" name="Yes" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="InclusiveGateway_1xenadu"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rolledBack") != null && execution.getVariable("rolledBack") == false}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_027lz43" sourceRef="InclusiveGateway_131ozdf" targetRef="ExclusiveGateway_14tl857" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t3mtod" sourceRef="InclusiveGateway_142br6v" targetRef="ExclusiveGateway_1kvn1pz" /> + <bpmn2:callActivity id="CallActivity_071yaf8" name="DoRollback TXC Allotted Resources " calledElement="DoCreateAllottedResourceTXCRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCARTXC_rollbackData" target="rollbackData" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCARTXC_rolledBack" /> + <camunda:out source="rollbackError" target="DCARTXC_rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1sl79hn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ne9n0g</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1sl79hn" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="CallActivity_071yaf8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARTXC_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y158bb" name="Rollback success?" default="SequenceFlow_00by7l7"> + <bpmn2:incoming>SequenceFlow_0ne9n0g</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00by7l7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_17cz98f</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ne9n0g" sourceRef="CallActivity_071yaf8" targetRef="ExclusiveGateway_0y158bb" /> + <bpmn2:sequenceFlow id="SequenceFlow_1a7e8l1" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="DoRollbackService_CallActivity"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_00by7l7" name="No" sourceRef="ExclusiveGateway_0y158bb" targetRef="InclusiveGateway_0m9f5ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_17cz98f" name="Yes" sourceRef="ExclusiveGateway_0y158bb" targetRef="ExclusiveGateway_05indeh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARTXC_rolledBack") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="CallActivity_1cl4iu4" name="DoRollback VNF and Modules " calledElement="DoCreateVnfAndModulesRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="DCVAM_rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="DCVAM_rolledBack" /> + <camunda:out source="rollbackError" target="DCVAM_rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_007p8k3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mpsdaj</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1mpsdaj" sourceRef="CallActivity_1cl4iu4" targetRef="ExclusiveGateway_05dg1m1" /> + <bpmn2:sequenceFlow id="SequenceFlow_007p8k3" name="Yes" sourceRef="ExclusiveGateway_14tl857" targetRef="CallActivity_1cl4iu4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAM_rollbackData") != null }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + </bpmn2:subProcess> + <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare Create Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15odbkz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareCreateServiceInstance(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR"> + <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing> + <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartService"> + <bpmn2:incoming>SequenceFlow_1jbuf1t</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" /> + <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CVRCS_setUpdateDbInstancePayload")}]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + </camunda:inputOutput> + <camunda:connectorId>soap-http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sjpja4</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="Post Process Create Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" /> + <bpmn2:callActivity id="DecomposeService" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn2: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" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_00h6hmd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17g05fd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareDecomposeService(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" /> + <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" /> + <bpmn2:scriptTask id="ScriptTask_0vf9bei" name="Prepare to create Allotted Resources TXC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0x9pjgm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kgaq0j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.prepareCreateAllottedResourceTXC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_110rm9l" name="CreateAllottedResourcesTXC"> + <bpmn2:outgoing>SequenceFlow_0x9pjgm</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0x9pjgm" sourceRef="IntermediateCatchEvent_110rm9l" targetRef="ScriptTask_0vf9bei" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1oudh6l" name="Create TXC AR?" default="SequenceFlow_0ofjahh"> + <bpmn2:incoming>SequenceFlow_1kgaq0j</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ofjahh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16qob4p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_074qh5g"> + <bpmn2:incoming>SequenceFlow_0ofjahh</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1cgpklo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0o6tf9p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ofjahh" name="No" sourceRef="ExclusiveGateway_1oudh6l" targetRef="ExclusiveGateway_074qh5g" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kgaq0j" sourceRef="ScriptTask_0vf9bei" targetRef="ExclusiveGateway_1oudh6l" /> + <bpmn2:sequenceFlow id="SequenceFlow_16qob4p" name="Yes" sourceRef="ExclusiveGateway_1oudh6l" targetRef="CallActivity_1ymzucb"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createTXCAR") != null && execution.getVariable("createTXCAR") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1i1nwfx" name="StartService"> + <bpmn2:outgoing>SequenceFlow_15odbkz</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC"> + <bpmn2:incoming>SequenceFlow_1db0ri1</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" /> + <bpmn2:callActivity id="Task_1l0uvof" name="Call Homing Service" camunda:modelerTemplate="homingBlock" calledElement="Homing"> + <bpmn2:extensionElements> + <camunda:in source="true" target="isDebugLogEnabled" /> + <camunda:in source="null" target="timeout" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:in source="subscriberInfo" target="subscriberInfo" /> + <camunda:in source="homingService" target="homingService" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11efpvh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jbuf1t</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1jbuf1t" sourceRef="Task_1l0uvof" targetRef="IntermediateThrowEvent_0prlju0" /> + <bpmn2:sequenceFlow id="SequenceFlow_17g05fd" sourceRef="DecomposeService" targetRef="ScriptTask_0lpv2da" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17pzn7m" name="CreateAllottedResourcesBRG"> + <bpmn2:outgoing>SequenceFlow_0gj4vud</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess"> + <bpmn2:incoming>SequenceFlow_0clhseq</bpmn2:incoming> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09vobbc" name="GoToCreateVG"> + <bpmn2:incoming>SequenceFlow_0o6tf9p</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateVG" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0o6tf9p" sourceRef="ExclusiveGateway_074qh5g" targetRef="IntermediateThrowEvent_09vobbc" /> + <bpmn2:callActivity id="CallActivity_1els13v" name="DoCreate VNF and Modules " calledElement="DoCreateVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rollbackData" target="DCVAM_rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="vnfId" target="vnfId" /> + <camunda:out source="vnfName" target="vnfName" /> + <camunda:out source="vnfOutputParams" target="vnfOutputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0n1k77c" name="Prepare to Create VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0p75l97</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ws7fjn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.prepareVnfAndModulesCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1xsowxp" name="GoToCreateAllottedResourcesBRG"> + <bpmn2:incoming>SequenceFlow_1ufio7c</bpmn2:incoming> + <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_19a50jz" name="CreateVG"> + <bpmn2:outgoing>SequenceFlow_0aza7xq</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="CreateVG" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0yae9sb" name="Create VNF?" default="SequenceFlow_13iuk3s"> + <bpmn2:incoming>SequenceFlow_0aza7xq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0p75l97</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_13iuk3s</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1hlbkue"> + <bpmn2:incoming>SequenceFlow_13iuk3s</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0k5vcuu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ufio7c</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ws7fjn" sourceRef="ScriptTask_0n1k77c" targetRef="CallActivity_1els13v" /> + <bpmn2:sequenceFlow id="SequenceFlow_1mkdhw9" name="in 1702 scope only one VNF will be created - if needed" sourceRef="CallActivity_1els13v" targetRef="ScriptTask_18w0jud"> + <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0p75l97" name="Yes" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ScriptTask_0n1k77c"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVRCS_VNFsCount") >0}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ufio7c" sourceRef="ExclusiveGateway_1hlbkue" targetRef="IntermediateThrowEvent_1xsowxp" /> + <bpmn2:sequenceFlow id="SequenceFlow_0aza7xq" sourceRef="IntermediateCatchEvent_19a50jz" targetRef="ExclusiveGateway_0yae9sb" /> + <bpmn2:sequenceFlow id="SequenceFlow_13iuk3s" name="No" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ExclusiveGateway_1hlbkue" /> + <bpmn2:callActivity id="CallActivity_1ymzucb" name="Call Create TXC Allotted Resource " calledElement="DoCreateAllottedResourceTXC"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="failExists" target="failExists" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="parentServiceInstanceIdTXC" target="parentServiceInstanceId" /> + <camunda:in source="serviceChainServiceInstanceId" target="serviceChainServiceInstanceId" /> + <camunda:in source="allottedResourceIdTXC" target="allottedResourceId" /> + <camunda:in source="allottedResourceModelInfoTXC" target="allottedResourceModelInfo" /> + <camunda:in source="allottedResourceRoleTXC" target="allottedResourceRole" /> + <camunda:out source="rollbackData" target="DCARTXC_rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="allottedResourceId" target="DCARTXC_allottedResourceId" /> + <camunda:out source="vni" target="vni" /> + <camunda:out source="vgmuxBearerIP" target="vgmuxBearerIP" /> + <camunda:out source="vgmuxLanIP" target="vgmuxLanIP" /> + <camunda:in source="allottedResourceTypeTXC" target="allottedResourceType" /> + <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" /> + <camunda:in source="globalCustomerId" target="globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16qob4p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cgpklo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1cgpklo" sourceRef="CallActivity_1ymzucb" targetRef="ExclusiveGateway_074qh5g" /> + <bpmn2:scriptTask id="ScriptTask_0lpv2da" name="PostProcess Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17g05fd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11efpvh</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService = new CreateVcpeResCustService() +CreateVcpeResCustService.processDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11efpvh" sourceRef="ScriptTask_0lpv2da" targetRef="Task_1l0uvof" /> + <bpmn2:scriptTask id="ScriptTask_18w0jud" name="Post Process Create VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1mkdhw9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k5vcuu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def CreateVcpeResCustService= new CreateVcpeResCustService() +CreateVcpeResCustService.validateVnfCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0k5vcuu" sourceRef="ScriptTask_18w0jud" targetRef="ExclusiveGateway_1hlbkue" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1x88t9v" name="Await AAI Distribution "> + <bpmn2:incoming>SequenceFlow_0sjpja4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1db0ri1</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${aaiDistDelay}</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0sjpja4" sourceRef="updateInfraRequest" targetRef="IntermediateCatchEvent_1x88t9v" /> + <bpmn2:sequenceFlow id="SequenceFlow_1db0ri1" sourceRef="IntermediateCatchEvent_1x88t9v" targetRef="IntermediateThrowEvent_1as6hoa" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gj4vud" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="Task_14l19kv" /> + <bpmn2:sequenceFlow id="SequenceFlow_0clhseq" sourceRef="Task_14l19kv" targetRef="IntermediateThrowEvent_0lt5ltv" /> + <bpmn2:callActivity id="Task_14l19kv" name="Create And Activate Pnf Resource" calledElement="CreateAndActivatePnfResource"> + <bpmn2:extensionElements> + <camunda:in source="timeoutForPnfEntryNotification" target="timeoutForPnfEntryNotification" /> + <camunda:in source="correlationId" target="correlationId" /> + <camunda:in businessKey="#{execution.processBusinessKey}" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0gj4vud</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0clhseq</bpmn2:outgoing> + </bpmn2:callActivity> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVcpeResCustServiceV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent"> + <dc:Bounds x="87" y="215" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="80" y="256" width="51" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="276" y="193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="123" y="233" /> + <di:waypoint xsi:type="dc:Point" x="276" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="165" y="233" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> + <dc:Bounds x="763" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> + <dc:Bounds x="490" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="376" y="233" /> + <di:waypoint xsi:type="dc:Point" x="467" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="265" y="194" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> + <dc:Bounds x="467" y="193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> + <di:waypoint xsi:type="dc:Point" x="590" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="763" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVCPE_EndEvent"> + <dc:Bounds x="1262" y="1452" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1269" y="1493" width="21" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337"> + <di:waypoint xsi:type="dc:Point" x="863" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="1471" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="967" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="1257" y="1702" width="409" height="232" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="1325" y="1807" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1343" y="1848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="1400" y="1785" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="1553" y="1807" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1571" y="1848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="1361" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1400" y="1825" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1389" y="1825" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="1500" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1533" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1533" y="1825" /> + <di:waypoint xsi:type="dc:Point" x="1553" y="1825" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1548" y="1825" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity"> + <dc:Bounds x="456" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="567" y="233" /> + <di:waypoint xsi:type="dc:Point" x="719" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="643" y="218" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2"> + <dc:Bounds x="1071" y="1431" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177"> + <di:waypoint xsi:type="dc:Point" x="1171" y="1470" /> + <di:waypoint xsi:type="dc:Point" x="1262" y="1470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1217" y="1455" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3"> + <dc:Bounds x="87" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="80" y="406" width="50" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4"> + <dc:Bounds x="60" y="1454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="1490" width="78" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2"> + <dc:Bounds x="719" y="215" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="256" width="79" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true"> + <dc:Bounds x="-266" y="1649" width="1482" height="1528" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true"> + <dc:Bounds x="50" y="2971" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="38" y="3031" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk"> + <dc:Bounds x="-63" y="2979" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-69" y="3020" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true"> + <dc:Bounds x="50" y="2888" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-15" y="2903" width="46" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true"> + <dc:Bounds x="177" y="1821" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="110" y="1815" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa"> + <dc:Bounds x="1023" y="2945" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7"> + <dc:Bounds x="1160" y="2967" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1133" y="3008" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3"> + <dc:Bounds x="891" y="2945" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl"> + <di:waypoint xsi:type="dc:Point" x="75" y="2971" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2938" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="81" y="2958" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js"> + <di:waypoint xsi:type="dc:Point" x="100" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2938" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="140" y="3001" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu"> + <di:waypoint xsi:type="dc:Point" x="100" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="405" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="405" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="709" y="2913" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="419" y="2917" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx"> + <di:waypoint xsi:type="dc:Point" x="75" y="2888" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2866" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="86" y="2871" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt"> + <di:waypoint xsi:type="dc:Point" x="202" y="1821" /> + <di:waypoint xsi:type="dc:Point" x="202" y="1725" /> + <di:waypoint xsi:type="dc:Point" x="681" y="1725" /> + <di:waypoint xsi:type="dc:Point" x="681" y="1941" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="392" y="1704" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask"> + <dc:Bounds x="250" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask"> + <dc:Bounds x="204" y="1432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1"> + <di:waypoint xsi:type="dc:Point" x="96" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="204" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="150" y="1447" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg"> + <di:waypoint xsi:type="dc:Point" x="304" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="447" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="490" y="1472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="376" y="1457" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity"> + <dc:Bounds x="976" y="1926" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso"> + <dc:Bounds x="709" y="2888" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2943" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l"> + <di:waypoint xsi:type="dc:Point" x="1026" y="2006" /> + <di:waypoint xsi:type="dc:Point" x="1026" y="2103" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="996" y="2055" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm"> + <di:waypoint xsi:type="dc:Point" x="759" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="941" y="2913" /> + <di:waypoint xsi:type="dc:Point" x="941" y="2945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="805" y="2898" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc"> + <di:waypoint xsi:type="dc:Point" x="991" y="2985" /> + <di:waypoint xsi:type="dc:Point" x="1023" y="2985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="962" y="2970" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8"> + <di:waypoint xsi:type="dc:Point" x="1123" y="2985" /> + <di:waypoint xsi:type="dc:Point" x="1160" y="2985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1097" y="2970" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0"> + <dc:Bounds x="1056" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1025" y="411" width="97" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye"> + <di:waypoint xsi:type="dc:Point" x="350" y="583" /> + <di:waypoint xsi:type="dc:Point" x="456" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="403" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true"> + <dc:Bounds x="656" y="1941" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="718" y="1923" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq"> + <di:waypoint xsi:type="dc:Point" x="681" y="1991" /> + <di:waypoint xsi:type="dc:Point" x="681" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2045" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest"> + <dc:Bounds x="794" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb"> + <dc:Bounds x="623" y="543" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9"> + <di:waypoint xsi:type="dc:Point" x="556" y="583" /> + <di:waypoint xsi:type="dc:Point" x="623" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej"> + <di:waypoint xsi:type="dc:Point" x="723" y="583" /> + <di:waypoint xsi:type="dc:Point" x="794" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="759" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz"> + <dc:Bounds x="25" y="2786" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q"> + <di:waypoint xsi:type="dc:Point" x="-27" y="2997" /> + <di:waypoint xsi:type="dc:Point" x="20" y="2997" /> + <di:waypoint xsi:type="dc:Point" x="20" y="2996" /> + <di:waypoint xsi:type="dc:Point" x="50" y="2996" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-56" y="2998" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka"> + <dc:Bounds x="1001" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="981" y="2158" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x"> + <dc:Bounds x="684" y="2786" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0"> + <di:waypoint xsi:type="dc:Point" x="734" y="2866" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2888" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="704" y="2877" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService"> + <dc:Bounds x="467" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu"> + <dc:Bounds x="276" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt"> + <di:waypoint xsi:type="dc:Point" x="123" y="388" /> + <di:waypoint xsi:type="dc:Point" x="276" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="200" y="373" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd"> + <di:waypoint xsi:type="dc:Point" x="376" y="388" /> + <di:waypoint xsi:type="dc:Point" x="467" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="422" y="373" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0vf9bei_di" bpmnElement="ScriptTask_0vf9bei"> + <dc:Bounds x="184" y="801" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_110rm9l_di" bpmnElement="IntermediateCatchEvent_110rm9l"> + <dc:Bounds x="83" y="823" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="859" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0x9pjgm_di" bpmnElement="SequenceFlow_0x9pjgm"> + <di:waypoint xsi:type="dc:Point" x="119" y="841" /> + <di:waypoint xsi:type="dc:Point" x="184" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="826" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true"> + <dc:Bounds x="50" y="2603" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-37" y="2618" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p"> + <dc:Bounds x="152" y="2518" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf"> + <dc:Bounds x="50" y="2431" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="30" y="2486" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl"> + <di:waypoint xsi:type="dc:Point" x="100" y="2628" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2628" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2598" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="141" y="2613" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx"> + <di:waypoint xsi:type="dc:Point" x="202" y="2518" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="2500" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3"> + <di:waypoint xsi:type="dc:Point" x="75" y="2603" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2542" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2542" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="88" y="2508" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1oudh6l_di" bpmnElement="ExclusiveGateway_1oudh6l" isMarkerVisible="true"> + <dc:Bounds x="332" y="816" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="399" y="829" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_074qh5g_di" bpmnElement="ExclusiveGateway_074qh5g" isMarkerVisible="true"> + <dc:Bounds x="512" y="796" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="492" y="846" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ofjahh_di" bpmnElement="SequenceFlow_0ofjahh"> + <di:waypoint xsi:type="dc:Point" x="357" y="866" /> + <di:waypoint xsi:type="dc:Point" x="357" y="901" /> + <di:waypoint xsi:type="dc:Point" x="537" y="901" /> + <di:waypoint xsi:type="dc:Point" x="537" y="846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="441" y="886" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kgaq0j_di" bpmnElement="SequenceFlow_1kgaq0j"> + <di:waypoint xsi:type="dc:Point" x="284" y="841" /> + <di:waypoint xsi:type="dc:Point" x="332" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="263" y="826" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16qob4p_di" bpmnElement="SequenceFlow_16qob4p"> + <di:waypoint xsi:type="dc:Point" x="357" y="816" /> + <di:waypoint xsi:type="dc:Point" x="357" y="730" /> + <di:waypoint xsi:type="dc:Point" x="400" y="730" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="362" y="763" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true"> + <dc:Bounds x="50" y="2282" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-24" y="2297" width="57" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v"> + <dc:Bounds x="50" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="30" y="2158" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j"> + <di:waypoint xsi:type="dc:Point" x="75" y="2282" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="83" y="2218" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true"> + <dc:Bounds x="177" y="2431" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178" y="2393" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y"> + <di:waypoint xsi:type="dc:Point" x="177" y="2456" /> + <di:waypoint xsi:type="dc:Point" x="100" y="2456" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="2431" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem"> + <di:waypoint xsi:type="dc:Point" x="226" y="2457" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2457" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2695" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="316" y="2436" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true"> + <dc:Bounds x="177" y="2103" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178" y="2064" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv"> + <di:waypoint xsi:type="dc:Point" x="177" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="100" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="2103" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu"> + <di:waypoint xsi:type="dc:Point" x="227" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="290" y="2097" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1i1nwfx_di" bpmnElement="IntermediateCatchEvent_1i1nwfx"> + <dc:Bounds x="87" y="565" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="72" y="601" width="65" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa"> + <dc:Bounds x="1027" y="666" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1002" y="707" width="85" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz"> + <di:waypoint xsi:type="dc:Point" x="123" y="583" /> + <di:waypoint xsi:type="dc:Point" x="250" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="187" y="558" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_07nu6s6_di" bpmnElement="Task_1l0uvof"> + <dc:Bounds x="856" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t"> + <di:waypoint xsi:type="dc:Point" x="956" y="388" /> + <di:waypoint xsi:type="dc:Point" x="1056" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="961" y="373" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd"> + <di:waypoint xsi:type="dc:Point" x="567" y="388" /> + <di:waypoint xsi:type="dc:Point" x="658" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="567.5" y="373" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true"> + <dc:Bounds x="50" y="2695" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-39" y="2708" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm"> + <di:waypoint xsi:type="dc:Point" x="75" y="2786" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="2766" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh"> + <di:waypoint xsi:type="dc:Point" x="75" y="2695" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2653" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="83" y="2666" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu"> + <dc:Bounds x="709" y="2695" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="2750" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6"> + <di:waypoint xsi:type="dc:Point" x="1026" y="2153" /> + <di:waypoint xsi:type="dc:Point" x="1026" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="759" y="2720" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="996" y="2437" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp"> + <di:waypoint xsi:type="dc:Point" x="734" y="2745" /> + <di:waypoint xsi:type="dc:Point" x="734" y="2786" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="704" y="2766" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9"> + <di:waypoint xsi:type="dc:Point" x="100" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="423" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="423" y="2720" /> + <di:waypoint xsi:type="dc:Point" x="709" y="2720" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="144" y="2693" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43"> + <di:waypoint xsi:type="dc:Point" x="75" y="2431" /> + <di:waypoint xsi:type="dc:Point" x="75" y="2332" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="2372" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod"> + <di:waypoint xsi:type="dc:Point" x="75" y="2103" /> + <di:waypoint xsi:type="dc:Point" x="75" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="177" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="1965" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_17pzn7m_di" bpmnElement="IntermediateCatchEvent_17pzn7m"> + <dc:Bounds x="83" y="1259" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="1295" width="80" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv"> + <dc:Bounds x="670" y="1259" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="645" y="1306" width="85" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_09vobbc_di" bpmnElement="IntermediateThrowEvent_09vobbc"> + <dc:Bounds x="670" y="803" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="651" y="844" width="85" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0o6tf9p_di" bpmnElement="SequenceFlow_0o6tf9p"> + <di:waypoint xsi:type="dc:Point" x="562" y="821" /> + <di:waypoint xsi:type="dc:Point" x="670" y="821" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="616" y="800" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1els13v_di" bpmnElement="CallActivity_1els13v"> + <dc:Bounds x="586" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c"> + <dc:Bounds x="413" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1xsowxp_di" bpmnElement="IntermediateThrowEvent_1xsowxp"> + <dc:Bounds x="1027" y="1031" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1001" y="1072" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_19a50jz_di" bpmnElement="IntermediateCatchEvent_19a50jz"> + <dc:Bounds x="77" y="1047" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="70" y="1083" width="48" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0yae9sb_di" bpmnElement="ExclusiveGateway_0yae9sb" isMarkerVisible="true"> + <dc:Bounds x="326" y="1040" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="1059" width="67" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1hlbkue_di" bpmnElement="ExclusiveGateway_1hlbkue" isMarkerVisible="true"> + <dc:Bounds x="892" y="1024" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="872" y="1079" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ws7fjn_di" bpmnElement="SequenceFlow_0ws7fjn"> + <di:waypoint xsi:type="dc:Point" x="513" y="982" /> + <di:waypoint xsi:type="dc:Point" x="586" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="504.5" y="961" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9"> + <di:waypoint xsi:type="dc:Point" x="686" y="982" /> + <di:waypoint xsi:type="dc:Point" x="749" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="888.7571646117599" y="923.4934735403681" width="84" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p75l97_di" bpmnElement="SequenceFlow_0p75l97"> + <di:waypoint xsi:type="dc:Point" x="351" y="1040" /> + <di:waypoint xsi:type="dc:Point" x="351" y="982" /> + <di:waypoint xsi:type="dc:Point" x="413" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="362" y="1015" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ufio7c_di" bpmnElement="SequenceFlow_1ufio7c"> + <di:waypoint xsi:type="dc:Point" x="942" y="1049" /> + <di:waypoint xsi:type="dc:Point" x="1027" y="1049" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="940.5" y="1024" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0aza7xq_di" bpmnElement="SequenceFlow_0aza7xq"> + <di:waypoint xsi:type="dc:Point" x="113" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="326" y="1065" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="175.5" y="1040" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13iuk3s_di" bpmnElement="SequenceFlow_13iuk3s"> + <di:waypoint xsi:type="dc:Point" x="351" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="351" y="1114" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1114" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1075" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="596" y="1090" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8"> + <dc:Bounds x="321" y="1806" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn"> + <di:waypoint xsi:type="dc:Point" x="227" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="256" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="256" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="321" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="1826" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true"> + <dc:Bounds x="521" y="1821" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="522" y="1782" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g"> + <di:waypoint xsi:type="dc:Point" x="421" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="521" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="1825" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1"> + <di:waypoint xsi:type="dc:Point" x="706" y="1966" /> + <di:waypoint xsi:type="dc:Point" x="976" y="1966" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="1945" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7"> + <di:waypoint xsi:type="dc:Point" x="546" y="1871" /> + <di:waypoint xsi:type="dc:Point" x="546" y="2128" /> + <di:waypoint xsi:type="dc:Point" x="1001" y="2128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="554" y="1994" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f"> + <di:waypoint xsi:type="dc:Point" x="559" y="1858" /> + <di:waypoint xsi:type="dc:Point" x="668" y="1954" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614.8182269768699" y="1888.8734385586085" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4"> + <dc:Bounds x="152" y="2193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj"> + <di:waypoint xsi:type="dc:Point" x="202" y="2193" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="2167" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3"> + <di:waypoint xsi:type="dc:Point" x="100" y="2307" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2307" /> + <di:waypoint xsi:type="dc:Point" x="202" y="2273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="142" y="2286" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1ymzucb_di" bpmnElement="CallActivity_1ymzucb"> + <dc:Bounds x="400" y="690" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cgpklo_di" bpmnElement="SequenceFlow_1cgpklo"> + <di:waypoint xsi:type="dc:Point" x="500" y="730" /> + <di:waypoint xsi:type="dc:Point" x="538" y="730" /> + <di:waypoint xsi:type="dc:Point" x="538" y="797" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="474" y="715" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lpv2da_di" bpmnElement="ScriptTask_0lpv2da"> + <dc:Bounds x="658" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11efpvh_di" bpmnElement="SequenceFlow_11efpvh"> + <di:waypoint xsi:type="dc:Point" x="758" y="388" /> + <di:waypoint xsi:type="dc:Point" x="856" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="807" y="367" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_18w0jud_di" bpmnElement="ScriptTask_18w0jud"> + <dc:Bounds x="749" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k5vcuu_di" bpmnElement="SequenceFlow_0k5vcuu"> + <di:waypoint xsi:type="dc:Point" x="849" y="982" /> + <di:waypoint xsi:type="dc:Point" x="917" y="982" /> + <di:waypoint xsi:type="dc:Point" x="917" y="1024" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="961" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1x88t9v_di" bpmnElement="IntermediateCatchEvent_1x88t9v"> + <dc:Bounds x="1027" y="565" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1018" y="530" width="54" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sjpja4_di" bpmnElement="SequenceFlow_0sjpja4"> + <di:waypoint xsi:type="dc:Point" x="894" y="583" /> + <di:waypoint xsi:type="dc:Point" x="1027" y="583" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="960.5" y="562" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1db0ri1_di" bpmnElement="SequenceFlow_1db0ri1"> + <di:waypoint xsi:type="dc:Point" x="1045" y="601" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="666" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1060" y="627.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gj4vud_di" bpmnElement="SequenceFlow_0gj4vud"> + <di:waypoint xsi:type="dc:Point" x="119" y="1277" /> + <di:waypoint xsi:type="dc:Point" x="345" y="1277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="1257" width="0" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0clhseq_di" bpmnElement="SequenceFlow_0clhseq"> + <di:waypoint xsi:type="dc:Point" x="445" y="1277" /> + <di:waypoint xsi:type="dc:Point" x="670" y="1277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="557.5" y="1257" width="0" height="10" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1totpg4_di" bpmnElement="Task_14l19kv"> + <dc:Bounds x="345" y="1237" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn new file mode 100644 index 0000000000..eefc2ca12c --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn @@ -0,0 +1,700 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_pNTO8MRhEeWv36YLr7PC3Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateVfModuleInfra" name="CreateVfModuleInfra" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:callActivity id="DoCreateVfModuleSubprocess" name="Do Create Vf Module" calledElement="DoCreateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="CVFMI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="DCVFM_vnfId" target="CVFMI_vnfId" /> + <camunda:out source="DCVFM_vfModuleId" target="CVFMI_vfModuleId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="CVFMI_WorkflowResponse" /> + <camunda:out source="DCVFM_vfModuleName" target="CVFMI_vfModuleName" /> + <camunda:in source="CVFMI_vnfType" target="vnfType" /> + <camunda:in source="CVFMI_vnfName" target="vnfName" /> + <camunda:in source="CVFMI_vnfId" target="vnfId" /> + <camunda:in source="CVFMI_vfModuleName" target="vfModuleName" /> + <camunda:in source="CVFMI_vfModuleType" target="vfModuleType" /> + <camunda:in source="CVFMI_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="CVFMI_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="CVFMI_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="CVFMI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="CVFMI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="CVFMI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="CVFMI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="CVFMI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="CVFMI_sdncVersion" target="sdncVersion" /> + <camunda:in source="CVFMI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="CVFMI_tenantId" target="tenantId" /> + <camunda:in source="CVFMI_vfModuleId" target="vfModuleId" /> + <camunda:in source="CVFMI_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="CVFMI_usePreload" target="usePreload" /> + <camunda:in source="CVFMI_vfModuleInputParams" target="vfModuleInputParams" /> + <camunda:in source="CVFMI_aLaCarte" target="aLaCarte" /> + <camunda:out source="DCVFM_getSDNCAdapterResponse" target="DCVFM_getSDNCAdapterResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1y7d5qk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1vx081s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="SendResponse" name="Send Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1efipx3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.sendResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="To FinishLine"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_34" name="FinishLine" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="DoCreateVfModuleSubprocess" targetRef="IntermediateThrowEvent_1" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="FinishLine"> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_35" name="FinishLine" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="IntermediateCatchEvent_1" targetRef="PrepareUpdateInfraRequest" /> + <bpmn2:scriptTask id="PrepareUpdateInfraRequest" name="Prepare Update Infra Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.prepareUpdateInfraRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_1" name="Update Infra Request"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateInfraRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1crl7uf</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="PrepareUpdateInfraRequest" targetRef="ServiceTask_1" /> + <bpmn2:scriptTask id="PrepareMSOCompletionHandler" name="Prepare MSO Completion Handler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0td7d9m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0u8zesf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="PrepareMSOCompletionHandler" targetRef="MSOCompletionHandler" /> + <bpmn2:callActivity id="MSOCompletionHandler" name="MSO Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CVFMI_msoCompletionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="UpdateInfraRequestResponseCheck" name="Success? " default="updateInfraRequestResponseBad"> + <bpmn2:incoming>SequenceFlow_1crl7uf</bpmn2:incoming> + <bpmn2:outgoing>updateInfraRequestResponseBad</bpmn2:outgoing> + <bpmn2:outgoing>updateInfraRequestResponseGood</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="updateInfraRequestResponseBad" name="no" sourceRef="UpdateInfraRequestResponseCheck" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="updateInfraRequestResponseGood" name="yes" sourceRef="UpdateInfraRequestResponseCheck" targetRef="ExclusiveGateway_0c8x2mq"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVFMI_dbResponseCode" ) == '200'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>updateInfraRequestResponseBad</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:subProcess id="ErrorHandler" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_2" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_0wsgnab</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:callActivity id="FalloutHandler" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CVFMI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="FalloutHandler" targetRef="EndEvent_3" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="PrepareFalloutHandler" name="Prepare Fallout Handler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_018p5wf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def cvfm = new CreateVfModuleInfra() +cvfm.falloutHandlerPrep(execution, 'CVFMI_FalloutHandlerRequest')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="PrepareFalloutHandler" targetRef="FalloutHandler" /> + <bpmn2:sequenceFlow id="SequenceFlow_0wsgnab" sourceRef="StartEvent_2" targetRef="SendErrorResponse" /> + <bpmn2:sequenceFlow id="SequenceFlow_018p5wf" sourceRef="SendErrorResponse" targetRef="PrepareFalloutHandler" /> + <bpmn2:scriptTask id="SendErrorResponse" name="Send Error Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0wsgnab</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_018p5wf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.sendErrorResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:subProcess> + <bpmn2:scriptTask id="SetSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + <bpmn2:script><![CDATA[execution.setVariable("CreateVfModuleSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="MSOCompletionHandler" targetRef="SetSuccessIndicator" /> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="SetSuccessIndicator" targetRef="EndEvent_1" /> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="ErrorHandler"> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_3" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_4" /> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="PreProcessRequest" targetRef="SendResponse" /> + <bpmn2:subProcess id="SubProcess_0pgv3l6" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:scriptTask id="ProcessError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qvgrvq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jqizzo</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0100eju"> + <bpmn2:incoming>SequenceFlow_1jqizzo</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_1mov8he"> + <bpmn2:outgoing>SequenceFlow_1qvgrvq</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qvgrvq" name="" sourceRef="StartEvent_1mov8he" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1jqizzo" name="" sourceRef="ProcessError" targetRef="EndEvent_0100eju" /> + </bpmn2:subProcess> + <bpmn2:callActivity id="CallActivity_0i3men0" name="LCM HealthCheck" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="CVFMI_vnfId" target="vnfId" /> + <camunda:in source="CVFMI_requestId" target="msoRequestId" /> + <camunda:in source="CVFMI_vnfName" target="vnfName" /> + <camunda:in source="CVFMI_controllerType" target="controllerType" /> + <camunda:in source="healthCheckIndex0" target="healthCheckIndex" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1xggje5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_07llpjo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09h60ub" name="Error on HealthCheck?" default="SequenceFlow_1vx081s"> + <bpmn2:incoming>SequenceFlow_07llpjo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vx081s</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0nszq2o</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1vx081s" name="no" sourceRef="ExclusiveGateway_09h60ub" targetRef="DoCreateVfModuleSubprocess" /> + <bpmn2:sequenceFlow id="SequenceFlow_07llpjo" sourceRef="CallActivity_0i3men0" targetRef="ExclusiveGateway_09h60ub" /> + <bpmn2:endEvent id="EndEvent_0n6bb71"> + <bpmn2:incoming>SequenceFlow_0nszq2o</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0nszq2o" name="yes" sourceRef="ExclusiveGateway_09h60ub" targetRef="EndEvent_0n6bb71"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="CallActivity_17ukiqm" name="LCM ConfigScaleOut" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="actionConfigScaleOut" target="action" /> + <camunda:in source="CVFMI_vnfId" target="vnfId" /> + <camunda:in source="CVFMI_requestId" target="msoRequestId" /> + <camunda:in source="CVFMI_vnfName" target="vnfName" /> + <camunda:in source="CVFMI_controllerType" target="controllerType" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="healthCheckIndex0" target="healthCheckIndex" /> + <camunda:out source="errorCode" target="errorConfigScaleOutCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="CVFMI_vfModuleId" target="vfModuleId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_09i6f7t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1tk5ru7</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1crl7uf" sourceRef="ServiceTask_1" targetRef="UpdateInfraRequestResponseCheck" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1hncvjy" name="Error on ConfigScaleOut?" default="SequenceFlow_0td7d9m"> + <bpmn2:incoming>SequenceFlow_1tk5ru7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0td7d9m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0h5cld9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1tk5ru7" sourceRef="CallActivity_17ukiqm" targetRef="ExclusiveGateway_1hncvjy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0td7d9m" name="no" sourceRef="ExclusiveGateway_1hncvjy" targetRef="PrepareMSOCompletionHandler" /> + <bpmn2:endEvent id="EndEvent_0a97jcr"> + <bpmn2:incoming>SequenceFlow_0h5cld9</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0h5cld9" name="yes" sourceRef="ExclusiveGateway_1hncvjy" targetRef="EndEvent_0a97jcr"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorConfigScaleOutCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1qozral" name="Do HealthCheck?" default="SequenceFlow_1y7d5qk"> + <bpmn2:incoming>SequenceFlow_1hk35nm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xggje5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1y7d5qk</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1xggje5" name="yes" sourceRef="ExclusiveGateway_1qozral" targetRef="CallActivity_0i3men0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${execution.getVariable("runHealthCheck")}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1y7d5qk" name="no" sourceRef="ExclusiveGateway_1qozral" targetRef="DoCreateVfModuleSubprocess" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0c8x2mq" name="Do ConfigScaleOut?" default="SequenceFlow_0u8zesf"> + <bpmn2:incoming>updateInfraRequestResponseGood</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_020dbkp</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0u8zesf</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_020dbkp" name="yes" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="Task_09om99x"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${execution.getVariable("runConfigScaleOut")}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0u8zesf" name="no" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="PrepareMSOCompletionHandler" /> + <bpmn2:scriptTask id="ScriptTask_1jwavj9" name="Query AAI For Orchestration Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1efipx3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1hk35nm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.queryAAIForVnfOrchestrationStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_09i6f7t" sourceRef="Task_09om99x" targetRef="CallActivity_17ukiqm" /> + <bpmn2:scriptTask id="Task_09om99x" name="Retreive Data for Config ScaleOut" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_020dbkp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_09i6f7t</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModule = new CreateVfModuleInfra() +createVfModule.retreiveConfigScaleOutData(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1efipx3" sourceRef="SendResponse" targetRef="ScriptTask_1jwavj9" /> + <bpmn2:sequenceFlow id="SequenceFlow_1hk35nm" sourceRef="ScriptTask_1jwavj9" targetRef="ExclusiveGateway_1qozral" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="REST Fault" errorCode="RESTFault" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="41" y="16" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="46" y="52" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="77" y="34" /> + <di:waypoint xsi:type="dc:Point" x="127" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="19" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="127" y="-6" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="SendResponse"> + <dc:Bounds x="285" y="-6" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ServiceTask_86"> + <di:waypoint xsi:type="dc:Point" x="227" y="34" /> + <di:waypoint xsi:type="dc:Point" x="285" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="19" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_178" bpmnElement="DoCreateVfModuleSubprocess"> + <dc:Bounds x="736" y="-6" width="145" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_47" bpmnElement="IntermediateThrowEvent_1"> + <dc:Bounds x="937" y="16" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="923" y="57" width="64" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_178" targetElement="_BPMNShape_IntermediateThrowEvent_47"> + <di:waypoint xsi:type="dc:Point" x="881" y="34" /> + <di:waypoint xsi:type="dc:Point" x="937" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="864" y="19" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_32" bpmnElement="IntermediateCatchEvent_1"> + <dc:Bounds x="39" y="349" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="25" y="390" width="65" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_219" bpmnElement="PrepareUpdateInfraRequest"> + <dc:Bounds x="127" y="327" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_103" bpmnElement="ServiceTask_1"> + <dc:Bounds x="277" y="327" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_179" bpmnElement="UpdateInfraRequestResponseCheck" isMarkerVisible="true"> + <dc:Bounds x="406" y="342" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="320" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="PrepareMSOCompletionHandler"> + <dc:Bounds x="651" y="327" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="MSOCompletionHandler"> + <dc:Bounds x="789" y="327" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_1"> + <dc:Bounds x="1078" y="349" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1051" y="390" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_2"> + <dc:Bounds x="413" y="454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="386" y="495" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_IntermediateCatchEvent_32" targetElement="_BPMNShape_ScriptTask_219"> + <di:waypoint xsi:type="dc:Point" x="75" y="367" /> + <di:waypoint xsi:type="dc:Point" x="127" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="105" y="367" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_219" targetElement="_BPMNShape_ServiceTask_103"> + <di:waypoint xsi:type="dc:Point" x="227" y="367" /> + <di:waypoint xsi:type="dc:Point" x="277" y="367" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="updateInfraRequestResponseBad" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="_BPMNShape_EndEvent_178"> + <di:waypoint xsi:type="dc:Point" x="430" y="391" /> + <di:waypoint xsi:type="dc:Point" x="431" y="454" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="436" y="420" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="updateInfraRequestResponseGood" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="ExclusiveGateway_0c8x2mq_di"> + <di:waypoint xsi:type="dc:Point" x="456" y="367" /> + <di:waypoint xsi:type="dc:Point" x="520" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="462.46376811594206" y="371.99999999999994" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_221"> + <di:waypoint xsi:type="dc:Point" x="751" y="367" /> + <di:waypoint xsi:type="dc:Point" x="789" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="349" width="90" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_20" bpmnElement="ErrorHandler" isExpanded="true"> + <dc:Bounds x="30" y="566" width="925" height="385" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_2"> + <dc:Bounds x="139" y="720" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="137" y="762" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_222" bpmnElement="PrepareFalloutHandler"> + <dc:Bounds x="497" y="698" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_223" bpmnElement="FalloutHandler"> + <dc:Bounds x="690" y="698" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_179" bpmnElement="EndEvent_3"> + <dc:Bounds x="846" y="720" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="864" y="761" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_44" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="937" y="716" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="955" y="757" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_180" bpmnElement="EndEvent_4"> + <dc:Bounds x="1066" y="716" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1084" y="757" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_222" targetElement="_BPMNShape_ScriptTask_223"> + <di:waypoint xsi:type="dc:Point" x="597" y="738" /> + <di:waypoint xsi:type="dc:Point" x="690" y="738" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="644" y="723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_223" targetElement="_BPMNShape_EndEvent_179"> + <di:waypoint xsi:type="dc:Point" x="790" y="738" /> + <di:waypoint xsi:type="dc:Point" x="846" y="738" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="821" y="738" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_BoundaryEvent_44" targetElement="_BPMNShape_EndEvent_180"> + <di:waypoint xsi:type="dc:Point" x="973" y="734" /> + <di:waypoint xsi:type="dc:Point" x="1066" y="734" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="719" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="SetSuccessIndicator"> + <dc:Bounds x="946" y="327" width="103" height="79" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_241"> + <di:waypoint xsi:type="dc:Point" x="889" y="367" /> + <di:waypoint xsi:type="dc:Point" x="946" y="366" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="873" y="342" width="90" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_177"> + <di:waypoint xsi:type="dc:Point" x="1049" y="367" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1019" y="342" width="90" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0pgv3l6_di" bpmnElement="SubProcess_0pgv3l6" isExpanded="true"> + <dc:Bounds x="160" y="1001" width="313" height="169" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_13ekvux_di" bpmnElement="ProcessError"> + <dc:Bounds x="268" y="1047" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0100eju_di" bpmnElement="EndEvent_0100eju"> + <dc:Bounds x="413" y="1069" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="431" y="1110" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1mov8he_di" bpmnElement="StartEvent_1mov8he"> + <dc:Bounds x="185" y="1069" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="203" y="1110" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qvgrvq_di" bpmnElement="SequenceFlow_1qvgrvq"> + <di:waypoint xsi:type="dc:Point" x="221" y="1087" /> + <di:waypoint xsi:type="dc:Point" x="268" y="1087" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="242" y="1087" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1jqizzo_di" bpmnElement="SequenceFlow_1jqizzo"> + <di:waypoint xsi:type="dc:Point" x="368" y="1087" /> + <di:waypoint xsi:type="dc:Point" x="413" y="1087" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="1087" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0wsgnab_di" bpmnElement="SequenceFlow_0wsgnab"> + <di:waypoint xsi:type="dc:Point" x="175" y="738" /> + <di:waypoint xsi:type="dc:Point" x="235" y="738" /> + <di:waypoint xsi:type="dc:Point" x="235" y="738" /> + <di:waypoint xsi:type="dc:Point" x="296" y="738" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="250" y="738" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_018p5wf_di" bpmnElement="SequenceFlow_018p5wf"> + <di:waypoint xsi:type="dc:Point" x="396" y="738" /> + <di:waypoint xsi:type="dc:Point" x="497" y="738" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="447" y="723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_036ipyg_di" bpmnElement="SendErrorResponse"> + <dc:Bounds x="296" y="698" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0i3men0_di" bpmnElement="CallActivity_0i3men0"> + <dc:Bounds x="568" y="-145" width="145" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_09h60ub_di" bpmnElement="ExclusiveGateway_09h60ub" isMarkerVisible="true"> + <dc:Bounds x="784" y="-130" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="774" y="-162" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1vx081s_di" bpmnElement="SequenceFlow_1vx081s"> + <di:waypoint xsi:type="dc:Point" x="809" y="-80" /> + <di:waypoint xsi:type="dc:Point" x="809" y="-47" /> + <di:waypoint xsi:type="dc:Point" x="809" y="-6" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="815" y="-81.36842105263162" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07llpjo_di" bpmnElement="SequenceFlow_07llpjo"> + <di:waypoint xsi:type="dc:Point" x="713" y="-105" /> + <di:waypoint xsi:type="dc:Point" x="784" y="-105" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="703.5" y="-120" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0n6bb71_di" bpmnElement="EndEvent_0n6bb71"> + <dc:Bounds x="937" y="-123" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="910" y="-82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nszq2o_di" bpmnElement="SequenceFlow_0nszq2o"> + <di:waypoint xsi:type="dc:Point" x="834" y="-105" /> + <di:waypoint xsi:type="dc:Point" x="937" y="-105" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="850.3538461538461" y="-101" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_17ukiqm_di" bpmnElement="CallActivity_17ukiqm"> + <dc:Bounds x="472" y="120" width="145" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1crl7uf_di" bpmnElement="SequenceFlow_1crl7uf"> + <di:waypoint xsi:type="dc:Point" x="377" y="367" /> + <di:waypoint xsi:type="dc:Point" x="406" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391.5" y="346" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1hncvjy_di" bpmnElement="ExclusiveGateway_1hncvjy" isMarkerVisible="true"> + <dc:Bounds x="675" y="135" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="659" y="101" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tk5ru7_di" bpmnElement="SequenceFlow_1tk5ru7"> + <di:waypoint xsi:type="dc:Point" x="617" y="160" /> + <di:waypoint xsi:type="dc:Point" x="675" y="160" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="601" y="139" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0td7d9m_di" bpmnElement="SequenceFlow_0td7d9m"> + <di:waypoint xsi:type="dc:Point" x="700" y="185" /> + <di:waypoint xsi:type="dc:Point" x="702" y="327" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="708" y="122" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0a97jcr_di" bpmnElement="EndEvent_0a97jcr"> + <dc:Bounds x="773" y="142" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701" y="183" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0h5cld9_di" bpmnElement="SequenceFlow_0h5cld9"> + <di:waypoint xsi:type="dc:Point" x="725" y="160" /> + <di:waypoint xsi:type="dc:Point" x="773" y="160" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="730" y="166" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1qozral_di" bpmnElement="ExclusiveGateway_1qozral" isMarkerVisible="true"> + <dc:Bounds x="616" y="9" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="599" y="66" width="86" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xggje5_di" bpmnElement="SequenceFlow_1xggje5"> + <di:waypoint xsi:type="dc:Point" x="641" y="9" /> + <di:waypoint xsi:type="dc:Point" x="641" y="-28" /> + <di:waypoint xsi:type="dc:Point" x="641" y="-28" /> + <di:waypoint xsi:type="dc:Point" x="641" y="-65" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="649" y="-1.7061403508771935" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1y7d5qk_di" bpmnElement="SequenceFlow_1y7d5qk"> + <di:waypoint xsi:type="dc:Point" x="666" y="34" /> + <di:waypoint xsi:type="dc:Point" x="736" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685.0746268656717" y="37" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0c8x2mq_di" bpmnElement="ExclusiveGateway_0c8x2mq" isMarkerVisible="true"> + <dc:Bounds x="520" y="342" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="402" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_020dbkp_di" bpmnElement="SequenceFlow_020dbkp"> + <di:waypoint xsi:type="dc:Point" x="545" y="342" /> + <di:waypoint xsi:type="dc:Point" x="545" y="309" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="551" y="321.9537912405942" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u8zesf_di" bpmnElement="SequenceFlow_0u8zesf"> + <di:waypoint xsi:type="dc:Point" x="570" y="367" /> + <di:waypoint xsi:type="dc:Point" x="651" y="367" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="372" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1jwavj9_di" bpmnElement="ScriptTask_1jwavj9"> + <dc:Bounds x="454" y="-6" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09i6f7t_di" bpmnElement="SequenceFlow_09i6f7t"> + <di:waypoint xsi:type="dc:Point" x="545" y="229" /> + <di:waypoint xsi:type="dc:Point" x="545" y="200" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="560" y="208.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1s0bky7_di" bpmnElement="Task_09om99x"> + <dc:Bounds x="495" y="229" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1efipx3_di" bpmnElement="SequenceFlow_1efipx3"> + <di:waypoint xsi:type="dc:Point" x="385" y="34" /> + <di:waypoint xsi:type="dc:Point" x="454" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="419.5" y="13" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hk35nm_di" bpmnElement="SequenceFlow_1hk35nm"> + <di:waypoint xsi:type="dc:Point" x="554" y="34" /> + <di:waypoint xsi:type="dc:Point" x="616" y="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="13" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn new file mode 100644 index 0000000000..dcdcdc9d26 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn @@ -0,0 +1,514 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_CyftwG_HEeaKe-v4u9MasA" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateVfModuleVolumeInfraV1" name="CreateVfModuleVolumeInfraV1" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_createVfModuleVolumeInfraV1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_createVfModuleVolumeInfraV1" targetRef="ScriptTask_preProcessRequest" /> + <bpmn2:subProcess id="SubProcess_exceptionHandler" name="Exception Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_catchErrors" name="Catch Exceptions"> + <bpmn2:outgoing>SequenceFlow_1tfi3sp</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:startEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_isSyncResponseSent" name="Sync response sent?" default="SequenceFlow_0x34g02"> + <bpmn2:incoming>SequenceFlow_1tfi3sp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x34g02</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1q9kksk</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_sendSyncErrorResp" name="Send sync error response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0x34g02</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_sendSyncErrorResp" targetRef="ExclusiveGateway_0of872x" /> + <bpmn2:scriptTask id="ScriptTask_prefalloutHandlerRequest" name="Prepare Fallout Handler Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1v1jx7y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('prepareFalloutHandlerRequest', execution, isDebugLogEnabled) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_prefalloutHandlerRequest" targetRef="CallActivity_callFalloutHandler" /> + <bpmn2:callActivity id="CallActivity_callFalloutHandler" name="Call Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CVMVINFRAV1_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callFalloutHandler" targetRef="EndEvent_4" /> + <bpmn2:endEvent id="EndEvent_4" name="End"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09n39bk" name="Is rollback on?" default="SequenceFlow_1cu5t8k"> + <bpmn2:incoming>SequenceFlow_1q9kksk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cu5t8k</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1tfh1vm</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="Task_0nc3wxy" name="Log and save original exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1tfh1vm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b1nrfk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('logAndSaveOriginalException', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_1b9yx6k" name="DoCreateVfModuleVolumeRollback" calledElement="DoCreateVfModuleVolumeRollback"> + <bpmn2:extensionElements> + <camunda:in source="requestId" target="mso-request-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="workflowException" target="workflowException" /> + <camunda:out source="wasDeleted" target="wasDeleted" /> + <camunda:in source="rolledBack" target="rolledBack" /> + <camunda:in source="workflowException" target="workflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0b1nrfk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08vm13o</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_1lkduwj" name="Validate Rollback Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08vm13o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_097zy8w</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('validateRollbackResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:inclusiveGateway id="ExclusiveGateway_0of872x"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1cu5t8k</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_097zy8w</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1v1jx7y</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1tfi3sp" sourceRef="StartEvent_catchErrors" targetRef="ExclusiveGateway_isSyncResponseSent" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x34g02" name="No" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ScriptTask_sendSyncErrorResp" /> + <bpmn2:sequenceFlow id="SequenceFlow_1q9kksk" name="Yes" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ExclusiveGateway_09n39bk"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_syncResponseSent") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1cu5t8k" name="No" sourceRef="ExclusiveGateway_09n39bk" targetRef="ExclusiveGateway_0of872x" /> + <bpmn2:sequenceFlow id="SequenceFlow_1tfh1vm" name="Yes" sourceRef="ExclusiveGateway_09n39bk" targetRef="Task_0nc3wxy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_backoutOnFailure") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0b1nrfk" sourceRef="Task_0nc3wxy" targetRef="Task_1b9yx6k" /> + <bpmn2:sequenceFlow id="SequenceFlow_08vm13o" sourceRef="Task_1b9yx6k" targetRef="Task_1lkduwj" /> + <bpmn2:sequenceFlow id="SequenceFlow_097zy8w" sourceRef="Task_1lkduwj" targetRef="ExclusiveGateway_0of872x" /> + <bpmn2:sequenceFlow id="SequenceFlow_1v1jx7y" sourceRef="ExclusiveGateway_0of872x" targetRef="ScriptTask_prefalloutHandlerRequest" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSyncAckResponse" /> + <bpmn2:scriptTask id="ScriptTask_sendSyncAckResponse" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_sendSyncAckResponse" targetRef="ExclusiveGateway_isVolGrpnamePresent" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_isVolGrpnamePresent" name="Is volume group name present?" default="SequenceFlow_volGrpNameMissing"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_volGrpNamePresent</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_volGrpNameMissing</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpNamePresent" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="CallActivity_doCreateVfModuleVolumeV2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{volumeGroupName != null && volumeGroupName != "" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpNameMissing" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="ScriptTask_buildError" /> + <bpmn2:scriptTask id="ScriptTask_buildError" name="Build Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_volGrpNameMissing</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('buildWorkflowException', execution, 2500, "Volume group name not present in request.", isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_buildError" targetRef="EndEvent_2" /> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallActivity_doCreateVfModuleVolumeV2" name="Call DoCreateVfModuleVolumeV2" calledElement="DoCreateVfModuleVolumeV2"> + <bpmn2:extensionElements> + <camunda:out source="DCVFMODVOLV1_SuccessIndicator" target="DCVFMODVOLV1_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="requestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="volumeGroupId" target="volumeGroupId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="volumeGroupName" target="volumeGroupName" /> + <camunda:in source="vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="test-volume-group-name" target="test-volume-group-name" /> + <camunda:in source="test-volume-group-id" target="test-volume-group-id" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="requestId" target="mso-request-id" /> + <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_volGrpNamePresent</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0djjra2</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_setSuccessIndicator" targetRef="EndEvent_3" /> + <bpmn2:callActivity id="CallActivity_completeMsoProcess" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CVMVINFRAV1_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CallActivity_completeMsoProcess" targetRef="ScriptTask_setSuccessIndicator" /> + <bpmn2:scriptTask id="ScriptTask_postCompletionRequest" name="Post Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('postProcessResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_postCompletionRequest" targetRef="CallActivity_completeMsoProcess" /> + <bpmn2:serviceTask id="ServiceTask_callDbInfraUpdate" name="Call DB Infra Update"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter> + <camunda:inputParameter name="payload">${CVMVINFRAV1_createDBRequest}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVMVINFRAV1_createDBResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="CVMVINFRAV1_dbReturnCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ServiceTask_callDbInfraUpdate" targetRef="ScriptTask_postCompletionRequest" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Prepare DB Infra Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0djjra2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1() +createVfModuleVolumeInfraV1.executeMethod('prepareDbInfraSuccessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="ServiceTask_callDbInfraUpdate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0djjra2" sourceRef="CallActivity_doCreateVfModuleVolumeV2" targetRef="ScriptTask_prepareDbInfraRequest" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleVolumeInfraV1"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_67" bpmnElement="StartEvent_createVfModuleVolumeInfraV1"> + <dc:Bounds x="201" y="156" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="219" y="197" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_67" targetElement="_BPMNShape_ScriptTask_300"> + <di:waypoint xsi:type="dc:Point" x="237" y="174" /> + <di:waypoint xsi:type="dc:Point" x="271" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="254" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="ScriptTask_preProcessRequest"> + <dc:Bounds x="271" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_301" bpmnElement="ScriptTask_sendSyncAckResponse"> + <dc:Bounds x="404" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_249" bpmnElement="ExclusiveGateway_isVolGrpnamePresent" isMarkerVisible="true"> + <dc:Bounds x="556" y="149" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="540" y="204" width="81" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_302" bpmnElement="ScriptTask_buildError"> + <dc:Bounds x="531" y="253" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_36" bpmnElement="CallActivity_doCreateVfModuleVolumeV2"> + <dc:Bounds x="705" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_volGrpNamePresent" sourceElement="_BPMNShape_ExclusiveGateway_249"> + <di:waypoint xsi:type="dc:Point" x="606" y="174" /> + <di:waypoint xsi:type="dc:Point" x="705" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="656" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_301" targetElement="_BPMNShape_ExclusiveGateway_249"> + <di:waypoint xsi:type="dc:Point" x="504" y="175" /> + <di:waypoint xsi:type="dc:Point" x="556" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="530" y="159.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_300" targetElement="_BPMNShape_ScriptTask_301"> + <di:waypoint xsi:type="dc:Point" x="371" y="174" /> + <di:waypoint xsi:type="dc:Point" x="404" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_volGrpNameMissing" sourceElement="_BPMNShape_ExclusiveGateway_249" targetElement="_BPMNShape_ScriptTask_302"> + <di:waypoint xsi:type="dc:Point" x="581" y="199" /> + <di:waypoint xsi:type="dc:Point" x="582" y="253" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="211" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_233" bpmnElement="EndEvent_2"> + <dc:Bounds x="563" y="379" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="420" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_302" targetElement="_BPMNShape_EndEvent_233"> + <di:waypoint xsi:type="dc:Point" x="580" y="333" /> + <di:waypoint xsi:type="dc:Point" x="581" y="379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="341" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_3"> + <dc:Bounds x="1456" y="156" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1474" y="197" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_exceptionHandler" isExpanded="true"> + <dc:Bounds x="213" y="461" width="895" height="549" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_catchErrors"> + <dc:Bounds x="263" y="771" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="239" y="812" width="86" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_235" bpmnElement="EndEvent_4"> + <dc:Bounds x="989" y="771" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1042" y="778" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_304" bpmnElement="ScriptTask_prepareDbInfraRequest"> + <dc:Bounds x="835" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_103" bpmnElement="ServiceTask_callDbInfraUpdate"> + <dc:Bounds x="963" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_305" bpmnElement="ScriptTask_postCompletionRequest"> + <dc:Bounds x="1086" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_37" bpmnElement="CallActivity_completeMsoProcess"> + <dc:Bounds x="1211" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_304" targetElement="_BPMNShape_ServiceTask_103"> + <di:waypoint xsi:type="dc:Point" x="935" y="174" /> + <di:waypoint xsi:type="dc:Point" x="963" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="949" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ServiceTask_103" targetElement="_BPMNShape_ScriptTask_305"> + <di:waypoint xsi:type="dc:Point" x="1063" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1086" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1075" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_305" targetElement="_BPMNShape_CallActivity_37"> + <di:waypoint xsi:type="dc:Point" x="1186" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1211" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1199" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_306" bpmnElement="ScriptTask_setSuccessIndicator"> + <dc:Bounds x="1337" y="134" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_37" targetElement="_BPMNShape_ScriptTask_306"> + <di:waypoint xsi:type="dc:Point" x="1311" y="174" /> + <di:waypoint xsi:type="dc:Point" x="1337" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1324" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_306" targetElement="_BPMNShape_EndEvent_234"> + <di:waypoint xsi:type="dc:Point" x="1437" y="173" /> + <di:waypoint xsi:type="dc:Point" x="1456" y="173" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1447" y="158" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_307" bpmnElement="ScriptTask_prefalloutHandlerRequest"> + <dc:Bounds x="725" y="749" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_50" bpmnElement="CallActivity_callFalloutHandler"> + <dc:Bounds x="858" y="749" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_307" targetElement="_BPMNShape_CallActivity_50"> + <di:waypoint xsi:type="dc:Point" x="825" y="789" /> + <di:waypoint xsi:type="dc:Point" x="858" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="774" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_50" targetElement="_BPMNShape_EndEvent_235"> + <di:waypoint xsi:type="dc:Point" x="958" y="789" /> + <di:waypoint xsi:type="dc:Point" x="989" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="974" y="774" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_251" bpmnElement="ExclusiveGateway_isSyncResponseSent" isMarkerVisible="true"> + <dc:Bounds x="380" y="764" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="367" y="819" width="77" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="ScriptTask_sendSyncErrorResp"> + <dc:Bounds x="355" y="879" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_ScriptTask_307"> + <di:waypoint xsi:type="dc:Point" x="455" y="919" /> + <di:waypoint xsi:type="dc:Point" x="664" y="919" /> + <di:waypoint xsi:type="dc:Point" x="664" y="814" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="560" y="904" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_09n39bk_di" bpmnElement="ExclusiveGateway_09n39bk" isMarkerVisible="true"> + <dc:Bounds x="492.646" y="764" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="482" y="814" width="71" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0z3e4ts_di" bpmnElement="Task_0nc3wxy"> + <dc:Bounds x="468" y="644" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1td0fj3_di" bpmnElement="Task_1b9yx6k"> + <dc:Bounds x="468" y="530" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mld0ou_di" bpmnElement="Task_1lkduwj"> + <dc:Bounds x="614" y="530" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="InclusiveGateway_1gkubx4_di" bpmnElement="ExclusiveGateway_0of872x"> + <dc:Bounds x="639" y="764" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="664" y="814" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tfi3sp_di" bpmnElement="SequenceFlow_1tfi3sp"> + <di:waypoint xsi:type="dc:Point" x="299" y="789" /> + <di:waypoint xsi:type="dc:Point" x="380" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="340" y="764" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x34g02_di" bpmnElement="SequenceFlow_0x34g02"> + <di:waypoint xsi:type="dc:Point" x="405" y="814" /> + <di:waypoint xsi:type="dc:Point" x="405" y="879" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="413" y="847" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q9kksk_di" bpmnElement="SequenceFlow_1q9kksk"> + <di:waypoint xsi:type="dc:Point" x="430" y="789" /> + <di:waypoint xsi:type="dc:Point" x="493" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="453" y="764" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1cu5t8k_di" bpmnElement="SequenceFlow_1cu5t8k"> + <di:waypoint xsi:type="dc:Point" x="543" y="789" /> + <di:waypoint xsi:type="dc:Point" x="639" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="764" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tfh1vm_di" bpmnElement="SequenceFlow_1tfh1vm"> + <di:waypoint xsi:type="dc:Point" x="518" y="764" /> + <di:waypoint xsi:type="dc:Point" x="518" y="724" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="524" y="734" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b1nrfk_di" bpmnElement="SequenceFlow_0b1nrfk"> + <di:waypoint xsi:type="dc:Point" x="518" y="644" /> + <di:waypoint xsi:type="dc:Point" x="518" y="610" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="533" y="627" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_08vm13o_di" bpmnElement="SequenceFlow_08vm13o"> + <di:waypoint xsi:type="dc:Point" x="568" y="570" /> + <di:waypoint xsi:type="dc:Point" x="591" y="570" /> + <di:waypoint xsi:type="dc:Point" x="591" y="570" /> + <di:waypoint xsi:type="dc:Point" x="614" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="570" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_097zy8w_di" bpmnElement="SequenceFlow_097zy8w"> + <di:waypoint xsi:type="dc:Point" x="664" y="610" /> + <di:waypoint xsi:type="dc:Point" x="664" y="764" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="687" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1v1jx7y_di" bpmnElement="SequenceFlow_1v1jx7y"> + <di:waypoint xsi:type="dc:Point" x="689" y="789" /> + <di:waypoint xsi:type="dc:Point" x="725" y="789" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="707" y="774" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0djjra2_di" bpmnElement="SequenceFlow_0djjra2"> + <di:waypoint xsi:type="dc:Point" x="805" y="174" /> + <di:waypoint xsi:type="dc:Point" x="835" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="820" y="159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn new file mode 100644 index 0000000000..6af8c2248e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="CreateVnfInfra" name="CreateVnfInfra" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="sendResponse" /> + <bpmn2:scriptTask id="sendResponse" name="Send Sync Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendResponse" targetRef="QueryCatalogDB" /> + <bpmn2:callActivity id="CreateVNF" name="Create VNF" calledElement="DoCreateVnf"> + <bpmn2:extensionElements> + <camunda:in source="CREVI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="CREVI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="CREVI_suppressRollback" target="disableRollback" /> + <camunda:in source="CREVI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="CREVI_vnfType" target="vnfType" /> + <camunda:in source="CREVI_vnfName" target="vnfName" /> + <camunda:in source="CREVI_vnfId" target="vnfId" /> + <camunda:in source="CREVI_serviceId" target="productFamilyId" /> + <camunda:in source="CREVI_vnfInputParameters" target="vnfInputParameters" /> + <camunda:out source="vnfId" target="CREVI_vnfId" /> + <camunda:out source="vnfOutputParameters" target="CREVI_vnfOutputParameters" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="CREVI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="CREVI_tenantId" target="tenandId" /> + <camunda:in source="CREVI_vnfResourceDecomposition" target="vnfResourceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ed0uiq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0w0m5fr</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.utils.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="processJavaError" targetRef="EndEvent_4" /> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_2"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_2" targetRef="processJavaError" /> + </bpmn2:subProcess> + <bpmn2:subProcess id="bpmnErrorHandlingSubProcess" name="Error Handling Sub Process" triggeredByEvent="true"> + <bpmn2:callActivity id="callFalloutHandler" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="CREVI_falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="CREVI_requestId" target="requestId" /> + <camunda:in source="CREVI_serviceInstanceId" target="serviceInstanceId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="callFalloutHandler" targetRef="EndEvent_5" /> + <bpmn2:scriptTask id="processError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="processError" targetRef="callFalloutHandler" /> + <bpmn2:endEvent id="EndEvent_5"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_34" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="sendErrorResponse" name="Send Error Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.sendErrorResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="sendErrorResponse" targetRef="processError" /> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_4" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="StartEvent_3" targetRef="sendErrorResponse" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="postProcess" name="Prepare Completion Handler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_01mjjk3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="postProcess" targetRef="callCompletionHandler" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:callActivity id="callCompletionHandler" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CREVI_completionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="CREVI_requestId" target="mso-request-id" /> + <camunda:in source="CREVI_serviceInstanceId" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="callCompletionHandler" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ed0uiq" sourceRef="QueryCatalogDB" targetRef="CreateVNF" /> + <bpmn2:scriptTask id="QueryCatalogDB" name="Query Catalog DB" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ed0uiq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.queryCatalogDB(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0w0m5fr" sourceRef="CreateVNF" targetRef="Task_1gmhhag" /> + <bpmn2:sequenceFlow id="SequenceFlow_0s4i7px" sourceRef="Task_1gmhhag" targetRef="Task_1307onz" /> + <bpmn2:sequenceFlow id="SequenceFlow_01mjjk3" sourceRef="Task_1307onz" targetRef="postProcess" /> + <bpmn2:scriptTask id="Task_1gmhhag" name="Create Platform" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0w0m5fr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0s4i7px</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.createPlatform(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1307onz" name="Create Line-of-Business" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0s4i7px</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01mjjk3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +CreateVnfInfra createVnf = new CreateVnfInfra() +createVnf.createLineOfBusiness(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="96" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="114" y="263" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="216" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="132" y="240" /> + <di:waypoint xsi:type="dc:Point" x="216" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="165" y="240" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="sendResponse"> + <dc:Bounds x="341" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ScriptTask_286"> + <di:waypoint xsi:type="dc:Point" x="316" y="240" /> + <di:waypoint xsi:type="dc:Point" x="341" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="329" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="CreateVNF"> + <dc:Bounds x="618" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_CallActivity_59"> + <di:waypoint xsi:type="dc:Point" x="441" y="240" /> + <di:waypoint xsi:type="dc:Point" x="478" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="460" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1340" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1313" y="263" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="253" y="696" width="313" height="169" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_76" bpmnElement="StartEvent_2"> + <dc:Bounds x="277" y="763" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="295" y="804" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="processJavaError"> + <dc:Bounds x="360" y="741" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_4"> + <dc:Bounds x="505" y="763" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="523" y="804" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_76" targetElement="_BPMNShape_ScriptTask_308"> + <di:waypoint xsi:type="dc:Point" x="313" y="781" /> + <di:waypoint xsi:type="dc:Point" x="360" y="781" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="331" y="781" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_EndEvent_234"> + <di:waypoint xsi:type="dc:Point" x="460" y="781" /> + <di:waypoint xsi:type="dc:Point" x="505" y="781" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="477" y="781" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_33" bpmnElement="bpmnErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="109" y="433" width="601" height="232" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_77" bpmnElement="StartEvent_3"> + <dc:Bounds x="133" y="532" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="573" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_235" bpmnElement="EndEvent_5"> + <dc:Bounds x="649" y="532" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="667" y="573" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_62" bpmnElement="callFalloutHandler"> + <dc:Bounds x="493" y="510" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_309" bpmnElement="processError"> + <dc:Bounds x="361" y="510" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_77" targetElement="_BPMNShape_ScriptTask_312"> + <di:waypoint xsi:type="dc:Point" x="169" y="550" /> + <di:waypoint xsi:type="dc:Point" x="229" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="550" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_309" targetElement="_BPMNShape_CallActivity_62"> + <di:waypoint xsi:type="dc:Point" x="461" y="550" /> + <di:waypoint xsi:type="dc:Point" x="493" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="486" y="550" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_62" targetElement="_BPMNShape_EndEvent_235"> + <di:waypoint xsi:type="dc:Point" x="593" y="550" /> + <di:waypoint xsi:type="dc:Point" x="649" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="618" y="550" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_312" bpmnElement="sendErrorResponse"> + <dc:Bounds x="229" y="510" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_312" targetElement="_BPMNShape_ScriptTask_309"> + <di:waypoint xsi:type="dc:Point" x="329" y="550" /> + <di:waypoint xsi:type="dc:Point" x="361" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="342" y="550" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_325" bpmnElement="postProcess"> + <dc:Bounds x="1042" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_325" targetElement="_BPMNShape_CallActivity_69"> + <di:waypoint xsi:type="dc:Point" x="1142" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1192" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1122" y="225" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_69" bpmnElement="callCompletionHandler"> + <dc:Bounds x="1192" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_CallActivity_69" targetElement="_BPMNShape_EndEvent_228"> + <di:waypoint xsi:type="dc:Point" x="1292" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1271" y="225" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ed0uiq_di" bpmnElement="SequenceFlow_0ed0uiq"> + <di:waypoint xsi:type="dc:Point" x="578" y="240" /> + <di:waypoint xsi:type="dc:Point" x="618" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0z4xe39_di" bpmnElement="QueryCatalogDB"> + <dc:Bounds x="478" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0w0m5fr_di" bpmnElement="SequenceFlow_0w0m5fr"> + <di:waypoint xsi:type="dc:Point" x="718" y="240" /> + <di:waypoint xsi:type="dc:Point" x="757" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737.5" y="219" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0s4i7px_di" bpmnElement="SequenceFlow_0s4i7px"> + <di:waypoint xsi:type="dc:Point" x="857" y="240" /> + <di:waypoint xsi:type="dc:Point" x="889" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="873" y="219" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01mjjk3_di" bpmnElement="SequenceFlow_01mjjk3"> + <di:waypoint xsi:type="dc:Point" x="989" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1042" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1015.5" y="219" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1wah48v_di" bpmnElement="Task_1gmhhag"> + <dc:Bounds x="757" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0fy16oq_di" bpmnElement="Task_1307onz"> + <dc:Bounds x="889" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn new file mode 100644 index 0000000000..2d68d650c5 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn @@ -0,0 +1,381 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3"> + <bpmn:process id="DeleteCustomE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_00m8zen" name="Delete SI Start Flow"> + <bpmn:outgoing>SequenceFlow_1wxumid</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:subProcess id="SubProcess_0amn8vu" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_1c6ogpt" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0guajy5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0dbt753</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_121296y"> + <bpmn:outgoing>SequenceFlow_0guajy5</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1dw3dwx"> + <bpmn:incoming>SequenceFlow_0dbt753</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0guajy5" name="" sourceRef="StartEvent_121296y" targetRef="ScriptTask_1c6ogpt" /> + <bpmn:sequenceFlow id="SequenceFlow_0dbt753" name="" sourceRef="ScriptTask_1c6ogpt" targetRef="EndEvent_1dw3dwx" /> + </bpmn:subProcess> + <bpmn:callActivity id="CallActivity_1vyx9hu" name="Call DoCustomDeleteE2EServiceInstance " calledElement="DoDeleteE2EServiceInstance"> + <bpmn:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in sourceExpression="1610" target="sdncVersion" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0zf2qyk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07hrbs0</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_0db8bs6" name="End"> + <bpmn:incoming>SequenceFlow_1ab5l2q</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0a63hms" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1wxumid</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yowshs</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new DeleteCustomE2EServiceInstance() +csi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1fzpbop" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_04urx2e</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ii935p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteCustomE2EServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1wx4ihe" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1ii935p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ab5l2q</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:subProcess id="SubProcess_1vbcima" name="Sub-process for FalloutHandler " triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0jybicw"> + <bpmn:outgoing>SequenceFlow_0for83z</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1jegbhy"> + <bpmn:incoming>SequenceFlow_0hrazlh</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0so3xj0" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1s1cbgf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1py6yqz</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteCustomE2EServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1qhekgt" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1py6yqz</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0hrazlh</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_006nty7" name="Send Error Response"> + <bpmn:incoming>SequenceFlow_0for83z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1s1cbgf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteCustomE2EServiceInstance() +csi.sendSyncError(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0for83z" sourceRef="StartEvent_0jybicw" targetRef="ScriptTask_006nty7" /> + <bpmn:sequenceFlow id="SequenceFlow_0hrazlh" sourceRef="CallActivity_1qhekgt" targetRef="EndEvent_1jegbhy" /> + <bpmn:sequenceFlow id="SequenceFlow_1s1cbgf" sourceRef="ScriptTask_006nty7" targetRef="ScriptTask_0so3xj0" /> + <bpmn:sequenceFlow id="SequenceFlow_1py6yqz" sourceRef="ScriptTask_0so3xj0" targetRef="CallActivity_1qhekgt" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_1mao77y" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dkcu9o</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0zf2qyk</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteCustomE2EServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0vu8gx6" name="Success?" default="SequenceFlow_1t6ekab"> + <bpmn:incoming>SequenceFlow_07hrbs0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_04urx2e</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1t6ekab</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_1i1g9s6"> + <bpmn:incoming>SequenceFlow_1t6ekab</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_1erlsmy" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1wxumid" sourceRef="StartEvent_00m8zen" targetRef="ScriptTask_0a63hms" /> + <bpmn:sequenceFlow id="SequenceFlow_0zf2qyk" sourceRef="ScriptTask_1mao77y" targetRef="CallActivity_1vyx9hu" /> + <bpmn:sequenceFlow id="SequenceFlow_07hrbs0" sourceRef="CallActivity_1vyx9hu" targetRef="ExclusiveGateway_0vu8gx6" /> + <bpmn:sequenceFlow id="SequenceFlow_1ab5l2q" sourceRef="CallActivity_1wx4ihe" targetRef="EndEvent_0db8bs6" /> + <bpmn:sequenceFlow id="SequenceFlow_0yowshs" sourceRef="ScriptTask_0a63hms" targetRef="Task_1jksf62" /> + <bpmn:sequenceFlow id="SequenceFlow_04urx2e" name="yes" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="ScriptTask_1fzpbop"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1ii935p" sourceRef="ScriptTask_1fzpbop" targetRef="CallActivity_1wx4ihe" /> + <bpmn:sequenceFlow id="SequenceFlow_1t6ekab" name="no" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="EndEvent_1i1g9s6" /> + <bpmn:sequenceFlow id="SequenceFlow_0c4t26p" sourceRef="Task_1jksf62" targetRef="ServiceTask_0j9q5xe" /> + <bpmn:scriptTask id="Task_1jksf62" name="prepare init operation status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0yowshs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0c4t26p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new DeleteCustomE2EServiceInstance() +csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_0j9q5xe" name="Update Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0c4t26p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dkcu9o</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1dkcu9o" sourceRef="ServiceTask_0j9q5xe" targetRef="ScriptTask_1mao77y" /> + </bpmn:process> + <bpmn:error id="Error_1erlsmy" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteCustomE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_00m8zen_di" bpmnElement="StartEvent_00m8zen"> + <dc:Bounds x="490" y="209" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="471" y="250" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0amn8vu_di" bpmnElement="SubProcess_0amn8vu" isExpanded="true"> + <dc:Bounds x="834" y="660" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1vyx9hu_di" bpmnElement="CallActivity_1vyx9hu"> + <dc:Bounds x="1121" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0db8bs6_di" bpmnElement="EndEvent_0db8bs6"> + <dc:Bounds x="1646" y="304" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1657" y="340" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0a63hms_di" bpmnElement="ScriptTask_0a63hms"> + <dc:Bounds x="562" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fzpbop_di" bpmnElement="ScriptTask_1fzpbop"> + <dc:Bounds x="1453" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1wx4ihe_di" bpmnElement="CallActivity_1wx4ihe"> + <dc:Bounds x="1614" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1vbcima_di" bpmnElement="SubProcess_1vbcima" isExpanded="true"> + <dc:Bounds x="736" y="374" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1mao77y_di" bpmnElement="ScriptTask_1mao77y"> + <dc:Bounds x="970" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0vu8gx6_di" bpmnElement="ExclusiveGateway_0vu8gx6" isMarkerVisible="true"> + <dc:Bounds x="1318" y="202" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1318" y="174" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1i1g9s6_di" bpmnElement="EndEvent_1i1g9s6"> + <dc:Bounds x="1325" y="304" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1298" y="340" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wxumid_di" bpmnElement="SequenceFlow_1wxumid"> + <di:waypoint xsi:type="dc:Point" x="526" y="227" /> + <di:waypoint xsi:type="dc:Point" x="562" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="206" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zf2qyk_di" bpmnElement="SequenceFlow_0zf2qyk"> + <di:waypoint xsi:type="dc:Point" x="1070" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1121" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1050.5" y="206" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07hrbs0_di" bpmnElement="SequenceFlow_07hrbs0"> + <di:waypoint xsi:type="dc:Point" x="1221" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1318" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1225.5" y="212" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ab5l2q_di" bpmnElement="SequenceFlow_1ab5l2q"> + <di:waypoint xsi:type="dc:Point" x="1664" y="267" /> + <di:waypoint xsi:type="dc:Point" x="1664" y="304" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1634" y="279.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yowshs_di" bpmnElement="SequenceFlow_0yowshs"> + <di:waypoint xsi:type="dc:Point" x="662" y="227" /> + <di:waypoint xsi:type="dc:Point" x="707" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639.5" y="206" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04urx2e_di" bpmnElement="SequenceFlow_04urx2e"> + <di:waypoint xsi:type="dc:Point" x="1368" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1453" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1370.25" y="203" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ii935p_di" bpmnElement="SequenceFlow_1ii935p"> + <di:waypoint xsi:type="dc:Point" x="1553" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1614" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1495" y="212" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t6ekab_di" bpmnElement="SequenceFlow_1t6ekab"> + <di:waypoint xsi:type="dc:Point" x="1343" y="252" /> + <di:waypoint xsi:type="dc:Point" x="1343" y="277" /> + <di:waypoint xsi:type="dc:Point" x="1343" y="277" /> + <di:waypoint xsi:type="dc:Point" x="1343" y="304" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1352" y="277" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1c6ogpt_di" bpmnElement="ScriptTask_1c6ogpt"> + <dc:Bounds x="982" y="715" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_121296y_di" bpmnElement="StartEvent_121296y"> + <dc:Bounds x="867" y="737" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="795" y="778" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1dw3dwx_di" bpmnElement="EndEvent_1dw3dwx"> + <dc:Bounds x="1143" y="737" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1071" y="778" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0jybicw_di" bpmnElement="StartEvent_0jybicw"> + <dc:Bounds x="752" y="460" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="680" y="501" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1jegbhy_di" bpmnElement="EndEvent_1jegbhy"> + <dc:Bounds x="1331" y="460" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1259" y="501" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0so3xj0_di" bpmnElement="ScriptTask_0so3xj0"> + <dc:Bounds x="1010" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1qhekgt_di" bpmnElement="CallActivity_1qhekgt"> + <dc:Bounds x="1187" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_006nty7_di" bpmnElement="ScriptTask_006nty7"> + <dc:Bounds x="832" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0guajy5_di" bpmnElement="SequenceFlow_0guajy5"> + <di:waypoint xsi:type="dc:Point" x="903" y="755" /> + <di:waypoint xsi:type="dc:Point" x="982" y="755" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="856" y="755" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dbt753_di" bpmnElement="SequenceFlow_0dbt753"> + <di:waypoint xsi:type="dc:Point" x="1082" y="755" /> + <di:waypoint xsi:type="dc:Point" x="1143" y="755" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1028" y="755" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0for83z_di" bpmnElement="SequenceFlow_0for83z"> + <di:waypoint xsi:type="dc:Point" x="788" y="478" /> + <di:waypoint xsi:type="dc:Point" x="810" y="478" /> + <di:waypoint xsi:type="dc:Point" x="810" y="478" /> + <di:waypoint xsi:type="dc:Point" x="831" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="735" y="478" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hrazlh_di" bpmnElement="SequenceFlow_0hrazlh"> + <di:waypoint xsi:type="dc:Point" x="1287" y="478" /> + <di:waypoint xsi:type="dc:Point" x="1331" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1219" y="463" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s1cbgf_di" bpmnElement="SequenceFlow_1s1cbgf"> + <di:waypoint xsi:type="dc:Point" x="932" y="478" /> + <di:waypoint xsi:type="dc:Point" x="959" y="478" /> + <di:waypoint xsi:type="dc:Point" x="959" y="478" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="884" y="478" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1py6yqz_di" bpmnElement="SequenceFlow_1py6yqz"> + <di:waypoint xsi:type="dc:Point" x="1110" y="478" /> + <di:waypoint xsi:type="dc:Point" x="1187" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1060" y="463" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c4t26p_di" bpmnElement="SequenceFlow_0c4t26p"> + <di:waypoint xsi:type="dc:Point" x="807" y="227" /> + <di:waypoint xsi:type="dc:Point" x="833" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="820" y="206" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1joo7s7_di" bpmnElement="Task_1jksf62"> + <dc:Bounds x="707" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0j9q5xe_di" bpmnElement="ServiceTask_0j9q5xe"> + <dc:Bounds x="833" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dkcu9o_di" bpmnElement="SequenceFlow_1dkcu9o"> + <di:waypoint xsi:type="dc:Point" x="933" y="227" /> + <di:waypoint xsi:type="dc:Point" x="970" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="951.5" y="206" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn new file mode 100644 index 0000000000..5c9a80072a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn @@ -0,0 +1,331 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteGenericALaCarteServiceInstance" name="DeleteGenericALaCarteServiceInstance" isExecutable="true"> + <bpmn2:startEvent id="deleteSI_startEvent" name="Delete SI Start Flow"> + <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="doDeleteServiceInstance_CallActivity" name="Call DoDeleteServiceInstance " calledElement="DoDeleteServiceInstance"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in sourceExpression="1610" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_0o440av" name="End"> + <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="ExclusiveGateway_0isueuw" /> + <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ktadna</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new DeleteGenericALaCarteServiceInstance() +csi.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="deleteSI_startEvent" targetRef="ScriptTask_0pvcr6j" /> + <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qjygj5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteGenericALaCarteServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" /> + <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler " triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_110xxgx"> + <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1rqikib"> + <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14eadeb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteGenericALaCarteServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_0o4smqp" /> + <bpmn2:scriptTask id="ScriptTask_0o4smqp" name="Send Error Response"> + <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14eadeb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteGenericALaCarteServiceInstance() +csi.sendSyncError(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14eadeb" sourceRef="ScriptTask_0o4smqp" targetRef="ScriptTask_1hql91g" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="EndEvent_0o440av" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doDeleteServiceInstance_CallActivity" /> + <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ktadna</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteGenericALaCarteServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ktadna" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_1nko5zz" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0isueuw" name="Success?" default="SequenceFlow_0hgiouk"> + <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qjygj5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0hgiouk</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1qjygj5" name="yes" sourceRef="ExclusiveGateway_0isueuw" targetRef="ScriptTask_0cihgpv"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_0yhby6h"> + <bpmn2:incoming>SequenceFlow_0hgiouk</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0hgiouk" name="no" sourceRef="ExclusiveGateway_0isueuw" targetRef="EndEvent_0yhby6h" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteGenericALaCarteServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteSI_startEvent"> + <dc:Bounds x="117" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="98" y="120" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="410" y="607" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="443" y="684" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="461" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="558" y="662" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="719" y="684" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="479" y="702" /> + <di:waypoint xsi:type="dc:Point" x="558" y="702" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="521" y="702" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="658" y="702" /> + <di:waypoint xsi:type="dc:Point" x="719" y="702" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="693" y="702" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doDeleteServiceInstance_CallActivity"> + <dc:Bounds x="700" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av"> + <dc:Bounds x="1276" y="174" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1287" y="210" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp"> + <di:waypoint xsi:type="dc:Point" x="800" y="97" /> + <di:waypoint xsi:type="dc:Point" x="897" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="849" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j"> + <dc:Bounds x="281" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l"> + <di:waypoint xsi:type="dc:Point" x="153" y="97" /> + <di:waypoint xsi:type="dc:Point" x="281" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="217" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv"> + <dc:Bounds x="1083" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre"> + <dc:Bounds x="1244" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> + <di:waypoint xsi:type="dc:Point" x="1183" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1244" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1214" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> + <dc:Bounds x="585" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> + <dc:Bounds x="762" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> + <dc:Bounds x="312" y="321" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> + <dc:Bounds x="327" y="407" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="448" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> + <dc:Bounds x="906" y="407" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="924" y="448" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> + <di:waypoint xsi:type="dc:Point" x="685" y="425" /> + <di:waypoint xsi:type="dc:Point" x="762" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="724" y="410" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> + <di:waypoint xsi:type="dc:Point" x="862" y="425" /> + <di:waypoint xsi:type="dc:Point" x="906" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="884" y="410" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> + <di:waypoint xsi:type="dc:Point" x="1294" y="137" /> + <di:waypoint xsi:type="dc:Point" x="1294" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1309" y="155.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> + <di:waypoint xsi:type="dc:Point" x="363" y="425" /> + <di:waypoint xsi:type="dc:Point" x="385" y="425" /> + <di:waypoint xsi:type="dc:Point" x="385" y="425" /> + <di:waypoint xsi:type="dc:Point" x="406" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="400" y="425" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn"> + <di:waypoint xsi:type="dc:Point" x="599" y="97" /> + <di:waypoint xsi:type="dc:Point" x="652" y="97" /> + <di:waypoint xsi:type="dc:Point" x="652" y="97" /> + <di:waypoint xsi:type="dc:Point" x="700" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="667" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz"> + <dc:Bounds x="499" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ktadna_di" bpmnElement="SequenceFlow_0ktadna"> + <di:waypoint xsi:type="dc:Point" x="381" y="97" /> + <di:waypoint xsi:type="dc:Point" x="499" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="440" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0o4smqp_di" bpmnElement="ScriptTask_0o4smqp"> + <dc:Bounds x="407" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_14eadeb_di" bpmnElement="SequenceFlow_14eadeb"> + <di:waypoint xsi:type="dc:Point" x="507" y="425" /> + <di:waypoint xsi:type="dc:Point" x="534" y="425" /> + <di:waypoint xsi:type="dc:Point" x="534" y="425" /> + <di:waypoint xsi:type="dc:Point" x="585" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="549" y="425" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0isueuw_di" bpmnElement="ExclusiveGateway_0isueuw" isMarkerVisible="true"> + <dc:Bounds x="897" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="897" y="44" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qjygj5_di" bpmnElement="SequenceFlow_1qjygj5"> + <di:waypoint xsi:type="dc:Point" x="947" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1083" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="955" y="73" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0yhby6h_di" bpmnElement="EndEvent_0yhby6h"> + <dc:Bounds x="904" y="174" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="922" y="210" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hgiouk_di" bpmnElement="SequenceFlow_0hgiouk"> + <di:waypoint xsi:type="dc:Point" x="922" y="122" /> + <di:waypoint xsi:type="dc:Point" x="922" y="147" /> + <di:waypoint xsi:type="dc:Point" x="922" y="147" /> + <di:waypoint xsi:type="dc:Point" x="922" y="174" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="931" y="147" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn new file mode 100644 index 0000000000..a62e16525d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn @@ -0,0 +1,372 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteNetworkInstance" name="DeleteNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def networkMod = new DeleteNetworkInstance() +networkMod.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="doDeleteNetworkInstance_CallActivity" name="DoDelete Network Instance " calledElement="DoDeleteNetworkInstance"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="networkId" target="networkId" /> + <camunda:in source="networkName" target="networkName" /> + <camunda:in source="networkModelInfo" target="networkModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="networkInputParams" target="networkInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="networkId" target="networkId" /> + <camunda:out source="networkName" target="networkName" /> + <camunda:out source="networkOutputParams" target="networkOutputParams" /> + <camunda:in source="bpmnRequest" target="bpmnRequest" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="requestId" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="requestAction" target="requestAction" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_0o440av" name="End"> + <bpmn2:incoming>SequenceFlow_0x3znm5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_09qt0pi" name="DeleteNetwork PostProcess Success " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.postProcessResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doDeleteNetworkInstance_CallActivity" targetRef="ScriptTask_0cihgpv" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x3znm5" sourceRef="ScriptTask_09qt0pi" targetRef="EndEvent_0o440av" /> + <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ablr60</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def preProcess = new DeleteNetworkInstance() +preProcess.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_0pvcr6j" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ablr60" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_19xbdbu" /> + <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.prepareCompletion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="DELNI_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" /> + <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_110xxgx"> + <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1rqikib"> + <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1akfe0b" name="Prepare DB Infra Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s5niqb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_0sztuly" name="Call DB Infra Error Update"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)} +]]></camunda:inputParameter> + <camunda:inputParameter name="payload">${DELNI_deleteDBRequest}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="DELNI_deleteDBResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="DELNI_dbReturnCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1s5niqb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06s5eu4</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_06s5eu4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.buildErrorResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="DELNI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ServiceTask_0sztuly" /> + <bpmn2:sequenceFlow id="SequenceFlow_06s5eu4" sourceRef="ServiceTask_0sztuly" targetRef="ScriptTask_1hql91g" /> + <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1akfe0b" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="ScriptTask_09qt0pi" /> + <bpmn2:sequenceFlow id="SequenceFlow_0rt8wax" sourceRef="Task_19xbdbu" targetRef="Task_1nko5zz" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doDeleteNetworkInstance_CallActivity" /> + <bpmn2:scriptTask id="Task_19xbdbu" name="Get Network Model Info " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ablr60</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0rt8wax</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.getNetworkModelInfo(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0rt8wax</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DeleteNetworkInstance = new DeleteNetworkInstance() +DeleteNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent"> + <dc:Bounds x="3" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-3" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="-8" y="786" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="25" y="863" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="43" y="904" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="140" y="841" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="301" y="863" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="319" y="904" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="61" y="881" /> + <di:waypoint xsi:type="dc:Point" x="140" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="881" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="240" y="881" /> + <di:waypoint xsi:type="dc:Point" x="301" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="275" y="881" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doDeleteNetworkInstance_CallActivity"> + <dc:Bounds x="673" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av"> + <dc:Bounds x="1408" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="115" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi"> + <dc:Bounds x="1253" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp"> + <di:waypoint xsi:type="dc:Point" x="773" y="97" /> + <di:waypoint xsi:type="dc:Point" x="920" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="847" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5"> + <di:waypoint xsi:type="dc:Point" x="1353" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1381" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j"> + <dc:Bounds x="139" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l"> + <di:waypoint xsi:type="dc:Point" x="39" y="97" /> + <di:waypoint xsi:type="dc:Point" x="89" y="97" /> + <di:waypoint xsi:type="dc:Point" x="89" y="97" /> + <di:waypoint xsi:type="dc:Point" x="139" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="104" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60"> + <di:waypoint xsi:type="dc:Point" x="239" y="97" /> + <di:waypoint xsi:type="dc:Point" x="342" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="291" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv"> + <dc:Bounds x="920" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre"> + <dc:Bounds x="1086" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b"> + <dc:Bounds x="189" y="525" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0sztuly_di" bpmnElement="ServiceTask_0sztuly"> + <dc:Bounds x="384" y="525" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> + <di:waypoint xsi:type="dc:Point" x="1020" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1086" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1053" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> + <dc:Bounds x="563" y="525" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> + <dc:Bounds x="738" y="525" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> + <dc:Bounds x="-13" y="353" width="1021" height="404" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> + <dc:Bounds x="83" y="547" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="101" y="588" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> + <dc:Bounds x="913" y="547" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="931" y="588" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb"> + <di:waypoint xsi:type="dc:Point" x="289" y="565" /> + <di:waypoint xsi:type="dc:Point" x="384" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="337" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06s5eu4_di" bpmnElement="SequenceFlow_06s5eu4"> + <di:waypoint xsi:type="dc:Point" x="484" y="565" /> + <di:waypoint xsi:type="dc:Point" x="563" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="524" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> + <di:waypoint xsi:type="dc:Point" x="663" y="565" /> + <di:waypoint xsi:type="dc:Point" x="738" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> + <di:waypoint xsi:type="dc:Point" x="838" y="565" /> + <di:waypoint xsi:type="dc:Point" x="913" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="876" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> + <di:waypoint xsi:type="dc:Point" x="1186" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1253" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1220" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> + <di:waypoint xsi:type="dc:Point" x="119" y="565" /> + <di:waypoint xsi:type="dc:Point" x="189" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="154" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax"> + <di:waypoint xsi:type="dc:Point" x="442" y="97" /> + <di:waypoint xsi:type="dc:Point" x="515" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="479" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn"> + <di:waypoint xsi:type="dc:Point" x="615" y="97" /> + <di:waypoint xsi:type="dc:Point" x="673" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="644" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu"> + <dc:Bounds x="342" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz"> + <dc:Bounds x="515" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn new file mode 100644 index 0000000000..a1c75a8740 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn @@ -0,0 +1,258 @@ +<?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="1.10.0"> + <bpmn:process id="DeleteSDNCNetworkResource" name="DeleteSDNCNetworkResource" isExecutable="true"> + <bpmn:startEvent id="deleteNetworkResource_StartEvent" name="deleteNetworkResource_StartEvent"> + <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="deleteNetworkResource_StartEvent" targetRef="Task_1dlrfiw" /> + <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0tezqd4" /> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="prepare SDNC Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_18l3crb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DeleteSDNCNetworkResource() +dcsi.prepareSDNCRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1x6k78c" name="delete SDNC call end"> + <bpmn:incoming>SequenceFlow_15wux6a</bpmn:incoming> + </bpmn:endEvent> + <bpmn:callActivity id="CallActivity_1600xlj" name="Call SDNC RSRC Adapter V1 " calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_15mvedq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xk5xed</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1xk5xed" sourceRef="CallActivity_1600xlj" targetRef="Task_0uwlr22" /> + <bpmn:sequenceFlow id="SequenceFlow_0ow44q0" sourceRef="Task_023hred" targetRef="ScriptTask_1emjxm2" /> + <bpmn:scriptTask id="Task_023hred" name="post SDNC delete call"> + <bpmn:incoming>SequenceFlow_1vnx1pp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0ow44q0</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DeleteSDNCNetworkResource() +dcsi.postDeleteSDNCCall(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0w2es8j" sourceRef="Task_1dlrfiw" targetRef="Task_13sx2bp" /> + <bpmn:sequenceFlow id="SequenceFlow_18l3crb" sourceRef="Task_13sx2bp" targetRef="PreprocessIncomingRequest_task" /> + <bpmn:scriptTask id="Task_1dlrfiw" name="Set the Recipe DesignTimeParam" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0w2es8j</bpmn:outgoing> + <bpmn:script><![CDATA[String recipeParamXsdDemo="""{"operationType":"GRE"}""" +String recipeParamXsd="" +execution.setVariable("recipeParamXsd", recipeParamXsd)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_13sx2bp" name="Pre Process Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0w2es8j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18l3crb</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DeleteSDNCNetworkResource() +dcsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1mz0vdx" sourceRef="Task_0tezqd4" targetRef="Task_18tomkl" /> + <bpmn:sequenceFlow id="SequenceFlow_15mvedq" sourceRef="Task_18tomkl" targetRef="CallActivity_1600xlj" /> + <bpmn:scriptTask id="Task_0tezqd4" name="Delete progress update parameters before delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1mz0vdx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DeleteSDNCNetworkResource() +dcsi.prepareUpdateBeforeDeleteSDNCResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0uwlr22" name="Create progress update parameters After delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1xk5xed</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1jr6zi0</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DeleteSDNCNetworkResource() +dcsi.prepareUpdateAfterDeleteSDNCResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="Task_18tomkl" name="update progress update"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1mz0vdx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_15mvedq</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="ServiceTask_1cm8iwr" name="update progress update"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1jr6zi0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1vnx1pp</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1jr6zi0" sourceRef="Task_0uwlr22" targetRef="ServiceTask_1cm8iwr" /> + <bpmn:sequenceFlow id="SequenceFlow_1vnx1pp" sourceRef="ServiceTask_1cm8iwr" targetRef="Task_023hred" /> + <bpmn:scriptTask id="ScriptTask_1emjxm2" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0ow44q0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_15wux6a</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DeleteSDNCNetworkResource() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_15wux6a" sourceRef="ScriptTask_1emjxm2" targetRef="EndEvent_1x6k78c" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteSDNCNetworkResource"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="deleteNetworkResource_StartEvent"> + <dc:Bounds x="-111" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-136" y="147" width="89" height="28" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint xsi:type="dc:Point" x="-75" y="129" /> + <di:waypoint xsi:type="dc:Point" x="-10" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-87.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova"> + <di:waypoint xsi:type="dc:Point" x="413" y="129" /> + <di:waypoint xsi:type="dc:Point" x="460" y="129" /> + <di:waypoint xsi:type="dc:Point" x="500" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="313" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="967" y="317" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="933" y="359" width="79" height="28" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1600xlj_di" bpmnElement="CallActivity_1600xlj"> + <dc:Bounds x="109" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xk5xed_di" bpmnElement="SequenceFlow_1xk5xed"> + <di:waypoint xsi:type="dc:Point" x="209" y="335" /> + <di:waypoint xsi:type="dc:Point" x="302" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="210.5" y="314" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ow44q0_di" bpmnElement="SequenceFlow_0ow44q0"> + <di:waypoint xsi:type="dc:Point" x="735" y="335" /> + <di:waypoint xsi:type="dc:Point" x="793" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="314" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0gyej62_di" bpmnElement="Task_023hred"> + <dc:Bounds x="635" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0w2es8j_di" bpmnElement="SequenceFlow_0w2es8j"> + <di:waypoint xsi:type="dc:Point" x="90" y="129" /> + <di:waypoint xsi:type="dc:Point" x="148" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="74" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18l3crb_di" bpmnElement="SequenceFlow_18l3crb"> + <di:waypoint xsi:type="dc:Point" x="248" y="129" /> + <di:waypoint xsi:type="dc:Point" x="313" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235.5" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lc6l7a_di" bpmnElement="Task_1dlrfiw"> + <dc:Bounds x="-10" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_14l9mlv_di" bpmnElement="Task_13sx2bp"> + <dc:Bounds x="148" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1mz0vdx_di" bpmnElement="SequenceFlow_1mz0vdx"> + <di:waypoint xsi:type="dc:Point" x="606" y="129" /> + <di:waypoint xsi:type="dc:Point" x="638" y="129" /> + <di:waypoint xsi:type="dc:Point" x="638" y="129" /> + <di:waypoint xsi:type="dc:Point" x="738" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="608" y="123" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15mvedq_di" bpmnElement="SequenceFlow_15mvedq"> + <di:waypoint xsi:type="dc:Point" x="788" y="169" /> + <di:waypoint xsi:type="dc:Point" x="788" y="218" /> + <di:waypoint xsi:type="dc:Point" x="0" y="218" /> + <di:waypoint xsi:type="dc:Point" x="0" y="335" /> + <di:waypoint xsi:type="dc:Point" x="109" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="197" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1kqf4ge_di" bpmnElement="Task_0tezqd4"> + <dc:Bounds x="506" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0hu4lhm_di" bpmnElement="Task_0uwlr22"> + <dc:Bounds x="302" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1q6ssz7_di" bpmnElement="Task_18tomkl"> + <dc:Bounds x="738" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1cm8iwr_di" bpmnElement="ServiceTask_1cm8iwr"> + <dc:Bounds x="487" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jr6zi0_di" bpmnElement="SequenceFlow_1jr6zi0"> + <di:waypoint xsi:type="dc:Point" x="402" y="335" /> + <di:waypoint xsi:type="dc:Point" x="487" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="444.5" y="314" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vnx1pp_di" bpmnElement="SequenceFlow_1vnx1pp"> + <di:waypoint xsi:type="dc:Point" x="587" y="335" /> + <di:waypoint xsi:type="dc:Point" x="635" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="566" y="314" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1emjxm2_di" bpmnElement="ScriptTask_1emjxm2"> + <dc:Bounds x="793" y="295" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15wux6a_di" bpmnElement="SequenceFlow_15wux6a"> + <di:waypoint xsi:type="dc:Point" x="893" y="335" /> + <di:waypoint xsi:type="dc:Point" x="967" y="335" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="930" y="313" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn new file mode 100644 index 0000000000..bbc7ead144 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn @@ -0,0 +1,166 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3"> + <bpmn:process id="DeleteVFCNSResource" name="DeleteVFCNSResource" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Start Custom Delete E2E NS"> + <bpmn:outgoing>SequenceFlow_0x2e9we</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_0x2e9we" sourceRef="StartEvent_1" targetRef="Task_0yl3rau" /> + <bpmn:sequenceFlow id="SequenceFlow_00vpfm3" sourceRef="Task_0yl3rau" targetRef="Task_14gmbq4" /> + <bpmn:sequenceFlow id="SequenceFlow_1s4cyms" sourceRef="Task_14gmbq4" targetRef="Task_1e27uaw" /> + <bpmn:endEvent id="EndEvent_07ew0rf" name="End Custom Delete E2E NS"> + <bpmn:incoming>SequenceFlow_0jvtdhv</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_152xb4z" sourceRef="Task_1e27uaw" targetRef="ScriptTask_0pkuukn" /> + <bpmn:scriptTask id="Task_0yl3rau" name="DoCustomDeleteE2ENS prepare" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0x2e9we</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_00vpfm3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DeleteVFCNSResource() +ddsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_1e27uaw" name="Post delet NS resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1s4cyms</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_152xb4z</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DeleteVFCNSResource() +ddsi.postProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_14gmbq4" name="Call Delete NS Instance" calledElement="DoDeleteVFCNetworkServiceInstance"> + <bpmn:extensionElements> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceTemplateId" target="resourceTemplateId" /> + <camunda:in source="resourceInstanceId" target="resourceInstanceId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:out source="operationStatus" target="operationStatus" /> + <camunda:out source="nsInstanceId" target="nsInstanceId" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_00vpfm3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1s4cyms</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:subProcess id="SubProcess_11qmm22" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0zwedl6"> + <bpmn:outgoing>SequenceFlow_0yro7o2</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_10tfowz"> + <bpmn:incoming>SequenceFlow_0p0ayci</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0tdtqwh" name="Log / Print Unexpected Error"> + <bpmn:incoming>SequenceFlow_0yro7o2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0p0ayci</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0yro7o2" sourceRef="StartEvent_0zwedl6" targetRef="ScriptTask_0tdtqwh" /> + <bpmn:sequenceFlow id="SequenceFlow_0p0ayci" sourceRef="ScriptTask_0tdtqwh" targetRef="EndEvent_10tfowz" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_0pkuukn" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_152xb4z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0jvtdhv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dsi = new DeleteVFCNSResource() +dsi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0jvtdhv" sourceRef="ScriptTask_0pkuukn" targetRef="EndEvent_07ew0rf" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVFCNSResource"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="330" y="336" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="312" y="372" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0x2e9we_di" bpmnElement="SequenceFlow_0x2e9we"> + <di:waypoint xsi:type="dc:Point" x="366" y="354" /> + <di:waypoint xsi:type="dc:Point" x="474" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="375" y="333" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00vpfm3_di" bpmnElement="SequenceFlow_00vpfm3"> + <di:waypoint xsi:type="dc:Point" x="574" y="354" /> + <di:waypoint xsi:type="dc:Point" x="661" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="572.5" y="333" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s4cyms_di" bpmnElement="SequenceFlow_1s4cyms"> + <di:waypoint xsi:type="dc:Point" x="761" y="354" /> + <di:waypoint xsi:type="dc:Point" x="889" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="780" y="333" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_07ew0rf_di" bpmnElement="EndEvent_07ew0rf"> + <dc:Bounds x="1313" y="336" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1293" y="376" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_152xb4z_di" bpmnElement="SequenceFlow_152xb4z"> + <di:waypoint xsi:type="dc:Point" x="989" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1113" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1006" y="333" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ssr09e_di" bpmnElement="Task_0yl3rau"> + <dc:Bounds x="474" y="314" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_092ktxo_di" bpmnElement="Task_1e27uaw"> + <dc:Bounds x="889" y="314" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_00p99pt_di" bpmnElement="Task_14gmbq4"> + <dc:Bounds x="661" y="314" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_11qmm22_di" bpmnElement="SubProcess_11qmm22" isExpanded="true"> + <dc:Bounds x="636" y="539" width="350" height="200" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0zwedl6_di" bpmnElement="StartEvent_0zwedl6"> + <dc:Bounds x="667" y="606" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639" y="644" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_10tfowz_di" bpmnElement="EndEvent_10tfowz"> + <dc:Bounds x="931" y="606" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="645" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0tdtqwh_di" bpmnElement="ScriptTask_0tdtqwh"> + <dc:Bounds x="763" y="584" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0yro7o2_di" bpmnElement="SequenceFlow_0yro7o2"> + <di:waypoint xsi:type="dc:Point" x="703" y="624" /> + <di:waypoint xsi:type="dc:Point" x="763" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="688" y="603" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p0ayci_di" bpmnElement="SequenceFlow_0p0ayci"> + <di:waypoint xsi:type="dc:Point" x="863" y="624" /> + <di:waypoint xsi:type="dc:Point" x="931" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="603" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pkuukn_di" bpmnElement="ScriptTask_0pkuukn"> + <dc:Bounds x="1113" y="314" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jvtdhv_di" bpmnElement="SequenceFlow_0jvtdhv"> + <di:waypoint xsi:type="dc:Point" x="1213" y="354" /> + <di:waypoint xsi:type="dc:Point" x="1313" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1263" y="333" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn new file mode 100644 index 0000000000..a835946d1d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn @@ -0,0 +1,812 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteVcpeResCustService" name="DeleteVcpeResCustService" isExecutable="true"> + <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" /> + <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST"> + <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process & Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> + <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="DVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="requestId" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("DeleteVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="DeleteVCPE_EndEvent" /> + <bpmn2:endEvent id="DeleteVCPE_EndEvent" name="End"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" /> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess"> + <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:callActivity id="doDeleteServiceInstance_CallActivity" name="DoDelete ServiceInstance " calledElement="DoDeleteServiceInstance"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="rollbackData" target="DCRESI_rollbackData" /> + <camunda:in source="failExists" target="failExists" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rolledBack" target="DCRESI_rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10o22u2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04ao07f</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoQueryServiceInstance"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="QueryServiceInstance" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_06llof4</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="DVRCS_falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0807ukc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_04xute7"> + <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_06llof4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" /> + <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" /> + <bpmn2:sequenceFlow id="SequenceFlow_06llof4" sourceRef="StartEvent_1bwmffk" targetRef="ScriptTask_0yk02h3" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_10o22u2" sourceRef="IntermediateCatchEvent_3" targetRef="doDeleteServiceInstance_CallActivity" /> + <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="postProcessAndCompletionRequest_ScriptTask" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo FinishProcess"> + <bpmn2:incoming>SequenceFlow_04ao07f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:callActivity id="callGetServiceInstance" name="Get Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0jek18q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ttswdr</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_05m3m2e" name="Process Response & ready data for subflows" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ttswdr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18103ca</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService = new DeleteVcpeResCustService() +DeleteVcpeResCustService.prepareServiceDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_112zjtp" name="QueryServiceInstance"> + <bpmn2:outgoing>SequenceFlow_0jek18q</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="QueryServiceInstance" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_162gs5w" name="GoToDeleteBRG"> + <bpmn2:incoming>SequenceFlow_18103ca</bpmn2:incoming> + <bpmn2:linkEventDefinition name="DeleteBRG" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0jek18q" sourceRef="IntermediateCatchEvent_112zjtp" targetRef="callGetServiceInstance" /> + <bpmn2:sequenceFlow id="SequenceFlow_18103ca" sourceRef="ScriptTask_05m3m2e" targetRef="IntermediateThrowEvent_162gs5w" /> + <bpmn2:sequenceFlow id="SequenceFlow_04ao07f" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="IntermediateThrowEvent_0prlju0" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ttswdr" sourceRef="callGetServiceInstance" targetRef="ScriptTask_05m3m2e" /> + <bpmn2:callActivity id="CallActivity_1yap348" name="Delete BRG Resources " calledElement="DoDeleteAllottedResourceBRG"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" /> + <camunda:in source="BRG_allottedResourceId" target="allottedResourceId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="globalCustomerId" target="globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_05cjs89</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0snq0kw</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0i8bmrc" name="GoToVCPE-RESCUST"> + <bpmn2:incoming>SequenceFlow_0zaircn</bpmn2:incoming> + <bpmn2:linkEventDefinition name="vCPE-RESCUST" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_04bw3vy" name="DeleteBRG"> + <bpmn2:outgoing>SequenceFlow_09i2jj0</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="DeleteBRG" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0gw5gmo" name="Delete BRG AR?" default="SequenceFlow_03n4wb1"> + <bpmn2:incoming>SequenceFlow_09i2jj0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_05cjs89</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_03n4wb1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1hmeube"> + <bpmn2:incoming>SequenceFlow_0snq0kw</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_03n4wb1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jjh8rv</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_12i24vc" name="Delete TXC AR?" default="SequenceFlow_0nk8vsb"> + <bpmn2:incoming>SequenceFlow_0xgpd0u</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0nk8vsb</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0npvfo3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0190r3n"> + <bpmn2:incoming>SequenceFlow_0nk8vsb</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0et9p0i</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zaircn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05cjs89" name="Yes" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="CallActivity_1yap348"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DVRCS_BRG") == null || execution.getVariable("DVRCS_BRG") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0snq0kw" sourceRef="CallActivity_1yap348" targetRef="ExclusiveGateway_1hmeube" /> + <bpmn2:sequenceFlow id="SequenceFlow_09i2jj0" sourceRef="IntermediateCatchEvent_04bw3vy" targetRef="ExclusiveGateway_0gw5gmo" /> + <bpmn2:sequenceFlow id="SequenceFlow_0zaircn" sourceRef="ExclusiveGateway_0190r3n" targetRef="IntermediateThrowEvent_0i8bmrc" /> + <bpmn2:sequenceFlow id="SequenceFlow_03n4wb1" name="No" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="ExclusiveGateway_1hmeube" /> + <bpmn2:sequenceFlow id="SequenceFlow_1jjh8rv" sourceRef="ExclusiveGateway_1hmeube" targetRef="IntermediateThrowEvent_19nq9li" /> + <bpmn2:sequenceFlow id="SequenceFlow_0nk8vsb" name="No" sourceRef="ExclusiveGateway_12i24vc" targetRef="ExclusiveGateway_0190r3n" /> + <bpmn2:sequenceFlow id="SequenceFlow_0npvfo3" name="Yes" sourceRef="ExclusiveGateway_12i24vc" targetRef="CallActivity_00g5q0n"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DVRCS_TunnelXConn") == null || execution.getVariable("DVRCS_TunnelXConn") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="CallActivity_00g5q0n" name="Delete TXC Allotted Resources " calledElement="DoDeleteAllottedResourceTXC"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" /> + <camunda:in source="TXC_allottedResourceId" target="allottedResourceId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="globalCustomerId" target="globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0npvfo3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0et9p0i</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0et9p0i" sourceRef="CallActivity_00g5q0n" targetRef="ExclusiveGateway_0190r3n" /> + <bpmn2:callActivity id="CallActivity_14j22w3" name="DoDelete VNF and Modules " calledElement="DoDeleteVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="cloudConfiguration" target="cloudConfiguration" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_128485i</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04fys47</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1csw2q1" name="Prepare to Delete VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yamcyn</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19cxgtm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_128485i</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService= new DeleteVcpeResCustService() +DeleteVcpeResCustService.prepareVnfAndModulesDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1ks536f" name="GoToDeleteTXC"> + <bpmn2:incoming>SequenceFlow_1lfph6u</bpmn2:incoming> + <bpmn2:linkEventDefinition name="DeleteTXC" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0hy32qu" name="StartVnfs"> + <bpmn2:outgoing>SequenceFlow_1ofw0fi</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartVnfs" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0io2vo5" name="Delete VNF?" default="SequenceFlow_0vq7f6b"> + <bpmn2:incoming>SequenceFlow_1ofw0fi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1yamcyn</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0vq7f6b</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1bm1vby"> + <bpmn2:incoming>SequenceFlow_0vq7f6b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_10scc5r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lfph6u</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_0wqfeak" name="Validate VNF delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04fys47</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1o5cutr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +def DeleteVcpeResCustService= new DeleteVcpeResCustService() +DeleteVcpeResCustService.validateVnfDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_14hjmu4" name="Delete Additional VNFs?" default="SequenceFlow_10scc5r"> + <bpmn2:incoming>SequenceFlow_1o5cutr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19cxgtm</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_10scc5r</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_128485i" sourceRef="ScriptTask_1csw2q1" targetRef="CallActivity_14j22w3" /> + <bpmn2:sequenceFlow id="SequenceFlow_04fys47" sourceRef="CallActivity_14j22w3" targetRef="ScriptTask_0wqfeak" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yamcyn" name="Yes" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ScriptTask_1csw2q1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DVRCS_vnfsCount") > 0}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19cxgtm" name="Yes" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ScriptTask_1csw2q1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DVRCS_vnfsDeletedCount") < execution.getVariable("DVRCS_vnfsCount")}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1lfph6u" sourceRef="ExclusiveGateway_1bm1vby" targetRef="IntermediateThrowEvent_1ks536f" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ofw0fi" sourceRef="IntermediateCatchEvent_0hy32qu" targetRef="ExclusiveGateway_0io2vo5" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vq7f6b" name="No" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ExclusiveGateway_1bm1vby" /> + <bpmn2:sequenceFlow id="SequenceFlow_10scc5r" name="No" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ExclusiveGateway_1bm1vby" /> + <bpmn2:sequenceFlow id="SequenceFlow_1o5cutr" sourceRef="ScriptTask_0wqfeak" targetRef="ExclusiveGateway_14hjmu4" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_19nq9li" name="GoToStartVnfs"> + <bpmn2:incoming>SequenceFlow_1jjh8rv</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartVnfs" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1svwsxy" name="DeleteTXC"> + <bpmn2:outgoing>SequenceFlow_0xgpd0u</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="DeleteTXC" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0xgpd0u" sourceRef="IntermediateCatchEvent_1svwsxy" targetRef="ExclusiveGateway_12i24vc" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVcpeResCustService"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent"> + <dc:Bounds x="96" y="121" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="162" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="285" y="99" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="132" y="139" /> + <di:waypoint xsi:type="dc:Point" x="285" y="139" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="174" y="139" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> + <dc:Bounds x="476" y="1192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> + <dc:Bounds x="285" y="1193" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="385" y="139" /> + <di:waypoint xsi:type="dc:Point" x="476" y="139" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="274" y="100" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> + <dc:Bounds x="476" y="99" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> + <di:waypoint xsi:type="dc:Point" x="385" y="1233" /> + <di:waypoint xsi:type="dc:Point" x="476" y="1232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="431" y="1217.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="DeleteVCPE_EndEvent"> + <dc:Bounds x="1046" y="1213" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1054" y="1254" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337"> + <di:waypoint xsi:type="dc:Point" x="576" y="1233" /> + <di:waypoint xsi:type="dc:Point" x="636" y="1233" /> + <di:waypoint xsi:type="dc:Point" x="636" y="1230" /> + <di:waypoint xsi:type="dc:Point" x="803" y="1230" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="651" y="1231.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="686" y="1374" width="405" height="205" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="754" y="1479" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="772" y="1520" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="829" y="1457" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="982" y="1479" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1000" y="1520" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="790" y="1497" /> + <di:waypoint xsi:type="dc:Point" x="829" y="1497" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="818" y="1497" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="929" y="1497" /> + <di:waypoint xsi:type="dc:Point" x="962" y="1497" /> + <di:waypoint xsi:type="dc:Point" x="962" y="1497" /> + <di:waypoint xsi:type="dc:Point" x="982" y="1497" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="977" y="1497" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doDeleteServiceInstance_CallActivity"> + <dc:Bounds x="285" y="1009" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="576" y="139" /> + <di:waypoint xsi:type="dc:Point" x="728" y="139" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="652" y="124" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2"> + <dc:Bounds x="803" y="1191" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177"> + <di:waypoint xsi:type="dc:Point" x="903" y="1230" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="1231" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="975" y="1215.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3"> + <dc:Bounds x="100" y="1031" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="92" y="1067" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4"> + <dc:Bounds x="100" y="1216" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="82" y="1252" width="71" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2"> + <dc:Bounds x="728" y="121" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="703" y="162" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true"> + <dc:Bounds x="52" y="1375" width="598" height="203" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk"> + <dc:Bounds x="123" y="1448" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="117" y="1489" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa"> + <dc:Bounds x="384" y="1426" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7"> + <dc:Bounds x="539" y="1448" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="557" y="1489" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3"> + <dc:Bounds x="237" y="1426" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_10o22u2_di" bpmnElement="SequenceFlow_10o22u2"> + <di:waypoint xsi:type="dc:Point" x="136" y="1049" /> + <di:waypoint xsi:type="dc:Point" x="285" y="1049" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="1034" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1"> + <di:waypoint xsi:type="dc:Point" x="136" y="1234" /> + <di:waypoint xsi:type="dc:Point" x="285" y="1233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="1218.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc"> + <di:waypoint xsi:type="dc:Point" x="337" y="1466" /> + <di:waypoint xsi:type="dc:Point" x="384" y="1466" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="1451" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8"> + <di:waypoint xsi:type="dc:Point" x="484" y="1466" /> + <di:waypoint xsi:type="dc:Point" x="539" y="1466" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="512" y="1451" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0"> + <dc:Bounds x="508" y="1031" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="491" y="1072" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0nmoax4_di" bpmnElement="callGetServiceInstance"> + <dc:Bounds x="285" y="254" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_05m3m2e_di" bpmnElement="ScriptTask_05m3m2e"> + <dc:Bounds x="476" y="254" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_112zjtp_di" bpmnElement="IntermediateCatchEvent_112zjtp"> + <dc:Bounds x="96" y="276" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="72" y="312" width="81" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_162gs5w_di" bpmnElement="IntermediateThrowEvent_162gs5w"> + <dc:Bounds x="732" y="276" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="708" y="317" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jek18q_di" bpmnElement="SequenceFlow_0jek18q"> + <di:waypoint xsi:type="dc:Point" x="132" y="294" /> + <di:waypoint xsi:type="dc:Point" x="285" y="294" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="279" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18103ca_di" bpmnElement="SequenceFlow_18103ca"> + <di:waypoint xsi:type="dc:Point" x="576" y="294" /> + <di:waypoint xsi:type="dc:Point" x="732" y="294" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="654" y="279" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04ao07f_di" bpmnElement="SequenceFlow_04ao07f"> + <di:waypoint xsi:type="dc:Point" x="385" y="1049" /> + <di:waypoint xsi:type="dc:Point" x="508" y="1049" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="447" y="1034" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ttswdr_di" bpmnElement="SequenceFlow_1ttswdr"> + <di:waypoint xsi:type="dc:Point" x="385" y="294" /> + <di:waypoint xsi:type="dc:Point" x="422" y="294" /> + <di:waypoint xsi:type="dc:Point" x="422" y="294" /> + <di:waypoint xsi:type="dc:Point" x="476" y="294" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="437" y="294" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06llof4_di" bpmnElement="SequenceFlow_06llof4"> + <di:waypoint xsi:type="dc:Point" x="159" y="1466" /> + <di:waypoint xsi:type="dc:Point" x="237" y="1466" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="198" y="1441" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1yap348_di" bpmnElement="CallActivity_1yap348"> + <dc:Bounds x="346" y="356" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0i8bmrc_di" bpmnElement="IntermediateThrowEvent_0i8bmrc"> + <dc:Bounds x="1046" y="479" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1023" y="520" width="85" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_04bw3vy_di" bpmnElement="IntermediateCatchEvent_04bw3vy"> + <dc:Bounds x="96" y="489" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="87" y="525" width="56" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0gw5gmo_di" bpmnElement="ExclusiveGateway_0gw5gmo" isMarkerVisible="true"> + <dc:Bounds x="235" y="482" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="294" y="495" width="86" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1hmeube_di" bpmnElement="ExclusiveGateway_1hmeube" isMarkerVisible="true"> + <dc:Bounds x="501" y="462" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="526" y="512" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_12i24vc_di" bpmnElement="ExclusiveGateway_12i24vc" isMarkerVisible="true"> + <dc:Bounds x="658" y="462" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="715" y="475" width="84" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0190r3n_di" bpmnElement="ExclusiveGateway_0190r3n" isMarkerVisible="true"> + <dc:Bounds x="911" y="472" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="936" y="522" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05cjs89_di" bpmnElement="SequenceFlow_05cjs89"> + <di:waypoint xsi:type="dc:Point" x="260" y="482" /> + <di:waypoint xsi:type="dc:Point" x="260" y="396" /> + <di:waypoint xsi:type="dc:Point" x="346" y="396" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="267" y="429" width="17" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0snq0kw_di" bpmnElement="SequenceFlow_0snq0kw"> + <di:waypoint xsi:type="dc:Point" x="446" y="396" /> + <di:waypoint xsi:type="dc:Point" x="527" y="396" /> + <di:waypoint xsi:type="dc:Point" x="527" y="463" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="487" y="381" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09i2jj0_di" bpmnElement="SequenceFlow_09i2jj0"> + <di:waypoint xsi:type="dc:Point" x="132" y="507" /> + <di:waypoint xsi:type="dc:Point" x="235" y="507" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="184" y="492" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zaircn_di" bpmnElement="SequenceFlow_0zaircn"> + <di:waypoint xsi:type="dc:Point" x="961" y="497" /> + <di:waypoint xsi:type="dc:Point" x="1004" y="497" /> + <di:waypoint xsi:type="dc:Point" x="1004" y="497" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="497" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1019" y="497" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03n4wb1_di" bpmnElement="SequenceFlow_03n4wb1"> + <di:waypoint xsi:type="dc:Point" x="260" y="532" /> + <di:waypoint xsi:type="dc:Point" x="260" y="567" /> + <di:waypoint xsi:type="dc:Point" x="526" y="567" /> + <di:waypoint xsi:type="dc:Point" x="526" y="512" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="389" y="552" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1jjh8rv_di" bpmnElement="SequenceFlow_1jjh8rv"> + <di:waypoint xsi:type="dc:Point" x="551" y="487" /> + <di:waypoint xsi:type="dc:Point" x="576" y="487" /> + <di:waypoint xsi:type="dc:Point" x="576" y="562" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="518.5" y="472" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0nk8vsb_di" bpmnElement="SequenceFlow_0nk8vsb"> + <di:waypoint xsi:type="dc:Point" x="683" y="512" /> + <di:waypoint xsi:type="dc:Point" x="683" y="557" /> + <di:waypoint xsi:type="dc:Point" x="936" y="557" /> + <di:waypoint xsi:type="dc:Point" x="936" y="522" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="803" y="542" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0npvfo3_di" bpmnElement="SequenceFlow_0npvfo3"> + <di:waypoint xsi:type="dc:Point" x="683" y="462" /> + <di:waypoint xsi:type="dc:Point" x="683" y="396" /> + <di:waypoint xsi:type="dc:Point" x="770" y="396" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="693" y="433" width="17" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_00g5q0n_di" bpmnElement="CallActivity_00g5q0n"> + <dc:Bounds x="771" y="356" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0et9p0i_di" bpmnElement="SequenceFlow_0et9p0i"> + <di:waypoint xsi:type="dc:Point" x="871" y="396" /> + <di:waypoint xsi:type="dc:Point" x="936" y="396" /> + <di:waypoint xsi:type="dc:Point" x="936" y="472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="381" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_14j22w3_di" bpmnElement="CallActivity_14j22w3"> + <dc:Bounds x="578" y="759" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1csw2q1_di" bpmnElement="ScriptTask_1csw2q1"> + <dc:Bounds x="436" y="759" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ks536f_di" bpmnElement="IntermediateThrowEvent_1ks536f"> + <dc:Bounds x="1059" y="848" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1033" y="889" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0hy32qu_di" bpmnElement="IntermediateCatchEvent_0hy32qu"> + <dc:Bounds x="109" y="864" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="102" y="900" width="48" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0io2vo5_di" bpmnElement="ExclusiveGateway_0io2vo5" isMarkerVisible="true"> + <dc:Bounds x="358" y="857" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="417" y="889" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1bm1vby_di" bpmnElement="ExclusiveGateway_1bm1vby" isMarkerVisible="true"> + <dc:Bounds x="924" y="841" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="896" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0wqfeak_di" bpmnElement="ScriptTask_0wqfeak"> + <dc:Bounds x="710" y="759" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_14hjmu4_di" bpmnElement="ExclusiveGateway_14hjmu4" isMarkerVisible="true"> + <dc:Bounds x="851" y="774" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="818" y="832" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_128485i_di" bpmnElement="SequenceFlow_128485i"> + <di:waypoint xsi:type="dc:Point" x="536" y="799" /> + <di:waypoint xsi:type="dc:Point" x="578" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="512" y="784" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04fys47_di" bpmnElement="SequenceFlow_04fys47"> + <di:waypoint xsi:type="dc:Point" x="678" y="799" /> + <di:waypoint xsi:type="dc:Point" x="710" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="649" y="774" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yamcyn_di" bpmnElement="SequenceFlow_1yamcyn"> + <di:waypoint xsi:type="dc:Point" x="383" y="857" /> + <di:waypoint xsi:type="dc:Point" x="383" y="799" /> + <di:waypoint xsi:type="dc:Point" x="436" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="818" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19cxgtm_di" bpmnElement="SequenceFlow_19cxgtm"> + <di:waypoint xsi:type="dc:Point" x="876" y="774" /> + <di:waypoint xsi:type="dc:Point" x="876" y="688" /> + <di:waypoint xsi:type="dc:Point" x="486" y="688" /> + <di:waypoint xsi:type="dc:Point" x="486" y="759" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="671" y="670" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lfph6u_di" bpmnElement="SequenceFlow_1lfph6u"> + <di:waypoint xsi:type="dc:Point" x="974" y="866" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="866" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="971.5" y="845" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ofw0fi_di" bpmnElement="SequenceFlow_1ofw0fi"> + <di:waypoint xsi:type="dc:Point" x="145" y="882" /> + <di:waypoint xsi:type="dc:Point" x="358" y="882" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="207.5" y="857" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vq7f6b_di" bpmnElement="SequenceFlow_0vq7f6b"> + <di:waypoint xsi:type="dc:Point" x="383" y="908" /> + <di:waypoint xsi:type="dc:Point" x="383" y="931" /> + <di:waypoint xsi:type="dc:Point" x="949" y="931" /> + <di:waypoint xsi:type="dc:Point" x="949" y="892" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="628" y="907" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10scc5r_di" bpmnElement="SequenceFlow_10scc5r"> + <di:waypoint xsi:type="dc:Point" x="901" y="799" /> + <di:waypoint xsi:type="dc:Point" x="949" y="799" /> + <di:waypoint xsi:type="dc:Point" x="949" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="917" y="784" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1o5cutr_di" bpmnElement="SequenceFlow_1o5cutr"> + <di:waypoint xsi:type="dc:Point" x="810" y="799" /> + <di:waypoint xsi:type="dc:Point" x="851" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="786.5" y="784" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_19nq9li_di" bpmnElement="IntermediateThrowEvent_19nq9li"> + <dc:Bounds x="558" y="562" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="537" y="603" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1svwsxy_di" bpmnElement="IntermediateCatchEvent_1svwsxy"> + <dc:Bounds x="591" y="378" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="362" width="56" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xgpd0u_di" bpmnElement="SequenceFlow_0xgpd0u"> + <di:waypoint xsi:type="dc:Point" x="609" y="414" /> + <di:waypoint xsi:type="dc:Point" x="609" y="487" /> + <di:waypoint xsi:type="dc:Point" x="658" y="487" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="444.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn new file mode 100644 index 0000000000..bfe5e02b49 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn @@ -0,0 +1,331 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteVfModuleInfra" name="DeleteVfModuleInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_7" name="DoDeleteVfModule (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.prepDoDeleteVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="ScriptTask_6" name="DoDeleteVfModule" calledElement="DoDeleteVfModule"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DELVfModI_requestId" target="requestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vfModuleId" target="vfModuleId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="DELVfModI_vfModuleName" target="vfModuleName" /> + <camunda:in source="vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="cloudConfiguration" target="cloudConfiguration" /> + <camunda:in source=""1610"" target="sdncVersion" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="aLaCarte" target="aLaCarte" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="DELVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("DeleteVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.completionHandlerPrep(execution, 'DELVfModI_CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_5" /> + <bpmn2:serviceTask id="ScriptTask_8" name="UpdateInfraRequest"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${DELVfModI_updateInfraRequest}</camunda:inputParameter> + <camunda:outputParameter name="DELVfModI_updateInfraRequestResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="DELVfModI_updateInfraRequestResponseCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>soap-http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_10" /> + <bpmn2:scriptTask id="ScriptTask_5" name="Update Infra Request (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.prepUpdateInfraRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_8" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvfm = new DeleteVfModuleInfra() +dvfm.falloutHandlerPrep(execution, 'DELVfModI_FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="DELVfModI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_2" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="144" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="145" y="113" width="34" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="605" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="411" width="50" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="180" y="90" /> + <di:waypoint xsi:type="dc:Point" x="299" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="230" y="90" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="ScriptTask_2"> + <dc:Bounds x="299" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="399" y="90" /> + <di:waypoint xsi:type="dc:Point" x="449" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="433" y="90" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="449" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125" targetElement="_BPMNShape_ScriptTask_130"> + <di:waypoint xsi:type="dc:Point" x="498" y="130" /> + <di:waypoint xsi:type="dc:Point" x="498" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="190" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="169" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="449" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="549" y="388" /> + <di:waypoint xsi:type="dc:Point" x="605" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="723" y="186" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_130" bpmnElement="ScriptTask_7"> + <dc:Bounds x="149" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="149" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="299" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="249" y="388" /> + <di:waypoint xsi:type="dc:Point" x="299" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="394" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="65" y="536" width="565" height="241" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="129" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="98" y="671" width="98" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="209" y="608" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="165" y="648" /> + <di:waypoint xsi:type="dc:Point" x="209" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="948" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="309" y="648" /> + <di:waypoint xsi:type="dc:Point" x="377" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="325" y="648" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="533" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="551" y="671" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="612" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="627" y="671" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="704" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="671" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="648" y="648" /> + <di:waypoint xsi:type="dc:Point" x="704" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="693" y="948" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="377" y="608" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="399" y="388" /> + <di:waypoint xsi:type="dc:Point" x="449" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="439" y="356" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="477" y="648" /> + <di:waypoint xsi:type="dc:Point" x="533" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="456" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="299" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_130" targetElement="_BPMNShape_ScriptTask_181"> + <di:waypoint xsi:type="dc:Point" x="249" y="230" /> + <di:waypoint xsi:type="dc:Point" x="299" y="230" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_182" bpmnElement="ScriptTask_5"> + <dc:Bounds x="453" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_183" bpmnElement="ScriptTask_8"> + <dc:Bounds x="598" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_182"> + <di:waypoint xsi:type="dc:Point" x="399" y="230" /> + <di:waypoint xsi:type="dc:Point" x="453" y="230" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="613" y="314" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_182" targetElement="_BPMNShape_ScriptTask_183"> + <di:waypoint xsi:type="dc:Point" x="553" y="230" /> + <di:waypoint xsi:type="dc:Point" x="598" y="230" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="230" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_183" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="647" y="270" /> + <di:waypoint xsi:type="dc:Point" x="647" y="304" /> + <di:waypoint xsi:type="dc:Point" x="199" y="304" /> + <di:waypoint xsi:type="dc:Point" x="199" y="348" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="280" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn new file mode 100644 index 0000000000..b7ce608090 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn @@ -0,0 +1,568 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteVfModuleVolumeInfraV1" name="DeleteVfModuleVolumeInfraV1" isExecutable="true"> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled) + +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" /> + <bpmn2:startEvent id="deleteNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="ScriptTask_callRestCloudRegion" /> + <bpmn2:scriptTask id="ScriptTask_callRestCloudRegion" name="Call REST Query Cloud Region " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def delVfModuleVol = new DeleteVfModuleVolumeInfraV1() +delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="prepareVnfAdapterDelete_ScriptTask_1" name="Prepare Vnf Adapter Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="prepareVnfAdapterDelete_ScriptTask_1" targetRef="callVnfAdapterDeleteSubflow_CallActivity" /> + <bpmn2:endEvent id="EndEvent_5"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="TenantId Match?" default="SequenceFlow_21"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_3" targetRef="prepareVnfAdapterDelete_ScriptTask_1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_tenantId") == execution.getVariable("DELVfModVol_volumeGroupTenantId")}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_2" /> + <bpmn2:callActivity id="callVnfAdapterDeleteSubflow_CallActivity" name="Call Vnf Adapter Delete subflow" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:out source="vnfAdapterRestV1Response" target="DELVfModVol_deleteVnfAResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in variables="all" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callVnfAdapterDeleteSubflow_CallActivity" targetRef="ExclusiveGateway_2" /> + <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Query AAI for Volume Group Info" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="callAAIQuery_scriptTask" targetRef="ExclusiveGateway_3" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Handle TenantId Mismatch" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_2" targetRef="EndEvent_5" /> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestCloudRegion" targetRef="ExclusiveGateway_1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="is Cloud Region Ok?" default="SequenceFlow_4"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ExclusiveGateway_1" targetRef="callAAIQuery_scriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_isCloudRegionGood") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true"> + <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ExclusiveGateway_synResponseSent" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_synResponseSent" name="Sync response sent?" default="SequenceFlow_responseNotSent"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_responseNotSent</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_responseSent</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_4" name="Send Sync Ack Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_responseNotSent</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_responseNotSent" name="No" sourceRef="ExclusiveGateway_synResponseSent" targetRef="ScriptTask_4" /> + <bpmn2:sequenceFlow id="SequenceFlow_responseSent" name="Yes" sourceRef="ExclusiveGateway_synResponseSent" targetRef="prepareFalloutHandler_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DELVfModVol_syncResponseSent == true}</bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="prepareFalloutHandler_ScriptTask" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_responseSent</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('prepareFalloutHandler', execution, isDebugLogEnabled) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="prepareFalloutHandler_ScriptTask" targetRef="faultHandler_CallActivity" /> + <bpmn2:callActivity id="faultHandler_CallActivity" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="DELVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="faultHandler_CallActivity" targetRef="EndEvent_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_4" targetRef="prepareFalloutHandler_ScriptTask" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="prepareDBInfraRequest_ScriptTask" name="Prepare DB Infra Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_37</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('prepareDBRequest', execution, isDebugLogEnabled) + +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="prepareDBInfraRequest_ScriptTask" targetRef="callDBInfra_ServiceTask" /> + <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Prepare Completion Handler Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('prepareCompletionHandlerRequest', execution, isDebugLogEnabled) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Set Success" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("DELVfModVol_TransactionSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_3" targetRef="EndEvent_2" /> + <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in variables="all" /> + <camunda:out variables="all" /> + <camunda:in source="DELVfModVol_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_3" /> + <bpmn2:endEvent id="EndEvent_2" name="End"> + <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_3" /> + </bpmn2:endEvent> + <bpmn2:serviceTask id="callDBInfra_ServiceTask" name="Call DB Infra Update"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter> + <camunda:inputParameter name="payload">${DELVfModVol_updateInfraRequest}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="DELVfModVol_createDBResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="DELVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="callDBInfra_ServiceTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> + <bpmn2:scriptTask id="callRESTDeleteVolGrpId_ScriptTask" name="Call REST Delete AAI Vol Grp Id" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_vnfAdapterCallOK</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DeleteVfModuleVolumeInfraV1() +deleteVfMod.executeMethod('deleteVolGrpId', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTDeleteVolGrpId_ScriptTask" targetRef="prepareDBInfraRequest_ScriptTask" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Is call to VNF Adapter OK?" default="SequenceFlow_vnfAdapterCallNotOK"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_vnfAdapterCallOK</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_vnfAdapterCallNotOK</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallOK" name="" sourceRef="ExclusiveGateway_2" targetRef="callRESTDeleteVolGrpId_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_6"> + <bpmn2:incoming>SequenceFlow_vnfAdapterCallNotOK</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_5" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallNotOK" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_6" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleVolumeInfraV1"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteNetwork_startEvent"> + <dc:Bounds x="103" y="94" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="89" y="135" width="65" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="355" y="72" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="139" y="112" /> + <di:waypoint xsi:type="dc:Point" x="355" y="112" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="116" y="12" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask"> + <dc:Bounds x="864" y="72" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_3" bpmnElement="faultHandler_CallActivity"> + <dc:Bounds x="438" y="360" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity"> + <dc:Bounds x="993" y="985" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true"> + <dc:Bounds x="37" y="288" width="660" height="337" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent"> + <dc:Bounds x="60" y="383" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="424" width="67" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_79" bpmnElement="prepareFalloutHandler_ScriptTask"> + <dc:Bounds x="288" y="360" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> + <dc:Bounds x="993" y="877" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_83" bpmnElement="prepareDBInfraRequest_ScriptTask"> + <dc:Bounds x="993" y="660" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="callDBInfra_ServiceTask"> + <dc:Bounds x="993" y="769" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="455" y="112" /> + <di:waypoint xsi:type="dc:Point" x="496" y="112" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="486" y="112" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask"> + <dc:Bounds x="496" y="72" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ExclusiveGateway_255"> + <di:waypoint xsi:type="dc:Point" x="96" y="401" /> + <di:waypoint xsi:type="dc:Point" x="118" y="401" /> + <di:waypoint xsi:type="dc:Point" x="118" y="400" /> + <di:waypoint xsi:type="dc:Point" x="144" y="400" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="99" y="401" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_79" targetElement="_BPMNShape_CallActivity_3"> + <di:waypoint xsi:type="dc:Point" x="388" y="400" /> + <di:waypoint xsi:type="dc:Point" x="438" y="400" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="413" y="400" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ServiceTask_86" targetElement="_BPMNShape_ScriptTask_80"> + <di:waypoint xsi:type="dc:Point" x="1043" y="849" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="877" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1258" y="857" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4"> + <di:waypoint xsi:type="dc:Point" x="1043" y="957" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1289" y="898" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTDeleteVolGrpId_ScriptTask"> + <dc:Bounds x="993" y="528" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_83"> + <di:waypoint xsi:type="dc:Point" x="1043" y="608" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="660" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1291" y="557" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_58" bpmnElement="SequenceFlow_37" sourceElement="_BPMNShape_ScriptTask_83" targetElement="_BPMNShape_ServiceTask_86"> + <di:waypoint xsi:type="dc:Point" x="1043" y="740" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="769" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1258" y="751" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_22" bpmnElement="callVnfAdapterDeleteSubflow_CallActivity"> + <dc:Bounds x="993" y="300" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="prepareVnfAdapterDelete_ScriptTask_1"> + <dc:Bounds x="993" y="180" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_CallActivity_22"> + <di:waypoint xsi:type="dc:Point" x="1043" y="260" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1112" y="280" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_22" targetElement="_BPMNShape_ExclusiveGateway_252"> + <di:waypoint xsi:type="dc:Point" x="1043" y="380" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1042" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1042" y="422" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1039" y="415" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_1"> + <dc:Bounds x="588" y="382" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="423" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_3" targetElement="_BPMNShape_EndEvent_163"> + <di:waypoint xsi:type="dc:Point" x="538" y="400" /> + <di:waypoint xsi:type="dc:Point" x="588" y="400" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="558" y="400" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_167" bpmnElement="EndEvent_2"> + <dc:Bounds x="1025" y="1201" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1029" y="1242" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_241"> + <di:waypoint xsi:type="dc:Point" x="1043" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="1093" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1258" y="1083" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_4"> + <dc:Bounds x="120" y="492" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="596" y="112" /> + <di:waypoint xsi:type="dc:Point" x="623" y="112" /> + <di:waypoint xsi:type="dc:Point" x="623" y="115" /> + <di:waypoint xsi:type="dc:Point" x="636" y="115" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="613" y="112" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_203"> + <di:waypoint xsi:type="dc:Point" x="964" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1017" y="111" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1067" y="113" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_203" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> + <dc:Bounds x="1017" y="86" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="984" y="60" width="102" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_240" bpmnElement="ScriptTask_2"> + <dc:Bounds x="1104" y="72" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_160"> + <di:waypoint xsi:type="dc:Point" x="1042" y="136" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="180" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1040" y="122" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_240"> + <di:waypoint xsi:type="dc:Point" x="1067" y="111" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="111" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1104" y="112" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1216" y="113" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_5"> + <dc:Bounds x="1242" y="95" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1260" y="136" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_240" targetElement="_BPMNShape_EndEvent_178"> + <di:waypoint xsi:type="dc:Point" x="1204" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1222" y="112" /> + <di:waypoint xsi:type="dc:Point" x="1222" y="113" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="113" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1220" y="113" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="ScriptTask_3"> + <dc:Bounds x="993" y="1093" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_167"> + <di:waypoint xsi:type="dc:Point" x="1043" y="1173" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="1201" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1040" y="1320" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="ScriptTask_callRestCloudRegion"> + <dc:Bounds x="636" y="75" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> + <dc:Bounds x="774" y="89" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="735" y="40" width="125" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_215" bpmnElement="EndEvent_3"> + <dc:Bounds x="781" y="170" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="799" y="211" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_EndEvent_215"> + <di:waypoint xsi:type="dc:Point" x="798" y="139" /> + <di:waypoint xsi:type="dc:Point" x="798" y="153" /> + <di:waypoint xsi:type="dc:Point" x="799" y="153" /> + <di:waypoint xsi:type="dc:Point" x="799" y="170" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="796" y="166" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_251" targetElement="_BPMNShape_ExclusiveGateway_223"> + <di:waypoint xsi:type="dc:Point" x="736" y="115" /> + <di:waypoint xsi:type="dc:Point" x="754" y="115" /> + <di:waypoint xsi:type="dc:Point" x="754" y="114" /> + <di:waypoint xsi:type="dc:Point" x="774" y="114" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="752" y="114" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_62"> + <di:waypoint xsi:type="dc:Point" x="824" y="114" /> + <di:waypoint xsi:type="dc:Point" x="844" y="114" /> + <di:waypoint xsi:type="dc:Point" x="844" y="112" /> + <di:waypoint xsi:type="dc:Point" x="864" y="112" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="841" y="113" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_252" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="1017" y="422" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="960" y="477" width="164" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_vnfAdapterCallOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_ScriptTask_134"> + <di:waypoint xsi:type="dc:Point" x="1042" y="472" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="528" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1040" y="500" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_236" bpmnElement="EndEvent_6"> + <dc:Bounds x="1168" y="430" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1186" y="471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_vnfAdapterCallNotOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_EndEvent_236"> + <di:waypoint xsi:type="dc:Point" x="1067" y="447" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="447" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="448" /> + <di:waypoint xsi:type="dc:Point" x="1168" y="448" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_synResponseSent" isMarkerVisible="true"> + <dc:Bounds x="144" y="375" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="106" y="439" width="129" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_responseNotSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_234"> + <di:waypoint xsi:type="dc:Point" x="169" y="425" /> + <di:waypoint xsi:type="dc:Point" x="169" y="458" /> + <di:waypoint xsi:type="dc:Point" x="170" y="458" /> + <di:waypoint xsi:type="dc:Point" x="170" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="159" y="458" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_responseSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_79"> + <di:waypoint xsi:type="dc:Point" x="194" y="400" /> + <di:waypoint xsi:type="dc:Point" x="288" y="400" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="400" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_ScriptTask_79"> + <di:waypoint xsi:type="dc:Point" x="220" y="532" /> + <di:waypoint xsi:type="dc:Point" x="254" y="532" /> + <di:waypoint xsi:type="dc:Point" x="336" y="532" /> + <di:waypoint xsi:type="dc:Point" x="336" y="508" /> + <di:waypoint xsi:type="dc:Point" x="336" y="482" /> + <di:waypoint xsi:type="dc:Point" x="337" y="440" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="317" y="532" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn new file mode 100644 index 0000000000..6092de6c79 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DeleteVnfInfra" name="DeleteVnfInfra" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" /> + <bpmn2:scriptTask id="sendSyncResponse" name="Send Sync Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16ikne0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DeleteVnfInfra deleteVnf = new DeleteVnfInfra() +deleteVnf.sendSyncResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DeleteVnfInfra deleteVnf = new DeleteVnfInfra() +deleteVnf.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="intialization" targetRef="sendSyncResponse" /> + <bpmn2:subProcess id="bpmnErrorHandlingSubProcess" name="Error Handling Sub Process" triggeredByEvent="true"> + <bpmn2:scriptTask id="prepareFalloutHandlerRequest" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* + +String requestInfo = execution.getVariable("DELVI_requestInfo") +ExceptionUtil ex = new ExceptionUtil() +String falloutHandlerRequest = ex.processMainflowsBPMNException(execution, requestInfo) + +execution.setVariable("DELVI_falloutHandlerRequest", falloutHandlerRequest )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="prepareFalloutHandlerRequest" targetRef="callFalloutHandler" /> + <bpmn2:callActivity id="callFalloutHandler" name="Fallout
Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="DELVI_falloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="DELVI_requestId" target="requestId" /> + <camunda:in source="DELVI_serviceInstanceId" target="serviceInstanceId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="callFalloutHandler" targetRef="EndEvent_3" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_37" /> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_2"> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_94" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="StartEvent_2" targetRef="sendErrorResponse" /> + <bpmn2:scriptTask id="sendErrorResponse" name="Send Error Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DeleteVnfInfra deleteVnf = new DeleteVnfInfra() +deleteVnf.sendErrorResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="sendErrorResponse" targetRef="prepareFalloutHandlerRequest" /> + </bpmn2:subProcess> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" /> + <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="postProcess" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0slfgmy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DeleteVnfInfra deleteVnf = new DeleteVnfInfra() +deleteVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="postProcess" targetRef="callCompletionHandler" /> + <bpmn2:callActivity id="callCompletionHandler" name="Completion
Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="DELVI_completionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="DELVI_requestId" target="mso-request-id" /> + <camunda:in source="DELVI_serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="callCompletionHandler" targetRef="EndEvent_2" /> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" /> + </bpmn2:endEvent> + <bpmn2:callActivity id="DeleteVnf" name="Delete VNF" calledElement="DoDeleteVnf"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="DELVI_vnfId" target="vnfId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_00bhxtl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f56g06</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvxtnz"> + <bpmn2:incoming>SequenceFlow_16ikne0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00o02cv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_00bhxtl</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16ikne0" sourceRef="sendSyncResponse" targetRef="ExclusiveGateway_1kvxtnz" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0r544im"> + <bpmn2:incoming>SequenceFlow_1f56g06</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dy2xw0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0slfgmy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1f56g06" sourceRef="DeleteVnf" targetRef="ExclusiveGateway_0r544im" /> + <bpmn2:sequenceFlow id="SequenceFlow_00o02cv" name="cascade delete" sourceRef="ExclusiveGateway_1kvxtnz" targetRef="Task_0ob25pp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVI_cascadeDelete")==true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_0ob25pp" name="Delete VNF and Modules" calledElement="DoDeleteVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="DELVI_requestId" target="msoRequestId" /> + <camunda:in source="DELVI_vnfId" target="vnfId" /> + <camunda:in source="DELVI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="DELVI_cloudConfiguration" target="cloudConfiguration" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_00o02cv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0dy2xw0</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0dy2xw0" sourceRef="Task_0ob25pp" targetRef="ExclusiveGateway_0r544im" /> + <bpmn2:sequenceFlow id="SequenceFlow_0slfgmy" sourceRef="ExclusiveGateway_0r544im" targetRef="postProcess" /> + <bpmn2:sequenceFlow id="SequenceFlow_00bhxtl" sourceRef="ExclusiveGateway_1kvxtnz" targetRef="DeleteVnf" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1"> + <dc:Bounds x="90" y="210" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="108" y="251" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization"> + <dc:Bounds x="216" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="126" y="228" /> + <di:waypoint xsi:type="dc:Point" x="216" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="164" y="228" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_313" bpmnElement="sendSyncResponse"> + <dc:Bounds x="364" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_311" targetElement="_BPMNShape_ScriptTask_313"> + <di:waypoint xsi:type="dc:Point" x="316" y="228" /> + <di:waypoint xsi:type="dc:Point" x="364" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="228" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2"> + <dc:Bounds x="1074" y="210" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1092" y="251" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_34" bpmnElement="bpmnErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="132" y="442" width="589" height="207" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_80" bpmnElement="StartEvent_2"> + <dc:Bounds x="144" y="528" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="162" y="569" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_238" bpmnElement="EndEvent_3"> + <dc:Bounds x="672" y="528" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="690" y="569" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_66" bpmnElement="callFalloutHandler"> + <dc:Bounds x="516" y="506" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_317" bpmnElement="sendErrorResponse"> + <dc:Bounds x="240" y="506" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_318" bpmnElement="prepareFalloutHandlerRequest"> + <dc:Bounds x="377" y="506" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_StartEvent_80" targetElement="_BPMNShape_ScriptTask_317"> + <di:waypoint xsi:type="dc:Point" x="180" y="546" /> + <di:waypoint xsi:type="dc:Point" x="240" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="201" y="546" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_317" targetElement="_BPMNShape_ScriptTask_318"> + <di:waypoint xsi:type="dc:Point" x="340" y="546" /> + <di:waypoint xsi:type="dc:Point" x="377" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="353" y="546" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_318" targetElement="_BPMNShape_CallActivity_66"> + <di:waypoint xsi:type="dc:Point" x="477" y="546" /> + <di:waypoint xsi:type="dc:Point" x="516" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="491" y="546" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_CallActivity_66" targetElement="_BPMNShape_EndEvent_238"> + <di:waypoint xsi:type="dc:Point" x="616" y="546" /> + <di:waypoint xsi:type="dc:Point" x="672" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="635" y="546" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="271" y="696" width="312" height="157" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3"> + <dc:Bounds x="300" y="757" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="318" y="798" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> + <dc:Bounds x="516" y="757" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="534" y="798" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException"> + <dc:Bounds x="378" y="735" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319"> + <di:waypoint xsi:type="dc:Point" x="336" y="775" /> + <di:waypoint xsi:type="dc:Point" x="378" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="354" y="775" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239"> + <di:waypoint xsi:type="dc:Point" x="478" y="775" /> + <di:waypoint xsi:type="dc:Point" x="516" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="494" y="775" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_326" bpmnElement="postProcess"> + <dc:Bounds x="776" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_326" targetElement="_BPMNShape_CallActivity_71"> + <di:waypoint xsi:type="dc:Point" x="876" y="228" /> + <di:waypoint xsi:type="dc:Point" x="932" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="904" y="213" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_71" bpmnElement="callCompletionHandler"> + <dc:Bounds x="932" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_CallActivity_71" targetElement="_BPMNShape_EndEvent_237"> + <di:waypoint xsi:type="dc:Point" x="1032" y="228" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1053" y="213" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_63" bpmnElement="DeleteVnf"> + <dc:Bounds x="571" y="292" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1kvxtnz_di" bpmnElement="ExclusiveGateway_1kvxtnz" isMarkerVisible="true"> + <dc:Bounds x="514" y="203" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="539" y="253" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16ikne0_di" bpmnElement="SequenceFlow_16ikne0"> + <di:waypoint xsi:type="dc:Point" x="464" y="228" /> + <di:waypoint xsi:type="dc:Point" x="489" y="228" /> + <di:waypoint xsi:type="dc:Point" x="489" y="228" /> + <di:waypoint xsi:type="dc:Point" x="514" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="504" y="228" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0r544im_di" bpmnElement="ExclusiveGateway_0r544im" isMarkerVisible="true"> + <dc:Bounds x="677" y="203" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="702" y="253" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f56g06_di" bpmnElement="SequenceFlow_1f56g06"> + <di:waypoint xsi:type="dc:Point" x="671" y="332" /> + <di:waypoint xsi:type="dc:Point" x="702" y="332" /> + <di:waypoint xsi:type="dc:Point" x="702" y="253" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="307" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00o02cv_di" bpmnElement="SequenceFlow_00o02cv"> + <di:waypoint xsi:type="dc:Point" x="539" y="203" /> + <di:waypoint xsi:type="dc:Point" x="539" y="118" /> + <di:waypoint xsi:type="dc:Point" x="571" y="118" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="461" y="157" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_01wzpfb_di" bpmnElement="Task_0ob25pp"> + <dc:Bounds x="571" y="78" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0dy2xw0_di" bpmnElement="SequenceFlow_0dy2xw0"> + <di:waypoint xsi:type="dc:Point" x="671" y="118" /> + <di:waypoint xsi:type="dc:Point" x="702" y="118" /> + <di:waypoint xsi:type="dc:Point" x="702" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="93" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0slfgmy_di" bpmnElement="SequenceFlow_0slfgmy"> + <di:waypoint xsi:type="dc:Point" x="727" y="228" /> + <di:waypoint xsi:type="dc:Point" x="776" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="752" y="213" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00bhxtl_di" bpmnElement="SequenceFlow_00bhxtl"> + <di:waypoint xsi:type="dc:Point" x="539" y="253" /> + <di:waypoint xsi:type="dc:Point" x="539" y="332" /> + <di:waypoint xsi:type="dc:Point" x="571" y="332" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="554" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn new file mode 100644 index 0000000000..6a157eb7c0 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn @@ -0,0 +1,1815 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="ReplaceVnfInfra" name="ReplaceVnfInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19rrss6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_1cl8ayk" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ph6862</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0msgw6c" sourceRef="Task_1cl8ayk" targetRef="Task_1xw8w6a" /> + <bpmn2:sequenceFlow id="SequenceFlow_0uhssvq" sourceRef="Task_1xw8w6a" targetRef="Task_0dc1x7g" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ph6862" sourceRef="Task_0dc1x7g" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="Task_1cl8ayk" name="PreProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0msgw6c</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0dc1x7g" name="PostProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0uhssvq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ph6862</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_1xw8w6a" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0msgw6c</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0uhssvq</bpmn2:outgoing> + </bpmn2:callActivity> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoDeleteVnfAndModules" calledElement="DoDeleteVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="cloudConfiguration" target="cloudConfiguration" /> + <camunda:in source="retainResources" target="retainResources" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" /> + <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" calledElement="DecomposeService"> + <bpmn2: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="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0iydw5o" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0jph3mt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1nodcf9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0usoiza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14yy8v4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" /> + <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_12hm1ks</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0etr76r</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="nfRole" target="vnfType" /> + <camunda:in source="currentActivity" target="currentActivity" /> + <camunda:in source="workStep" target="workStep" /> + <camunda:in source="failedActivity" target="failedActivity" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="disposition" /> + <camunda:in source="requestorId" target="requestorId" /> + <camunda:out source="taskId" target="taskId" /> + <camunda:in source="vnfName" target="vnfName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1cezgw4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:task id="Task_0zbogrm" name="Rollback Processing"> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + </bpmn2:task> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_11b00u2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib"> + <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ck3v34</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8"> + <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_079nix0</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki"> + <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_032i8t0</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoDeleteVnfAndNModules?" camunda:asyncBefore="true" default="SequenceFlow_0bxgny0"> + <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bxgny0</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1f0c5lj</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_084iffr" targetRef="Task_1hdg951" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m"> + <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_17vwb2h</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ba08lt</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d"> + <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1akvi72</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1sdol24</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_051zp79</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_051zp79"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_051zp79</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ei7at5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0kg02xg</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1i6p53b</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1yy7o24</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0sqmtpl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1shdmrj</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1v1i5w4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1h8rscx</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1xzq6jb</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_165q14c</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0wp1a6g</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0vymfh9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" /> + <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoDeleteVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0aldwvz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.prepDoDeleteVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_040hi91" name="Prepare DoCreateVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0bxgny0</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_111z6w4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qm0ygo</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.prepDoCreateVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_15hpowt" name="DoCreateVnfAndModules" calledElement="DoCreateVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="platform" target="platform" /> + <camunda:in source="lineOfBusiness" target="lineOfBusiness" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qm0ygo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0he2w4b</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_084iffr" name="Error on DoCreateVnfModules?" default="SequenceFlow_04zwhw4"> + <bpmn2:incoming>SequenceFlow_0he2w4b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0pfvulx</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0bxgny0" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_040hi91" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qm0ygo" sourceRef="Task_040hi91" targetRef="Task_15hpowt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0he2w4b" sourceRef="Task_15hpowt" targetRef="ExclusiveGateway_084iffr" /> + <bpmn2:sequenceFlow id="SequenceFlow_051zp79" name="" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionLock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1qfjlt7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C Health Check" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex0" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0x7iupc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionStop" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="aicIdentity" target="aicIdentity" /> + <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0hp0w6k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C VNF Start" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionStart" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="aicIdentity" target="aicIdentity" /> + <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lrbndo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health Check" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex1" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_14mblvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11iqe6n" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_12hm1ks</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_16f09ke" name="To inMaintenance Check"> + <bpmn2:outgoing>SequenceFlow_0jph3mt</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Check" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mtokuy" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0etr76r</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1h8oi7w" name="To inMaintenance Set"> + <bpmn2:outgoing>SequenceFlow_1nodcf9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Set" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0pwcatt" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_11b00u2</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12hm1ks" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_11iqe6n"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0jph3mt" sourceRef="IntermediateThrowEvent_16f09ke" targetRef="Task_1rxiqe1" /> + <bpmn2:sequenceFlow id="SequenceFlow_0etr76r" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1mtokuy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1nodcf9" sourceRef="IntermediateThrowEvent_1h8oi7w" targetRef="Task_0ap39ka" /> + <bpmn2:sequenceFlow id="SequenceFlow_11b00u2" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0pwcatt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1w8dvxw" name="To VNF Lock"> + <bpmn2:outgoing>SequenceFlow_1qfjlt7</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0mqqagp" name="To Rainy Day Hnadling"> + <bpmn2:incoming>SequenceFlow_1ck3v34</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0vyfpwj" name="To Health PreCheck"> + <bpmn2:outgoing>SequenceFlow_0x7iupc</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_12187dz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_079nix0</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0c7rese" name="To VNF Stop"> + <bpmn2:outgoing>SequenceFlow_0hp0w6k</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Stop" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_18grbwz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_032i8t0</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qfjlt7" sourceRef="IntermediateThrowEvent_1w8dvxw" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ck3v34" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_0mqqagp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0x7iupc" sourceRef="IntermediateThrowEvent_0vyfpwj" targetRef="Task_1fj63ov" /> + <bpmn2:sequenceFlow id="SequenceFlow_079nix0" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_12187dz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0hp0w6k" sourceRef="IntermediateThrowEvent_0c7rese" targetRef="Task_1cfkcss" /> + <bpmn2:sequenceFlow id="SequenceFlow_032i8t0" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_18grbwz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0r8kzqa" name="To DoDeleteVnfAndModules"> + <bpmn2:outgoing>SequenceFlow_0aldwvz</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To DoDeleteVnfAndModules" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_169eg4j" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1f0c5lj</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0tenxiw" name="To DoCreateVnfAndModules"> + <bpmn2:outgoing>SequenceFlow_111z6w4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To DoCreateVnfAndModules" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mocak0" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0pfvulx</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0aldwvz" sourceRef="IntermediateThrowEvent_0r8kzqa" targetRef="Task_0eae8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_1f0c5lj" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="IntermediateThrowEvent_169eg4j"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_111z6w4" sourceRef="IntermediateThrowEvent_0tenxiw" targetRef="Task_040hi91" /> + <bpmn2:sequenceFlow id="SequenceFlow_0pfvulx" name="yes" sourceRef="ExclusiveGateway_084iffr" targetRef="IntermediateThrowEvent_1mocak0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUnlock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_18e0jz0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15yev7i" name="To VNF Start"> + <bpmn2:outgoing>SequenceFlow_1lrbndo</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Start" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0osnva5" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_17vwb2h</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0gluaxf" name="To Health PostCheck"> + <bpmn2:outgoing>SequenceFlow_14mblvp</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1chu5lh" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0ba08lt</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0p7wh09" name="To VNF Unlock"> + <bpmn2:outgoing>SequenceFlow_18e0jz0</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0uh8zti" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1akvi72</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1dei2gz" name="To inMaintenance Unset"> + <bpmn2:outgoing>SequenceFlow_0usoiza</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Unset" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0fobhuu" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1sdol24</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lrbndo" sourceRef="IntermediateThrowEvent_15yev7i" targetRef="Task_1hdg951" /> + <bpmn2:sequenceFlow id="SequenceFlow_17vwb2h" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_0osnva5"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_14mblvp" sourceRef="IntermediateThrowEvent_0gluaxf" targetRef="Task_1ca5ctq" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ba08lt" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_1chu5lh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_18e0jz0" sourceRef="IntermediateThrowEvent_0p7wh09" targetRef="Task_1sove95" /> + <bpmn2:sequenceFlow id="SequenceFlow_1akvi72" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="IntermediateThrowEvent_0uh8zti"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0usoiza" sourceRef="IntermediateThrowEvent_1dei2gz" targetRef="Task_1drglpt" /> + <bpmn2:sequenceFlow id="SequenceFlow_1sdol24" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_0fobhuu"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lc72r4" name="To Completion Handler Prep"> + <bpmn2:outgoing>SequenceFlow_19rrss6</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19rrss6" sourceRef="IntermediateThrowEvent_1lc72r4" targetRef="ScriptTask_10" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0a9mn5c" name="To Rainy Day Handling"> + <bpmn2:outgoing>SequenceFlow_1cezgw4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1cezgw4" sourceRef="IntermediateThrowEvent_0a9mn5c" targetRef="Task_0q5cdit" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0x4bho9" name="To inMaintenance Check"> + <bpmn2:incoming>SequenceFlow_1ei7at5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Check" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0jervei" name="To inMaintenance Set"> + <bpmn2:incoming>SequenceFlow_0kg02xg</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Set" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vju4tj" name="To VNF Lock"> + <bpmn2:incoming>SequenceFlow_1i6p53b</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1fzppfz" name="To Health PreCheck"> + <bpmn2:incoming>SequenceFlow_1yy7o24</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1e0qowf" name="To VNF Stop"> + <bpmn2:incoming>SequenceFlow_0sqmtpl</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Stop" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1v93roi" name="To DoDeleteVnfAndModules"> + <bpmn2:incoming>SequenceFlow_1shdmrj</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To DoDeleteVnfAndModules" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_04a1dfz" name="To DoCreateVnfAndModules"> + <bpmn2:incoming>SequenceFlow_1v1i5w4</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To DoCreateVnfAndModules" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_151z73b" name="To VNF Start"> + <bpmn2:incoming>SequenceFlow_1h8rscx</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Start" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_10bre7q" name="To Health PostCheck"> + <bpmn2:incoming>SequenceFlow_1xzq6jb</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1fl945a" name="To VNF Unlock"> + <bpmn2:incoming>SequenceFlow_165q14c</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lljtoh" name="To inMaintenance Unset"> + <bpmn2:incoming>SequenceFlow_0wp1a6g</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Unset" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0sub2cf" name="To Completion Handler Prep"> + <bpmn2:incoming>SequenceFlow_0vymfh9</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ei7at5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0x4bho9"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0kg02xg" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0jervei"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1i6p53b" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1vju4tj"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1yy7o24" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1fzppfz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Lock"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0sqmtpl" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1e0qowf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1shdmrj" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1v93roi"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Stop"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1v1i5w4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_04a1dfz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doDeleteVnfAndModules"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1h8rscx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_151z73b"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doCreateVnfAndModules"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1xzq6jb" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_10bre7q"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Start"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_165q14c" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1fl945a"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck1"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0wp1a6g" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1lljtoh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Unlock"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0vymfh9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0sub2cf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_14yy8v4" sourceRef="Task_0iydw5o" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_0iydw5o" name="Query A&AI for VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14yy8v4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new ReplaceVnfInfra() +uvfm.queryAAIForVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ReplaceVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="599" y="1249" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="1290" width="38" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="525" y="237" /> + <di:waypoint xsi:type="dc:Point" x="601" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="434" y="1227" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="534" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="560" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="599" y="1267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="1267" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="134" y="1227" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="284" y="1227" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="234" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="284" y="1267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="1509" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="88" y="1467" width="565" height="241" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="152" y="1561" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="131" y="1602" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="232" y="1539" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="188" y="1579" /> + <di:waypoint xsi:type="dc:Point" x="232" y="1579" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235" y="1879" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="332" y="1579" /> + <di:waypoint xsi:type="dc:Point" x="400" y="1579" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="348" y="1579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="556" y="1561" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="574" y="1602" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="635" y="1561" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="653" y="1602" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="729" y="1561" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="747" y="1602" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="671" y="1579" /> + <di:waypoint xsi:type="dc:Point" x="729" y="1579" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="700" y="1564" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="400" y="1539" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="384" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="434" y="1267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="1509" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="500" y="1579" /> + <di:waypoint xsi:type="dc:Point" x="556" y="1579" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="393" y="1639" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="305" y="695" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1181" y="989" /> + <di:waypoint xsi:type="dc:Point" x="1275" y="989" /> + <di:waypoint xsi:type="dc:Point" x="1275" y="1171" /> + <di:waypoint xsi:type="dc:Point" x="96" y="1171" /> + <di:waypoint xsi:type="dc:Point" x="96" y="1267" /> + <di:waypoint xsi:type="dc:Point" x="134" y="1267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1218" y="964.4017408047539" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3"> + <di:waypoint xsi:type="dc:Point" x="655" y="90" /> + <di:waypoint xsi:type="dc:Point" x="718" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7"> + <dc:Bounds x="555" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="818" y="90" /> + <di:waypoint xsi:type="dc:Point" x="863" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="841" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="718" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="555" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="514" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="425" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="239" y="237" /> + <di:waypoint xsi:type="dc:Point" x="292" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m"> + <di:waypoint xsi:type="dc:Point" x="921" y="237" /> + <di:waypoint xsi:type="dc:Point" x="988" y="237" /> + <di:waypoint xsi:type="dc:Point" x="988" y="402" /> + <di:waypoint xsi:type="dc:Point" x="98" y="402" /> + <di:waypoint xsi:type="dc:Point" x="98" y="490" /> + <di:waypoint xsi:type="dc:Point" x="139" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="951" y="208.69353020889844" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru"> + <di:waypoint xsi:type="dc:Point" x="405" y="735" /> + <di:waypoint xsi:type="dc:Point" x="464" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="435" y="720" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="718" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="982" y="949" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="139" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s"> + <di:waypoint xsi:type="dc:Point" x="239" y="490" /> + <di:waypoint xsi:type="dc:Point" x="292" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="475" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza"> + <di:waypoint xsi:type="dc:Point" x="525" y="490" /> + <di:waypoint xsi:type="dc:Point" x="601" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="475" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9"> + <di:waypoint xsi:type="dc:Point" x="818" y="490" /> + <di:waypoint xsi:type="dc:Point" x="871" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="845" y="475" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs"> + <di:waypoint xsi:type="dc:Point" x="259" y="989" /> + <di:waypoint xsi:type="dc:Point" x="295" y="989" /> + <di:waypoint xsi:type="dc:Point" x="295" y="989" /> + <di:waypoint xsi:type="dc:Point" x="330" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="310" y="989" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="539" y="989" /> + <di:waypoint xsi:type="dc:Point" x="601" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="570" y="974" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi"> + <di:waypoint xsi:type="dc:Point" x="818" y="989" /> + <di:waypoint xsi:type="dc:Point" x="880" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="849" y="974" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="291.803" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="273" y="170" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="342" y="237" /> + <di:waypoint xsi:type="dc:Point" x="425" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="601" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="161" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="651" y="237" /> + <di:waypoint xsi:type="dc:Point" x="718" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="675" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1173" y="609" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1273" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="649" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1294" y="634" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1290" y="768" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1340" y="624" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="551" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="551" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="502" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1351" y="556.9998593756898" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1340" y="674" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="722" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="722" /> + <di:waypoint xsi:type="dc:Point" x="1340" y="768" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1344" y="718.1219512195122" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="859" y="164" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="818" y="237" /> + <di:waypoint xsi:type="dc:Point" x="871" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="845" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true"> + <dc:Bounds x="292" y="465" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="283" y="428" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib"> + <di:waypoint xsi:type="dc:Point" x="342" y="490" /> + <di:waypoint xsi:type="dc:Point" x="425" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="475" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true"> + <dc:Bounds x="601" y="465" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="428" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8"> + <di:waypoint xsi:type="dc:Point" x="651" y="490" /> + <di:waypoint xsi:type="dc:Point" x="718" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="680" y="475" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true"> + <dc:Bounds x="871" y="465" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="862" y="430" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki"> + <di:waypoint xsi:type="dc:Point" x="921" y="490" /> + <di:waypoint xsi:type="dc:Point" x="995" y="490" /> + <di:waypoint xsi:type="dc:Point" x="995" y="643" /> + <di:waypoint xsi:type="dc:Point" x="96" y="643" /> + <di:waypoint xsi:type="dc:Point" x="96" y="735" /> + <di:waypoint xsi:type="dc:Point" x="139" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="949" y="466" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true"> + <dc:Bounds x="464" y="710" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="445" y="660" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4"> + <di:waypoint xsi:type="dc:Point" x="921" y="735" /> + <di:waypoint xsi:type="dc:Point" x="1004" y="735" /> + <di:waypoint xsi:type="dc:Point" x="1004" y="900" /> + <di:waypoint xsi:type="dc:Point" x="95" y="900" /> + <di:waypoint xsi:type="dc:Point" x="95" y="989" /> + <di:waypoint xsi:type="dc:Point" x="159" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="953" y="712" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true"> + <dc:Bounds x="330" y="964" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="321" y="923" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m"> + <di:waypoint xsi:type="dc:Point" x="380" y="989" /> + <di:waypoint xsi:type="dc:Point" x="410" y="989" /> + <di:waypoint xsi:type="dc:Point" x="410" y="989" /> + <di:waypoint xsi:type="dc:Point" x="439" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="402" y="966.0361567790148" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="601" y="964" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="927" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk"> + <di:waypoint xsi:type="dc:Point" x="651" y="989" /> + <di:waypoint xsi:type="dc:Point" x="718" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="963.1314236383614" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true"> + <dc:Bounds x="880" y="964" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="879" y="928" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d"> + <di:waypoint xsi:type="dc:Point" x="930" y="989" /> + <di:waypoint xsi:type="dc:Point" x="953" y="989" /> + <di:waypoint xsi:type="dc:Point" x="953" y="989" /> + <di:waypoint xsi:type="dc:Point" x="982" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="948" y="964.6410256410256" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="1131" y="964" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1119" y="916" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="1082" y="989" /> + <di:waypoint xsi:type="dc:Point" x="1131" y="989" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1107" y="974" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1290" y="422" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1315" y="624" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1296" y="596" width="88" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="1468" y="624" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1424" y="593" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1365" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1417" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1417" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1468" y="649" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1388" y="626" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v"> + <di:waypoint xsi:type="dc:Point" x="239" y="735" /> + <di:waypoint xsi:type="dc:Point" x="305" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="272" y="720" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go"> + <dc:Bounds x="139" y="695" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_13zzxzd_di" bpmnElement="Task_040hi91"> + <dc:Bounds x="567" y="695" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1qpajth_di" bpmnElement="Task_15hpowt"> + <dc:Bounds x="726" y="695" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_084iffr_di" bpmnElement="ExclusiveGateway_084iffr" isMarkerVisible="true"> + <dc:Bounds x="871" y="710" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="854" y="659" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bxgny0_di" bpmnElement="SequenceFlow_0bxgny0"> + <di:waypoint xsi:type="dc:Point" x="514" y="735" /> + <di:waypoint xsi:type="dc:Point" x="567" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="535" y="710" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qm0ygo_di" bpmnElement="SequenceFlow_1qm0ygo"> + <di:waypoint xsi:type="dc:Point" x="667" y="735" /> + <di:waypoint xsi:type="dc:Point" x="726" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="720" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0he2w4b_di" bpmnElement="SequenceFlow_0he2w4b"> + <di:waypoint xsi:type="dc:Point" x="826" y="735" /> + <di:waypoint xsi:type="dc:Point" x="871" y="735" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="849" y="720" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_051zp79_di" bpmnElement="SequenceFlow_051zp79"> + <di:waypoint xsi:type="dc:Point" x="1493" y="624" /> + <di:waypoint xsi:type="dc:Point" x="1493" y="462" /> + <di:waypoint xsi:type="dc:Point" x="1390" y="462" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1508" y="543" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1r1hua0_di" bpmnElement="Task_1dtbnuy"> + <dc:Bounds x="139" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ce9xg6_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="425" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0iib61o_di" bpmnElement="Task_1cfkcss"> + <dc:Bounds x="718" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1xyvwmi_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="159" y="949" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sghju2_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="439" y="949" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1qrk3gs_di" bpmnElement="IntermediateThrowEvent_11iqe6n"> + <dc:Bounds x="299" y="325" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="361" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_144j68y_di" bpmnElement="IntermediateThrowEvent_16f09ke"> + <dc:Bounds x="457" y="325" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="361" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1rpfbr6_di" bpmnElement="IntermediateThrowEvent_1mtokuy"> + <dc:Bounds x="608" y="325" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="361" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1k1fpg2_di" bpmnElement="IntermediateThrowEvent_1h8oi7w"> + <dc:Bounds x="750" y="325" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="724" y="361" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_04ykz47_di" bpmnElement="IntermediateThrowEvent_0pwcatt"> + <dc:Bounds x="878" y="325" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="361" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12hm1ks_di" bpmnElement="SequenceFlow_12hm1ks"> + <di:waypoint xsi:type="dc:Point" x="317" y="262" /> + <di:waypoint xsi:type="dc:Point" x="317" y="325" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="283.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0jph3mt_di" bpmnElement="SequenceFlow_0jph3mt"> + <di:waypoint xsi:type="dc:Point" x="475" y="325" /> + <di:waypoint xsi:type="dc:Point" x="475" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="291" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0etr76r_di" bpmnElement="SequenceFlow_0etr76r"> + <di:waypoint xsi:type="dc:Point" x="626" y="262" /> + <di:waypoint xsi:type="dc:Point" x="626" y="325" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="283.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nodcf9_di" bpmnElement="SequenceFlow_1nodcf9"> + <di:waypoint xsi:type="dc:Point" x="768" y="325" /> + <di:waypoint xsi:type="dc:Point" x="768" y="301" /> + <di:waypoint xsi:type="dc:Point" x="768" y="301" /> + <di:waypoint xsi:type="dc:Point" x="768" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="783" y="301" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11b00u2_di" bpmnElement="SequenceFlow_11b00u2"> + <di:waypoint xsi:type="dc:Point" x="896" y="262" /> + <di:waypoint xsi:type="dc:Point" x="896" y="325" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="283.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0u1c12l_di" bpmnElement="IntermediateThrowEvent_1w8dvxw"> + <dc:Bounds x="171" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="158" y="606.255" width="62" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1w4kuh4_di" bpmnElement="IntermediateThrowEvent_0mqqagp"> + <dc:Bounds x="299" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="607" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_15qyo7b_di" bpmnElement="IntermediateThrowEvent_0vyfpwj"> + <dc:Bounds x="457" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="450" y="607" width="50" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0gui5k9_di" bpmnElement="IntermediateThrowEvent_12187dz"> + <dc:Bounds x="608" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="607" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1aj9q5v_di" bpmnElement="IntermediateThrowEvent_0c7rese"> + <dc:Bounds x="750" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="607" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0glqip0_di" bpmnElement="IntermediateThrowEvent_18grbwz"> + <dc:Bounds x="878" y="571" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="607" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qfjlt7_di" bpmnElement="SequenceFlow_1qfjlt7"> + <di:waypoint xsi:type="dc:Point" x="189" y="571" /> + <di:waypoint xsi:type="dc:Point" x="189" y="551" /> + <di:waypoint xsi:type="dc:Point" x="189" y="551" /> + <di:waypoint xsi:type="dc:Point" x="189" y="530" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="551" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ck3v34_di" bpmnElement="SequenceFlow_1ck3v34"> + <di:waypoint xsi:type="dc:Point" x="317" y="515" /> + <di:waypoint xsi:type="dc:Point" x="317" y="571" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="533" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x7iupc_di" bpmnElement="SequenceFlow_0x7iupc"> + <di:waypoint xsi:type="dc:Point" x="475" y="571" /> + <di:waypoint xsi:type="dc:Point" x="475" y="551" /> + <di:waypoint xsi:type="dc:Point" x="475" y="551" /> + <di:waypoint xsi:type="dc:Point" x="475" y="530" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="551" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_079nix0_di" bpmnElement="SequenceFlow_079nix0"> + <di:waypoint xsi:type="dc:Point" x="626" y="515" /> + <di:waypoint xsi:type="dc:Point" x="626" y="571" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="533" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hp0w6k_di" bpmnElement="SequenceFlow_0hp0w6k"> + <di:waypoint xsi:type="dc:Point" x="768" y="571" /> + <di:waypoint xsi:type="dc:Point" x="768" y="551" /> + <di:waypoint xsi:type="dc:Point" x="768" y="551" /> + <di:waypoint xsi:type="dc:Point" x="768" y="530" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="783" y="551" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_032i8t0_di" bpmnElement="SequenceFlow_032i8t0"> + <di:waypoint xsi:type="dc:Point" x="896" y="515" /> + <di:waypoint xsi:type="dc:Point" x="896" y="571" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="533" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_11xo4q3_di" bpmnElement="IntermediateThrowEvent_0r8kzqa"> + <dc:Bounds x="171" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="144" y="853.255" width="90" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0u4mlb8_di" bpmnElement="IntermediateThrowEvent_169eg4j"> + <dc:Bounds x="471" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="454" y="854" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1pdmno6_di" bpmnElement="IntermediateThrowEvent_0tenxiw"> + <dc:Bounds x="599" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="576" y="854" width="81" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_07n59qs_di" bpmnElement="IntermediateThrowEvent_1mocak0"> + <dc:Bounds x="878" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="854" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0aldwvz_di" bpmnElement="SequenceFlow_0aldwvz"> + <di:waypoint xsi:type="dc:Point" x="189" y="818" /> + <di:waypoint xsi:type="dc:Point" x="189" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="796.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1f0c5lj_di" bpmnElement="SequenceFlow_1f0c5lj"> + <di:waypoint xsi:type="dc:Point" x="489" y="760" /> + <di:waypoint xsi:type="dc:Point" x="489" y="818" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="779.6376811594203" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_111z6w4_di" bpmnElement="SequenceFlow_111z6w4"> + <di:waypoint xsi:type="dc:Point" x="617" y="818" /> + <di:waypoint xsi:type="dc:Point" x="617" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="796.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0pfvulx_di" bpmnElement="SequenceFlow_0pfvulx"> + <di:waypoint xsi:type="dc:Point" x="896" y="760" /> + <di:waypoint xsi:type="dc:Point" x="896" y="818" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="779.6376811594203" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0xi77mq_di" bpmnElement="Task_1sove95"> + <dc:Bounds x="718" y="949" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0t5q3v6_di" bpmnElement="IntermediateThrowEvent_15yev7i"> + <dc:Bounds x="191" y="1089" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178" y="1124.255" width="61" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0yid2k4_di" bpmnElement="IntermediateThrowEvent_0osnva5"> + <dc:Bounds x="337" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="320" y="1124" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0rlfyt9_di" bpmnElement="IntermediateThrowEvent_0gluaxf"> + <dc:Bounds x="471" y="1089" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="462" y="1125" width="54" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1sk17yj_di" bpmnElement="IntermediateThrowEvent_1chu5lh"> + <dc:Bounds x="608" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="1124" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0nmz72e_di" bpmnElement="IntermediateThrowEvent_0p7wh09"> + <dc:Bounds x="750" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="731" y="1124" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1okzqsq_di" bpmnElement="IntermediateThrowEvent_0uh8zti"> + <dc:Bounds x="887" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="870" y="1124" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1944cw1_di" bpmnElement="IntermediateThrowEvent_1dei2gz"> + <dc:Bounds x="1014" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="989" y="1124" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0ynnoam_di" bpmnElement="IntermediateThrowEvent_0fobhuu"> + <dc:Bounds x="1138" y="1088" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1121" y="1124" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lrbndo_di" bpmnElement="SequenceFlow_1lrbndo"> + <di:waypoint xsi:type="dc:Point" x="209" y="1089" /> + <di:waypoint xsi:type="dc:Point" x="209" y="1029" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="224" y="1049" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17vwb2h_di" bpmnElement="SequenceFlow_17vwb2h"> + <di:waypoint xsi:type="dc:Point" x="355" y="1014" /> + <di:waypoint xsi:type="dc:Point" x="355" y="1088" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="1041" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14mblvp_di" bpmnElement="SequenceFlow_14mblvp"> + <di:waypoint xsi:type="dc:Point" x="489" y="1089" /> + <di:waypoint xsi:type="dc:Point" x="489" y="1059" /> + <di:waypoint xsi:type="dc:Point" x="489" y="1059" /> + <di:waypoint xsi:type="dc:Point" x="489" y="1029" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="504" y="1059" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ba08lt_di" bpmnElement="SequenceFlow_0ba08lt"> + <di:waypoint xsi:type="dc:Point" x="626" y="1014" /> + <di:waypoint xsi:type="dc:Point" x="626" y="1088" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="1041" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18e0jz0_di" bpmnElement="SequenceFlow_18e0jz0"> + <di:waypoint xsi:type="dc:Point" x="768" y="1088" /> + <di:waypoint xsi:type="dc:Point" x="768" y="1029" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="783" y="1048.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1akvi72_di" bpmnElement="SequenceFlow_1akvi72"> + <di:waypoint xsi:type="dc:Point" x="905" y="1014" /> + <di:waypoint xsi:type="dc:Point" x="905" y="1088" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="911" y="1041" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0usoiza_di" bpmnElement="SequenceFlow_0usoiza"> + <di:waypoint xsi:type="dc:Point" x="1032" y="1088" /> + <di:waypoint xsi:type="dc:Point" x="1032" y="1029" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1047" y="1048.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sdol24_di" bpmnElement="SequenceFlow_1sdol24"> + <di:waypoint xsi:type="dc:Point" x="1156" y="1014" /> + <di:waypoint xsi:type="dc:Point" x="1156" y="1088" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1162" y="1041" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0pacmdm_di" bpmnElement="IntermediateThrowEvent_1lc72r4"> + <dc:Bounds x="166" y="1366" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="1401.255" width="73" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19rrss6_di" bpmnElement="SequenceFlow_19rrss6"> + <di:waypoint xsi:type="dc:Point" x="184" y="1366" /> + <di:waypoint xsi:type="dc:Point" x="184" y="1307" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="199" y="1326.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0123x9c_di" bpmnElement="IntermediateThrowEvent_0a9mn5c"> + <dc:Bounds x="1070" y="631" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1053" y="667" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cezgw4_di" bpmnElement="SequenceFlow_1cezgw4"> + <di:waypoint xsi:type="dc:Point" x="1106" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="649" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1140" y="624" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0ahp5f8_di" bpmnElement="IntermediateThrowEvent_0x4bho9"> + <dc:Bounds x="1524" y="417" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1499" y="380.30139720558884" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0yx79m8_di" bpmnElement="IntermediateThrowEvent_0jervei"> + <dc:Bounds x="1562" y="445" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1565" y="413.30139720558884" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_06h1zmt_di" bpmnElement="IntermediateThrowEvent_1vju4tj"> + <dc:Bounds x="1601" y="473" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1636" y="455.30139720558884" width="62" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0n245lm_di" bpmnElement="IntermediateThrowEvent_1fzppfz"> + <dc:Bounds x="1636" y="514" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1672" y="494.30139720558884" width="50" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0hnmgom_di" bpmnElement="IntermediateThrowEvent_1e0qowf"> + <dc:Bounds x="1662" y="562" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1706" y="561.3013972055888" width="61" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0g27srb_di" bpmnElement="IntermediateThrowEvent_1v93roi"> + <dc:Bounds x="1679" y="614" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1724" y="604.3013972055888" width="90" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_14fm060_di" bpmnElement="IntermediateThrowEvent_04a1dfz"> + <dc:Bounds x="1679" y="670" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1732" y="660.3013972055888" width="81" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_183osb4_di" bpmnElement="IntermediateThrowEvent_151z73b"> + <dc:Bounds x="1663" y="717" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1709" y="728" width="61" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0d49blq_di" bpmnElement="IntermediateThrowEvent_10bre7q"> + <dc:Bounds x="1636" y="756" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1682" y="774.3013972055888" width="54" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_13jsvce_di" bpmnElement="IntermediateThrowEvent_1fl945a"> + <dc:Bounds x="1601" y="791" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1643" y="818.3013972055888" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_04zlwpn_di" bpmnElement="IntermediateThrowEvent_1lljtoh"> + <dc:Bounds x="1562" y="819" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1603" y="851.3013972055888" width="86" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ge1m93_di" bpmnElement="IntermediateThrowEvent_0sub2cf"> + <dc:Bounds x="1524" y="846" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1505" y="881.3013972055888" width="73" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ei7at5_di" bpmnElement="SequenceFlow_1ei7at5"> + <di:waypoint xsi:type="dc:Point" x="1498" y="629" /> + <di:waypoint xsi:type="dc:Point" x="1538" y="452" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1518" y="525.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kg02xg_di" bpmnElement="SequenceFlow_0kg02xg"> + <di:waypoint xsi:type="dc:Point" x="1501" y="632" /> + <di:waypoint xsi:type="dc:Point" x="1572" y="479" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1537" y="540.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1i6p53b_di" bpmnElement="SequenceFlow_1i6p53b"> + <di:waypoint xsi:type="dc:Point" x="1504" y="635" /> + <di:waypoint xsi:type="dc:Point" x="1608" y="504" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1556" y="554.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yy7o24_di" bpmnElement="SequenceFlow_1yy7o24"> + <di:waypoint xsi:type="dc:Point" x="1508" y="639" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="542" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1574" y="575.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0sqmtpl_di" bpmnElement="SequenceFlow_0sqmtpl"> + <di:waypoint xsi:type="dc:Point" x="1511" y="642" /> + <di:waypoint xsi:type="dc:Point" x="1663" y="586" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1587" y="599" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1shdmrj_di" bpmnElement="SequenceFlow_1shdmrj"> + <di:waypoint xsi:type="dc:Point" x="1518" y="649" /> + <di:waypoint xsi:type="dc:Point" x="1679" y="634" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1599" y="626.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1v1i5w4_di" bpmnElement="SequenceFlow_1v1i5w4"> + <di:waypoint xsi:type="dc:Point" x="1514" y="653" /> + <di:waypoint xsi:type="dc:Point" x="1680" y="685" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1597" y="654" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h8rscx_di" bpmnElement="SequenceFlow_1h8rscx"> + <di:waypoint xsi:type="dc:Point" x="1510" y="657" /> + <di:waypoint xsi:type="dc:Point" x="1665" y="727" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1588" y="677" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xzq6jb_di" bpmnElement="SequenceFlow_1xzq6jb"> + <di:waypoint xsi:type="dc:Point" x="1507" y="660" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="764" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1574" y="697" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_165q14c_di" bpmnElement="SequenceFlow_165q14c"> + <di:waypoint xsi:type="dc:Point" x="1504" y="663" /> + <di:waypoint xsi:type="dc:Point" x="1608" y="795" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1556" y="714" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0wp1a6g_di" bpmnElement="SequenceFlow_0wp1a6g"> + <di:waypoint xsi:type="dc:Point" x="1501" y="666" /> + <di:waypoint xsi:type="dc:Point" x="1573" y="821" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1537" y="728.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vymfh9_di" bpmnElement="SequenceFlow_0vymfh9"> + <di:waypoint xsi:type="dc:Point" x="1497" y="670" /> + <di:waypoint xsi:type="dc:Point" x="1537" y="847" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1517" y="743.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14yy8v4_di" bpmnElement="SequenceFlow_14yy8v4"> + <di:waypoint xsi:type="dc:Point" x="963" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="139" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0o7degu_di" bpmnElement="Task_0iydw5o"> + <dc:Bounds x="863" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0msgw6c_di" bpmnElement="SequenceFlow_0msgw6c"> + <di:waypoint xsi:type="dc:Point" x="348" y="1581" /> + <di:waypoint xsi:type="dc:Point" x="421" y="1581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="385" y="1566" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uhssvq_di" bpmnElement="SequenceFlow_0uhssvq"> + <di:waypoint xsi:type="dc:Point" x="521" y="1581" /> + <di:waypoint xsi:type="dc:Point" x="588" y="1581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="555" y="1566" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ph6862_di" bpmnElement="SequenceFlow_0ph6862"> + <di:waypoint xsi:type="dc:Point" x="688" y="1581" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="718" y="1566" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_10ii2tr_di" bpmnElement="Task_1cl8ayk"> + <dc:Bounds x="248" y="1541" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_09qi8yg_di" bpmnElement="Task_0dc1x7g"> + <dc:Bounds x="588" y="1541" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0bv5v50_di" bpmnElement="Task_1xw8w6a"> + <dc:Bounds x="421" y="1541" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn new file mode 100644 index 0000000000..5b9cceabff --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn @@ -0,0 +1,379 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="ScaleCustomE2EServiceInstance" name="ScaleCustomE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Scale SI Start Flow"> + <bpmn:outgoing>SequenceFlow_0c2denm</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_03ivdxi" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0c2denm</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ntnafv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new ScaleCustomE2EServiceInstance() +csi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0oezp57" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_14zd9we</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0er6ddi</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new ScaleCustomE2EServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_13jdprk" name="success ?"> + <bpmn:incoming>SequenceFlow_1fis1j1</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_06f0dx5</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_19b0pmt</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="Task_1ogtanl" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_06f0dx5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1q6spfu</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new ScaleCustomE2EServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_1p5x1em" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + <camunda:in source="CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1q6spfu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0mm4eqd</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_116d9ds" name="End"> + <bpmn:incoming>SequenceFlow_0mm4eqd</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0mm4eqd" sourceRef="Task_1p5x1em" targetRef="EndEvent_116d9ds" /> + <bpmn:sequenceFlow id="SequenceFlow_0c2denm" sourceRef="StartEvent_1" targetRef="Task_03ivdxi" /> + <bpmn:sequenceFlow id="SequenceFlow_1ntnafv" sourceRef="Task_03ivdxi" targetRef="Task_1rsd8qa" /> + <bpmn:sequenceFlow id="SequenceFlow_0er6ddi" sourceRef="Task_0oezp57" targetRef="CallActivity_1vpyqzt" /> + <bpmn:sequenceFlow id="SequenceFlow_06f0dx5" name="yes" sourceRef="ExclusiveGateway_13jdprk" targetRef="Task_1ogtanl"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) != null && execution.getVariable("jobId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_19b0pmt" name="no" sourceRef="ExclusiveGateway_13jdprk" targetRef="EndEvent_1sz49w7"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) == null || execution.getVariable("jobId" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_1sz49w7"> + <bpmn:incoming>SequenceFlow_19b0pmt</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_196t4z3" /> + </bpmn:endEvent> + <bpmn:subProcess id="SubProcess_0bwngpt" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0yncnrj"> + <bpmn:outgoing>SequenceFlow_04f826i</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1lp2j7l"> + <bpmn:incoming>SequenceFlow_1t2ijcu</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_01p0bqh" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_09z92mf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1sooz22</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new ScaleCustomE2EServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1quc7x4" name="Send Error Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_04f826i</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_09z92mf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new ScaleCustomE2EServiceInstance() +csi.sendSyncError(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_04f826i" sourceRef="StartEvent_0yncnrj" targetRef="ScriptTask_1quc7x4" /> + <bpmn:sequenceFlow id="SequenceFlow_09z92mf" sourceRef="ScriptTask_1quc7x4" targetRef="ScriptTask_01p0bqh" /> + <bpmn:sequenceFlow id="SequenceFlow_1t2ijcu" sourceRef="CallActivity_0miglgb" targetRef="EndEvent_1lp2j7l" /> + <bpmn:sequenceFlow id="SequenceFlow_1sooz22" sourceRef="ScriptTask_01p0bqh" targetRef="CallActivity_0miglgb" /> + <bpmn:callActivity id="CallActivity_0miglgb" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1sooz22</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t2ijcu</bpmn:outgoing> + </bpmn:callActivity> + </bpmn:subProcess> + <bpmn:subProcess id="SubProcess_10vzjzh" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_1jgr212" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0gna7ys</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0re5dm7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1awfo4s"> + <bpmn:outgoing>SequenceFlow_0gna7ys</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_04azej9"> + <bpmn:incoming>SequenceFlow_0re5dm7</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0gna7ys" name="" sourceRef="StartEvent_1awfo4s" targetRef="ScriptTask_1jgr212" /> + <bpmn:sequenceFlow id="SequenceFlow_0re5dm7" name="" sourceRef="ScriptTask_1jgr212" targetRef="EndEvent_04azej9" /> + </bpmn:subProcess> + <bpmn:callActivity id="CallActivity_1vpyqzt" name="Call DoScaleE2EServiceInstance " calledElement="DoScaleE2EServiceInstance"> + <bpmn:extensionElements> + <camunda:out source="jobId" target="jobId" /> + <camunda:in source="bpmnRequest" target="bpmnRequest" /> + <camunda:out source="operationId" target="operationId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceId" target="serviceId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="nodeTemplateUUID" target="nodeTemplateUUID" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="requestDescription" target="requestDescription" /> + <camunda:in source="operationId" target="operationId" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0er6ddi</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1fis1j1</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1fis1j1" sourceRef="CallActivity_1vpyqzt" targetRef="ExclusiveGateway_13jdprk" /> + <bpmn:sequenceFlow id="SequenceFlow_1q6spfu" sourceRef="Task_1ogtanl" targetRef="Task_1p5x1em" /> + <bpmn:sequenceFlow id="SequenceFlow_030pfun" sourceRef="Task_1rsd8qa" targetRef="Task_01n9mqa" /> + <bpmn:scriptTask id="Task_1rsd8qa" name="Init Service Operation Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ntnafv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_030pfun</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new ScaleCustomE2EServiceInstance() +csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_14zd9we" sourceRef="Task_01n9mqa" targetRef="Task_0oezp57" /> + <bpmn:serviceTask id="Task_01n9mqa" name="Update Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_030pfun</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14zd9we</bpmn:outgoing> + </bpmn:serviceTask> + </bpmn:process> + <bpmn:error id="Error_196t4z3" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ScaleCustomE2EServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="-13" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-28" y="138" width="67" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nye5g4_di" bpmnElement="Task_03ivdxi"> + <dc:Bounds x="87" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_08uouf4_di" bpmnElement="Task_0oezp57"> + <dc:Bounds x="560" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_13jdprk_di" bpmnElement="ExclusiveGateway_13jdprk" isMarkerVisible="true"> + <dc:Bounds x="928" y="95" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="927" y="73" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11xceoj_di" bpmnElement="Task_1ogtanl"> + <dc:Bounds x="1068" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1qhplvz_di" bpmnElement="Task_1p5x1em"> + <dc:Bounds x="1068" y="281" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_116d9ds_di" bpmnElement="EndEvent_116d9ds"> + <dc:Bounds x="1100" y="554" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1109" y="594" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0mm4eqd_di" bpmnElement="SequenceFlow_0mm4eqd"> + <di:waypoint xsi:type="dc:Point" x="1118" y="361" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="554" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1088" y="451.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c2denm_di" bpmnElement="SequenceFlow_0c2denm"> + <di:waypoint xsi:type="dc:Point" x="23" y="120" /> + <di:waypoint xsi:type="dc:Point" x="87" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="10" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ntnafv_di" bpmnElement="SequenceFlow_1ntnafv"> + <di:waypoint xsi:type="dc:Point" x="187" y="120" /> + <di:waypoint xsi:type="dc:Point" x="249" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="173" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0er6ddi_di" bpmnElement="SequenceFlow_0er6ddi"> + <di:waypoint xsi:type="dc:Point" x="660" y="120" /> + <di:waypoint xsi:type="dc:Point" x="729" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="649.5" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06f0dx5_di" bpmnElement="SequenceFlow_06f0dx5"> + <di:waypoint xsi:type="dc:Point" x="978" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1068" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1014" y="99" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19b0pmt_di" bpmnElement="SequenceFlow_19b0pmt"> + <di:waypoint xsi:type="dc:Point" x="953" y="145" /> + <di:waypoint xsi:type="dc:Point" x="953" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="962" y="183" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_00ekif2_di" bpmnElement="EndEvent_1sz49w7"> + <dc:Bounds x="935" y="232" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="953" y="272" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0bwngpt_di" bpmnElement="SubProcess_0bwngpt" isExpanded="true"> + <dc:Bounds x="168" y="326" width="679" height="194" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yncnrj_di" bpmnElement="StartEvent_0yncnrj"> + <dc:Bounds x="183" y="412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="66" y="453" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1lp2j7l_di" bpmnElement="EndEvent_1lp2j7l"> + <dc:Bounds x="762" y="412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="645" y="453" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01p0bqh_di" bpmnElement="ScriptTask_01p0bqh"> + <dc:Bounds x="441" y="390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0miglgb_di" bpmnElement="CallActivity_0miglgb"> + <dc:Bounds x="618" y="390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1quc7x4_di" bpmnElement="ScriptTask_1quc7x4"> + <dc:Bounds x="263" y="390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04f826i_di" bpmnElement="SequenceFlow_04f826i"> + <di:waypoint xsi:type="dc:Point" x="219" y="430" /> + <di:waypoint xsi:type="dc:Point" x="241" y="430" /> + <di:waypoint xsi:type="dc:Point" x="241" y="430" /> + <di:waypoint xsi:type="dc:Point" x="262" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="121" y="430" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09z92mf_di" bpmnElement="SequenceFlow_09z92mf"> + <di:waypoint xsi:type="dc:Point" x="363" y="430" /> + <di:waypoint xsi:type="dc:Point" x="390" y="430" /> + <di:waypoint xsi:type="dc:Point" x="390" y="430" /> + <di:waypoint xsi:type="dc:Point" x="441" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="270" y="430" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t2ijcu_di" bpmnElement="SequenceFlow_1t2ijcu"> + <di:waypoint xsi:type="dc:Point" x="718" y="430" /> + <di:waypoint xsi:type="dc:Point" x="762" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="605" y="415" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sooz22_di" bpmnElement="SequenceFlow_1sooz22"> + <di:waypoint xsi:type="dc:Point" x="541" y="430" /> + <di:waypoint xsi:type="dc:Point" x="618" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="447" y="415" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_10vzjzh_di" bpmnElement="SubProcess_10vzjzh" isExpanded="true"> + <dc:Bounds x="294" y="593" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1jgr212_di" bpmnElement="ScriptTask_1jgr212"> + <dc:Bounds x="442" y="648" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1awfo4s_di" bpmnElement="StartEvent_1awfo4s"> + <dc:Bounds x="327" y="670" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="210" y="711" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_04azej9_di" bpmnElement="EndEvent_04azej9"> + <dc:Bounds x="603" y="670" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="486" y="711" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gna7ys_di" bpmnElement="SequenceFlow_0gna7ys"> + <di:waypoint xsi:type="dc:Point" x="363" y="688" /> + <di:waypoint xsi:type="dc:Point" x="442" y="688" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="272" y="688" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0re5dm7_di" bpmnElement="SequenceFlow_0re5dm7"> + <di:waypoint xsi:type="dc:Point" x="542" y="688" /> + <di:waypoint xsi:type="dc:Point" x="603" y="688" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="444" y="688" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1vpyqzt_di" bpmnElement="CallActivity_1vpyqzt"> + <dc:Bounds x="729" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fis1j1_di" bpmnElement="SequenceFlow_1fis1j1"> + <di:waypoint xsi:type="dc:Point" x="829" y="120" /> + <di:waypoint xsi:type="dc:Point" x="928" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="878.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q6spfu_di" bpmnElement="SequenceFlow_1q6spfu"> + <di:waypoint xsi:type="dc:Point" x="1118" y="160" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="281" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1088" y="214.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_030pfun_di" bpmnElement="SequenceFlow_030pfun"> + <di:waypoint xsi:type="dc:Point" x="349" y="120" /> + <di:waypoint xsi:type="dc:Point" x="393" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="371" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16ll9yo_di" bpmnElement="Task_1rsd8qa"> + <dc:Bounds x="249" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_14zd9we_di" bpmnElement="SequenceFlow_14zd9we"> + <di:waypoint xsi:type="dc:Point" x="493" y="120" /> + <di:waypoint xsi:type="dc:Point" x="560" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="526.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1kpeoxt_di" bpmnElement="Task_01n9mqa"> + <dc:Bounds x="393" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn new file mode 100644 index 0000000000..28bd3f76ea --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn @@ -0,0 +1,693 @@ +<?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="1.11.3"> + <bpmn:process id="UpdateCustomE2EServiceInstance" name="UpdateCustomE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_00qj6ro" name="Update SI Start Flow"> + <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_0v1ffn4"> + <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0eznq6x"> + <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" /> + <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" /> + </bpmn:subProcess> + <bpmn:callActivity id="DoUpdateE2EServiceInstance" name="Call DoUpdateE2EServiceInstance " calledElement="DoUpdateE2EServiceInstance"> + <bpmn:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="initialStatus" target="initialStatus" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="URN_mso_adapters_openecomp_db_endpoint" target="URN_mso_adapters_openecomp_db_endpoint" /> + <camunda:in source="serviceDecomposition_Target" target="serviceDecomposition_Target" /> + <camunda:in source="serviceDecomposition_Original" target="serviceDecomposition_Original" /> + <camunda:in source="addResourceList" target="addResourceList" /> + <camunda:in source="delResourceList" target="delResourceList" /> + <camunda:in source="serviceRelationShip" target="serviceRelationShip" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_04qwbbf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_0bpd6c0" name="End"> + <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0az1n4y</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new UpdateCustomE2EServiceInstance() +csi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new UpdateCustomE2EServiceInstance() +csi.prepareCompletionRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn:extensionElements> + <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0dug28e"> + <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_03wysuk"> + <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new UpdateCustomE2EServiceInstance() +csi.prepareFalloutRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler"> + <bpmn:extensionElements> + <camunda:in source="falloutRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response"> + <bpmn:incoming>SequenceFlow_06o383f</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new UpdateCustomE2EServiceInstance() +csi.sendSyncError(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_14kqo0r" /> + <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" /> + <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" /> + <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" /> + <bpmn:scriptTask id="ScriptTask_14kqo0r" name="Prepare Update Service Oper Status(error)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0t4nds2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + execution.setVariable("progress", "100") + execution.setVariable("operationStatus", "Finished") + execution.setVariable("operationResult", "Error") + execution.setVariable("operationReason", "Exception happened") + def ddsi = new UpdateCustomE2EServiceInstance() + ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0t4nds2" sourceRef="ScriptTask_14kqo0r" targetRef="ServiceTask_1af6rwh" /> + <bpmn:serviceTask id="ServiceTask_1af6rwh" name="Update Service Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0t4nds2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_06o383f</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_06o383f" sourceRef="ServiceTask_1af6rwh" targetRef="ScriptTask_1rn6nqi" /> + </bpmn:subProcess> + <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_12dou7o</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0secadm</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new UpdateCustomE2EServiceInstance() +csi.sendSyncResponse(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?" default="SequenceFlow_1fueo69"> + <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_07uk5iy"> + <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_0nbdy47" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" /> + <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoUpdateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" /> + <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" /> + <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" /> + <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy" /> + <bpmn:callActivity id="CallActivity_1vejucv" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0az1n4y</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1bd4711</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_0cx1y0g" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1bd4711</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_03i6zhx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new UpdateCustomE2EServiceInstance() +dcsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1bd4711" sourceRef="CallActivity_1vejucv" targetRef="ScriptTask_0cx1y0g" /> + <bpmn:scriptTask id="ScriptTask_11y3uq6" name="Post for Compare Model Versions" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xhbobd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0t7zinj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new UpdateCustomE2EServiceInstance() +csi.postCompareModelVersions(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0hixtxc" name="Prepare for Compare Model Versions" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_03i6zhx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1pdv4qj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new UpdateCustomE2EServiceInstance() +ddsi.preCompareModelVersions(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1rkoyc5" name="Call DoCompareModelVersions" calledElement="DoCompareModelVersions"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="model-invariant-id-target" target="model-invariant-id-target" /> + <camunda:in source="model-version-id-target" target="model-version-id-target" /> + <camunda:in source="model-invariant-id-original" target="model-invariant-id-original" /> + <camunda:in source="model-version-id-original" target="model-version-id-original" /> + <camunda:out source="serviceDecomposition_Target" target="serviceDecomposition_Target" /> + <camunda:out source="serviceDecomposition_Original" target="serviceDecomposition_Original" /> + <camunda:out source="addResourceList" target="addResourceList" /> + <camunda:out source="delResourceList" target="delResourceList" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1pdv4qj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xhbobd</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_03i6zhx" sourceRef="ScriptTask_0cx1y0g" targetRef="ScriptTask_0hixtxc" /> + <bpmn:sequenceFlow id="SequenceFlow_1pdv4qj" sourceRef="ScriptTask_0hixtxc" targetRef="CallActivity_1rkoyc5" /> + <bpmn:sequenceFlow id="SequenceFlow_0xhbobd" sourceRef="CallActivity_1rkoyc5" targetRef="ScriptTask_11y3uq6" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_0mc34qe" name="HasResourcetoUpdate?" default="SequenceFlow_1n8h3zt"> + <bpmn:incoming>SequenceFlow_0secadm</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0zmd4rt</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1n8h3zt</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0az1n4y" sourceRef="ScriptTask_1s09c7d" targetRef="CallActivity_1vejucv" /> + <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0m01dm3" name="StartDoUpdate"> + <bpmn:outgoing>SequenceFlow_04qwbbf</bpmn:outgoing> + <bpmn:linkEventDefinition name="StartDoUpdate" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_0secadm" sourceRef="ScriptTask_0xupxj9" targetRef="ExclusiveGateway_0mc34qe" /> + <bpmn:sequenceFlow id="SequenceFlow_04qwbbf" sourceRef="IntermediateCatchEvent_0m01dm3" targetRef="DoUpdateE2EServiceInstance" /> + <bpmn:endEvent id="EndEvent_1jvqhkf" name="End"> + <bpmn:incoming>SequenceFlow_0kvl23y</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_16sgdqw" name="Init Service Operation Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1bddzne</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1e3vtyq</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi= new UpdateCustomE2EServiceInstance() +csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_0qjpd5v" name="Update Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1e3vtyq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_12dou7o</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1e3vtyq" sourceRef="ScriptTask_16sgdqw" targetRef="ServiceTask_0qjpd5v" /> + <bpmn:sequenceFlow id="SequenceFlow_12dou7o" sourceRef="ServiceTask_0qjpd5v" targetRef="ScriptTask_0xupxj9" /> + <bpmn:serviceTask id="ServiceTask_0mj3kf2" name="Update Service Operation Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1wzk6tu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0kvl23y</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_08mk8h9" name="GoToOperStatusInit"> + <bpmn:incoming>SequenceFlow_0t7zinj</bpmn:incoming> + <bpmn:linkEventDefinition name="StartOperStatusInit" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_0t7zinj" sourceRef="ScriptTask_11y3uq6" targetRef="IntermediateThrowEvent_08mk8h9" /> + <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_14w7v9s" name="StartOperStatusInit"> + <bpmn:outgoing>SequenceFlow_1bddzne</bpmn:outgoing> + <bpmn:linkEventDefinition name="StartOperStatusInit" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1bddzne" sourceRef="IntermediateCatchEvent_14w7v9s" targetRef="ScriptTask_16sgdqw" /> + <bpmn:scriptTask id="ScriptTask_04a0t3p" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1n8h3zt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wzk6tu</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("progress", "100") +execution.setVariable("operationStatus", "Finished") +execution.setVariable("operationResult", "End") +execution.setVariable("operationReason", "No resource to add or delete") +def ddsi = new UpdateCustomE2EServiceInstance() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1wzk6tu" sourceRef="ScriptTask_04a0t3p" targetRef="ServiceTask_0mj3kf2" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1k72hze" name="GoToDoUpdate"> + <bpmn:incoming>SequenceFlow_0zmd4rt</bpmn:incoming> + <bpmn:linkEventDefinition name="StartDoUpdate" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_0kvl23y" sourceRef="ServiceTask_0mj3kf2" targetRef="EndEvent_1jvqhkf" /> + <bpmn:sequenceFlow id="SequenceFlow_0zmd4rt" name="Yes" sourceRef="ExclusiveGateway_0mc34qe" targetRef="IntermediateThrowEvent_1k72hze"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoUpdate") == true}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1n8h3zt" name="No" sourceRef="ExclusiveGateway_0mc34qe" targetRef="ScriptTask_04a0t3p" /> + </bpmn:process> + <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateCustomE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro"> + <dc:Bounds x="-6" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-24" y="221" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true"> + <dc:Bounds x="439" y="1170" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoUpdateE2EServiceInstance"> + <dc:Bounds x="284" y="585" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0"> + <dc:Bounds x="1192" y="607" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1204" y="643" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d"> + <dc:Bounds x="105" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r"> + <dc:Bounds x="782" y="585" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0"> + <dc:Bounds x="959" y="585" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true"> + <dc:Bounds x="-61" y="908" width="1322" height="164" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9"> + <dc:Bounds x="451" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true"> + <dc:Bounds x="639" y="600" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="640" y="572" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy"> + <dc:Bounds x="646" y="713" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="527" y="1016" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq"> + <di:waypoint xsi:type="dc:Point" x="30" y="198" /> + <di:waypoint xsi:type="dc:Point" x="105" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="22.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx"> + <di:waypoint xsi:type="dc:Point" x="384" y="625" /> + <di:waypoint xsi:type="dc:Point" x="639" y="625" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="466.5" y="604" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf"> + <di:waypoint xsi:type="dc:Point" x="1059" y="625" /> + <di:waypoint xsi:type="dc:Point" x="1192" y="625" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1080.5" y="604" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr"> + <di:waypoint xsi:type="dc:Point" x="689" y="625" /> + <di:waypoint xsi:type="dc:Point" x="782" y="625" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="727.1481481481482" y="622" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si"> + <di:waypoint xsi:type="dc:Point" x="882" y="625" /> + <di:waypoint xsi:type="dc:Point" x="959" y="625" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="875.5" y="604" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69"> + <di:waypoint xsi:type="dc:Point" x="664" y="650" /> + <di:waypoint xsi:type="dc:Point" x="664" y="713" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639" y="677" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39"> + <dc:Bounds x="587" y="1225" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4"> + <dc:Bounds x="472" y="1247" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="400" y="1288" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x"> + <dc:Bounds x="748" y="1247" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="676" y="1288" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e"> + <dc:Bounds x="-20" y="994" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-92" y="1035" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk"> + <dc:Bounds x="1194" y="994" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1122" y="1035" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2"> + <dc:Bounds x="777" y="972" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8"> + <dc:Bounds x="963" y="972" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi"> + <dc:Bounds x="577" y="972" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb"> + <di:waypoint xsi:type="dc:Point" x="508" y="1265" /> + <di:waypoint xsi:type="dc:Point" x="587" y="1265" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="461" y="1265" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321"> + <di:waypoint xsi:type="dc:Point" x="687" y="1265" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1265" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="633" y="1265" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n"> + <di:waypoint xsi:type="dc:Point" x="16" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="122" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="24" y="991" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam"> + <di:waypoint xsi:type="dc:Point" x="1063" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="1194" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083.5" y="991" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp"> + <di:waypoint xsi:type="dc:Point" x="677" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="777" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="682" y="991" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj"> + <di:waypoint xsi:type="dc:Point" x="877" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="963" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="875" y="991" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1vejucv_di" bpmnElement="CallActivity_1vejucv"> + <dc:Bounds x="274" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0cx1y0g_di" bpmnElement="ScriptTask_0cx1y0g"> + <dc:Bounds x="451" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1bd4711_di" bpmnElement="SequenceFlow_1bd4711"> + <di:waypoint xsi:type="dc:Point" x="374" y="198" /> + <di:waypoint xsi:type="dc:Point" x="451" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="367.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_11y3uq6_di" bpmnElement="ScriptTask_11y3uq6"> + <dc:Bounds x="959" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0hixtxc_di" bpmnElement="ScriptTask_0hixtxc"> + <dc:Bounds x="614" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1rkoyc5_di" bpmnElement="CallActivity_1rkoyc5"> + <dc:Bounds x="782" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_03i6zhx_di" bpmnElement="SequenceFlow_03i6zhx"> + <di:waypoint xsi:type="dc:Point" x="551" y="198" /> + <di:waypoint xsi:type="dc:Point" x="614" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="537.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pdv4qj_di" bpmnElement="SequenceFlow_1pdv4qj"> + <di:waypoint xsi:type="dc:Point" x="714" y="198" /> + <di:waypoint xsi:type="dc:Point" x="782" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="703" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xhbobd_di" bpmnElement="SequenceFlow_0xhbobd"> + <di:waypoint xsi:type="dc:Point" x="882" y="198" /> + <di:waypoint xsi:type="dc:Point" x="959" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="875.5" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0mc34qe_di" bpmnElement="ExclusiveGateway_0mc34qe" isMarkerVisible="true"> + <dc:Bounds x="639" y="352" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="622" y="324" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0az1n4y_di" bpmnElement="SequenceFlow_0az1n4y"> + <di:waypoint xsi:type="dc:Point" x="205" y="198" /> + <di:waypoint xsi:type="dc:Point" x="274" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="239.5" y="177" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0m01dm3_di" bpmnElement="IntermediateCatchEvent_0m01dm3"> + <dc:Bounds x="-6" y="607" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-21" y="669" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0secadm_di" bpmnElement="SequenceFlow_0secadm"> + <di:waypoint xsi:type="dc:Point" x="551" y="377" /> + <di:waypoint xsi:type="dc:Point" x="639" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="550" y="356" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04qwbbf_di" bpmnElement="SequenceFlow_04qwbbf"> + <di:waypoint xsi:type="dc:Point" x="30" y="625" /> + <di:waypoint xsi:type="dc:Point" x="284" y="625" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="112" y="604" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1jvqhkf_di" bpmnElement="EndEvent_1jvqhkf"> + <dc:Bounds x="1192" y="359" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1200" y="404" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16sgdqw_di" bpmnElement="ScriptTask_16sgdqw"> + <dc:Bounds x="97" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0qjpd5v_di" bpmnElement="ServiceTask_0qjpd5v"> + <dc:Bounds x="274" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1e3vtyq_di" bpmnElement="SequenceFlow_1e3vtyq"> + <di:waypoint xsi:type="dc:Point" x="197" y="377" /> + <di:waypoint xsi:type="dc:Point" x="274" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235.5" y="356" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12dou7o_di" bpmnElement="SequenceFlow_12dou7o"> + <di:waypoint xsi:type="dc:Point" x="374" y="377" /> + <di:waypoint xsi:type="dc:Point" x="451" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412.5" y="356" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0mj3kf2_di" bpmnElement="ServiceTask_0mj3kf2"> + <dc:Bounds x="959" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_08mk8h9_di" bpmnElement="IntermediateThrowEvent_08mk8h9"> + <dc:Bounds x="1192" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1175" y="220" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0t7zinj_di" bpmnElement="SequenceFlow_0t7zinj"> + <di:waypoint xsi:type="dc:Point" x="1059" y="198" /> + <di:waypoint xsi:type="dc:Point" x="1192" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1125.5" y="177" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_14w7v9s_di" bpmnElement="IntermediateCatchEvent_14w7v9s"> + <dc:Bounds x="-6" y="359" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-29" y="421" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1bddzne_di" bpmnElement="SequenceFlow_1bddzne"> + <di:waypoint xsi:type="dc:Point" x="30" y="377" /> + <di:waypoint xsi:type="dc:Point" x="97" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="63.5" y="356" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_14kqo0r_di" bpmnElement="ScriptTask_14kqo0r"> + <dc:Bounds x="122" y="972" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1af6rwh_di" bpmnElement="ServiceTask_1af6rwh"> + <dc:Bounds x="350" y="972" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0t4nds2_di" bpmnElement="SequenceFlow_0t4nds2"> + <di:waypoint xsi:type="dc:Point" x="222" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="350" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="286" y="991" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06o383f_di" bpmnElement="SequenceFlow_06o383f"> + <di:waypoint xsi:type="dc:Point" x="450" y="1012" /> + <di:waypoint xsi:type="dc:Point" x="577" y="1012" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="513.5" y="991" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_04a0t3p_di" bpmnElement="ScriptTask_04a0t3p"> + <dc:Bounds x="782" y="337" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wzk6tu_di" bpmnElement="SequenceFlow_1wzk6tu"> + <di:waypoint xsi:type="dc:Point" x="882" y="377" /> + <di:waypoint xsi:type="dc:Point" x="959" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="920.5" y="356" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1k72hze_di" bpmnElement="IntermediateThrowEvent_1k72hze"> + <dc:Bounds x="646" y="447" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="631" y="487" width="76" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0kvl23y_di" bpmnElement="SequenceFlow_0kvl23y"> + <di:waypoint xsi:type="dc:Point" x="1059" y="377" /> + <di:waypoint xsi:type="dc:Point" x="1192" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1125.5" y="356" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zmd4rt_di" bpmnElement="SequenceFlow_0zmd4rt"> + <di:waypoint xsi:type="dc:Point" x="664" y="402" /> + <di:waypoint xsi:type="dc:Point" x="664" y="447" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="670" y="419" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1n8h3zt_di" bpmnElement="SequenceFlow_1n8h3zt"> + <di:waypoint xsi:type="dc:Point" x="689" y="377" /> + <di:waypoint xsi:type="dc:Point" x="782" y="377" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="729" y="356" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn new file mode 100644 index 0000000000..e5236f92bf --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateNetworkInstance" name="UpdateNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def networkMod = new UpdateNetworkInstance() +networkMod.processJavaException(execution)</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="doUpdateNetworkInstance_CallActivity" name="DoUpdate Network Instance " calledElement="DoUpdateNetworkInstance"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:in source="networkId" target="networkId" /> + <camunda:in source="networkName" target="networkName" /> + <camunda:in source="networkModelInfo" target="networkModelInfo" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="networkInputParams" target="networkInputParams" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="networkId" target="networkId" /> + <camunda:out source="networkName" target="networkName" /> + <camunda:out source="networkOutputParams" target="networkOutputParams" /> + <camunda:in source="bpmnRequest" target="bpmnRequest" /> + <camunda:in source="failIfExists" target="failIfExists" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="requestId" target="requestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="requestAction" target="requestAction" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_0o440av" name="End"> + <bpmn2:incoming>SequenceFlow_0x3znm5</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_09qt0pi" name="CreateNetwork PostProcess Success " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def UpdateNetworkInstance = new UpdateNetworkInstance() +UpdateNetworkInstance.postProcessResponse(execution) +</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doUpdateNetworkInstance_CallActivity" targetRef="ScriptTask_0cihgpv" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x3znm5" sourceRef="ScriptTask_09qt0pi" targetRef="EndEvent_0o440av" /> + <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ablr60</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def preProcess = new UpdateNetworkInstance() +preProcess.preProcessRequest(execution)</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_0pvcr6j" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ablr60" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_19xbdbu" /> + <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def UpdateNetworkInstance = new UpdateNetworkInstance() +UpdateNetworkInstance.prepareCompletion(execution)</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDNI_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" /> + <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" /> + <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" /> + <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_110xxgx"> + <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1rqikib"> + <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def UpdateNetworkInstance = new UpdateNetworkInstance() +UpdateNetworkInstance.buildErrorResponse(execution)</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="UPDNI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" /> + <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" /> + <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1hql91g" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="ScriptTask_09qt0pi" /> + <bpmn2:sequenceFlow id="SequenceFlow_0rt8wax" sourceRef="Task_19xbdbu" targetRef="Task_1nko5zz" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doUpdateNetworkInstance_CallActivity" /> + <bpmn2:scriptTask id="Task_19xbdbu" name="Get Network Model Info " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ablr60</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0rt8wax</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def UpdateNetworkInstance = new UpdateNetworkInstance() +UpdateNetworkInstance.getNetworkModelInfo(execution)</bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0rt8wax</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing> + <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.* +def UpdateNetworkInstance = new UpdateNetworkInstance() +UpdateNetworkInstance.sendSyncResponse(execution)</bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent"> + <dc:Bounds x="3" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-3" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="370" y="734" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="403" y="811" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="376" y="852" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="518" y="789" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="679" y="811" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="652" y="852" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint x="439" y="829" /> + <di:waypoint x="518" y="829" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="436" y="829" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint x="618" y="829" /> + <di:waypoint x="679" y="829" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="608" y="829" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doUpdateNetworkInstance_CallActivity"> + <dc:Bounds x="692" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av"> + <dc:Bounds x="1408" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="115" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi"> + <dc:Bounds x="1253" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp"> + <di:waypoint x="792" y="97" /> + <di:waypoint x="907" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="850" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5"> + <di:waypoint x="1353" y="97" /> + <di:waypoint x="1408" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1381" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j"> + <dc:Bounds x="139" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l"> + <di:waypoint x="39" y="97" /> + <di:waypoint x="89" y="97" /> + <di:waypoint x="89" y="97" /> + <di:waypoint x="139" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="104" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60"> + <di:waypoint x="239" y="97" /> + <di:waypoint x="306" y="97" /> + <di:waypoint x="306" y="97" /> + <di:waypoint x="372" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="321" y="97" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv"> + <dc:Bounds x="907" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre"> + <dc:Bounds x="1071" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq"> + <di:waypoint x="1007" y="97" /> + <di:waypoint x="1071" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1039" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g"> + <dc:Bounds x="436" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz"> + <dc:Bounds x="611" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true"> + <dc:Bounds x="200" y="354" width="681" height="293" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx"> + <dc:Bounds x="283" y="483" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="524" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib"> + <dc:Bounds x="786" y="483" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="759" y="524" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f"> + <di:waypoint x="536" y="501" /> + <di:waypoint x="611" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="529" y="486" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv"> + <di:waypoint x="711" y="501" /> + <di:waypoint x="786" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="704" y="486" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd"> + <di:waypoint x="1171" y="97" /> + <di:waypoint x="1253" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1212" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf"> + <di:waypoint x="319" y="501" /> + <di:waypoint x="436" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332.5" y="486" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax"> + <di:waypoint x="472" y="97" /> + <di:waypoint x="558" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="515" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn"> + <di:waypoint x="658" y="97" /> + <di:waypoint x="692" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="675" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu"> + <dc:Bounds x="372" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz"> + <dc:Bounds x="558" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn new file mode 100644 index 0000000000..c35e7ece96 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn @@ -0,0 +1,297 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVfModuleInfra" name="UpdateVfModuleInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_7" name="DoUpdateVfModule (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.prepDoUpdateVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.completionHandlerPrep(execution, 'UPDVfModI_CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfra() +uvfm.falloutHandlerPrep(execution, 'UPDVfModI_FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id"/> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id"/> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_2" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVfModule" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="UPDVfModI_vnfType" target="vnfType" /> + <camunda:in source="UPDVfModI_vnfName" target="vnfName" /> + <camunda:in source="UPDVfModI_vnfId" target="vnfId" /> + <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" /> + <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" /> + <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" /> + <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="UPDVfModI_tenantId" target="tenantId" /> + <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" /> + <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="UPDVfModI_usePreload" target="usePreload" /> + <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_10" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="149" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="150" y="113" width="34" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="605" y="370" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="598" y="411" width="50" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="185" y="90" /> + <di:waypoint xsi:type="dc:Point" x="299" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235" y="90" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="ScriptTask_2"> + <dc:Bounds x="299" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="399" y="90" /> + <di:waypoint xsi:type="dc:Point" x="449" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="433" y="90" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="449" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125" targetElement="_BPMNShape_ScriptTask_130"> + <di:waypoint xsi:type="dc:Point" x="498" y="130" /> + <di:waypoint xsi:type="dc:Point" x="498" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="160" /> + <di:waypoint xsi:type="dc:Point" x="199" y="190" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="169" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="449" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="549" y="388" /> + <di:waypoint xsi:type="dc:Point" x="605" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="723" y="186" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_130" bpmnElement="ScriptTask_7"> + <dc:Bounds x="149" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="149" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="299" y="348" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="249" y="388" /> + <di:waypoint xsi:type="dc:Point" x="299" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="394" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="65" y="536" width="565" height="241" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="129" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="98" y="671" width="98" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="209" y="608" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="165" y="648" /> + <di:waypoint xsi:type="dc:Point" x="209" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="948" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="309" y="648" /> + <di:waypoint xsi:type="dc:Point" x="377" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="325" y="648" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="533" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="551" y="671" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="612" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="627" y="671" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="704" y="630" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="671" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="648" y="648" /> + <di:waypoint xsi:type="dc:Point" x="704" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="693" y="948" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="377" y="608" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="399" y="388" /> + <di:waypoint xsi:type="dc:Point" x="449" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="439" y="356" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="477" y="648" /> + <di:waypoint xsi:type="dc:Point" x="533" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="456" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_130" targetElement="_BPMNShape_ScriptTask_181"> + <di:waypoint xsi:type="dc:Point" x="249" y="230" /> + <di:waypoint xsi:type="dc:Point" x="299" y="230" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="274" y="205" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="299" y="190" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="399" y="231" /> + <di:waypoint xsi:type="dc:Point" x="624" y="233" /> + <di:waypoint xsi:type="dc:Point" x="624" y="294" /> + <di:waypoint xsi:type="dc:Point" x="99" y="294" /> + <di:waypoint xsi:type="dc:Point" x="99" y="388" /> + <di:waypoint xsi:type="dc:Point" x="149" y="388" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="232" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn new file mode 100644 index 0000000000..1efb127e33 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn @@ -0,0 +1,412 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVfModuleInfraV2" name="UpdateVfModuleInfraV2" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1" name="start"> + <bpmn2:outgoing>SequenceFlow_07r1tup</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_07r1tup" sourceRef="StartEvent_1" targetRef="preProcessRequest" /> + <bpmn2:scriptTask id="checkPserverFlag" name="Pserver Flag Check (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_09izs9b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gyzpu9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.checkPserverFlag(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="preProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_07r1tup</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04cyigk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="sendSynchResponse" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04cyigk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_09izs9b</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="vfFlagCheck" name="VF+ Flag Check (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gyzpu9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16xzdgi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.vfFlagCheck(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="lockAppC" name="Lock (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1oa0jsk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ozbxok</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.lockAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthCheckAppC" name="Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ozbxok</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17c5hhe</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.healthCheckAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthDiagnosticSDNO" name="Health Diagnostic (SDN-O)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17c5hhe</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pqikpt</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.healthDiagnosticSDNO(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="stopVfModuleController" name="Stop VF Module (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1pqikpt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0m6q3pf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.stopVfModuleController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="healthCheckController" name="Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vj0wfl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cskhwy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.healthCheckController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="startVfModuleController" name="Start VF Module (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0cskhwy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_067f4jv</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.startVfModuleController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="vFFlagUnset" name="VF+ Flag Unset (A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_067f4jv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1trqy93</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.vFFlagUnset(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="unlockAppC" name="Unlock (App-C)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1trqy93</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0fc550l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.unlockAppC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="postUpgradeHealthCheckController" name="Post-Upgrade Health Check (App-c)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0fc550l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uquo5r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.postUpgradeHealthCheckController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_04cyigk" sourceRef="preProcessRequest" targetRef="sendSynchResponse" /> + <bpmn2:sequenceFlow id="SequenceFlow_09izs9b" sourceRef="sendSynchResponse" targetRef="checkPserverFlag" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gyzpu9" sourceRef="checkPserverFlag" targetRef="vfFlagCheck" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pqikpt" sourceRef="healthDiagnosticSDNO" targetRef="stopVfModuleController" /> + <bpmn2:sequenceFlow id="SequenceFlow_0cskhwy" sourceRef="healthCheckController" targetRef="startVfModuleController" /> + <bpmn2:sequenceFlow id="SequenceFlow_067f4jv" sourceRef="startVfModuleController" targetRef="vFFlagUnset" /> + <bpmn2:sequenceFlow id="SequenceFlow_1trqy93" sourceRef="vFFlagUnset" targetRef="unlockAppC" /> + <bpmn2:sequenceFlow id="SequenceFlow_0fc550l" sourceRef="unlockAppC" targetRef="postUpgradeHealthCheckController" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uquo5r" sourceRef="postUpgradeHealthCheckController" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="doUpdateVfModulePrep" name="DoUpdateVfModule (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0m6q3pf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ykv4yr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.doUpdateVfModulePrep(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="completionHandlerPrep" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1x3xeba</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01yr04k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.completionHandlerPrep(execution,"UPDVfModI_CompletionHandlerRequest")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rfmnuo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vj0wfl</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1ozbxok" sourceRef="lockAppC" targetRef="healthCheckAppC" /> + <bpmn2:sequenceFlow id="SequenceFlow_17c5hhe" sourceRef="healthCheckAppC" targetRef="healthDiagnosticSDNO" /> + <bpmn2:sequenceFlow id="SequenceFlow_0m6q3pf" sourceRef="stopVfModuleController" targetRef="doUpdateVfModulePrep" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vj0wfl" sourceRef="setSuccessIndicator" targetRef="healthCheckController" /> + <bpmn2:endEvent id="EndEvent_1" name="end"> + <bpmn2:incoming>SequenceFlow_1uquo5r</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16xzdgi" sourceRef="vfFlagCheck" targetRef="vfFlagSet" /> + <bpmn2:sequenceFlow id="SequenceFlow_1oa0jsk" sourceRef="vfFlagSet" targetRef="lockAppC" /> + <bpmn2:scriptTask id="vfFlagSet" name="VF+ Flag Set(A&AI)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16xzdgi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1oa0jsk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVfModuleInfraV2() +uvfm.vfFlagSet(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1rfmnuo" sourceRef="CallActivity_1mn9pxh" targetRef="setSuccessIndicator" /> + <bpmn2:callActivity id="CallActivity_12if1z7" name="DoUpdateVfModule" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="UPDVfModI_vnfType" target="vnfType" /> + <camunda:in source="UPDVfModI_vnfName" target="vnfName" /> + <camunda:in source="UPDVfModI_vnfId" target="vnfId" /> + <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" /> + <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" /> + <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" /> + <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="UPDVfModI_tenantId" target="tenantId" /> + <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" /> + <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="UPDVfModI_usePreload" target="usePreload" /> + <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1ykv4yr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1x3xeba</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1ykv4yr" sourceRef="doUpdateVfModulePrep" targetRef="CallActivity_12if1z7" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x3xeba" sourceRef="CallActivity_12if1z7" targetRef="completionHandlerPrep" /> + <bpmn2:callActivity id="CallActivity_1mn9pxh" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_01yr04k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rfmnuo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_01yr04k" sourceRef="completionHandlerPrep" targetRef="CallActivity_1mn9pxh" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfraV2"> + <bpmndi:BPMNShape id="StartEvent_0twxl8d_di" bpmnElement="StartEvent_1"> + <dc:Bounds x="191" y="241" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="198" y="281" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07r1tup_di" bpmnElement="SequenceFlow_07r1tup"> + <di:waypoint xsi:type="dc:Point" x="227" y="259" /> + <di:waypoint xsi:type="dc:Point" x="282" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01hwh3t_di" bpmnElement="checkPserverFlag"> + <dc:Bounds x="581" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0f4oi4p_di" bpmnElement="preProcessRequest"> + <dc:Bounds x="282" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_03hqi4p_di" bpmnElement="sendSynchResponse"> + <dc:Bounds x="430" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1s24r7g_di" bpmnElement="vfFlagCheck"> + <dc:Bounds x="722" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1tjbc0n_di" bpmnElement="lockAppC"> + <dc:Bounds x="1000" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0jqyljl_di" bpmnElement="healthCheckAppC"> + <dc:Bounds x="1137" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xd9t6y_di" bpmnElement="healthDiagnosticSDNO"> + <dc:Bounds x="369" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_07v5qul_di" bpmnElement="stopVfModuleController"> + <dc:Bounds x="521" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fhh3ik_di" bpmnElement="healthCheckController"> + <dc:Bounds x="521" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0y2p8lc_di" bpmnElement="startVfModuleController"> + <dc:Bounds x="672" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0getlx7_di" bpmnElement="vFFlagUnset"> + <dc:Bounds x="809" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_13ngoxl_di" bpmnElement="unlockAppC"> + <dc:Bounds x="955" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_023ov5w_di" bpmnElement="postUpgradeHealthCheckController"> + <dc:Bounds x="1103" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04cyigk_di" bpmnElement="SequenceFlow_04cyigk"> + <di:waypoint xsi:type="dc:Point" x="382" y="259" /> + <di:waypoint xsi:type="dc:Point" x="430" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09izs9b_di" bpmnElement="SequenceFlow_09izs9b"> + <di:waypoint xsi:type="dc:Point" x="530" y="259" /> + <di:waypoint xsi:type="dc:Point" x="581" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="510.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gyzpu9_di" bpmnElement="SequenceFlow_0gyzpu9"> + <di:waypoint xsi:type="dc:Point" x="681" y="259" /> + <di:waypoint xsi:type="dc:Point" x="722" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="656.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pqikpt_di" bpmnElement="SequenceFlow_1pqikpt"> + <di:waypoint xsi:type="dc:Point" x="469" y="394" /> + <di:waypoint xsi:type="dc:Point" x="521" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cskhwy_di" bpmnElement="SequenceFlow_0cskhwy"> + <di:waypoint xsi:type="dc:Point" x="621" y="533" /> + <di:waypoint xsi:type="dc:Point" x="672" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="646.5" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_067f4jv_di" bpmnElement="SequenceFlow_067f4jv"> + <di:waypoint xsi:type="dc:Point" x="772" y="533" /> + <di:waypoint xsi:type="dc:Point" x="809" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="790.5" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1trqy93_di" bpmnElement="SequenceFlow_1trqy93"> + <di:waypoint xsi:type="dc:Point" x="909" y="533" /> + <di:waypoint xsi:type="dc:Point" x="955" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="932" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fc550l_di" bpmnElement="SequenceFlow_0fc550l"> + <di:waypoint xsi:type="dc:Point" x="1055" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1079" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1079" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1103" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1094" y="527" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uquo5r_di" bpmnElement="SequenceFlow_1uquo5r"> + <di:waypoint xsi:type="dc:Point" x="1203" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1254" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1254" y="533" /> + <di:waypoint xsi:type="dc:Point" x="1304" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1224" y="527" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00bft3s_di" bpmnElement="doUpdateVfModulePrep"> + <dc:Bounds x="672" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00moxf8_di" bpmnElement="completionHandlerPrep"> + <dc:Bounds x="955" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_02qf1er_di" bpmnElement="setSuccessIndicator"> + <dc:Bounds x="369" y="493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ozbxok_di" bpmnElement="SequenceFlow_1ozbxok"> + <di:waypoint xsi:type="dc:Point" x="1100" y="259" /> + <di:waypoint xsi:type="dc:Point" x="1137" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1073.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17c5hhe_di" bpmnElement="SequenceFlow_17c5hhe"> + <di:waypoint xsi:type="dc:Point" x="1187" y="299" /> + <di:waypoint xsi:type="dc:Point" x="1187" y="324" /> + <di:waypoint xsi:type="dc:Point" x="419" y="324" /> + <di:waypoint xsi:type="dc:Point" x="419" y="354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="758" y="303" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0m6q3pf_di" bpmnElement="SequenceFlow_0m6q3pf"> + <di:waypoint xsi:type="dc:Point" x="621" y="394" /> + <di:waypoint xsi:type="dc:Point" x="672" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="646.5" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vj0wfl_di" bpmnElement="SequenceFlow_0vj0wfl"> + <di:waypoint xsi:type="dc:Point" x="469" y="533" /> + <di:waypoint xsi:type="dc:Point" x="521" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="512" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_12zreeo_di" bpmnElement="EndEvent_1"> + <dc:Bounds x="1304" y="515" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1313" y="555" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16xzdgi_di" bpmnElement="SequenceFlow_16xzdgi"> + <di:waypoint xsi:type="dc:Point" x="822" y="259" /> + <di:waypoint xsi:type="dc:Point" x="872" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="847" y="238" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1oa0jsk_di" bpmnElement="SequenceFlow_1oa0jsk"> + <di:waypoint xsi:type="dc:Point" x="972" y="259" /> + <di:waypoint xsi:type="dc:Point" x="1000" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="238" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0zgcd21_di" bpmnElement="vfFlagSet"> + <dc:Bounds x="872" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rfmnuo_di" bpmnElement="SequenceFlow_1rfmnuo"> + <di:waypoint xsi:type="dc:Point" x="1153" y="436" /> + <di:waypoint xsi:type="dc:Point" x="1153" y="465" /> + <di:waypoint xsi:type="dc:Point" x="419" y="465" /> + <di:waypoint xsi:type="dc:Point" x="419" y="493" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="741" y="444" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_12if1z7_di" bpmnElement="CallActivity_12if1z7"> + <dc:Bounds x="809" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ykv4yr_di" bpmnElement="SequenceFlow_1ykv4yr"> + <di:waypoint xsi:type="dc:Point" x="772" y="394" /> + <di:waypoint xsi:type="dc:Point" x="809" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="790.5" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x3xeba_di" bpmnElement="SequenceFlow_1x3xeba"> + <di:waypoint xsi:type="dc:Point" x="909" y="394" /> + <di:waypoint xsi:type="dc:Point" x="955" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="932" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1mn9pxh_di" bpmnElement="CallActivity_1mn9pxh"> + <dc:Bounds x="1103" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01yr04k_di" bpmnElement="SequenceFlow_01yr04k"> + <di:waypoint xsi:type="dc:Point" x="1055" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1103" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1079" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn new file mode 100644 index 0000000000..078d72a1d8 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn @@ -0,0 +1,517 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_ZBLUcCkQEeaY6ZhIaNLwzg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVfModuleVolumeInfraV1" name="UpdateVfModuleVolumeInfraV1" isExecutable="true"> + <bpmn2:endEvent id="EndEvent_4" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallActivity_completionHandler" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModVol_CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="CMSO_ResponseCode" target="UPDVfModVol_CMSO_ResponseCode" /> + <camunda:out source="CMSO_ErrorResponse" target="UPDVfModVol_CMSO_ErrorResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_completionHandler" targetRef="ScriptTask_postProcessTemp" /> + <bpmn2:serviceTask id="ServiceTask_callUpdateInfraDb" name="Call Update Infra DB"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter> + <camunda:inputParameter name="payload">${UPDVfModVol_updateInfraRequest}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">aapplication/soap+xml</camunda:entry> + <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="UPDVfModVol_createDBResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="UPDVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ServiceTask_callUpdateInfraDb" targetRef="ScriptTask_prepCompletionHandlerRequest" /> + <bpmn2:scriptTask id="ScriptTask_prepVnfRest" name="Prepare VNF Adapter Rest Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('prepVnfAdapterRest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_prepVnfRest" targetRef="CallActivity_callVNFAdapterRest" /> + <bpmn2:scriptTask id="ScriptTask_prepCompletionHandlerRequest" name="Prep Completion Handler Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('prepCompletionHandlerRequest', execution, UPDVfModVol_requestId, 'UPDATE', UPDVfModVol_source, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_prepCompletionHandlerRequest" targetRef="CallActivity_completionHandler" /> + <bpmn2:callActivity id="CallActivity_callVNFAdapterRest" name="VNFAdapterRest" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:out source="vnfAdapterRestV1Response" target="UPDVfModVol_vnfAdapterRestResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callVNFAdapterRest" targetRef="ScriptTask_prepDbInfraRequest" /> + <bpmn2:scriptTask id="ScriptTask_prepDbInfraRequest" name="Prep DB Infra Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('prepDbInfraDbRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_prepDbInfraRequest" targetRef="ServiceTask_callUpdateInfraDb" /> + <bpmn2:scriptTask id="ScriptTask_postProcessTemp" name="Set Success" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleVolumeSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ScriptTask_postProcessTemp" targetRef="EndEvent_4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2"> + <bpmn2:incoming>SequenceFlow_noVfModuleRelation</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_personaModelIdMatchYes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:subProcess id="SubProcess_errorHandler" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_catchAllErrors" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_77" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="StartEvent_catchAllErrors" targetRef="ScriptTask_preFalloutHandler" /> + <bpmn2:scriptTask id="ScriptTask_preFalloutHandler" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('prepFalloutHandler', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preFalloutHandler" targetRef="CallActivity_falloutHandler" /> + <bpmn2:callActivity id="CallActivity_falloutHandler" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="UPDVfModVol_FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="FH_ResponseCode" target="UPDVfModVol_FH_ResponseCode" /> + <camunda:out source="FH_ErrorResponse" target="UPDVfModVol_FH_ErrorResponse" /> + <camunda:out source="FalloutHandlerResponse" target="UPDVfModVol_FalloutHandlerResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="CallActivity_falloutHandler" targetRef="EndEvent_3" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_prepVnfRest" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_personaModelIdMatch" name="Persona Model ID match?" default="SequenceFlow_personaModelidMatchNo"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_personaModelIdMatchYes</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_personaModelidMatchNo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_personaModelIdMatchYes" name="Yes" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ExclusiveGateway_2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_modelInvariantId == UPDVfModVol_personaModelId}</bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_personaModelidMatchNo" name="No" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ScriptTask_handlePersonaModelIdMismatch" /> + <bpmn2:scriptTask id="ScriptTask_queryAaiForVfModule" name="Query AAI for VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_YesVfModuleRelation</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('queryAAIForVfModule', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_queryAaiForVfModule" targetRef="ExclusiveGateway_personaModelIdMatch" /> + <bpmn2:scriptTask id="ScriptTask_handlePersonaModelIdMismatch" name="Handle Persona Model ID Mismatch" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_personaModelidMatchNo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('handlePersonaModelIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_handlePersonaModelIdMismatch" targetRef="EndEvent_personaModelIdMismatch" /> + <bpmn2:endEvent id="EndEvent_personaModelIdMismatch"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Pre-process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSynchResponse" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_preProcessRequest" /> + <bpmn2:scriptTask id="ScriptTask_sendSynchResponse" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('sendSynchResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_sendSynchResponse" targetRef="ScriptTask_queryAaiGenricVnf" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="VF-MODULE relation?" default="SequenceFlow_noVfModuleRelation"> + <bpmn2:incoming>SequenceFlow_tenantIsMatch</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_YesVfModuleRelation</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_noVfModuleRelation</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_YesVfModuleRelation" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_queryAaiForVfModule"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{UPDVfModVol_relatedVfModuleLink != ''}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_noVfModuleRelation" name="No" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_isTenantMatch" name="TenantId Match?" default="SequenceFlow_NoTenantMatch"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_NoTenantMatch</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_tenantIsMatch</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_NoTenantMatch" name="No" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ScriptTask_tenantIdMismatch" /> + <bpmn2:sequenceFlow id="SequenceFlow_tenantIsMatch" name="Yes" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ExclusiveGateway_1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_tenantId == UPDVfModVol_volumeGroupTenantId}</bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_tenantIdMismatch" name="Handle TenantId Mismatch" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_NoTenantMatch</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_tenantIdMismatch" targetRef="EndEvent_2" /> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_76" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_queryAAI" name="Query AAI for Volume Group Info" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_queryAAI" targetRef="ExclusiveGateway_isTenantMatch" /> + <bpmn2:scriptTask id="ScriptTask_queryAaiGenricVnf" name="Query AAI for Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvmv = new UpdateVfModuleVolumeInfraV1() +uvmv.executeMethod('queryAAIForGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_queryAaiGenricVnf" targetRef="ScriptTask_queryAAI" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleVolumeInfraV1"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_62" bpmnElement="StartEvent_1"> + <dc:Bounds x="191" y="131" width="37" height="37" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="192" y="173" width="34" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_StartEvent_62" targetElement="_BPMNShape_ScriptTask_231"> + <di:waypoint xsi:type="dc:Point" x="227" y="149" /> + <di:waypoint xsi:type="dc:Point" x="268" y="149" /> + <di:waypoint xsi:type="dc:Point" x="268" y="150" /> + <di:waypoint xsi:type="dc:Point" x="295" y="150" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="248" y="149" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_42" bpmnElement="CallActivity_callVNFAdapterRest"> + <dc:Bounds x="591" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_230" bpmnElement="ScriptTask_postProcessTemp"> + <dc:Bounds x="1318" y="420" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_231" bpmnElement="ScriptTask_preProcessRequest"> + <dc:Bounds x="295" y="111" width="109" height="78" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_232" bpmnElement="ScriptTask_sendSynchResponse"> + <dc:Bounds x="454" y="112" width="109" height="76" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_231" targetElement="_BPMNShape_ScriptTask_232"> + <di:waypoint xsi:type="dc:Point" x="403" y="150" /> + <di:waypoint xsi:type="dc:Point" x="454" y="150" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="418" y="150" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_233" bpmnElement="ScriptTask_prepDbInfraRequest"> + <dc:Bounds x="730" y="420" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_101" bpmnElement="ServiceTask_callUpdateInfraDb"> + <dc:Bounds x="868" y="420" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_233" targetElement="_BPMNShape_ServiceTask_101"> + <di:waypoint xsi:type="dc:Point" x="838" y="460" /> + <di:waypoint xsi:type="dc:Point" x="868" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="853" y="491" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ServiceTask_101" targetElement="_BPMNShape_ScriptTask_234"> + <di:waypoint xsi:type="dc:Point" x="976" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1014" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="959" y="497" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_prepCompletionHandlerRequest"> + <dc:Bounds x="1014" y="420" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_43" bpmnElement="CallActivity_completionHandler"> + <dc:Bounds x="1162" y="429" width="109" height="61" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_CallActivity_43"> + <di:waypoint xsi:type="dc:Point" x="1122" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1162" y="459" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="477" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_43" targetElement="_BPMNShape_ScriptTask_230"> + <di:waypoint xsi:type="dc:Point" x="1270" y="459" /> + <di:waypoint xsi:type="dc:Point" x="1318" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1216" y="521" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_235" bpmnElement="ScriptTask_queryAAI"> + <dc:Bounds x="742" y="113" width="109" height="73" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_126" bpmnElement="ExclusiveGateway_isTenantMatch" isMarkerVisible="true"> + <dc:Bounds x="931" y="132" width="34" height="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="113" width="102" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_236" bpmnElement="ScriptTask_tenantIdMismatch"> + <dc:Bounds x="1064" y="112" width="97" height="75" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_235" targetElement="_BPMNShape_ExclusiveGateway_126"> + <di:waypoint xsi:type="dc:Point" x="850" y="149" /> + <di:waypoint xsi:type="dc:Point" x="931" y="149" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="877" y="149" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_NoTenantMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ScriptTask_236"> + <di:waypoint xsi:type="dc:Point" x="965" y="149" /> + <di:waypoint xsi:type="dc:Point" x="1064" y="149" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="149" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_2"> + <dc:Bounds x="1225" y="125" width="49" height="49" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1249" y="179" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_236" targetElement="_BPMNShape_EndEvent_169"> + <di:waypoint xsi:type="dc:Point" x="1160" y="149" /> + <di:waypoint xsi:type="dc:Point" x="1225" y="149" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1179" y="149" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_tenantIsMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ExclusiveGateway_254"> + <di:waypoint xsi:type="dc:Point" x="948" y="166" /> + <di:waypoint xsi:type="dc:Point" x="948" y="244" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="915" y="173" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_42" targetElement="_BPMNShape_ScriptTask_233"> + <di:waypoint xsi:type="dc:Point" x="691" y="460" /> + <di:waypoint xsi:type="dc:Point" x="730" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="712" y="531" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_232" targetElement="_BPMNShape_ScriptTask_318"> + <di:waypoint xsi:type="dc:Point" x="562" y="150" /> + <di:waypoint xsi:type="dc:Point" x="581" y="150" /> + <di:waypoint xsi:type="dc:Point" x="581" y="149" /> + <di:waypoint xsi:type="dc:Point" x="612" y="149" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="578" y="150" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_237" bpmnElement="ScriptTask_prepVnfRest"> + <dc:Bounds x="454" y="420" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_237" targetElement="_BPMNShape_CallActivity_42"> + <di:waypoint xsi:type="dc:Point" x="562" y="460" /> + <di:waypoint xsi:type="dc:Point" x="591" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="446" y="460" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_18" bpmnElement="SubProcess_errorHandler" isExpanded="true"> + <dc:Bounds x="250" y="786" width="781" height="187" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_63" bpmnElement="StartEvent_catchAllErrors"> + <dc:Bounds x="301" y="844" width="37" height="37" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="270" y="886" width="98" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_238" bpmnElement="ScriptTask_preFalloutHandler"> + <dc:Bounds x="445" y="832" width="109" height="61" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_44" bpmnElement="CallActivity_falloutHandler"> + <dc:Bounds x="639" y="832" width="109" height="61" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_238" targetElement="_BPMNShape_CallActivity_44"> + <di:waypoint xsi:type="dc:Point" x="553" y="862" /> + <di:waypoint xsi:type="dc:Point" x="639" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="946" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_170" bpmnElement="EndEvent_3"> + <dc:Bounds x="862" y="844" width="37" height="37" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="880" y="886" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_CallActivity_44" targetElement="_BPMNShape_EndEvent_170"> + <di:waypoint xsi:type="dc:Point" x="747" y="862" /> + <di:waypoint xsi:type="dc:Point" x="862" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="765" y="1030" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_171" bpmnElement="EndEvent_4"> + <dc:Bounds x="1461" y="438" width="43" height="43" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1457" y="486" width="50" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ScriptTask_230" targetElement="_BPMNShape_EndEvent_171"> + <di:waypoint xsi:type="dc:Point" x="1426" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1461" y="459" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1442" y="467" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_StartEvent_63" targetElement="_BPMNShape_ScriptTask_238"> + <di:waypoint xsi:type="dc:Point" x="337" y="862" /> + <di:waypoint xsi:type="dc:Point" x="445" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="385" y="1030" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_254" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> + <dc:Bounds x="931" y="244" width="34" height="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="881" y="283" width="135" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_YesVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ScriptTask_313"> + <di:waypoint xsi:type="dc:Point" x="931" y="261" /> + <di:waypoint xsi:type="dc:Point" x="634" y="261" /> + <di:waypoint xsi:type="dc:Point" x="634" y="262" /> + <di:waypoint xsi:type="dc:Point" x="405" y="262" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="729" y="261" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_313" bpmnElement="ScriptTask_queryAaiForVfModule"> + <dc:Bounds x="297" y="222" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_personaModelIdMatch" isMarkerVisible="true"> + <dc:Bounds x="333" y="346" width="34" height="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="272" y="385" width="156" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_313" targetElement="_BPMNShape_ExclusiveGateway_255"> + <di:waypoint xsi:type="dc:Point" x="350" y="302" /> + <di:waypoint xsi:type="dc:Point" x="350" y="329" /> + <di:waypoint xsi:type="dc:Point" x="350" y="346" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="347" y="318" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_personaModelIdMatchYes" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ExclusiveGateway_256"> + <di:waypoint xsi:type="dc:Point" x="367" y="363" /> + <di:waypoint xsi:type="dc:Point" x="491" y="363" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="398" y="363" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_256" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="491" y="346" width="34" height="34" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="385" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_noVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ExclusiveGateway_256"> + <di:waypoint xsi:type="dc:Point" x="948" y="278" /> + <di:waypoint xsi:type="dc:Point" x="948" y="363" /> + <di:waypoint xsi:type="dc:Point" x="701" y="363" /> + <di:waypoint xsi:type="dc:Point" x="525" y="363" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="795" y="363" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_personaModelidMatchNo" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_315"> + <di:waypoint xsi:type="dc:Point" x="350" y="380" /> + <di:waypoint xsi:type="dc:Point" x="350" y="401" /> + <di:waypoint xsi:type="dc:Point" x="351" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="350" y="409" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_315" bpmnElement="ScriptTask_handlePersonaModelIdMismatch"> + <dc:Bounds x="297" y="460" width="109" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_172" bpmnElement="EndEvent_personaModelIdMismatch"> + <dc:Bounds x="330" y="600" width="43" height="43" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="351" y="648" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_315" targetElement="_BPMNShape_EndEvent_172"> + <di:waypoint xsi:type="dc:Point" x="351" y="540" /> + <di:waypoint xsi:type="dc:Point" x="351" y="600" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="348" y="560" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ExclusiveGateway_256" targetElement="_BPMNShape_ScriptTask_237"> + <di:waypoint xsi:type="dc:Point" x="508" y="380" /> + <di:waypoint xsi:type="dc:Point" x="508" y="420" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_318" bpmnElement="ScriptTask_queryAaiGenricVnf"> + <dc:Bounds x="612" y="112" width="97" height="75" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_318" targetElement="_BPMNShape_ScriptTask_235"> + <di:waypoint xsi:type="dc:Point" x="708" y="149" /> + <di:waypoint xsi:type="dc:Point" x="742" y="149" /> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn new file mode 100644 index 0000000000..e50eb7f805 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn @@ -0,0 +1,1685 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="UpdateVnfInfra" name="UpdateVnfInfra" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1dqbqqx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_07rej8l" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0slcwxc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a0lfh8" sourceRef="Task_07rej8l" targetRef="Task_18twhln" /> + <bpmn2:sequenceFlow id="SequenceFlow_0r0o5yt" sourceRef="Task_18twhln" targetRef="Task_16v4gow" /> + <bpmn2:sequenceFlow id="SequenceFlow_0slcwxc" sourceRef="Task_16v4gow" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="Task_07rej8l" name="PreProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a0lfh8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_16v4gow" name="PostProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0r0o5yt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0slcwxc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_18twhln" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0a0lfh8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0r0o5yt</bpmn2:outgoing> + </bpmn2:callActivity> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVnfAndModules" calledElement="DoUpdateVnfAndModules"> + <bpmn2:extensionElements> + <camunda:in source="requestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="usePreload" target="usePreload" /> + <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" /> + <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" /> + <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" calledElement="DecomposeService"> + <bpmn2: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="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_155eyrq" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1pj72fw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1lmijmb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_11p8elx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_178fxkj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" /> + <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1esmtgy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1jmzl1j</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="nfRole" target="vnfType" /> + <camunda:in source="currentActivity" target="currentActivity" /> + <camunda:in source="workStep" target="workStep" /> + <camunda:in source="failedActivity" target="failedActivity" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="disposition" /> + <camunda:in source="requestorId" target="requestorId" /> + <camunda:out source="taskId" target="taskId" /> + <camunda:in source="vnfName" target="vnfName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1nplvhi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:task id="Task_0zbogrm" name="Rollback Processing"> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + </bpmn2:task> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_010ynjs</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib"> + <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qsxbp4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8"> + <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_15bl7wd</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki"> + <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1m84lq5</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoUpdateVnfAndNModules?" default="SequenceFlow_04zwhw4"> + <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0fog99f</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_1hdg951" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m"> + <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_12g63pl</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0l83v2k</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d"> + <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_07fhkt4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0p94lgv</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_1c022sy"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0tqrgop</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_126nlmw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0mw3mwl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_13md9cw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0xylem3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1c5mxd5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0u8hiu2</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0fs7ay9</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_00qwx4v</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_14s8ji9</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0kricor</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" /> + <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoUpdateVnfAndModules" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hldqvv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.prepDoUpdateVnfAndModules(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionLock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0qmpjgv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C Health Check" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex0" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0tld38t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionStop" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="aicIdentity" target="aicIdentity" /> + <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_08dyt3l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C VNF Start" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionStart" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="aicIdentity" target="aicIdentity" /> + <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ye8oij</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health Check" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex1" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_08kn9ok</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUnlock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_02uiht9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0wc37af" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1esmtgy</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1r18wa8" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1jmzl1j</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1esmtgy" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0wc37af"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1jmzl1j" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1r18wa8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0k7j3qf" name="To inMaintenance Check"> + <bpmn2:outgoing>SequenceFlow_1pj72fw</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Check" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1pj72fw" sourceRef="IntermediateThrowEvent_0k7j3qf" targetRef="Task_1rxiqe1" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1urs7gm" name="To inMaintenance Set"> + <bpmn2:outgoing>SequenceFlow_1lmijmb</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Set" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lmijmb" sourceRef="IntermediateThrowEvent_1urs7gm" targetRef="Task_0ap39ka" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0wx980v" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_010ynjs</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_010ynjs" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0wx980v"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1khl6dg" name="To VNF Lock"> + <bpmn2:outgoing>SequenceFlow_0qmpjgv</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11rri8p" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1qsxbp4</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0frizqo" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_15bl7wd</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gmhr39" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1m84lq5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1m2d0qt" name="To Health PreCheck"> + <bpmn2:outgoing>SequenceFlow_0tld38t</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0p4hkug" name="To VNF Stop"> + <bpmn2:outgoing>SequenceFlow_08dyt3l</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Stop" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qsxbp4" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_11rri8p"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0qmpjgv" sourceRef="IntermediateThrowEvent_1khl6dg" targetRef="Task_1dtbnuy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0tld38t" sourceRef="IntermediateThrowEvent_1m2d0qt" targetRef="Task_1fj63ov" /> + <bpmn2:sequenceFlow id="SequenceFlow_15bl7wd" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_0frizqo"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_08dyt3l" sourceRef="IntermediateThrowEvent_0p4hkug" targetRef="Task_1cfkcss" /> + <bpmn2:sequenceFlow id="SequenceFlow_1m84lq5" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_1gmhr39"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1s7fnzf" name="To DoUpdateVnfAndModules"> + <bpmn2:outgoing>SequenceFlow_1hldqvv</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To DoUpdateVnfAndModules" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p2yktm" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0fog99f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_17j7yap" name="To VNF Start"> + <bpmn2:outgoing>SequenceFlow_0ye8oij</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Start" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gjzx99" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_12g63pl</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1hldqvv" sourceRef="IntermediateThrowEvent_1s7fnzf" targetRef="Task_0eae8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_0fog99f" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="IntermediateThrowEvent_1p2yktm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ye8oij" sourceRef="IntermediateThrowEvent_17j7yap" targetRef="Task_1hdg951" /> + <bpmn2:sequenceFlow id="SequenceFlow_12g63pl" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_1gjzx99"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_03lb8ti" name="To Health PostCheck"> + <bpmn2:outgoing>SequenceFlow_08kn9ok</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1umr8ik" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0l83v2k</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_044oajb" name="To VNF Unlock"> + <bpmn2:outgoing>SequenceFlow_02uiht9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1c1s0hp" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_07fhkt4</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_11i6md0" name="To inMaintenance Unset"> + <bpmn2:outgoing>SequenceFlow_11p8elx</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenance Unset" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1d8c9i0" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0p94lgv</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_08kn9ok" sourceRef="IntermediateThrowEvent_03lb8ti" targetRef="Task_1ca5ctq" /> + <bpmn2:sequenceFlow id="SequenceFlow_0l83v2k" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_1umr8ik"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_02uiht9" sourceRef="IntermediateThrowEvent_044oajb" targetRef="Task_1sove95" /> + <bpmn2:sequenceFlow id="SequenceFlow_07fhkt4" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="IntermediateThrowEvent_1c1s0hp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_11p8elx" sourceRef="IntermediateThrowEvent_11i6md0" targetRef="Task_1drglpt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0p94lgv" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1d8c9i0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1dqbqqx" sourceRef="IntermediateThrowEvent_0xv558x" targetRef="ScriptTask_10" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0xv558x" name="To Completion Handler Prep"> + <bpmn2:outgoing>SequenceFlow_1dqbqqx</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0hljxy3" name="To Rainy Day Handling"> + <bpmn2:outgoing>SequenceFlow_1nplvhi</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1nplvhi" sourceRef="IntermediateThrowEvent_0hljxy3" targetRef="Task_0q5cdit" /> + <bpmn2:sequenceFlow id="SequenceFlow_0tqrgop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_08j8zjs"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_126nlmw" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0tj8iiy"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0mw3mwl" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0oeqjo1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_13md9cw" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1939dn7"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Lock"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0xylem3" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1rn3nlo"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1c5mxd5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0weaigg"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Stop"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0u8hiu2" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1q8mns4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doUpdateVnfAndModules"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0fs7ay9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_16kgzdv"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Start"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_00qwx4v" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_18v3win"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck1"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_14s8ji9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0kypyu0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Unlock"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0kricor" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_024m4nk"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_08j8zjs" name="To inMaintenance Check"> + <bpmn2:incoming>SequenceFlow_0tqrgop</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Check" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0tj8iiy" name="To inMaintenance Set"> + <bpmn2:incoming>SequenceFlow_126nlmw</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Set" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0oeqjo1" name="To VNF Lock"> + <bpmn2:incoming>SequenceFlow_0mw3mwl</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1939dn7" name="To Health PreCheck"> + <bpmn2:incoming>SequenceFlow_13md9cw</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1rn3nlo" name="To VNF Stop"> + <bpmn2:incoming>SequenceFlow_0xylem3</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Stop" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0weaigg" name="To DoUpdateVnfAndModules"> + <bpmn2:incoming>SequenceFlow_1c5mxd5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To DoUpdateVnfAndModules" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1q8mns4" name="To VNF Start"> + <bpmn2:incoming>SequenceFlow_0u8hiu2</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Start" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16kgzdv" name="To Health PostCheck"> + <bpmn2:incoming>SequenceFlow_0fs7ay9</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_18v3win" name="To VNF Unlock"> + <bpmn2:incoming>SequenceFlow_00qwx4v</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0kypyu0" name="To inMaintenance Unset"> + <bpmn2:incoming>SequenceFlow_14s8ji9</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenance Unset" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_024m4nk" name="To Completion Handler Prep"> + <bpmn2:incoming>SequenceFlow_0kricor</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_178fxkj" sourceRef="Task_155eyrq" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_155eyrq" name="Query A&AI for VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_178fxkj</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new UpdateVnfInfra() +uvfm.queryAAIForVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVnfInfra"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="589" y="1222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="588" y="1263" width="38" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="525" y="237" /> + <di:waypoint xsi:type="dc:Point" x="601" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="433" y="1200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="533" y="1240" /> + <di:waypoint xsi:type="dc:Point" x="589" y="1240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="710" y="1081" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="133" y="1200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="283" y="1200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="233" y="1240" /> + <di:waypoint xsi:type="dc:Point" x="283" y="1240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="258" y="1246" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="88" y="1464" width="966" height="240" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="152" y="1558" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="131" y="1599" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="621" y="1536" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="188" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="220" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="1561" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="721" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="789" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="1576" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="945" y="1558" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="963" y="1599" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="1036" y="1558" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1054" y="1599" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="1164" y="1558" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1182" y="1599" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="1072" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="1164" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1118" y="1561" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="789" y="1536" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="383" y="1240" /> + <di:waypoint xsi:type="dc:Point" x="433" y="1240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="1208" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="889" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="945" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="782" y="1636" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6"> + <dc:Bounds x="419" y="685" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="932" y="983" /> + <di:waypoint xsi:type="dc:Point" x="1007" y="983" /> + <di:waypoint xsi:type="dc:Point" x="1007" y="1158" /> + <di:waypoint xsi:type="dc:Point" x="89" y="1160" /> + <di:waypoint xsi:type="dc:Point" x="89" y="1240" /> + <di:waypoint xsi:type="dc:Point" x="133" y="1240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="961" y="954.3909136697287" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3"> + <di:waypoint xsi:type="dc:Point" x="655" y="90" /> + <di:waypoint xsi:type="dc:Point" x="718" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7"> + <dc:Bounds x="555" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="818" y="90" /> + <di:waypoint xsi:type="dc:Point" x="871" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="845" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="718" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="555" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="514" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="425" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="231" y="237" /> + <di:waypoint xsi:type="dc:Point" x="292" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="262" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m"> + <di:waypoint xsi:type="dc:Point" x="921" y="237" /> + <di:waypoint xsi:type="dc:Point" x="994" y="237" /> + <di:waypoint xsi:type="dc:Point" x="994" y="391" /> + <di:waypoint xsi:type="dc:Point" x="98" y="391" /> + <di:waypoint xsi:type="dc:Point" x="98" y="474" /> + <di:waypoint xsi:type="dc:Point" x="139" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="950" y="212" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru"> + <di:waypoint xsi:type="dc:Point" x="519" y="725" /> + <di:waypoint xsi:type="dc:Point" x="595" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="557" y="710" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="714" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="718" y="943" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="131" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s"> + <di:waypoint xsi:type="dc:Point" x="239" y="474" /> + <di:waypoint xsi:type="dc:Point" x="292" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="459" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza"> + <di:waypoint xsi:type="dc:Point" x="525" y="474" /> + <di:waypoint xsi:type="dc:Point" x="601" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="459" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9"> + <di:waypoint xsi:type="dc:Point" x="814" y="474" /> + <di:waypoint xsi:type="dc:Point" x="871" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="459" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs"> + <di:waypoint xsi:type="dc:Point" x="812" y="725" /> + <di:waypoint xsi:type="dc:Point" x="850" y="725" /> + <di:waypoint xsi:type="dc:Point" x="850" y="725" /> + <di:waypoint xsi:type="dc:Point" x="876" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="865" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="239" y="983" /> + <di:waypoint xsi:type="dc:Point" x="292" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="968" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi"> + <di:waypoint xsi:type="dc:Point" x="515" y="983" /> + <di:waypoint xsi:type="dc:Point" x="601" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="558" y="968" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="291.803" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="273" y="175" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="342" y="237" /> + <di:waypoint xsi:type="dc:Point" x="425" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="373" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="601" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="168" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="651" y="237" /> + <di:waypoint xsi:type="dc:Point" x="714" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1132" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1232" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1314" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1273" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1289" y="645" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1339" y="485" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="441" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="441" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="395" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1347" y="419.2626464646465" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1339" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1339" y="645" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1348" y="578.1951219512196" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="859" y="167" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="814" y="237" /> + <di:waypoint xsi:type="dc:Point" x="871" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true"> + <dc:Bounds x="292" y="449" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="283" y="413" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib"> + <di:waypoint xsi:type="dc:Point" x="342" y="474" /> + <di:waypoint xsi:type="dc:Point" x="425" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="459" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true"> + <dc:Bounds x="601" y="449" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="414" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8"> + <di:waypoint xsi:type="dc:Point" x="651" y="474" /> + <di:waypoint xsi:type="dc:Point" x="714" y="474" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="459" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true"> + <dc:Bounds x="871" y="449" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="862" y="411" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki"> + <di:waypoint xsi:type="dc:Point" x="921" y="474" /> + <di:waypoint xsi:type="dc:Point" x="1003" y="474" /> + <di:waypoint xsi:type="dc:Point" x="1003" y="640" /> + <di:waypoint xsi:type="dc:Point" x="102" y="640" /> + <di:waypoint xsi:type="dc:Point" x="102" y="725" /> + <di:waypoint xsi:type="dc:Point" x="195" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="964" y="444.0001202928146" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true"> + <dc:Bounds x="595" y="700" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="578" y="658" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4"> + <di:waypoint xsi:type="dc:Point" x="645" y="725" /> + <di:waypoint xsi:type="dc:Point" x="712" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="707.4465803421167" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true"> + <dc:Bounds x="876" y="700" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="867" y="665" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m"> + <di:waypoint xsi:type="dc:Point" x="926" y="725" /> + <di:waypoint xsi:type="dc:Point" x="1002" y="725" /> + <di:waypoint xsi:type="dc:Point" x="1002" y="903" /> + <di:waypoint xsi:type="dc:Point" x="94" y="903" /> + <di:waypoint xsi:type="dc:Point" x="94" y="983" /> + <di:waypoint xsi:type="dc:Point" x="139" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="961" y="701.1887293946602" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="292" y="958" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="281" y="920" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk"> + <di:waypoint xsi:type="dc:Point" x="342" y="983" /> + <di:waypoint xsi:type="dc:Point" x="384" y="983" /> + <di:waypoint xsi:type="dc:Point" x="384" y="983" /> + <di:waypoint xsi:type="dc:Point" x="415" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="367" y="955.268406786947" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true"> + <dc:Bounds x="601" y="958" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="592" y="918" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d"> + <di:waypoint xsi:type="dc:Point" x="651" y="983" /> + <di:waypoint xsi:type="dc:Point" x="718" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="676" y="955.051282051282" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="882" y="958" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="870" y="915" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="818" y="983" /> + <di:waypoint xsi:type="dc:Point" x="882" y="983" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="850" y="968" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1289" y="315" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1314" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1303" y="468" width="88" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="1431" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1421" y="542" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1364" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1431" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1387" y="486.98705320489466" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v"> + <di:waypoint xsi:type="dc:Point" x="295" y="725" /> + <di:waypoint xsi:type="dc:Point" x="361" y="725" /> + <di:waypoint xsi:type="dc:Point" x="361" y="725" /> + <di:waypoint xsi:type="dc:Point" x="419" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="376" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go"> + <dc:Bounds x="195" y="685" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy"> + <di:waypoint xsi:type="dc:Point" x="1456" y="485" /> + <di:waypoint xsi:type="dc:Point" x="1456" y="355" /> + <di:waypoint xsi:type="dc:Point" x="1389" y="355" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1471" y="420" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0tz2nj7_di" bpmnElement="Task_1dtbnuy"> + <dc:Bounds x="139" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0m9b4r4_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="425" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1131t0j_di" bpmnElement="Task_1cfkcss"> + <dc:Bounds x="714" y="434" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0x0eohw_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="712" y="685" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1hv52rh_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="139" y="943" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1wftk6z_di" bpmnElement="Task_1sove95"> + <dc:Bounds x="415" y="943" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_09rkic6_di" bpmnElement="IntermediateThrowEvent_0wc37af"> + <dc:Bounds x="299" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="351.616" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1mk2rqe_di" bpmnElement="IntermediateThrowEvent_1r18wa8"> + <dc:Bounds x="608" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="352" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1esmtgy_di" bpmnElement="SequenceFlow_1esmtgy"> + <di:waypoint xsi:type="dc:Point" x="317" y="262" /> + <di:waypoint xsi:type="dc:Point" x="317" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="329" y="274" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1jmzl1j_di" bpmnElement="SequenceFlow_1jmzl1j"> + <di:waypoint xsi:type="dc:Point" x="626" y="262" /> + <di:waypoint xsi:type="dc:Point" x="626" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="631" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0r5r5re_di" bpmnElement="IntermediateThrowEvent_0k7j3qf"> + <dc:Bounds x="457" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="344" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pj72fw_di" bpmnElement="SequenceFlow_1pj72fw"> + <di:waypoint xsi:type="dc:Point" x="475" y="308" /> + <di:waypoint xsi:type="dc:Point" x="475" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_04ceksx_di" bpmnElement="IntermediateThrowEvent_1urs7gm"> + <dc:Bounds x="746" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="720" y="344" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lmijmb_di" bpmnElement="SequenceFlow_1lmijmb"> + <di:waypoint xsi:type="dc:Point" x="764" y="308" /> + <di:waypoint xsi:type="dc:Point" x="764" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="779" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0rq7l0k_di" bpmnElement="IntermediateThrowEvent_0wx980v"> + <dc:Bounds x="878" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="344" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_010ynjs_di" bpmnElement="SequenceFlow_010ynjs"> + <di:waypoint xsi:type="dc:Point" x="896" y="262" /> + <di:waypoint xsi:type="dc:Point" x="896" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0lpduhk_di" bpmnElement="IntermediateThrowEvent_1khl6dg"> + <dc:Bounds x="171" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="157" y="601.2375249500998" width="64" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1c2pwwh_di" bpmnElement="IntermediateThrowEvent_11rri8p"> + <dc:Bounds x="299" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="602" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0vz2acu_di" bpmnElement="IntermediateThrowEvent_0frizqo"> + <dc:Bounds x="608" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="602" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0tybfsi_di" bpmnElement="IntermediateThrowEvent_1gmhr39"> + <dc:Bounds x="878" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="602" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1k86ayn_di" bpmnElement="IntermediateThrowEvent_1m2d0qt"> + <dc:Bounds x="457" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="602" width="51" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0apaw6k_di" bpmnElement="IntermediateThrowEvent_0p4hkug"> + <dc:Bounds x="746" y="566" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="733" y="602" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qsxbp4_di" bpmnElement="SequenceFlow_1qsxbp4"> + <di:waypoint xsi:type="dc:Point" x="317" y="499" /> + <di:waypoint xsi:type="dc:Point" x="317" y="566" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="522.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qmpjgv_di" bpmnElement="SequenceFlow_0qmpjgv"> + <di:waypoint xsi:type="dc:Point" x="189" y="566" /> + <di:waypoint xsi:type="dc:Point" x="189" y="541" /> + <di:waypoint xsi:type="dc:Point" x="189" y="541" /> + <di:waypoint xsi:type="dc:Point" x="189" y="514" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="541" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tld38t_di" bpmnElement="SequenceFlow_0tld38t"> + <di:waypoint xsi:type="dc:Point" x="475" y="566" /> + <di:waypoint xsi:type="dc:Point" x="475" y="540" /> + <di:waypoint xsi:type="dc:Point" x="475" y="540" /> + <di:waypoint xsi:type="dc:Point" x="475" y="514" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15bl7wd_di" bpmnElement="SequenceFlow_15bl7wd"> + <di:waypoint xsi:type="dc:Point" x="626" y="499" /> + <di:waypoint xsi:type="dc:Point" x="626" y="566" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="522.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_08dyt3l_di" bpmnElement="SequenceFlow_08dyt3l"> + <di:waypoint xsi:type="dc:Point" x="764" y="566" /> + <di:waypoint xsi:type="dc:Point" x="764" y="540" /> + <di:waypoint xsi:type="dc:Point" x="764" y="540" /> + <di:waypoint xsi:type="dc:Point" x="764" y="514" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="779" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1m84lq5_di" bpmnElement="SequenceFlow_1m84lq5"> + <di:waypoint xsi:type="dc:Point" x="896" y="499" /> + <di:waypoint xsi:type="dc:Point" x="896" y="566" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="522.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0v6yl7l_di" bpmnElement="IntermediateThrowEvent_1s7fnzf"> + <dc:Bounds x="227" y="819" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="203" y="854.0179640718563" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0jr8fuh_di" bpmnElement="IntermediateThrowEvent_1p2yktm"> + <dc:Bounds x="602" y="819" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="855" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_15k8xfs_di" bpmnElement="IntermediateThrowEvent_17j7yap"> + <dc:Bounds x="744" y="819" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="730" y="855" width="63" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1kue0lc_di" bpmnElement="IntermediateThrowEvent_1gjzx99"> + <dc:Bounds x="883" y="819" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="866" y="855" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hldqvv_di" bpmnElement="SequenceFlow_1hldqvv"> + <di:waypoint xsi:type="dc:Point" x="245" y="819" /> + <di:waypoint xsi:type="dc:Point" x="245" y="765" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="792" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fog99f_di" bpmnElement="SequenceFlow_0fog99f"> + <di:waypoint xsi:type="dc:Point" x="620" y="750" /> + <di:waypoint xsi:type="dc:Point" x="620" y="819" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="784.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ye8oij_di" bpmnElement="SequenceFlow_0ye8oij"> + <di:waypoint xsi:type="dc:Point" x="762" y="819" /> + <di:waypoint xsi:type="dc:Point" x="762" y="765" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777" y="792" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12g63pl_di" bpmnElement="SequenceFlow_12g63pl"> + <di:waypoint xsi:type="dc:Point" x="901" y="750" /> + <di:waypoint xsi:type="dc:Point" x="901" y="819" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="907" y="784.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1ad2ab4_di" bpmnElement="IntermediateThrowEvent_03lb8ti"> + <dc:Bounds x="171" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="162" y="1118.566866267465" width="54" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1bj88jr_di" bpmnElement="IntermediateThrowEvent_1umr8ik"> + <dc:Bounds x="299" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="1118.566866267465" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1a795jb_di" bpmnElement="IntermediateThrowEvent_044oajb"> + <dc:Bounds x="447" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="428" y="1119" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0l74cfl_di" bpmnElement="IntermediateThrowEvent_1c1s0hp"> + <dc:Bounds x="608" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="1119" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1vgxxf3_di" bpmnElement="IntermediateThrowEvent_11i6md0"> + <dc:Bounds x="750" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="1119" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_08t3cq7_di" bpmnElement="IntermediateThrowEvent_1d8c9i0"> + <dc:Bounds x="889" y="1083" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="872" y="1119" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08kn9ok_di" bpmnElement="SequenceFlow_08kn9ok"> + <di:waypoint xsi:type="dc:Point" x="189" y="1083" /> + <di:waypoint xsi:type="dc:Point" x="189" y="1023" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="1043" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0l83v2k_di" bpmnElement="SequenceFlow_0l83v2k"> + <di:waypoint xsi:type="dc:Point" x="317" y="1008" /> + <di:waypoint xsi:type="dc:Point" x="317" y="1083" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="1035.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_02uiht9_di" bpmnElement="SequenceFlow_02uiht9"> + <di:waypoint xsi:type="dc:Point" x="465" y="1083" /> + <di:waypoint xsi:type="dc:Point" x="465" y="1023" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="480" y="1043" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07fhkt4_di" bpmnElement="SequenceFlow_07fhkt4"> + <di:waypoint xsi:type="dc:Point" x="626" y="1008" /> + <di:waypoint xsi:type="dc:Point" x="626" y="1083" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="1035.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11p8elx_di" bpmnElement="SequenceFlow_11p8elx"> + <di:waypoint xsi:type="dc:Point" x="768" y="1083" /> + <di:waypoint xsi:type="dc:Point" x="768" y="1023" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="783" y="1043" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p94lgv_di" bpmnElement="SequenceFlow_0p94lgv"> + <di:waypoint xsi:type="dc:Point" x="907" y="1008" /> + <di:waypoint xsi:type="dc:Point" x="907" y="1083" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="913" y="1035.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dqbqqx_di" bpmnElement="SequenceFlow_1dqbqqx"> + <di:waypoint xsi:type="dc:Point" x="181" y="1320" /> + <di:waypoint xsi:type="dc:Point" x="182" y="1280" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="182" y="1285" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_11t1f0p_di" bpmnElement="IntermediateThrowEvent_0xv558x"> + <dc:Bounds x="163" y="1320" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="145" y="1355.045908183633" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0rgn1jk_di" bpmnElement="IntermediateThrowEvent_0hljxy3"> + <dc:Bounds x="1051" y="492" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="528" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1nplvhi_di" bpmnElement="SequenceFlow_1nplvhi"> + <di:waypoint xsi:type="dc:Point" x="1087" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1132" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1110" y="485" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tqrgop_di" bpmnElement="SequenceFlow_0tqrgop"> + <di:waypoint xsi:type="dc:Point" x="1462" y="491" /> + <di:waypoint xsi:type="dc:Point" x="1523" y="299" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1493" y="380" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_126nlmw_di" bpmnElement="SequenceFlow_126nlmw"> + <di:waypoint xsi:type="dc:Point" x="1466" y="495" /> + <di:waypoint xsi:type="dc:Point" x="1569" y="327" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1518" y="396" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mw3mwl_di" bpmnElement="SequenceFlow_0mw3mwl"> + <di:waypoint xsi:type="dc:Point" x="1469" y="498" /> + <di:waypoint xsi:type="dc:Point" x="1614" y="360" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1542" y="414" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13md9cw_di" bpmnElement="SequenceFlow_13md9cw"> + <di:waypoint xsi:type="dc:Point" x="1472" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1652" y="403" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1562" y="437" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xylem3_di" bpmnElement="SequenceFlow_0xylem3"> + <di:waypoint xsi:type="dc:Point" x="1476" y="505" /> + <di:waypoint xsi:type="dc:Point" x="1682" y="451" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1579" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c5mxd5_di" bpmnElement="SequenceFlow_1c5mxd5"> + <di:waypoint xsi:type="dc:Point" x="1481" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1697" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1589" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u8hiu2_di" bpmnElement="SequenceFlow_0u8hiu2"> + <di:waypoint xsi:type="dc:Point" x="1477" y="514" /> + <di:waypoint xsi:type="dc:Point" x="1682" y="559" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1580" y="521.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fs7ay9_di" bpmnElement="SequenceFlow_0fs7ay9"> + <di:waypoint xsi:type="dc:Point" x="1473" y="518" /> + <di:waypoint xsi:type="dc:Point" x="1652" y="610" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1563" y="549" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00qwx4v_di" bpmnElement="SequenceFlow_00qwx4v"> + <di:waypoint xsi:type="dc:Point" x="1469" y="522" /> + <di:waypoint xsi:type="dc:Point" x="1615" y="661" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1542" y="576.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14s8ji9_di" bpmnElement="SequenceFlow_14s8ji9"> + <di:waypoint xsi:type="dc:Point" x="1466" y="525" /> + <di:waypoint xsi:type="dc:Point" x="1570" y="692" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1518" y="593.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kricor_di" bpmnElement="SequenceFlow_0kricor"> + <di:waypoint xsi:type="dc:Point" x="1462" y="529" /> + <di:waypoint xsi:type="dc:Point" x="1524" y="722" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1493" y="610.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11fq8y0_di" bpmnElement="IntermediateThrowEvent_08j8zjs"> + <dc:Bounds x="1511" y="265" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1486" y="233.41716566866268" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0s02puh_di" bpmnElement="IntermediateThrowEvent_0tj8iiy"> + <dc:Bounds x="1561" y="294" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1561" y="259.4171656686627" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0jpplot_di" bpmnElement="IntermediateThrowEvent_0oeqjo1"> + <dc:Bounds x="1609" y="330" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1625" y="306.4171656686627" width="64" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_002ei8c_di" bpmnElement="IntermediateThrowEvent_1939dn7"> + <dc:Bounds x="1650" y="377" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1689" y="354.4171656686627" width="51" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0mfh44i_di" bpmnElement="IntermediateThrowEvent_1rn3nlo"> + <dc:Bounds x="1681" y="429" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1724" y="427.4171656686627" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0nuhjay_di" bpmnElement="IntermediateThrowEvent_0weaigg"> + <dc:Bounds x="1697" y="493" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1744" y="492.4171656686626" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_178560e_di" bpmnElement="IntermediateThrowEvent_1q8mns4"> + <dc:Bounds x="1681" y="546" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1730" y="558.2894211576846" width="63" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1iiwg3y_di" bpmnElement="IntermediateThrowEvent_16kgzdv"> + <dc:Bounds x="1650" y="601" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1698" y="607.2894211576846" width="54" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0q4aaqn_di" bpmnElement="IntermediateThrowEvent_18v3win"> + <dc:Bounds x="1609" y="656" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1654" y="679.2894211576846" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0x5j21r_di" bpmnElement="IntermediateThrowEvent_0kypyu0"> + <dc:Bounds x="1562" y="689" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1595" y="727.2894211576846" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_130x96w_di" bpmnElement="IntermediateThrowEvent_024m4nk"> + <dc:Bounds x="1511" y="721" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1507" y="763.2894211576846" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_178fxkj_di" bpmnElement="SequenceFlow_178fxkj"> + <di:waypoint xsi:type="dc:Point" x="971" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="131" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0d7vlr8_di" bpmnElement="Task_155eyrq"> + <dc:Bounds x="871" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a0lfh8_di" bpmnElement="SequenceFlow_0a0lfh8"> + <di:waypoint xsi:type="dc:Point" x="320" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="353" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="337" y="1561" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0r0o5yt_di" bpmnElement="SequenceFlow_0r0o5yt"> + <di:waypoint xsi:type="dc:Point" x="453" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="490" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="472" y="1561" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0slcwxc_di" bpmnElement="SequenceFlow_0slcwxc"> + <di:waypoint xsi:type="dc:Point" x="590" y="1576" /> + <di:waypoint xsi:type="dc:Point" x="621" y="1576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="1561" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gdinh5_di" bpmnElement="Task_07rej8l"> + <dc:Bounds x="220" y="1536" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0l1xjdz_di" bpmnElement="Task_16v4gow"> + <dc:Bounds x="490" y="1536" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1e4qhkx_di" bpmnElement="Task_18twhln"> + <dc:Bounds x="353" y="1536" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn new file mode 100644 index 0000000000..e296aef863 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn @@ -0,0 +1,1636 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="VnfConfigUpdate" name="VnfConfigUpdate" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("VnfConfigUpdateSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_07uuj2d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_1tx7e9s" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0xt2xvx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1vxpbd0" sourceRef="Task_1tx7e9s" targetRef="Task_02avn81" /> + <bpmn2:sequenceFlow id="SequenceFlow_03ayqeh" sourceRef="Task_02avn81" targetRef="Task_0b707rs" /> + <bpmn2:sequenceFlow id="SequenceFlow_0xt2xvx" sourceRef="Task_0b707rs" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="Task_1tx7e9s" name="PreProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vxpbd0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0b707rs" name="PostProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_03ayqeh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xt2xvx</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_02avn81" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1vxpbd0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03ayqeh</bpmn2:outgoing> + </bpmn2:callActivity> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_18j1ow5" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Query A&AI for VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.queryAAIForVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1opcb4j" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09lrk4q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1eezqx8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16ff86u</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_08m0j98</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_179tyul</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_06ev8or</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1cdfjed</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="nfRole" target="vnfType" /> + <camunda:in source="currentActivity" target="currentActivity" /> + <camunda:in source="workStep" target="workStep" /> + <camunda:in source="failedActivity" target="failedActivity" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="disposition" /> + <camunda:in source="requestorId" target="requestorId" /> + <camunda:out source="taskId" target="taskId" /> + <camunda:in source="vnfName" target="vnfName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0nob5cp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_06ajc11"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17g62fl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_06ajc11</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Health PostCheck?" default="SequenceFlow_08m0j98"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1urpp94</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_08m0j98</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_0u6ho2p"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0u6ho2p</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0k3zxpd</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_05omwbu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_18lemf9</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0rlmex7</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Next Step? " default="SequenceFlow_1c022sy"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19myx3o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ueoglv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_15fqlwe</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0yuj0l5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1abb030</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ls3ej5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ar6ikk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0t53vux</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_11ck4qe</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16d2ln4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1quapjx</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_101n488</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip" ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + <bpmn2:sequenceFlow id="SequenceFlow_06ev8or" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0zmqbae"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0zmqbae" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_06ev8or</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0nob5cp" sourceRef="IntermediateThrowEvent_0z0t7rn" targetRef="Task_0q5cdit" /> + <bpmn2:sequenceFlow id="SequenceFlow_076leae" sourceRef="Task_0e313zv" targetRef="ExclusiveGateway_1rglbmr" /> + <bpmn2:scriptTask id="Task_0e313zv" name="Check If VF Closed Loop Disabled in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0zzwdwf</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_06ajc11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_076leae</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.checkIfClosedLoopDisabledInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1rglbmr" name="Error on isClosedLoopDisabled Check?" default="SequenceFlow_0du9273"> + <bpmn2:incoming>SequenceFlow_076leae</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0du9273</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0zh8r6j</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0du9273" name="no " sourceRef="ExclusiveGateway_1rglbmr" targetRef="Task_0n1d5f2" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0z0t7rn" name="To Rainy Day Handling" camunda:asyncBefore="true"> + <bpmn2:outgoing>SequenceFlow_0nob5cp</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1qkzlba" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1cdfjed</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1cdfjed" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1qkzlba"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rnlvmz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_17g62fl</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_17g62fl" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0rnlvmz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v69raz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0zh8r6j</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zh8r6j" name="yes " sourceRef="ExclusiveGateway_1rglbmr" targetRef="IntermediateThrowEvent_0v69raz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15hlkuq" name="To inMaintenanceCheck"> + <bpmn2:outgoing>SequenceFlow_09lrk4q</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenanceCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_09lrk4q" sourceRef="IntermediateThrowEvent_15hlkuq" targetRef="Task_1rxiqe1" /> + <bpmn2:sequenceFlow id="SequenceFlow_1eezqx8" sourceRef="IntermediateThrowEvent_1lrkrsn" targetRef="Task_0ap39ka" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lrkrsn" name="To InMaintenance Set"> + <bpmn2:outgoing>SequenceFlow_1eezqx8</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To InMaintenance Set" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1wdxgjm" name="To check if Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_0zzwdwf</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zzwdwf" sourceRef="IntermediateThrowEvent_1wdxgjm" targetRef="Task_0e313zv" /> + <bpmn2:sequenceFlow id="SequenceFlow_06ajc11" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0e313zv" /> + <bpmn2:sequenceFlow id="SequenceFlow_179z9vl" sourceRef="Task_0n1d5f2" targetRef="ExclusiveGateway_148eo7w" /> + <bpmn2:scriptTask id="Task_0n1d5f2" name="Set VF Is Closed Loop Disabled Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0du9273</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_032tm9y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_179z9vl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.setClosedLoopDisabledInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_032tm9y" sourceRef="IntermediateThrowEvent_1552q1o" targetRef="Task_0n1d5f2" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1552q1o" name="To set Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_032tm9y</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_148eo7w" name="Error on Set IsClosedLoopDisabled Flag in A&AI?" default="SequenceFlow_1cjiv6i"> + <bpmn2:incoming>SequenceFlow_179z9vl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cjiv6i</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1q3oxtf</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1cjiv6i" name="no " sourceRef="ExclusiveGateway_148eo7w" targetRef="Task_1hdg951" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16r1jxm" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1q3oxtf</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q3oxtf" name="yes" sourceRef="ExclusiveGateway_148eo7w" targetRef="IntermediateThrowEvent_16r1jxm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_02hirbh" name="To ConfigModify"> + <bpmn2:outgoing>SequenceFlow_1wqinjh</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To ConfigModify" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1urpp94" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_0vf0a28"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vf0a28" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1urpp94</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pk24h2" name="To Health PreCheck"> + <bpmn2:outgoing>SequenceFlow_1colra4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_18j1ow5" name="Error on Unset Closed Loop Disabled?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_1tzax6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0w8mkkn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0u6ho2p" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0y1h8go" /> + <bpmn2:scriptTask id="Task_0y1h8go" name="Unset VF Is Closed Loop DisabledFlag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0u6ho2p</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09xxorv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1tzax6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.setClosedLoopDisabledInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1tzax6l" sourceRef="Task_0y1h8go" targetRef="ExclusiveGateway_18j1ow5" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pmevcz" name="To unset inMaintenance"> + <bpmn2:outgoing>SequenceFlow_16ff86u</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To unset inMaintenance" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16ff86u" sourceRef="IntermediateThrowEvent_0pmevcz" targetRef="Task_1drglpt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0k3zxpd" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1awckg7"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1awckg7" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0k3zxpd</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1b3smly" name="To unset Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_09xxorv</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_09xxorv" sourceRef="IntermediateThrowEvent_1b3smly" targetRef="Task_0y1h8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_0w8mkkn" name="yes" sourceRef="ExclusiveGateway_18j1ow5" targetRef="IntermediateThrowEvent_1cw8gsw"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cw8gsw" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0w8mkkn</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0x846wp" name="To Completion Handler Prep"> + <bpmn2:outgoing>SequenceFlow_07uuj2d</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_07uuj2d" sourceRef="IntermediateThrowEvent_0x846wp" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ueoglv" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rz6jh4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_15fqlwe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1wip9vc"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0yuj0l5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1hki8xj"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1abb030" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gfnt9b"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ls3ej5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gzhs1a"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "HealthCheck0")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ar6ikk" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1p9i2bi"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "ConfigModify") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "HealthCheck1")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0t53vux" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1cp0hkt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "HealthCheck1") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_11ck4qe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_184w0i8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_16d2ln4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1u9f9kp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "completionHandlerPrep")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rz6jh4" name="To inMaintenanceCheck"> + <bpmn2:incoming>SequenceFlow_0ueoglv</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenanceCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1wip9vc" name="To InMaintenance Set"> + <bpmn2:incoming>SequenceFlow_15fqlwe</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To InMaintenance Set" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1hki8xj" name="To check if Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_0yuj0l5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gfnt9b" name="To set Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_1abb030</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gzhs1a" name="To Health PreCheck"> + <bpmn2:incoming>SequenceFlow_0ls3ej5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PreCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0385ons" name="To ConfigModify"> + <bpmn2:incoming>SequenceFlow_1quapjx</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To ConfigModify" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1quapjx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0385ons"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "HealthCheck0") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "ConfigModify")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p9i2bi" name="To Health PostCheck"> + <bpmn2:incoming>SequenceFlow_1ar6ikk</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cp0hkt" name="To unset inMaintenance"> + <bpmn2:incoming>SequenceFlow_0t53vux</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To unset inMaintenance" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_184w0i8" name="To unset Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_11ck4qe</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1u9f9kp" name="To Completion Handler Prep"> + <bpmn2:incoming>SequenceFlow_16d2ln4</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_18wrvcy" name="To check if Physical Servers Are Locked"> + <bpmn2:outgoing>SequenceFlow_179tyul</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_179tyul" sourceRef="IntermediateThrowEvent_18wrvcy" targetRef="Task_0vy2zge" /> + <bpmn2:sequenceFlow id="SequenceFlow_101n488" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_17k1fmk"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_17k1fmk" name="To check if Physical Servers Are Locked"> + <bpmn2:incoming>SequenceFlow_101n488</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1colra4" sourceRef="IntermediateThrowEvent_0pk24h2" targetRef="Task_1hdg951" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0fhmhsk" name="To Health PostCheck"> + <bpmn2:outgoing>SequenceFlow_16igl7b</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Health PostCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16igl7b" sourceRef="IntermediateThrowEvent_0fhmhsk" targetRef="Task_1ca5ctq" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_16eos6z" name="Error on Health PreCheck?" default="SequenceFlow_188a7lk"> + <bpmn2:incoming>SequenceFlow_0wfzjs1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_188a7lk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_12konw1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1nettij" name="Error on ConfigModify?" default="SequenceFlow_0q1skau"> + <bpmn2:incoming>SequenceFlow_0lpreg4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q1skau</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1s3pbww</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0wfzjs1" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_16eos6z" /> + <bpmn2:sequenceFlow id="SequenceFlow_188a7lk" name="no" sourceRef="ExclusiveGateway_16eos6z" targetRef="Task_1fj63ov" /> + <bpmn2:sequenceFlow id="SequenceFlow_0lpreg4" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1nettij" /> + <bpmn2:sequenceFlow id="SequenceFlow_0q1skau" name="no" sourceRef="ExclusiveGateway_1nettij" targetRef="Task_1ca5ctq" /> + <bpmn2:sequenceFlow id="SequenceFlow_08m0j98" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1drglpt" /> + <bpmn2:sequenceFlow id="SequenceFlow_1wqinjh" sourceRef="IntermediateThrowEvent_02hirbh" targetRef="Task_1fj63ov" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0s8cdpt" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_12konw1</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12konw1" name="yes" sourceRef="ExclusiveGateway_16eos6z" targetRef="IntermediateThrowEvent_0s8cdpt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0e2ibog" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1s3pbww</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1s3pbww" name="yes" sourceRef="ExclusiveGateway_1nettij" targetRef="IntermediateThrowEvent_0e2ibog"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C Health PreCheck" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex0" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1cjiv6i</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1colra4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0wfzjs1</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health PostCheck" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionHealthCheck" target="action" /> + <camunda:in source="healthCheckIndex1" target="healthCheckIndex" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16igl7b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0q1skau</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C ConfigModify" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionConfigModify" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_188a7lk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1wqinjh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0lpreg4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0rlmex7" name="Retry" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0em349i"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="Task_0em349i" name="Increment Retry Count" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0rlmex7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xwgemy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfConfigUpdate() +uvfm.incrementRetryCount(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0yu25qy" name="Retries Left?" default="SequenceFlow_05omwbu"> + <bpmn2:incoming>SequenceFlow_1nm4wr1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19myx3o</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05omwbu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19myx3o" name="yes" sourceRef="ExclusiveGateway_0yu25qy" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[String retryVariableName = execution.getVariable('retryCountVariableName') + +execution.getVariable(retryVariableName) < execution.getVariable("maxRetryCount")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_05omwbu" name="no" sourceRef="ExclusiveGateway_0yu25qy" targetRef="Task_1tg549h" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0u8jlsq" name="RetryTimer"> + <bpmn2:incoming>SequenceFlow_1xwgemy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1nm4wr1</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">PT1M</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1xwgemy" sourceRef="Task_0em349i" targetRef="IntermediateThrowEvent_0u8jlsq" /> + <bpmn2:sequenceFlow id="SequenceFlow_1nm4wr1" sourceRef="IntermediateThrowEvent_0u8jlsq" targetRef="ExclusiveGateway_0yu25qy" /> + <bpmn2:callActivity id="Task_0zbogrm" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18lemf9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_18lemf9" sourceRef="Task_0zbogrm" targetRef="Task_1tg549h" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfConfigUpdate"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="574" y="734" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="572" y="775" width="39" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="473" y="237" /> + <di:waypoint xsi:type="dc:Point" x="513" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="493" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="420" y="712" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="520" y="752" /> + <di:waypoint xsi:type="dc:Point" x="554" y="752" /> + <di:waypoint xsi:type="dc:Point" x="554" y="752" /> + <di:waypoint xsi:type="dc:Point" x="574" y="752" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="569" y="752" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="131" y="712" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="274" y="712" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="231" y="752" /> + <di:waypoint xsi:type="dc:Point" x="253" y="752" /> + <di:waypoint xsi:type="dc:Point" x="253" y="752" /> + <di:waypoint xsi:type="dc:Point" x="274" y="752" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="268" y="752" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="109" y="1075" width="1139" height="244" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="173" y="1169" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="152" y="1210" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="795" y="1147" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="209" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="265" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="237" y="1172" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="895" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="963" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="911" y="1187" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="1119" y="1169" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1137" y="1210" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="1230" y="1170" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1248" y="1211" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="1333" y="1169" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1351" y="1210" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="1266" y="1188" /> + <di:waypoint xsi:type="dc:Point" x="1333" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1300" y="1172.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="963" y="1147" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="374" y="752" /> + <di:waypoint xsi:type="dc:Point" x="397" y="752" /> + <di:waypoint xsi:type="dc:Point" x="397" y="752" /> + <di:waypoint xsi:type="dc:Point" x="420" y="752" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412" y="752" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="1063" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="1119" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="956" y="1247" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1227" y="484" /> + <di:waypoint xsi:type="dc:Point" x="1293" y="484" /> + <di:waypoint xsi:type="dc:Point" x="1293" y="662" /> + <di:waypoint xsi:type="dc:Point" x="97" y="662" /> + <di:waypoint xsi:type="dc:Point" x="97" y="752" /> + <di:waypoint xsi:type="dc:Point" x="131" y="752" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1251" y="459" width="12" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="642" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="131" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="542" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="542" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="373" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="231" y="237" /> + <di:waypoint xsi:type="dc:Point" x="279" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="255" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="608" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="826" y="444" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="131" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="279" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="173" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="329" y="237" /> + <di:waypoint xsi:type="dc:Point" x="373" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="513" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="163" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="563" y="237" /> + <di:waypoint xsi:type="dc:Point" x="608" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="579" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1491" y="390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1591" y="430" /> + <di:waypoint xsi:type="dc:Point" x="1673" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1632" y="415" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1698" y="405" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="312" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1704" y="351" width="27" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1698" y="455" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="482" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="482" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1677" y="473" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="735" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="731" y="166" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="708" y="237" /> + <di:waypoint xsi:type="dc:Point" x="735" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="735" y="459" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="721" y="419" width="77" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="963" y="459" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="951" y="412" width="73" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="926" y="484" /> + <di:waypoint xsi:type="dc:Point" x="963" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="469" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1648" y="232" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1673" y="405" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1654" y="387" width="87" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="1967" y="405" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1927" y="397" width="54" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1723" y="430" /> + <di:waypoint xsi:type="dc:Point" x="1967" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1813" y="436" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy"> + <di:waypoint xsi:type="dc:Point" x="1992" y="405" /> + <di:waypoint xsi:type="dc:Point" x="1992" y="272" /> + <di:waypoint xsi:type="dc:Point" x="1748" y="272" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2007" y="338.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06ev8or_di" bpmnElement="SequenceFlow_06ev8or"> + <di:waypoint xsi:type="dc:Point" x="304" y="262" /> + <di:waypoint xsi:type="dc:Point" x="304" y="288" /> + <di:waypoint xsi:type="dc:Point" x="304" y="288" /> + <di:waypoint xsi:type="dc:Point" x="304" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="314" y="273" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0o6fb4f_di" bpmnElement="IntermediateThrowEvent_0zmqbae"> + <dc:Bounds x="286" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="269" y="343.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nob5cp_di" bpmnElement="SequenceFlow_0nob5cp"> + <di:waypoint xsi:type="dc:Point" x="1405" y="430" /> + <di:waypoint xsi:type="dc:Point" x="1491" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1448" y="415" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_076leae_di" bpmnElement="SequenceFlow_076leae"> + <di:waypoint xsi:type="dc:Point" x="926" y="237" /> + <di:waypoint xsi:type="dc:Point" x="955" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cbpm7l_di" bpmnElement="Task_0e313zv"> + <dc:Bounds x="826" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1rglbmr_di" bpmnElement="ExclusiveGateway_1rglbmr" isMarkerVisible="true"> + <dc:Bounds x="955.192" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="936" y="164" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0du9273_di" bpmnElement="SequenceFlow_0du9273"> + <di:waypoint xsi:type="dc:Point" x="1005" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="212" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1p06jf5_di" bpmnElement="IntermediateThrowEvent_0z0t7rn"> + <dc:Bounds x="1369" y="412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1354" y="458" width="66" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0xwlxk9_di" bpmnElement="IntermediateThrowEvent_1qkzlba"> + <dc:Bounds x="520" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="344" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cdfjed_di" bpmnElement="SequenceFlow_1cdfjed"> + <di:waypoint xsi:type="dc:Point" x="538" y="262" /> + <di:waypoint xsi:type="dc:Point" x="538" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="544" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_113xxsl_di" bpmnElement="IntermediateThrowEvent_0rnlvmz"> + <dc:Bounds x="742" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="344" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17g62fl_di" bpmnElement="SequenceFlow_17g62fl"> + <di:waypoint xsi:type="dc:Point" x="760" y="262" /> + <di:waypoint xsi:type="dc:Point" x="760" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="766" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0iyegh1_di" bpmnElement="IntermediateThrowEvent_0v69raz"> + <dc:Bounds x="962" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="343.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zh8r6j_di" bpmnElement="SequenceFlow_0zh8r6j"> + <di:waypoint xsi:type="dc:Point" x="980" y="262" /> + <di:waypoint xsi:type="dc:Point" x="980" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="285" width="17" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_07pur50_di" bpmnElement="IntermediateThrowEvent_15hlkuq"> + <dc:Bounds x="405" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="381" y="344" width="83" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09lrk4q_di" bpmnElement="SequenceFlow_09lrk4q"> + <di:waypoint xsi:type="dc:Point" x="423" y="308" /> + <di:waypoint xsi:type="dc:Point" x="423" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="438" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1eezqx8_di" bpmnElement="SequenceFlow_1eezqx8"> + <di:waypoint xsi:type="dc:Point" x="658" y="308" /> + <di:waypoint xsi:type="dc:Point" x="658" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1pog9t5_di" bpmnElement="IntermediateThrowEvent_1lrkrsn"> + <dc:Bounds x="640" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614" y="343.609" width="88" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1rtf0em_di" bpmnElement="IntermediateThrowEvent_1wdxgjm"> + <dc:Bounds x="858" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="844" y="344" width="64" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zzwdwf_di" bpmnElement="SequenceFlow_0zzwdwf"> + <di:waypoint xsi:type="dc:Point" x="876" y="308" /> + <di:waypoint xsi:type="dc:Point" x="876" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06ajc11_di" bpmnElement="SequenceFlow_06ajc11"> + <di:waypoint xsi:type="dc:Point" x="785" y="237" /> + <di:waypoint xsi:type="dc:Point" x="826" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="800" y="212" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_179z9vl_di" bpmnElement="SequenceFlow_179z9vl"> + <di:waypoint xsi:type="dc:Point" x="1146" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1184" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1165" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1iio503_di" bpmnElement="Task_0n1d5f2"> + <dc:Bounds x="1046" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_032tm9y_di" bpmnElement="SequenceFlow_032tm9y"> + <di:waypoint xsi:type="dc:Point" x="1096" y="308" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1111" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0jhmy9d_di" bpmnElement="IntermediateThrowEvent_1552q1o"> + <dc:Bounds x="1078" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1061" y="344" width="70" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_148eo7w_di" bpmnElement="ExclusiveGateway_148eo7w" isMarkerVisible="true"> + <dc:Bounds x="1184.192" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1167" y="149" width="83" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cjiv6i_di" bpmnElement="SequenceFlow_1cjiv6i"> + <di:waypoint xsi:type="dc:Point" x="1234" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1285" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1285" y="401" /> + <di:waypoint xsi:type="dc:Point" x="105" y="401" /> + <di:waypoint xsi:type="dc:Point" x="105" y="484" /> + <di:waypoint xsi:type="dc:Point" x="131" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1249" y="211" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1qtnv6e_di" bpmnElement="IntermediateThrowEvent_16r1jxm"> + <dc:Bounds x="1191" y="299" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1174" y="334.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q3oxtf_di" bpmnElement="SequenceFlow_1q3oxtf"> + <di:waypoint xsi:type="dc:Point" x="1209" y="262" /> + <di:waypoint xsi:type="dc:Point" x="1209" y="299" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1215" y="270.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1ogs7t2_di" bpmnElement="IntermediateThrowEvent_02hirbh"> + <dc:Bounds x="405" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="383" y="613" width="79" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1urpp94_di" bpmnElement="SequenceFlow_1urpp94"> + <di:waypoint xsi:type="dc:Point" x="760" y="509" /> + <di:waypoint xsi:type="dc:Point" x="760" y="577" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="772" y="528.3097560975609" width="17" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1vi3wf9_di" bpmnElement="IntermediateThrowEvent_0vf0a28"> + <dc:Bounds x="742" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="726" y="613" width="68" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1bsxf5o_di" bpmnElement="IntermediateThrowEvent_0pk24h2"> + <dc:Bounds x="163" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="156" y="613" width="50" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_18j1ow5_di" bpmnElement="ExclusiveGateway_18j1ow5" isMarkerVisible="true"> + <dc:Bounds x="1177" y="459" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1172" y="407" width="75" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0u6ho2p_di" bpmnElement="SequenceFlow_0u6ho2p"> + <di:waypoint xsi:type="dc:Point" x="1013" y="484" /> + <di:waypoint xsi:type="dc:Point" x="1043" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1022" y="459" width="13" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08r89q9_di" bpmnElement="Task_0y1h8go"> + <dc:Bounds x="1043" y="444" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tzax6l_di" bpmnElement="SequenceFlow_1tzax6l"> + <di:waypoint xsi:type="dc:Point" x="1143" y="484" /> + <di:waypoint xsi:type="dc:Point" x="1177" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1333" y="455" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_06j33fe_di" bpmnElement="IntermediateThrowEvent_0pmevcz"> + <dc:Bounds x="858" y="570" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="841" y="606" width="70" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16ff86u_di" bpmnElement="SequenceFlow_16ff86u"> + <di:waypoint xsi:type="dc:Point" x="876" y="570" /> + <di:waypoint xsi:type="dc:Point" x="876" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="537" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k3zxpd_di" bpmnElement="SequenceFlow_0k3zxpd"> + <di:waypoint xsi:type="dc:Point" x="988" y="509" /> + <di:waypoint xsi:type="dc:Point" x="988" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="994" y="540" width="17" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_105mp22_di" bpmnElement="IntermediateThrowEvent_1awckg7"> + <dc:Bounds x="970" y="570" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="954" y="606" width="68" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0kglv4e_di" bpmnElement="IntermediateThrowEvent_1b3smly"> + <dc:Bounds x="1075" y="570" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1052" y="606" width="81" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09xxorv_di" bpmnElement="SequenceFlow_09xxorv"> + <di:waypoint xsi:type="dc:Point" x="1093" y="570" /> + <di:waypoint xsi:type="dc:Point" x="1093" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1108" y="537" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0w8mkkn_di" bpmnElement="SequenceFlow_0w8mkkn"> + <di:waypoint xsi:type="dc:Point" x="1202" y="509" /> + <di:waypoint xsi:type="dc:Point" x="1202" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1208" y="540" width="17" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0jwgx1d_di" bpmnElement="IntermediateThrowEvent_1cw8gsw"> + <dc:Bounds x="1184" y="570" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1168" y="606" width="68" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0zw87jy_di" bpmnElement="IntermediateThrowEvent_0x846wp"> + <dc:Bounds x="163" y="847" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="144" y="883" width="73" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07uuj2d_di" bpmnElement="SequenceFlow_07uuj2d"> + <di:waypoint xsi:type="dc:Point" x="181" y="847" /> + <di:waypoint xsi:type="dc:Point" x="181" y="821" /> + <di:waypoint xsi:type="dc:Point" x="181" y="821" /> + <di:waypoint xsi:type="dc:Point" x="181" y="792" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="197" y="821" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ueoglv_di" bpmnElement="SequenceFlow_0ueoglv"> + <di:waypoint xsi:type="dc:Point" x="1999" y="412" /> + <di:waypoint xsi:type="dc:Point" x="2079" y="197" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2039" y="290" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15fqlwe_di" bpmnElement="SequenceFlow_15fqlwe"> + <di:waypoint xsi:type="dc:Point" x="2002" y="415" /> + <di:waypoint xsi:type="dc:Point" x="2127" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2066" y="309" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yuj0l5_di" bpmnElement="SequenceFlow_0yuj0l5"> + <di:waypoint xsi:type="dc:Point" x="2006" y="419" /> + <di:waypoint xsi:type="dc:Point" x="2172" y="283" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2089" y="336" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1abb030_di" bpmnElement="SequenceFlow_1abb030"> + <di:waypoint xsi:type="dc:Point" x="2010" y="423" /> + <di:waypoint xsi:type="dc:Point" x="2203" y="349" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2107" y="371" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ls3ej5_di" bpmnElement="SequenceFlow_0ls3ej5"> + <di:waypoint xsi:type="dc:Point" x="2016" y="429" /> + <di:waypoint xsi:type="dc:Point" x="2221" y="429" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2119" y="414" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ar6ikk_di" bpmnElement="SequenceFlow_1ar6ikk"> + <di:waypoint xsi:type="dc:Point" x="2006" y="441" /> + <di:waypoint xsi:type="dc:Point" x="2172" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2089" y="488" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t53vux_di" bpmnElement="SequenceFlow_0t53vux"> + <di:waypoint xsi:type="dc:Point" x="2003" y="444" /> + <di:waypoint xsi:type="dc:Point" x="2128" y="605" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2066" y="510" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11ck4qe_di" bpmnElement="SequenceFlow_11ck4qe"> + <di:waypoint xsi:type="dc:Point" x="1999" y="448" /> + <di:waypoint xsi:type="dc:Point" x="2078" y="644" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2039" y="531" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16d2ln4_di" bpmnElement="SequenceFlow_16d2ln4"> + <di:waypoint xsi:type="dc:Point" x="1996" y="451" /> + <di:waypoint xsi:type="dc:Point" x="2033" y="670" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2015" y="546" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_17syve1_di" bpmnElement="IntermediateThrowEvent_0rz6jh4"> + <dc:Bounds x="2067" y="163" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2073" y="123" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0nv8aic_di" bpmnElement="IntermediateThrowEvent_1wip9vc"> + <dc:Bounds x="2120" y="200" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2169" y="196" width="89" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1g4pmwc_di" bpmnElement="IntermediateThrowEvent_1hki8xj"> + <dc:Bounds x="2168" y="254" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2208" y="223" width="64" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ypnogn_di" bpmnElement="IntermediateThrowEvent_1gfnt9b"> + <dc:Bounds x="2202" y="326" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2248" y="312" width="71" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1i9ttzs_di" bpmnElement="IntermediateThrowEvent_1gzhs1a"> + <dc:Bounds x="2221" y="412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2273" y="409" width="51" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0840e02_di" bpmnElement="IntermediateThrowEvent_0385ons"> + <dc:Bounds x="2202" y="486" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2250" y="484" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1quapjx_di" bpmnElement="SequenceFlow_1quapjx"> + <di:waypoint xsi:type="dc:Point" x="2011" y="436" /> + <di:waypoint xsi:type="dc:Point" x="2204" y="498" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2108" y="452" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1xq4kx8_di" bpmnElement="IntermediateThrowEvent_1p9i2bi"> + <dc:Bounds x="2168" y="558" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2227" y="559" width="54" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1vcx5cz_di" bpmnElement="IntermediateThrowEvent_1cp0hkt"> + <dc:Bounds x="2120" y="601" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2154" y="625" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1y8fmlw_di" bpmnElement="IntermediateThrowEvent_184w0i8"> + <dc:Bounds x="2067" y="642" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2107" y="679" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_024zi9r_di" bpmnElement="IntermediateThrowEvent_1u9f9kp"> + <dc:Bounds x="2016" y="670" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2021" y="711" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_08x53cb_di" bpmnElement="IntermediateThrowEvent_18wrvcy"> + <dc:Bounds x="158" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="134" y="343.09862671660426" width="83" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_179tyul_di" bpmnElement="SequenceFlow_179tyul"> + <di:waypoint xsi:type="dc:Point" x="180" y="309" /> + <di:waypoint xsi:type="dc:Point" x="181" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="181" y="278" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_101n488_di" bpmnElement="SequenceFlow_101n488"> + <di:waypoint xsi:type="dc:Point" x="1996" y="409" /> + <di:waypoint xsi:type="dc:Point" x="2033" y="177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2015" y="278" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1fnxvhb_di" bpmnElement="IntermediateThrowEvent_17k1fmk"> + <dc:Bounds x="2016" y="141" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1991" y="91" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1colra4_di" bpmnElement="SequenceFlow_1colra4"> + <di:waypoint xsi:type="dc:Point" x="181" y="577" /> + <di:waypoint xsi:type="dc:Point" x="181" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="196" y="550.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_174wgan_di" bpmnElement="IntermediateThrowEvent_0fhmhsk"> + <dc:Bounds x="640" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="631" y="613" width="53" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16igl7b_di" bpmnElement="SequenceFlow_16igl7b"> + <di:waypoint xsi:type="dc:Point" x="658" y="577" /> + <di:waypoint xsi:type="dc:Point" x="658" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="550.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="708" y="484" /> + <di:waypoint xsi:type="dc:Point" x="735" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="469" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_16eos6z_di" bpmnElement="ExclusiveGateway_16eos6z" isMarkerVisible="true"> + <dc:Bounds x="279" y="459" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="265" y="422" width="77" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1nettij_di" bpmnElement="ExclusiveGateway_1nettij" isMarkerVisible="true"> + <dc:Bounds x="513" y="459" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="417" width="71" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0wfzjs1_di" bpmnElement="SequenceFlow_0wfzjs1"> + <di:waypoint xsi:type="dc:Point" x="231" y="484" /> + <di:waypoint xsi:type="dc:Point" x="279" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="255" y="469" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_188a7lk_di" bpmnElement="SequenceFlow_188a7lk"> + <di:waypoint xsi:type="dc:Point" x="329" y="484" /> + <di:waypoint xsi:type="dc:Point" x="373" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="459" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0lpreg4_di" bpmnElement="SequenceFlow_0lpreg4"> + <di:waypoint xsi:type="dc:Point" x="473" y="484" /> + <di:waypoint xsi:type="dc:Point" x="513" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="493" y="469" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0q1skau_di" bpmnElement="SequenceFlow_0q1skau"> + <di:waypoint xsi:type="dc:Point" x="563" y="484" /> + <di:waypoint xsi:type="dc:Point" x="608" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="580" y="459" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_08m0j98_di" bpmnElement="SequenceFlow_08m0j98"> + <di:waypoint xsi:type="dc:Point" x="785" y="484" /> + <di:waypoint xsi:type="dc:Point" x="826" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="799" y="459" width="13" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wqinjh_di" bpmnElement="SequenceFlow_1wqinjh"> + <di:waypoint xsi:type="dc:Point" x="423" y="577" /> + <di:waypoint xsi:type="dc:Point" x="423" y="524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="438" y="550.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0jgks05_di" bpmnElement="IntermediateThrowEvent_0s8cdpt"> + <dc:Bounds x="286" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="269" y="613" width="69" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12konw1_di" bpmnElement="SequenceFlow_12konw1"> + <di:waypoint xsi:type="dc:Point" x="304" y="509" /> + <di:waypoint xsi:type="dc:Point" x="304" y="577" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="310" y="532.5983606557377" width="18" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1jys13n_di" bpmnElement="IntermediateThrowEvent_0e2ibog"> + <dc:Bounds x="520" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="613" width="69" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s3pbww_di" bpmnElement="SequenceFlow_1s3pbww"> + <di:waypoint xsi:type="dc:Point" x="538" y="509" /> + <di:waypoint xsi:type="dc:Point" x="538" y="577" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="544" y="533" width="18" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0iywyn3_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="131" y="444" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0pzya8j_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="608" y="444" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ck1c9r_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="373" y="444" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0rlmex7_di" bpmnElement="SequenceFlow_0rlmex7"> + <di:waypoint xsi:type="dc:Point" x="1712" y="441" /> + <di:waypoint xsi:type="dc:Point" x="1823" y="528" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1778" y="468.1344841912912" width="27" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0dqs9kj_di" bpmnElement="Task_0em349i"> + <dc:Bounds x="1823" y="489" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0yu25qy_di" bpmnElement="ExclusiveGateway_0yu25qy" isMarkerVisible="true"> + <dc:Bounds x="1909" y="626" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1903" y="676" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19myx3o_di" bpmnElement="SequenceFlow_19myx3o"> + <di:waypoint xsi:type="dc:Point" x="1959" y="651" /> + <di:waypoint xsi:type="dc:Point" x="1968" y="651" /> + <di:waypoint xsi:type="dc:Point" x="1968" y="431" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1975" y="589.1802690904609" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05omwbu_di" bpmnElement="SequenceFlow_05omwbu"> + <di:waypoint xsi:type="dc:Point" x="1934" y="626" /> + <di:waypoint xsi:type="dc:Point" x="1934" y="170" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="170" /> + <di:waypoint xsi:type="dc:Point" x="1698" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1938" y="581.649978474545" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0e4c19r_di" bpmnElement="IntermediateThrowEvent_0u8jlsq"> + <dc:Bounds x="1855" y="601" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1790" y="613" width="55" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xwgemy_di" bpmnElement="SequenceFlow_1xwgemy"> + <di:waypoint xsi:type="dc:Point" x="1873" y="569" /> + <di:waypoint xsi:type="dc:Point" x="1873" y="601" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1888" y="575" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nm4wr1_di" bpmnElement="SequenceFlow_1nm4wr1"> + <di:waypoint xsi:type="dc:Point" x="1873" y="637" /> + <di:waypoint xsi:type="dc:Point" x="1873" y="651" /> + <di:waypoint xsi:type="dc:Point" x="1909" y="651" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1888" y="644" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0b2drei_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1648" y="524" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_18lemf9_di" bpmnElement="SequenceFlow_18lemf9"> + <di:waypoint xsi:type="dc:Point" x="1648" y="564" /> + <di:waypoint xsi:type="dc:Point" x="1617" y="564" /> + <di:waypoint xsi:type="dc:Point" x="1617" y="272" /> + <di:waypoint xsi:type="dc:Point" x="1648" y="272" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1632" y="418" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vxpbd0_di" bpmnElement="SequenceFlow_1vxpbd0"> + <di:waypoint xsi:type="dc:Point" x="365" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="431" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="398" y="1172" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03ayqeh_di" bpmnElement="SequenceFlow_03ayqeh"> + <di:waypoint xsi:type="dc:Point" x="531" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="1172" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xt2xvx_di" bpmnElement="SequenceFlow_0xt2xvx"> + <di:waypoint xsi:type="dc:Point" x="714" y="1187" /> + <di:waypoint xsi:type="dc:Point" x="795" y="1187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="755" y="1172" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1w171si_di" bpmnElement="Task_1tx7e9s"> + <dc:Bounds x="265" y="1147" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0c9vk4v_di" bpmnElement="Task_0b707rs"> + <dc:Bounds x="614" y="1147" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_02c6e2e_di" bpmnElement="Task_02avn81"> + <dc:Bounds x="431" y="1147" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn new file mode 100644 index 0000000000..3c42320302 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn @@ -0,0 +1,2302 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="VnfInPlaceUpdate" name="VnfInPlaceUpdate" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.sendSynchResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess"> + <bpmn2:extensionElements> + <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[// The following variable is checked by the unit test +execution.setVariable("VnfInPlaceUpdateSuccessIndicator", true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_07uuj2d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" /> + <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_0ilgwhw" /> + <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ib8gb8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest') +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" /> + <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler"> + <bpmn2:extensionElements> + <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qnzi6i" sourceRef="Task_13sybx8" targetRef="Task_1mt62gu" /> + <bpmn2:callActivity id="Task_13sybx8" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0hvg70o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qnzi6i</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0hvg70o" sourceRef="Task_0ilgwhw" targetRef="Task_13sybx8" /> + <bpmn2:scriptTask id="Task_0ilgwhw" name="PreProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0hvg70o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ib8gb8" sourceRef="Task_1mt62gu" targetRef="ScriptTask_3" /> + <bpmn2:scriptTask id="Task_1mt62gu" name="PostProcess Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qnzi6i</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ib8gb8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_18j1ow5" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" /> + <bpmn2:scriptTask id="Task_1opcb4j" name="Query A&AI for VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.queryAAIForVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1opcb4j" /> + <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09lrk4q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.checkIfVnfInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" /> + <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1eezqx8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.setVnfInMaintFlagInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1nr9o85</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_16ff86u</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_179tyul</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.checkIfPserversInMaintInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" /> + <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" /> + <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_123vjyo" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z"> + <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_06ev8or</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1cdfjed</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" /> + <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="nfRole" target="vnfType" /> + <camunda:in source="currentActivity" target="currentActivity" /> + <camunda:in source="workStep" target="workStep" /> + <camunda:in source="failedActivity" target="failedActivity" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:in source="errorText" target="errorText" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="handlingCode" target="disposition" /> + <camunda:in source="requestorId" target="requestorId" /> + <camunda:out source="taskId" target="taskId" /> + <camunda:in source="vnfName" target="vnfName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0nob5cp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" /> + <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_06ajc11"> + <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17g62fl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_06ajc11</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" /> + <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Upgrade PreCheck?" default="SequenceFlow_0q0qan8"> + <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_02mk8vs</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on Quiesce Traffic?" default="SequenceFlow_1c0vdki"> + <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_11o5j55</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on Upgrade Software?" default="SequenceFlow_162mm0m"> + <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1gagrha</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_1c2xyhk"> + <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1urpp94</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1c2xyhk</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_0u6ho2p"> + <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0u6ho2p</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0k3zxpd</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" /> + <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0h64c4o</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0syfgbo</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.abortProcessing(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition"> + <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ijc733</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Next Step? " default="SequenceFlow_1c022sy"> + <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1kntfys</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1nlqlwn</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ueoglv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_15fqlwe</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0yuj0l5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1abb030</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ls3ej5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1ar6ikk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_171iq7e</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1553o9f</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dmxwel</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1id2p8y</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0t53vux</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_11ck4qe</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16d2ln4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1quapjx</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_101n488</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_021ah63</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ExclusiveGateway_19an3h2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1nlqlwn" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0ee7wot"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "QuiesceTraffic") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Snapshot")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" /> + <bpmn2:sequenceFlow id="SequenceFlow_06ev8or" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0zmqbae"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0zmqbae" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_06ev8or</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0nob5cp" sourceRef="IntermediateThrowEvent_0z0t7rn" targetRef="Task_0q5cdit" /> + <bpmn2:sequenceFlow id="SequenceFlow_076leae" sourceRef="Task_0e313zv" targetRef="ExclusiveGateway_1rglbmr" /> + <bpmn2:scriptTask id="Task_0e313zv" name="Check If VF Closed Loop Disabled in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0zzwdwf</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_06ajc11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_076leae</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.checkIfClosedLoopDisabledInAAI(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1rglbmr" name="Error on isClosedLoopDisabled Check?" default="SequenceFlow_0du9273"> + <bpmn2:incoming>SequenceFlow_076leae</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0du9273</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0zh8r6j</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0du9273" name="no " sourceRef="ExclusiveGateway_1rglbmr" targetRef="Task_0n1d5f2" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0z0t7rn" name="To Rainy Day Handling" camunda:asyncBefore="true"> + <bpmn2:outgoing>SequenceFlow_0nob5cp</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1qkzlba" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1cdfjed</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1cdfjed" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1qkzlba"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rnlvmz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_17g62fl</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_17g62fl" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0rnlvmz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v69raz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0zh8r6j</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zh8r6j" name="yes " sourceRef="ExclusiveGateway_1rglbmr" targetRef="IntermediateThrowEvent_0v69raz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15hlkuq" name="To inMaintenanceCheck"> + <bpmn2:outgoing>SequenceFlow_09lrk4q</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To inMaintenanceCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_09lrk4q" sourceRef="IntermediateThrowEvent_15hlkuq" targetRef="Task_1rxiqe1" /> + <bpmn2:sequenceFlow id="SequenceFlow_1eezqx8" sourceRef="IntermediateThrowEvent_1lrkrsn" targetRef="Task_0ap39ka" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lrkrsn" name="To InMaintenance Set"> + <bpmn2:outgoing>SequenceFlow_1eezqx8</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To InMaintenance Set" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1wdxgjm" name="To check if Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_0zzwdwf</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zzwdwf" sourceRef="IntermediateThrowEvent_1wdxgjm" targetRef="Task_0e313zv" /> + <bpmn2:sequenceFlow id="SequenceFlow_06ajc11" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0e313zv" /> + <bpmn2:sequenceFlow id="SequenceFlow_179z9vl" sourceRef="Task_0n1d5f2" targetRef="ExclusiveGateway_148eo7w" /> + <bpmn2:scriptTask id="Task_0n1d5f2" name="Set VF Is Closed Loop Disabled Flag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0du9273</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_032tm9y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_179z9vl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.setClosedLoopDisabledInAAI(execution, true) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_032tm9y" sourceRef="IntermediateThrowEvent_1552q1o" targetRef="Task_0n1d5f2" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1552q1o" name="To set Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_032tm9y</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_148eo7w" name="Error on Set IsClosedLoopDisabled Flag in A&AI?" default="SequenceFlow_1cjiv6i"> + <bpmn2:incoming>SequenceFlow_179z9vl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cjiv6i</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1q3oxtf</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1cjiv6i" name="no " sourceRef="ExclusiveGateway_148eo7w" targetRef="Task_1dtbnuy" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16r1jxm" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1q3oxtf</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q3oxtf" name="yes" sourceRef="ExclusiveGateway_148eo7w" targetRef="IntermediateThrowEvent_16r1jxm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1agn6fn" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1j81s6b</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1j81s6b" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_1agn6fn"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_02hirbh" name="To Upgrade PreCheck"> + <bpmn2:outgoing>SequenceFlow_16t9vai</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Upgrade PreCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16t9vai" sourceRef="IntermediateThrowEvent_02hirbh" targetRef="Task_1fj63ov" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0pnzq4y" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_02mk8vs</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_02mk8vs" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_0pnzq4y"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1s7qalx" name="To Quiesce Traffic"> + <bpmn2:outgoing>SequenceFlow_1urt6le</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Quiesce Traffic" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1urt6le" sourceRef="IntermediateThrowEvent_1s7qalx" targetRef="Task_1cfkcss" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0l0rp9y" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_11o5j55</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_11o5j55" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_0l0rp9y"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_19an3h2" name="Error on SnapShot?" default="SequenceFlow_1fuaq5k"> + <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1fuaq5k</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_04gth9f</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1fuaq5k" name="no" sourceRef="ExclusiveGateway_19an3h2" targetRef="Task_1mdr1nd" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0a1s69h" name="To SnapShot"> + <bpmn2:outgoing>SequenceFlow_0if6xj4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To SnapShot" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0if6xj4" sourceRef="IntermediateThrowEvent_0a1s69h" targetRef="Task_0eae8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_04gth9f" name="yes" sourceRef="ExclusiveGateway_19an3h2" targetRef="IntermediateThrowEvent_11vs7u4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11vs7u4" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_04gth9f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1v59be9" sourceRef="IntermediateThrowEvent_162mb2a" targetRef="Task_1mdr1nd" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_162mb2a" name="To Upgrade Backup"> + <bpmn2:outgoing>SequenceFlow_1v59be9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Upgrade Backup" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ssvndw" name="Error on UpgradeBackup?" default="SequenceFlow_0txgesu"> + <bpmn2:incoming>SequenceFlow_04rprct</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uceq96</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0txgesu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04rprct" sourceRef="Task_1mdr1nd" targetRef="ExclusiveGateway_0ssvndw" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1yfd3sz" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1uceq96</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1uceq96" name="yes" sourceRef="ExclusiveGateway_0ssvndw" targetRef="IntermediateThrowEvent_1yfd3sz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0txgesu" name="no" sourceRef="ExclusiveGateway_0ssvndw" targetRef="Task_1hdg951" /> + <bpmn2:sequenceFlow id="SequenceFlow_0trguug" sourceRef="Task_0h2nq31" targetRef="ExclusiveGateway_1ozuicc" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1ozuicc" name="Error on Resume Traffic?" default="SequenceFlow_1q3bwlt"> + <bpmn2:incoming>SequenceFlow_0trguug</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q3bwlt</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1xg6pwh</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1q3bwlt" name="no" sourceRef="ExclusiveGateway_1ozuicc" targetRef="Task_1sove95" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_123vjyo" name="Error on VNF Unlock?" default="SequenceFlow_1nr9o85"> + <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1nr9o85</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ttowkv</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1nr9o85" name="no" sourceRef="ExclusiveGateway_123vjyo" targetRef="Task_1drglpt" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1nij04n" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1gagrha</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1gagrha" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_1nij04n"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_16igl7b" sourceRef="IntermediateThrowEvent_0fhmhsk" targetRef="Task_1ca5ctq" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0fhmhsk" name="To Upgrade PostCheck"> + <bpmn2:outgoing>SequenceFlow_16igl7b</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Upgrade PostCheck" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1urpp94" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_0vf0a28"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vf0a28" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1urpp94</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1c2xyhk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0h2nq31" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pxvl24" name="To Resume Traffic"> + <bpmn2:outgoing>SequenceFlow_0yja56j</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Resume Traffic" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0yja56j" sourceRef="IntermediateThrowEvent_0pxvl24" targetRef="Task_0h2nq31" /> + <bpmn2:sequenceFlow id="SequenceFlow_1xg6pwh" name="yes" sourceRef="ExclusiveGateway_1ozuicc" targetRef="IntermediateThrowEvent_1vjqksl"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vjqksl" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_1xg6pwh</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1vwqesb" name="To VNF Unlock"> + <bpmn2:outgoing>SequenceFlow_1hwtq9x</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1hwtq9x" sourceRef="IntermediateThrowEvent_1vwqesb" targetRef="Task_1sove95" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ttowkv" name="yes" sourceRef="ExclusiveGateway_123vjyo" targetRef="IntermediateThrowEvent_0m9jtv2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0m9jtv2" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0ttowkv</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pk24h2" name="To Upgrade Software"> + <bpmn2:outgoing>SequenceFlow_1colra4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Upgrade Software" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1colra4" sourceRef="IntermediateThrowEvent_0pk24h2" targetRef="Task_1hdg951" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_18j1ow5" name="Error on Unset Closed Loop Disabled?" default="SequenceFlow_3"> + <bpmn2:incoming>SequenceFlow_1tzax6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0w8mkkn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0u6ho2p" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0y1h8go" /> + <bpmn2:scriptTask id="Task_0y1h8go" name="Unset VF Is Closed Loop DisabledFlag in A&AI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0u6ho2p</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_09xxorv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1tzax6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.setClosedLoopDisabledInAAI(execution, false) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1tzax6l" sourceRef="Task_0y1h8go" targetRef="ExclusiveGateway_18j1ow5" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pmevcz" name="To unset inMaintenance"> + <bpmn2:outgoing>SequenceFlow_16ff86u</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To unset inMaintenance" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16ff86u" sourceRef="IntermediateThrowEvent_0pmevcz" targetRef="Task_1drglpt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0k3zxpd" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1awckg7"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1awckg7" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0k3zxpd</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1b3smly" name="To unset Closed Loop Disabled"> + <bpmn2:outgoing>SequenceFlow_09xxorv</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_09xxorv" sourceRef="IntermediateThrowEvent_1b3smly" targetRef="Task_0y1h8go" /> + <bpmn2:sequenceFlow id="SequenceFlow_0w8mkkn" name="yes" sourceRef="ExclusiveGateway_18j1ow5" targetRef="IntermediateThrowEvent_1cw8gsw"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cw8gsw" name="To Rainy Day Handling"> + <bpmn2:incoming>SequenceFlow_0w8mkkn</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Rainy Day Handling" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0x846wp" name="To Completion Handler Prep"> + <bpmn2:outgoing>SequenceFlow_07uuj2d</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_07uuj2d" sourceRef="IntermediateThrowEvent_0x846wp" targetRef="ScriptTask_10" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ueoglv" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rz6jh4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_15fqlwe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1wip9vc"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0yuj0l5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1hki8xj"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1abb030" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gfnt9b"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ls3ej5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gzhs1a"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Lock")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1ar6ikk" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1p9i2bi"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradePreCheck") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "QuiesceTraffic")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_171iq7e" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rp1ax0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Snapshot") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradeBackup")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1553o9f" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_01ngkx2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradeBackup") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradeSoftware")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dmxwel" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0lbd0cs"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradePostCheck") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "ResumeTraffic")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1id2p8y" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1ycbds3"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "ResumeTraffic") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Unlock")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0t53vux" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1cp0hkt"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Unlock") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_11ck4qe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_184w0i8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_16d2ln4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1u9f9kp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "completionHandlerPrep")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rz6jh4" name="To inMaintenanceCheck"> + <bpmn2:incoming>SequenceFlow_0ueoglv</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To inMaintenanceCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1wip9vc" name="To InMaintenance Set"> + <bpmn2:incoming>SequenceFlow_15fqlwe</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To InMaintenance Set" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1hki8xj" name="To check if Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_0yuj0l5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gfnt9b" name="To set Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_1abb030</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gzhs1a" name="To VNF Lock"> + <bpmn2:incoming>SequenceFlow_0ls3ej5</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0385ons" name="To Upgrade PreCheck"> + <bpmn2:incoming>SequenceFlow_1quapjx</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Upgrade PreCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1quapjx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0385ons"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Lock") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradePreCheck")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p9i2bi" name="To Quiesce Traffic"> + <bpmn2:incoming>SequenceFlow_1ar6ikk</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Quiesce Traffic" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0ee7wot" name="To SnapShot"> + <bpmn2:incoming>SequenceFlow_1nlqlwn</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To SnapShot" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rp1ax0" name="To Upgrade Backup"> + <bpmn2:incoming>SequenceFlow_171iq7e</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Upgrade Backup" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_01ngkx2" name="To Upgrade Software"> + <bpmn2:incoming>SequenceFlow_1553o9f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Upgrade Software" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lbd0cs" name="To Resume Traffic"> + <bpmn2:incoming>SequenceFlow_0dmxwel</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Resume Traffic" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1ycbds3" name="To VNF Unlock"> + <bpmn2:incoming>SequenceFlow_1id2p8y</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To VNF Unlock" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cp0hkt" name="To unset inMaintenance"> + <bpmn2:incoming>SequenceFlow_0t53vux</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To unset inMaintenance" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_184w0i8" name="To unset Closed Loop Disabled"> + <bpmn2:incoming>SequenceFlow_11ck4qe</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1u9f9kp" name="To Completion Handler Prep"> + <bpmn2:incoming>SequenceFlow_16d2ln4</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Completion Handler Prep" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_18wrvcy" name="To check if Physical Servers Are Locked"> + <bpmn2:outgoing>SequenceFlow_179tyul</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_179tyul" sourceRef="IntermediateThrowEvent_18wrvcy" targetRef="Task_0vy2zge" /> + <bpmn2:sequenceFlow id="SequenceFlow_101n488" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_17k1fmk"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_17k1fmk" name="To check if Physical Servers Are Locked"> + <bpmn2:incoming>SequenceFlow_101n488</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1m7fq7a" name="To VNF Lock"> + <bpmn2:outgoing>SequenceFlow_1ood2pr</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="To VNF Lock" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ood2pr" sourceRef="IntermediateThrowEvent_1m7fq7a" targetRef="Task_1dtbnuy" /> + <bpmn2:callActivity id="Task_0eae8go" name="Call APP-C SnapShot" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionSnapshot" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vmIdList" target="vmIdList" /> + <camunda:in source="aicIdentity" target="identityUrl" /> + <camunda:in source="controllerType" target="controllerType" /> + <camunda:in source="vserverIdList" target="vserverIdList" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0if6xj4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionLock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1cjiv6i</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1ood2pr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUnlock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q3bwlt</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1hwtq9x</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C UpgradePreCheck" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUpgradePreCheck" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_16t9vai</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Upgrade PostCheck" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUpgradePostCheck" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_16igl7b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1kbtw2p" name="To Upgrade PostCheck"> + <bpmn2:incoming>SequenceFlow_021ah63</bpmn2:incoming> + <bpmn2:linkEventDefinition name="To Upgrade PostCheck" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_021ah63" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1kbtw2p"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradeSoftware") || +(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradePostCheck")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_1qr054i" name="Increment Retry Count" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ijc733</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ai205d</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new VnfInPlaceUpdate() +uvfm.incrementRetryCount(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1g8h3lt" name="Retries Left?" default="SequenceFlow_0h64c4o"> + <bpmn2:incoming>SequenceFlow_0a2cv6d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kntfys</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0h64c4o</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1bv97n4" name="RetryTimer"> + <bpmn2:incoming>SequenceFlow_0ai205d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a2cv6d</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">PT1M</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0ai205d" sourceRef="ScriptTask_1qr054i" targetRef="IntermediateCatchEvent_1bv97n4" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a2cv6d" sourceRef="IntermediateCatchEvent_1bv97n4" targetRef="ExclusiveGateway_1g8h3lt" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ijc733" name="Retry" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ScriptTask_1qr054i"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1kntfys" name="yes" sourceRef="ExclusiveGateway_1g8h3lt" targetRef="ExclusiveGateway_0y82zzx"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[String retryVariableName = execution.getVariable('retryCountVariableName') + +execution.getVariable(retryVariableName) < execution.getVariable("maxRetryCount")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0h64c4o" name="no" sourceRef="ExclusiveGateway_1g8h3lt" targetRef="Task_1tg549h" /> + <bpmn2:callActivity id="Task_0zbogrm" name="Rollback Processing" calledElement="RollbackVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" /> + <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" /> + <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" /> + <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" /> + <camunda:in source="errorCode" target="errorCode" /> + <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" /> + <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0syfgbo</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0syfgbo" sourceRef="Task_0zbogrm" targetRef="Task_1tg549h" /> + <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C QuiesceTraffic" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionQuiesceTraffic" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:out source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1urt6le</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1mdr1nd" name="Call APP-C Upgrade Backup" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUpgradeBackup" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1fuaq5k</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1v59be9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04rprct</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C Upgrade Software" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUpgradeSoftware" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0txgesu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1colra4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="Task_0h2nq31" name="Call APP-C Resume Traffic" calledElement="AppCClient"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionResumeTraffic" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="errorCode" /> + <camunda:out source="errorText" target="errorText" /> + <camunda:out source="workStep" target="workStep" /> + <camunda:out source="failedActivity" target="failedActivity" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:out source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1c2xyhk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0yja56j</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0trguug</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib"> + <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1j81s6b</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfInPlaceUpdate"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="97" y="72" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="103" y="113" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1"> + <dc:Bounds x="569" y="1073" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="568" y="1114" width="38" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="133" y="90" /> + <di:waypoint xsi:type="dc:Point" x="209" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="171" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="209" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="309" y="90" /> + <di:waypoint xsi:type="dc:Point" x="373" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="341" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1"> + <dc:Bounds x="373" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125"> + <di:waypoint xsi:type="dc:Point" x="473" y="237" /> + <di:waypoint xsi:type="dc:Point" x="513" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="493" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4"> + <dc:Bounds x="415" y="1051" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125"> + <di:waypoint xsi:type="dc:Point" x="515" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="549" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="549" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="569" y="1091" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="564" y="1091" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10"> + <dc:Bounds x="126" y="1051" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1"> + <dc:Bounds x="269" y="1051" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27"> + <di:waypoint xsi:type="dc:Point" x="226" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="248" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="248" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="269" y="1091" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="263" y="1091" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="103" y="1374" width="836" height="242" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3"> + <dc:Bounds x="167" y="1468" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="146" y="1509" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3"> + <dc:Bounds x="613" y="1446" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136"> + <di:waypoint xsi:type="dc:Point" x="203" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="233" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="218" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28"> + <di:waypoint xsi:type="dc:Point" x="713" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="731" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2"> + <dc:Bounds x="880" y="1468" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="1509" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="921" y="1468" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="939" y="1509" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3"> + <dc:Bounds x="997" y="1468" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1015" y="1509" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127"> + <di:waypoint xsi:type="dc:Point" x="957" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="997" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="977" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2"> + <dc:Bounds x="748" y="1446" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127"> + <di:waypoint xsi:type="dc:Point" x="369" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="392" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="392" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="415" y="1091" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="407" y="1091" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126"> + <di:waypoint xsi:type="dc:Point" x="848" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="880" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="864" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1459" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1561" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1561" y="989" /> + <di:waypoint xsi:type="dc:Point" x="99" y="989" /> + <di:waypoint xsi:type="dc:Point" x="99" y="1091" /> + <di:waypoint xsi:type="dc:Point" x="126" y="1091" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1482" y="772.5275881403734" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy"> + <di:waypoint xsi:type="dc:Point" x="671" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="90" /> + <di:waypoint xsi:type="dc:Point" x="982" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="156" /> + <di:waypoint xsi:type="dc:Point" x="103" y="237" /> + <di:waypoint xsi:type="dc:Point" x="131" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="543" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j"> + <dc:Bounds x="571" y="50" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l"> + <di:waypoint xsi:type="dc:Point" x="473" y="90" /> + <di:waypoint xsi:type="dc:Point" x="571" y="90" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="522" y="75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1"> + <dc:Bounds x="373" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk"> + <di:waypoint xsi:type="dc:Point" x="231" y="237" /> + <di:waypoint xsi:type="dc:Point" x="279" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="255" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka"> + <dc:Bounds x="608" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt"> + <dc:Bounds x="1058" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge"> + <dc:Bounds x="131" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s"> + <di:waypoint xsi:type="dc:Point" x="226" y="510" /> + <di:waypoint xsi:type="dc:Point" x="266" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="246" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza"> + <di:waypoint xsi:type="dc:Point" x="464" y="510" /> + <di:waypoint xsi:type="dc:Point" x="513" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="489" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9"> + <di:waypoint xsi:type="dc:Point" x="700" y="510" /> + <di:waypoint xsi:type="dc:Point" x="735" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="718" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs"> + <di:waypoint xsi:type="dc:Point" x="223" y="800" /> + <di:waypoint xsi:type="dc:Point" x="266" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="245" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909"> + <di:waypoint xsi:type="dc:Point" x="464" y="800" /> + <di:waypoint xsi:type="dc:Point" x="513" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="489" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi"> + <di:waypoint xsi:type="dc:Point" x="926" y="800" /> + <di:waypoint xsi:type="dc:Point" x="955" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true"> + <dc:Bounds x="279" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="173" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z"> + <di:waypoint xsi:type="dc:Point" x="329" y="237" /> + <di:waypoint xsi:type="dc:Point" x="373" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="213" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true"> + <dc:Bounds x="513" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="163" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi"> + <di:waypoint xsi:type="dc:Point" x="563" y="237" /> + <di:waypoint xsi:type="dc:Point" x="608" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="579" y="214" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit"> + <dc:Bounds x="1592" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf"> + <di:waypoint xsi:type="dc:Point" x="1692" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1774" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1733" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n"> + <di:waypoint xsi:type="dc:Point" x="1799" y="485" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="392" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1806" y="430.60504201680675" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw"> + <di:waypoint xsi:type="dc:Point" x="1799" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="562" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="562" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="604" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1778" y="553" width="42" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true"> + <dc:Bounds x="735" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="731" y="166" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p"> + <di:waypoint xsi:type="dc:Point" x="708" y="237" /> + <di:waypoint xsi:type="dc:Point" x="735" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib"> + <di:waypoint xsi:type="dc:Point" x="316" y="510" /> + <di:waypoint xsi:type="dc:Point" x="341" y="510" /> + <di:waypoint xsi:type="dc:Point" x="341" y="510" /> + <di:waypoint xsi:type="dc:Point" x="364" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="487" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true"> + <dc:Bounds x="513" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="443" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8"> + <di:waypoint xsi:type="dc:Point" x="563" y="510" /> + <di:waypoint xsi:type="dc:Point" x="600" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="491" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true"> + <dc:Bounds x="735" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="716" y="445" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki"> + <di:waypoint xsi:type="dc:Point" x="785" y="510" /> + <di:waypoint xsi:type="dc:Point" x="826" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="804" y="487" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true"> + <dc:Bounds x="266" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="247" y="735" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m"> + <di:waypoint xsi:type="dc:Point" x="316" y="800" /> + <di:waypoint xsi:type="dc:Point" x="364" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="780" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true"> + <dc:Bounds x="513" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="735" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true"> + <dc:Bounds x="1195" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1183" y="728" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6"> + <di:waypoint xsi:type="dc:Point" x="1158" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1195" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1178" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h"> + <dc:Bounds x="1749" y="312" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true"> + <dc:Bounds x="1774" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1755" y="467" width="88" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true"> + <dc:Bounds x="2087" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2047" y="477" width="54" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3"> + <di:waypoint xsi:type="dc:Point" x="1824" y="510" /> + <di:waypoint xsi:type="dc:Point" x="2087" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1922" y="516" width="21" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v"> + <di:waypoint xsi:type="dc:Point" x="926" y="510" /> + <di:waypoint xsi:type="dc:Point" x="955" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nlqlwn_di" bpmnElement="SequenceFlow_1nlqlwn"> + <di:waypoint xsi:type="dc:Point" x="2137" y="510" /> + <di:waypoint xsi:type="dc:Point" x="2261" y="510" /> + <di:waypoint xsi:type="dc:Point" x="2261" y="510" /> + <di:waypoint xsi:type="dc:Point" x="2385" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2249" y="459" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy"> + <di:waypoint xsi:type="dc:Point" x="2112" y="485" /> + <di:waypoint xsi:type="dc:Point" x="2112" y="352" /> + <di:waypoint xsi:type="dc:Point" x="1849" y="352" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2127" y="418.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06ev8or_di" bpmnElement="SequenceFlow_06ev8or"> + <di:waypoint xsi:type="dc:Point" x="304" y="262" /> + <di:waypoint xsi:type="dc:Point" x="304" y="288" /> + <di:waypoint xsi:type="dc:Point" x="304" y="288" /> + <di:waypoint xsi:type="dc:Point" x="304" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="314" y="273" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0o6fb4f_di" bpmnElement="IntermediateThrowEvent_0zmqbae"> + <dc:Bounds x="286" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="269" y="343.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nob5cp_di" bpmnElement="SequenceFlow_0nob5cp"> + <di:waypoint xsi:type="dc:Point" x="1506" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1592" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1549" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_076leae_di" bpmnElement="SequenceFlow_076leae"> + <di:waypoint xsi:type="dc:Point" x="926" y="237" /> + <di:waypoint xsi:type="dc:Point" x="955" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cbpm7l_di" bpmnElement="Task_0e313zv"> + <dc:Bounds x="826" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1rglbmr_di" bpmnElement="ExclusiveGateway_1rglbmr" isMarkerVisible="true"> + <dc:Bounds x="955.192" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="936" y="164" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0du9273_di" bpmnElement="SequenceFlow_0du9273"> + <di:waypoint xsi:type="dc:Point" x="1005" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="212" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1p06jf5_di" bpmnElement="IntermediateThrowEvent_0z0t7rn"> + <dc:Bounds x="1470" y="492" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1455" y="538" width="65" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0xwlxk9_di" bpmnElement="IntermediateThrowEvent_1qkzlba"> + <dc:Bounds x="520" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="344" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cdfjed_di" bpmnElement="SequenceFlow_1cdfjed"> + <di:waypoint xsi:type="dc:Point" x="538" y="262" /> + <di:waypoint xsi:type="dc:Point" x="538" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="544" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_113xxsl_di" bpmnElement="IntermediateThrowEvent_0rnlvmz"> + <dc:Bounds x="742" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="344" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17g62fl_di" bpmnElement="SequenceFlow_17g62fl"> + <di:waypoint xsi:type="dc:Point" x="760" y="262" /> + <di:waypoint xsi:type="dc:Point" x="760" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="766" y="275" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0iyegh1_di" bpmnElement="IntermediateThrowEvent_0v69raz"> + <dc:Bounds x="962" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="343.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zh8r6j_di" bpmnElement="SequenceFlow_0zh8r6j"> + <di:waypoint xsi:type="dc:Point" x="980" y="262" /> + <di:waypoint xsi:type="dc:Point" x="980" y="308" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="285" width="17" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_07pur50_di" bpmnElement="IntermediateThrowEvent_15hlkuq"> + <dc:Bounds x="405" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="381" y="344" width="83" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09lrk4q_di" bpmnElement="SequenceFlow_09lrk4q"> + <di:waypoint xsi:type="dc:Point" x="423" y="308" /> + <di:waypoint xsi:type="dc:Point" x="423" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="438" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1eezqx8_di" bpmnElement="SequenceFlow_1eezqx8"> + <di:waypoint xsi:type="dc:Point" x="658" y="308" /> + <di:waypoint xsi:type="dc:Point" x="658" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="673" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1pog9t5_di" bpmnElement="IntermediateThrowEvent_1lrkrsn"> + <dc:Bounds x="640" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614" y="343.609" width="88" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1rtf0em_di" bpmnElement="IntermediateThrowEvent_1wdxgjm"> + <dc:Bounds x="858" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="844" y="344" width="64" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zzwdwf_di" bpmnElement="SequenceFlow_0zzwdwf"> + <di:waypoint xsi:type="dc:Point" x="876" y="308" /> + <di:waypoint xsi:type="dc:Point" x="876" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06ajc11_di" bpmnElement="SequenceFlow_06ajc11"> + <di:waypoint xsi:type="dc:Point" x="785" y="237" /> + <di:waypoint xsi:type="dc:Point" x="826" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="800" y="212" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_179z9vl_di" bpmnElement="SequenceFlow_179z9vl"> + <di:waypoint xsi:type="dc:Point" x="1146" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1184" y="237" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1165" y="222" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1iio503_di" bpmnElement="Task_0n1d5f2"> + <dc:Bounds x="1046" y="197" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_032tm9y_di" bpmnElement="SequenceFlow_032tm9y"> + <di:waypoint xsi:type="dc:Point" x="1096" y="308" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1111" y="292.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0jhmy9d_di" bpmnElement="IntermediateThrowEvent_1552q1o"> + <dc:Bounds x="1078" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1061" y="344" width="70" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_148eo7w_di" bpmnElement="ExclusiveGateway_148eo7w" isMarkerVisible="true"> + <dc:Bounds x="1184.192" y="212" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1167" y="149" width="83" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cjiv6i_di" bpmnElement="SequenceFlow_1cjiv6i"> + <di:waypoint xsi:type="dc:Point" x="1234" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1285" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1285" y="401" /> + <di:waypoint xsi:type="dc:Point" x="98" y="401" /> + <di:waypoint xsi:type="dc:Point" x="98" y="510" /> + <di:waypoint xsi:type="dc:Point" x="126" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1249" y="211" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1qtnv6e_di" bpmnElement="IntermediateThrowEvent_16r1jxm"> + <dc:Bounds x="1191" y="299" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1174" y="334.609" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q3oxtf_di" bpmnElement="SequenceFlow_1q3oxtf"> + <di:waypoint xsi:type="dc:Point" x="1209" y="262" /> + <di:waypoint xsi:type="dc:Point" x="1209" y="299" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1215" y="270.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1uscpd8_di" bpmnElement="IntermediateThrowEvent_1agn6fn"> + <dc:Bounds x="273" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="617" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1j81s6b_di" bpmnElement="SequenceFlow_1j81s6b"> + <di:waypoint xsi:type="dc:Point" x="291" y="535" /> + <di:waypoint xsi:type="dc:Point" x="291" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="297" y="548" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1ogs7t2_di" bpmnElement="IntermediateThrowEvent_02hirbh"> + <dc:Bounds x="396" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="384" y="617" width="59" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16t9vai_di" bpmnElement="SequenceFlow_16t9vai"> + <di:waypoint xsi:type="dc:Point" x="414" y="581" /> + <di:waypoint xsi:type="dc:Point" x="414" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="429" y="565.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0f6lh1n_di" bpmnElement="IntermediateThrowEvent_0pnzq4y"> + <dc:Bounds x="520" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="617" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_02mk8vs_di" bpmnElement="SequenceFlow_02mk8vs"> + <di:waypoint xsi:type="dc:Point" x="538" y="535" /> + <di:waypoint xsi:type="dc:Point" x="538" y="558" /> + <di:waypoint xsi:type="dc:Point" x="538" y="558" /> + <di:waypoint xsi:type="dc:Point" x="538" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="544" y="558" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_17zqxs1_di" bpmnElement="IntermediateThrowEvent_1s7qalx"> + <dc:Bounds x="632" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="607" y="617" width="85" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1urt6le_di" bpmnElement="SequenceFlow_1urt6le"> + <di:waypoint xsi:type="dc:Point" x="650" y="581" /> + <di:waypoint xsi:type="dc:Point" x="650" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="665" y="565.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_077262y_di" bpmnElement="IntermediateThrowEvent_0l0rp9y"> + <dc:Bounds x="742" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="617" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11o5j55_di" bpmnElement="SequenceFlow_11o5j55"> + <di:waypoint xsi:type="dc:Point" x="760" y="535" /> + <di:waypoint xsi:type="dc:Point" x="760" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="766" y="548" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_19an3h2_di" bpmnElement="ExclusiveGateway_19an3h2" isMarkerVisible="true"> + <dc:Bounds x="955" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="953" y="441" width="53" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fuaq5k_di" bpmnElement="SequenceFlow_1fuaq5k"> + <di:waypoint xsi:type="dc:Point" x="1005" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1064" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1030" y="485" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_199cotj_di" bpmnElement="IntermediateThrowEvent_0a1s69h"> + <dc:Bounds x="858" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="844" y="617" width="63" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0if6xj4_di" bpmnElement="SequenceFlow_0if6xj4"> + <di:waypoint xsi:type="dc:Point" x="876" y="581" /> + <di:waypoint xsi:type="dc:Point" x="876" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="565.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04gth9f_di" bpmnElement="SequenceFlow_04gth9f"> + <di:waypoint xsi:type="dc:Point" x="980" y="535" /> + <di:waypoint xsi:type="dc:Point" x="980" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="558" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ly7m7x_di" bpmnElement="IntermediateThrowEvent_11vs7u4"> + <dc:Bounds x="962" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="617" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1v59be9_di" bpmnElement="SequenceFlow_1v59be9"> + <di:waypoint xsi:type="dc:Point" x="1114" y="581" /> + <di:waypoint xsi:type="dc:Point" x="1114" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1129" y="565.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0gvhqjf_di" bpmnElement="IntermediateThrowEvent_162mb2a"> + <dc:Bounds x="1096" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1084" y="617" width="60" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0ssvndw_di" bpmnElement="ExclusiveGateway_0ssvndw" isMarkerVisible="true"> + <dc:Bounds x="1195.192" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1177" y="439" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04rprct_di" bpmnElement="SequenceFlow_04rprct"> + <di:waypoint xsi:type="dc:Point" x="1164" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1195" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1180" y="495" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_14s9cw9_di" bpmnElement="IntermediateThrowEvent_1yfd3sz"> + <dc:Bounds x="1202" y="581" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1185" y="617" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1uceq96_di" bpmnElement="SequenceFlow_1uceq96"> + <di:waypoint xsi:type="dc:Point" x="1220" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1220" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1226" y="548" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0txgesu_di" bpmnElement="SequenceFlow_0txgesu"> + <di:waypoint xsi:type="dc:Point" x="1245" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1286" y="510" /> + <di:waypoint xsi:type="dc:Point" x="1286" y="676" /> + <di:waypoint xsi:type="dc:Point" x="95" y="676" /> + <di:waypoint xsi:type="dc:Point" x="95" y="800" /> + <di:waypoint xsi:type="dc:Point" x="123" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1259" y="488" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0trguug_di" bpmnElement="SequenceFlow_0trguug"> + <di:waypoint xsi:type="dc:Point" x="701" y="800" /> + <di:waypoint xsi:type="dc:Point" x="735" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="718" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ozuicc_di" bpmnElement="ExclusiveGateway_1ozuicc" isMarkerVisible="true"> + <dc:Bounds x="735.304" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="716" y="735" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q3bwlt_di" bpmnElement="SequenceFlow_1q3bwlt"> + <di:waypoint xsi:type="dc:Point" x="785.304" y="800" /> + <di:waypoint xsi:type="dc:Point" x="826" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="800" y="775" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_123vjyo_di" bpmnElement="ExclusiveGateway_123vjyo" isMarkerVisible="true"> + <dc:Bounds x="955" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="946" y="735" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1nr9o85_di" bpmnElement="SequenceFlow_1nr9o85"> + <di:waypoint xsi:type="dc:Point" x="1005" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1037" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1037" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1024" y="772" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11ot6vh_di" bpmnElement="IntermediateThrowEvent_1nij04n"> + <dc:Bounds x="273" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="921.6089999999999" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gagrha_di" bpmnElement="SequenceFlow_1gagrha"> + <di:waypoint xsi:type="dc:Point" x="291" y="825" /> + <di:waypoint xsi:type="dc:Point" x="291" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="297" y="845.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16igl7b_di" bpmnElement="SequenceFlow_16igl7b"> + <di:waypoint xsi:type="dc:Point" x="414" y="886" /> + <di:waypoint xsi:type="dc:Point" x="414" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="429" y="863" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_174wgan_di" bpmnElement="IntermediateThrowEvent_0fhmhsk"> + <dc:Bounds x="396" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="384" y="922" width="59" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1urpp94_di" bpmnElement="SequenceFlow_1urpp94"> + <di:waypoint xsi:type="dc:Point" x="538" y="825" /> + <di:waypoint xsi:type="dc:Point" x="538" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="544" y="855.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1vi3wf9_di" bpmnElement="IntermediateThrowEvent_0vf0a28"> + <dc:Bounds x="520" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503" y="922" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c2xyhk_di" bpmnElement="SequenceFlow_1c2xyhk"> + <di:waypoint xsi:type="dc:Point" x="563" y="800" /> + <di:waypoint xsi:type="dc:Point" x="601" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="577" y="775" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_165ve6q_di" bpmnElement="IntermediateThrowEvent_0pxvl24"> + <dc:Bounds x="632" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="607" y="922" width="85" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0yja56j_di" bpmnElement="SequenceFlow_0yja56j"> + <di:waypoint xsi:type="dc:Point" x="650" y="886" /> + <di:waypoint xsi:type="dc:Point" x="651" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="651" y="848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xg6pwh_di" bpmnElement="SequenceFlow_1xg6pwh"> + <di:waypoint xsi:type="dc:Point" x="760" y="825" /> + <di:waypoint xsi:type="dc:Point" x="760" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="766" y="855.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0unfhc9_di" bpmnElement="IntermediateThrowEvent_1vjqksl"> + <dc:Bounds x="742" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="922" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1om2udh_di" bpmnElement="IntermediateThrowEvent_1vwqesb"> + <dc:Bounds x="859" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="922" width="70" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hwtq9x_di" bpmnElement="SequenceFlow_1hwtq9x"> + <di:waypoint xsi:type="dc:Point" x="877" y="886" /> + <di:waypoint xsi:type="dc:Point" x="876" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="877" y="848" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ttowkv_di" bpmnElement="SequenceFlow_0ttowkv"> + <di:waypoint xsi:type="dc:Point" x="980" y="825" /> + <di:waypoint xsi:type="dc:Point" x="980" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986" y="855.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1u04oef_di" bpmnElement="IntermediateThrowEvent_0m9jtv2"> + <dc:Bounds x="962" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="945" y="922" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1bsxf5o_di" bpmnElement="IntermediateThrowEvent_0pk24h2"> + <dc:Bounds x="155" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="143" y="922" width="59" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1colra4_di" bpmnElement="SequenceFlow_1colra4"> + <di:waypoint xsi:type="dc:Point" x="173" y="886" /> + <di:waypoint xsi:type="dc:Point" x="173" y="863" /> + <di:waypoint xsi:type="dc:Point" x="173" y="863" /> + <di:waypoint xsi:type="dc:Point" x="173" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="188" y="863" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_18j1ow5_di" bpmnElement="ExclusiveGateway_18j1ow5" isMarkerVisible="true"> + <dc:Bounds x="1409.304" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1396" y="724" width="75" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0u6ho2p_di" bpmnElement="SequenceFlow_0u6ho2p"> + <di:waypoint xsi:type="dc:Point" x="1245" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1275" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1255" y="775" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08r89q9_di" bpmnElement="Task_0y1h8go"> + <dc:Bounds x="1275" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tzax6l_di" bpmnElement="SequenceFlow_1tzax6l"> + <di:waypoint xsi:type="dc:Point" x="1375" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1409" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1392" y="775" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_06j33fe_di" bpmnElement="IntermediateThrowEvent_0pmevcz"> + <dc:Bounds x="1090" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1072" y="922" width="72" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16ff86u_di" bpmnElement="SequenceFlow_16ff86u"> + <di:waypoint xsi:type="dc:Point" x="1108" y="886" /> + <di:waypoint xsi:type="dc:Point" x="1108" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1123" y="853" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k3zxpd_di" bpmnElement="SequenceFlow_0k3zxpd"> + <di:waypoint xsi:type="dc:Point" x="1220" y="825" /> + <di:waypoint xsi:type="dc:Point" x="1220" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1226" y="855.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_105mp22_di" bpmnElement="IntermediateThrowEvent_1awckg7"> + <dc:Bounds x="1202" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1185" y="922" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0kglv4e_di" bpmnElement="IntermediateThrowEvent_1b3smly"> + <dc:Bounds x="1307" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1285" y="922" width="79" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09xxorv_di" bpmnElement="SequenceFlow_09xxorv"> + <di:waypoint xsi:type="dc:Point" x="1325" y="886" /> + <di:waypoint xsi:type="dc:Point" x="1325" y="840" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1340" y="853" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0w8mkkn_di" bpmnElement="SequenceFlow_0w8mkkn"> + <di:waypoint xsi:type="dc:Point" x="1434" y="825" /> + <di:waypoint xsi:type="dc:Point" x="1434" y="886" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1440" y="855.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0jwgx1d_di" bpmnElement="IntermediateThrowEvent_1cw8gsw"> + <dc:Bounds x="1416" y="886" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1399" y="922" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0zw87jy_di" bpmnElement="IntermediateThrowEvent_0x846wp"> + <dc:Bounds x="158" y="1186" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="140" y="1221.609" width="72" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07uuj2d_di" bpmnElement="SequenceFlow_07uuj2d"> + <di:waypoint xsi:type="dc:Point" x="176" y="1186" /> + <di:waypoint xsi:type="dc:Point" x="176" y="1160" /> + <di:waypoint xsi:type="dc:Point" x="176" y="1160" /> + <di:waypoint xsi:type="dc:Point" x="176" y="1131" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="191" y="1160" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ueoglv_di" bpmnElement="SequenceFlow_0ueoglv"> + <di:waypoint xsi:type="dc:Point" x="2117" y="490" /> + <di:waypoint xsi:type="dc:Point" x="2173" y="264" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2145" y="362" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15fqlwe_di" bpmnElement="SequenceFlow_15fqlwe"> + <di:waypoint xsi:type="dc:Point" x="2120" y="493" /> + <di:waypoint xsi:type="dc:Point" x="2209" y="290" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2165" y="377" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yuj0l5_di" bpmnElement="SequenceFlow_0yuj0l5"> + <di:waypoint xsi:type="dc:Point" x="2122" y="495" /> + <di:waypoint xsi:type="dc:Point" x="2247" y="319" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2185" y="392" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1abb030_di" bpmnElement="SequenceFlow_1abb030"> + <di:waypoint xsi:type="dc:Point" x="2125" y="498" /> + <di:waypoint xsi:type="dc:Point" x="2284" y="348" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2205" y="408" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ls3ej5_di" bpmnElement="SequenceFlow_0ls3ej5"> + <di:waypoint xsi:type="dc:Point" x="2127" y="500" /> + <di:waypoint xsi:type="dc:Point" x="2313" y="386" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2220" y="428" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ar6ikk_di" bpmnElement="SequenceFlow_1ar6ikk"> + <di:waypoint xsi:type="dc:Point" x="2133" y="506" /> + <di:waypoint xsi:type="dc:Point" x="2372" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2253" y="468" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_171iq7e_di" bpmnElement="SequenceFlow_171iq7e"> + <di:waypoint xsi:type="dc:Point" x="2134" y="513" /> + <di:waypoint xsi:type="dc:Point" x="2372" y="553" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2253" y="518" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1553o9f_di" bpmnElement="SequenceFlow_1553o9f"> + <di:waypoint xsi:type="dc:Point" x="2129" y="518" /> + <di:waypoint xsi:type="dc:Point" x="2353" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2241" y="541.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dmxwel_di" bpmnElement="SequenceFlow_0dmxwel"> + <di:waypoint xsi:type="dc:Point" x="2125" y="522" /> + <di:waypoint xsi:type="dc:Point" x="2294" y="685" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2210" y="588.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1id2p8y_di" bpmnElement="SequenceFlow_1id2p8y"> + <di:waypoint xsi:type="dc:Point" x="2121" y="526" /> + <di:waypoint xsi:type="dc:Point" x="2247" y="717" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2184" y="607" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t53vux_di" bpmnElement="SequenceFlow_0t53vux"> + <di:waypoint xsi:type="dc:Point" x="2119" y="528" /> + <di:waypoint xsi:type="dc:Point" x="2210" y="737" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2165" y="618" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11ck4qe_di" bpmnElement="SequenceFlow_11ck4qe"> + <di:waypoint xsi:type="dc:Point" x="2117" y="530" /> + <di:waypoint xsi:type="dc:Point" x="2172" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2145" y="630" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16d2ln4_di" bpmnElement="SequenceFlow_16d2ln4"> + <di:waypoint xsi:type="dc:Point" x="2113" y="534" /> + <di:waypoint xsi:type="dc:Point" x="2128" y="782" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2121" y="643" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_17syve1_di" bpmnElement="IntermediateThrowEvent_0rz6jh4"> + <dc:Bounds x="2159" y="229" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2165" y="189" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0nv8aic_di" bpmnElement="IntermediateThrowEvent_1wip9vc"> + <dc:Bounds x="2199" y="256" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2213" y="235" width="89" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1g4pmwc_di" bpmnElement="IntermediateThrowEvent_1hki8xj"> + <dc:Bounds x="2240" y="287" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2280" y="256" width="64" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ypnogn_di" bpmnElement="IntermediateThrowEvent_1gfnt9b"> + <dc:Bounds x="2279" y="319" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2325" y="305" width="71" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1i9ttzs_di" bpmnElement="IntermediateThrowEvent_1gzhs1a"> + <dc:Bounds x="2311" y="359" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2357" y="356" width="64" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0840e02_di" bpmnElement="IntermediateThrowEvent_0385ons"> + <dc:Bounds x="2343" y="392" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2393" y="383" width="60" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1quapjx_di" bpmnElement="SequenceFlow_1quapjx"> + <di:waypoint xsi:type="dc:Point" x="2130" y="503" /> + <di:waypoint xsi:type="dc:Point" x="2345" y="416" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2239" y="445" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1xq4kx8_di" bpmnElement="IntermediateThrowEvent_1p9i2bi"> + <dc:Bounds x="2371" y="439" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2412" y="440" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_03b4y60_di" bpmnElement="IntermediateThrowEvent_0ee7wot"> + <dc:Bounds x="2385" y="493" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2433" y="503" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1ghdnpx_di" bpmnElement="IntermediateThrowEvent_0rp1ax0"> + <dc:Bounds x="2371" y="538" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2424" y="544" width="60" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1nls1oo_di" bpmnElement="IntermediateThrowEvent_01ngkx2"> + <dc:Bounds x="2352" y="582" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2401" y="587" width="60" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0qt249a_di" bpmnElement="IntermediateThrowEvent_0lbd0cs"> + <dc:Bounds x="2289" y="679" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2337" y="706" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0frwxx8_di" bpmnElement="IntermediateThrowEvent_1ycbds3"> + <dc:Bounds x="2240" y="713" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2276" y="741" width="74" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1vcx5cz_di" bpmnElement="IntermediateThrowEvent_1cp0hkt"> + <dc:Bounds x="2199" y="735" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2233" y="759" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1y8fmlw_di" bpmnElement="IntermediateThrowEvent_184w0i8"> + <dc:Bounds x="2159" y="759" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2199" y="796" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_024zi9r_di" bpmnElement="IntermediateThrowEvent_1u9f9kp"> + <dc:Bounds x="2111" y="782" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2116" y="823" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_08x53cb_di" bpmnElement="IntermediateThrowEvent_18wrvcy"> + <dc:Bounds x="158" y="308" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="134" y="343.09862671660426" width="83" height="37" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_179tyul_di" bpmnElement="SequenceFlow_179tyul"> + <di:waypoint xsi:type="dc:Point" x="180" y="309" /> + <di:waypoint xsi:type="dc:Point" x="181" y="277" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="181" y="278" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_101n488_di" bpmnElement="SequenceFlow_101n488"> + <di:waypoint xsi:type="dc:Point" x="2113" y="486" /> + <di:waypoint xsi:type="dc:Point" x="2127" y="255" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2120" y="356" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1fnxvhb_di" bpmnElement="IntermediateThrowEvent_17k1fmk"> + <dc:Bounds x="2111" y="220" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2086" y="170" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1g6967r_di" bpmnElement="IntermediateThrowEvent_1m7fq7a"> + <dc:Bounds x="158" y="582" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="146" y="617.147315855181" width="60" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ood2pr_di" bpmnElement="SequenceFlow_1ood2pr"> + <di:waypoint xsi:type="dc:Point" x="176" y="582" /> + <di:waypoint xsi:type="dc:Point" x="176" y="550" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="191" y="566" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1y81g09_di" bpmnElement="Task_0eae8go"> + <dc:Bounds x="826" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0n20gvh_di" bpmnElement="Task_1dtbnuy"> + <dc:Bounds x="126" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_08wyi5l_di" bpmnElement="Task_1sove95"> + <dc:Bounds x="826" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1a5n5ff_di" bpmnElement="Task_1fj63ov"> + <dc:Bounds x="364" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0mp082m_di" bpmnElement="Task_1ca5ctq"> + <dc:Bounds x="364" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_07dp1m8_di" bpmnElement="IntermediateThrowEvent_1kbtw2p"> + <dc:Bounds x="2324" y="634" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2345" y="668" width="60" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_021ah63_di" bpmnElement="SequenceFlow_021ah63"> + <di:waypoint xsi:type="dc:Point" x="2127" y="520" /> + <di:waypoint xsi:type="dc:Point" x="2327" y="643" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2227" y="566.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1qr054i_di" bpmnElement="ScriptTask_1qr054i"> + <dc:Bounds x="1922" y="559" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1g8h3lt_di" bpmnElement="ExclusiveGateway_1g8h3lt" isMarkerVisible="true"> + <dc:Bounds x="2008" y="696" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2002" y="746" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1bv97n4_di" bpmnElement="IntermediateCatchEvent_1bv97n4"> + <dc:Bounds x="1954" y="671" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1889" y="683" width="55" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ai205d_di" bpmnElement="SequenceFlow_0ai205d"> + <di:waypoint xsi:type="dc:Point" x="1972" y="639" /> + <di:waypoint xsi:type="dc:Point" x="1972" y="671" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1987" y="645" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a2cv6d_di" bpmnElement="SequenceFlow_0a2cv6d"> + <di:waypoint xsi:type="dc:Point" x="1972" y="707" /> + <di:waypoint xsi:type="dc:Point" x="1972" y="721" /> + <di:waypoint xsi:type="dc:Point" x="2008" y="721" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1987" y="714" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ijc733_di" bpmnElement="SequenceFlow_1ijc733"> + <di:waypoint xsi:type="dc:Point" x="1816" y="518" /> + <di:waypoint xsi:type="dc:Point" x="1922" y="572" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1852" y="550" width="27" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kntfys_di" bpmnElement="SequenceFlow_1kntfys"> + <di:waypoint xsi:type="dc:Point" x="2058" y="721" /> + <di:waypoint xsi:type="dc:Point" x="2085" y="721" /> + <di:waypoint xsi:type="dc:Point" x="2085" y="510" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2063" y="706" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0h64c4o_di" bpmnElement="SequenceFlow_0h64c4o"> + <di:waypoint xsi:type="dc:Point" x="2033" y="696" /> + <di:waypoint xsi:type="dc:Point" x="2033" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="237" /> + <di:waypoint xsi:type="dc:Point" x="1799" y="312" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2041" y="646" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1ahvtrx_di" bpmnElement="Task_0zbogrm"> + <dc:Bounds x="1749" y="604" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0syfgbo_di" bpmnElement="SequenceFlow_0syfgbo"> + <di:waypoint xsi:type="dc:Point" x="1749" y="644" /> + <di:waypoint xsi:type="dc:Point" x="1710" y="644" /> + <di:waypoint xsi:type="dc:Point" x="1710" y="352" /> + <di:waypoint xsi:type="dc:Point" x="1749" y="352" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1725" y="498" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0k9fydp_di" bpmnElement="Task_1cfkcss"> + <dc:Bounds x="600" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1kw9f96_di" bpmnElement="Task_1mdr1nd"> + <dc:Bounds x="1064" y="470" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0d1uai9_di" bpmnElement="Task_1hdg951"> + <dc:Bounds x="123" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1onqhy5_di" bpmnElement="Task_0h2nq31"> + <dc:Bounds x="601" y="760" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true"> + <dc:Bounds x="266" y="485" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="257" y="439" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qnzi6i_di" bpmnElement="SequenceFlow_1qnzi6i"> + <di:waypoint xsi:type="dc:Point" x="458" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="491" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="475" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1ufdbl8_di" bpmnElement="Task_13sybx8"> + <dc:Bounds x="358" y="1446" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hvg70o_di" bpmnElement="SequenceFlow_0hvg70o"> + <di:waypoint xsi:type="dc:Point" x="333" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="358" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="346" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1qacr3e_di" bpmnElement="Task_0ilgwhw"> + <dc:Bounds x="233" y="1446" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ib8gb8_di" bpmnElement="SequenceFlow_0ib8gb8"> + <di:waypoint xsi:type="dc:Point" x="591" y="1486" /> + <di:waypoint xsi:type="dc:Point" x="613" y="1486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="602" y="1471" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_032b6ij_di" bpmnElement="Task_1mt62gu"> + <dc:Bounds x="491" y="1446" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn new file mode 100644 index 0000000000..f7023c33fc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCompareModelVersions" name="DoCompareModelVersions" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="DoCompareModelVersions" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCompareModelVersions() +csi.doCompareModelVersions(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_04rn9mp" /> + <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="StartCompare"> + <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartCompare" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:endEvent id="EndEvent_0x8im5g"> + <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" /> + <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0xtpw6j"> + <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_05a2pr9"> + <bpmn2:incoming>SequenceFlow_17mr4jl</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17mr4jl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" /> + <bpmn2:sequenceFlow id="SequenceFlow_17mr4jl" name="" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" /> + </bpmn2:subProcess> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0se5nzs" name="GoTo Decompose_Service_Original"> + <bpmn2:incoming>SequenceFlow_0enm2cg</bpmn2:incoming> + <bpmn2:linkEventDefinition name="Decompose_Service_Original" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1odhh8p" name="PostProcess Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1pe6r93</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0enm2cg</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCompareModelVersions() +dcsi.processDecomposition_Target(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1va14ul" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo_Target" target="serviceModelInfo" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lta49u</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pe6r93</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1fau2rr" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0frea3k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lta49u</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCompareModelVersions() +dcsi.prepareDecomposeService_Target(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_07fy2ke" name="Decompose_Service_Target"> + <bpmn2:outgoing>SequenceFlow_0frea3k</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="Decompose_Service_Target" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1pe6r93" sourceRef="CallActivity_1va14ul" targetRef="ScriptTask_1odhh8p" /> + <bpmn2:sequenceFlow id="SequenceFlow_0enm2cg" sourceRef="ScriptTask_1odhh8p" targetRef="IntermediateThrowEvent_0se5nzs" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lta49u" sourceRef="ScriptTask_1fau2rr" targetRef="CallActivity_1va14ul" /> + <bpmn2:sequenceFlow id="SequenceFlow_0frea3k" sourceRef="IntermediateCatchEvent_07fy2ke" targetRef="ScriptTask_1fau2rr" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0b436w1" name="GoTo StartCompare"> + <bpmn2:incoming>SequenceFlow_08zjjzw</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartCompare" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1d9qb54" name="PostProcess Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1wudpuj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08zjjzw</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCompareModelVersions() +dcsi.processDecomposition_Original(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1fc56sd" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo_Original" target="serviceModelInfo" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04ciw70</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wudpuj</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1i06996" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1fgkvpr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04ciw70</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCompareModelVersions() +dcsi.prepareDecomposeService_Original(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1m9q0j7" name="Decompose_Service_Original"> + <bpmn2:outgoing>SequenceFlow_1fgkvpr</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="Decompose_Service_Original" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_08zjjzw" sourceRef="ScriptTask_1d9qb54" targetRef="IntermediateThrowEvent_0b436w1" /> + <bpmn2:sequenceFlow id="SequenceFlow_1wudpuj" sourceRef="CallActivity_1fc56sd" targetRef="ScriptTask_1d9qb54" /> + <bpmn2:sequenceFlow id="SequenceFlow_04ciw70" sourceRef="ScriptTask_1i06996" targetRef="CallActivity_1fc56sd" /> + <bpmn2:sequenceFlow id="SequenceFlow_1fgkvpr" sourceRef="IntermediateCatchEvent_1m9q0j7" targetRef="ScriptTask_1i06996" /> + <bpmn2:startEvent id="StartEvent_13da9hl" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1chfao3</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_0nie46r" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1chfao3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_164yb3r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCompareModelVersions() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dhdmdy" name="GoTo Decompose_Service_Target"> + <bpmn2:incoming>SequenceFlow_164yb3r</bpmn2:incoming> + <bpmn2:linkEventDefinition name="Decompose_Service_Target" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1chfao3" name="" sourceRef="StartEvent_13da9hl" targetRef="ScriptTask_0nie46r" /> + <bpmn2:sequenceFlow id="SequenceFlow_164yb3r" name="" sourceRef="ScriptTask_0nie46r" targetRef="IntermediateThrowEvent_1dhdmdy" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCompareModelVersions"> + <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp"> + <dc:Bounds x="426" y="426" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae"> + <di:waypoint xsi:type="dc:Point" x="10" y="466" /> + <di:waypoint xsi:type="dc:Point" x="426" y="466" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="173" y="445" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664"> + <dc:Bounds x="-26" y="448" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-42" y="488" width="68" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g"> + <dc:Bounds x="1040" y="448" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1013" y="488" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2"> + <di:waypoint xsi:type="dc:Point" x="526" y="466" /> + <di:waypoint xsi:type="dc:Point" x="1040" y="466" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="738" y="445" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true"> + <dc:Bounds x="221" y="751" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j"> + <dc:Bounds x="289" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="859" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9"> + <dc:Bounds x="582" y="818" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="465" y="859" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3"> + <dc:Bounds x="393" y="796" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb"> + <di:waypoint xsi:type="dc:Point" x="325" y="836" /> + <di:waypoint xsi:type="dc:Point" x="393" y="836" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="224" y="821" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17mr4jl_di" bpmnElement="SequenceFlow_17mr4jl"> + <di:waypoint xsi:type="dc:Point" x="493" y="836" /> + <di:waypoint xsi:type="dc:Point" x="582" y="836" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="405" y="821" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0se5nzs_di" bpmnElement="IntermediateThrowEvent_0se5nzs"> + <dc:Bounds x="1048" y="189" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1022" y="230" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1odhh8p_di" bpmnElement="ScriptTask_1odhh8p"> + <dc:Bounds x="711" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1va14ul_di" bpmnElement="CallActivity_1va14ul"> + <dc:Bounds x="426" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fau2rr_di" bpmnElement="ScriptTask_1fau2rr"> + <dc:Bounds x="144" y="167" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_07fy2ke_di" bpmnElement="IntermediateCatchEvent_07fy2ke"> + <dc:Bounds x="-26" y="189" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-49" y="225" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pe6r93_di" bpmnElement="SequenceFlow_1pe6r93"> + <di:waypoint xsi:type="dc:Point" x="526" y="207" /> + <di:waypoint xsi:type="dc:Point" x="711" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573.5" y="186" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0enm2cg_di" bpmnElement="SequenceFlow_0enm2cg"> + <di:waypoint xsi:type="dc:Point" x="811" y="207" /> + <di:waypoint xsi:type="dc:Point" x="906" y="207" /> + <di:waypoint xsi:type="dc:Point" x="906" y="207" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="876" y="201" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lta49u_di" bpmnElement="SequenceFlow_1lta49u"> + <di:waypoint xsi:type="dc:Point" x="244" y="207" /> + <di:waypoint xsi:type="dc:Point" x="426" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="290" y="186" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0frea3k_di" bpmnElement="SequenceFlow_0frea3k"> + <di:waypoint xsi:type="dc:Point" x="10" y="207" /> + <di:waypoint xsi:type="dc:Point" x="144" y="207" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="32" y="186" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0b436w1_di" bpmnElement="IntermediateThrowEvent_0b436w1"> + <dc:Bounds x="1047" y="311" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1032" y="352" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1d9qb54_di" bpmnElement="ScriptTask_1d9qb54"> + <dc:Bounds x="711" y="290" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1fc56sd_di" bpmnElement="CallActivity_1fc56sd"> + <dc:Bounds x="426" y="290" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1i06996_di" bpmnElement="ScriptTask_1i06996"> + <dc:Bounds x="144" y="290" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1m9q0j7_di" bpmnElement="IntermediateCatchEvent_1m9q0j7"> + <dc:Bounds x="-26" y="312" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-50" y="348" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08zjjzw_di" bpmnElement="SequenceFlow_08zjjzw"> + <di:waypoint xsi:type="dc:Point" x="811" y="330" /> + <di:waypoint xsi:type="dc:Point" x="1047" y="329" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="929" y="308.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wudpuj_di" bpmnElement="SequenceFlow_1wudpuj"> + <di:waypoint xsi:type="dc:Point" x="526" y="330" /> + <di:waypoint xsi:type="dc:Point" x="711" y="330" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="618.5" y="309" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04ciw70_di" bpmnElement="SequenceFlow_04ciw70"> + <di:waypoint xsi:type="dc:Point" x="244" y="330" /> + <di:waypoint xsi:type="dc:Point" x="426" y="330" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="245" y="309" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fgkvpr_di" bpmnElement="SequenceFlow_1fgkvpr"> + <di:waypoint xsi:type="dc:Point" x="10" y="330" /> + <di:waypoint xsi:type="dc:Point" x="144" y="330" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-13" y="309" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_13da9hl_di" bpmnElement="StartEvent_13da9hl"> + <dc:Bounds x="-20" y="83" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-26" y="124" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nie46r_di" bpmnElement="ScriptTask_0nie46r"> + <dc:Bounds x="340" y="61" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1dhdmdy_di" bpmnElement="IntermediateThrowEvent_1dhdmdy"> + <dc:Bounds x="1048" y="83" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1023" y="123" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1chfao3_di" bpmnElement="SequenceFlow_1chfao3"> + <di:waypoint xsi:type="dc:Point" x="16" y="101" /> + <di:waypoint xsi:type="dc:Point" x="181" y="101" /> + <di:waypoint xsi:type="dc:Point" x="181" y="101" /> + <di:waypoint xsi:type="dc:Point" x="340" y="101" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="196" y="95" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_164yb3r_di" bpmnElement="SequenceFlow_164yb3r"> + <di:waypoint xsi:type="dc:Point" x="440" y="101" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="101" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744" y="80" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn new file mode 100644 index 0000000000..c04c2d97ea --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCompareModelofE2EServiceInstance" name="DoCompareModelofE2EServiceInstance" isExecutable="true"> + <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="CallActivity_1va14ul" /> + <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="StartCompare"> + <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartCompare" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:endEvent id="EndEvent_0x8im5g"> + <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_1odhh8p" targetRef="EndEvent_0x8im5g" /> + <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0xtpw6j"> + <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_05a2pr9"> + <bpmn2:incoming>SequenceFlow_17mr4jl</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17mr4jl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" /> + <bpmn2:sequenceFlow id="SequenceFlow_17mr4jl" name="" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" /> + </bpmn2:subProcess> + <bpmn2:startEvent id="StartEvent_13da9hl" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1chfao3</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dhdmdy" name="GoTo StartCompare"> + <bpmn2:incoming>SequenceFlow_1cpg3ku</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartCompare" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1chfao3" name="" sourceRef="StartEvent_13da9hl" targetRef="ScriptTask_0ba0el1" /> + <bpmn2:callActivity id="CallActivity_1va14ul" name="Call DoCompareModelVersions" calledElement="DoCompareModelVersions"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="serviceDecomposition_Target" target="serviceDecomposition_Target" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="model-invariant-id-target" target="model-invariant-id-target" /> + <camunda:in source="model-version-id-target" target="model-version-id-target" /> + <camunda:in source="model-invariant-id-original" target="model-invariant-id-original" /> + <camunda:in source="model-version-id-original" target="model-version-id-original" /> + <camunda:out source="addResourceList" target="addResourceList" /> + <camunda:out source="delResourceList" target="delResourceList" /> + <camunda:out source="serviceDecomposition_Original" target="serviceDecomposition_Original" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pe6r93</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1odhh8p" name="Post for Compare Model Versions " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1pe6r93</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCompareModelofE2EServiceInstance() +dcsi.postCompareModelVersions(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1pe6r93" sourceRef="CallActivity_1va14ul" targetRef="ScriptTask_1odhh8p" /> + <bpmn2:scriptTask id="ScriptTask_0ba0el1" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1chfao3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xzphe4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCompareModelofE2EServiceInstance() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1a3n88w" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1xzphe4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b6eqin</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_18k4xnm" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0b6eqin</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cpg3ku</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCompareModelofE2EServiceInstance() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xzphe4" name="" sourceRef="ScriptTask_0ba0el1" targetRef="CallActivity_1a3n88w" /> + <bpmn2:sequenceFlow id="SequenceFlow_0b6eqin" sourceRef="CallActivity_1a3n88w" targetRef="ScriptTask_18k4xnm" /> + <bpmn2:sequenceFlow id="SequenceFlow_1cpg3ku" sourceRef="ScriptTask_18k4xnm" targetRef="IntermediateThrowEvent_1dhdmdy" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCompareModelofE2EServiceInstance"> + <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae"> + <di:waypoint xsi:type="dc:Point" x="6" y="259" /> + <di:waypoint xsi:type="dc:Point" x="363" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="139.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664"> + <dc:Bounds x="-30" y="241" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-46" y="281" width="68" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g"> + <dc:Bounds x="1038" y="241" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1011" y="281" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2"> + <di:waypoint xsi:type="dc:Point" x="801" y="259" /> + <di:waypoint xsi:type="dc:Point" x="1038" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="874.5" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true"> + <dc:Bounds x="216" y="387" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j"> + <dc:Bounds x="284" y="454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="167" y="495" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9"> + <dc:Bounds x="577" y="454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="460" y="495" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3"> + <dc:Bounds x="388" y="432" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb"> + <di:waypoint xsi:type="dc:Point" x="320" y="472" /> + <di:waypoint xsi:type="dc:Point" x="388" y="472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="219" y="457" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17mr4jl_di" bpmnElement="SequenceFlow_17mr4jl"> + <di:waypoint xsi:type="dc:Point" x="488" y="472" /> + <di:waypoint xsi:type="dc:Point" x="577" y="472" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="400" y="457" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_13da9hl_di" bpmnElement="StartEvent_13da9hl"> + <dc:Bounds x="-20" y="83" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-26" y="124" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1dhdmdy_di" bpmnElement="IntermediateThrowEvent_1dhdmdy"> + <dc:Bounds x="1048" y="83" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1023" y="123" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1chfao3_di" bpmnElement="SequenceFlow_1chfao3"> + <di:waypoint xsi:type="dc:Point" x="16" y="101" /> + <di:waypoint xsi:type="dc:Point" x="211" y="101" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="68.5" y="80" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1va14ul_di" bpmnElement="CallActivity_1va14ul"> + <dc:Bounds x="363" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1odhh8p_di" bpmnElement="ScriptTask_1odhh8p"> + <dc:Bounds x="701" y="219" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pe6r93_di" bpmnElement="SequenceFlow_1pe6r93"> + <di:waypoint xsi:type="dc:Point" x="463" y="259" /> + <di:waypoint xsi:type="dc:Point" x="701" y="259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="537" y="238" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0ba0el1_di" bpmnElement="ScriptTask_0ba0el1"> + <dc:Bounds x="211" y="61" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1a3n88w_di" bpmnElement="CallActivity_1a3n88w"> + <dc:Bounds x="499" y="59" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_18k4xnm_di" bpmnElement="ScriptTask_18k4xnm"> + <dc:Bounds x="776" y="61" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xzphe4_di" bpmnElement="SequenceFlow_1xzphe4"> + <di:waypoint xsi:type="dc:Point" x="311" y="101" /> + <di:waypoint xsi:type="dc:Point" x="499" y="99" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="360" y="85" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b6eqin_di" bpmnElement="SequenceFlow_0b6eqin"> + <di:waypoint xsi:type="dc:Point" x="599" y="99" /> + <di:waypoint xsi:type="dc:Point" x="776" y="101" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="643.5" y="79" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1cpg3ku_di" bpmnElement="SequenceFlow_1cpg3ku"> + <di:waypoint xsi:type="dc:Point" x="876" y="101" /> + <di:waypoint xsi:type="dc:Point" x="968" y="101" /> + <di:waypoint xsi:type="dc:Point" x="968" y="101" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="101" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="983" y="95" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn new file mode 100644 index 0000000000..d7bd54cc4e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn @@ -0,0 +1,755 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateAllottedResourceBRG" name="DoCreateAllottedResourceBRG" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" /> + <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>notFound</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" /> + <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_service" target="CSI_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" /> + <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>notFound</bpmn2:outgoing> + <bpmn2:outgoing>found</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" /> + <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy"> + <bpmn2:incoming>found</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.getAaiAR(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.createAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" /> + <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessSDNCAssign(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncAssignResponse") + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessSDNCCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncCreateResponse") + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessSDNCActivate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncActivateResponse") + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" /> + <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" /> + <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" /> + <bpmn2:sequenceFlow id="SequenceFlow_1dgzhsm" sourceRef="UpdateAAIARActive" targetRef="IntermediateCatchEvent_1f4tse6" /> + <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI Parent ServiceInstance " calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" /> + <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" /> + <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" /> + <camunda:out source="GENGS_service" target="PSI_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" /> + <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu"> + <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* + +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 404, "BRG alloted resource Parent ServiceInstance:" + +execution.getVariable("parentServiceInstanceId") + + " was not found in AAI")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0x4moh8"> + <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" /> + <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" /> + <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceBRGRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1dgzhsm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0ec9eiq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.preProcessSDNCGet(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncGetResponse") + +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" /> + <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" /> + <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl"> + <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" /> + <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" /> + <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG() +dcar.generateOutputs(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1f4tse6" name="Await SDNC Replication "> + <bpmn2:incoming>SequenceFlow_1dgzhsm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ec9eiq</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${sdncReplDelay}</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0ec9eiq" sourceRef="IntermediateCatchEvent_1f4tse6" targetRef="PreProcessSDNCGet" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRG"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="-91" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-73" y="263" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="19" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="-55" y="240" /> + <di:waypoint xsi:type="dc:Point" x="19" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-18" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="119" y="239" /> + <di:waypoint xsi:type="dc:Point" x="195" y="239" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="157" y="224" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance"> + <dc:Bounds x="195" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true"> + <dc:Bounds x="367" y="217" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="270" width="83" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229"> + <di:waypoint xsi:type="dc:Point" x="295" y="239" /> + <di:waypoint xsi:type="dc:Point" x="369" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332" y="224.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException"> + <dc:Bounds x="342" y="85" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293"> + <di:waypoint xsi:type="dc:Point" x="392" y="217" /> + <di:waypoint xsi:type="dc:Point" x="392" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1"> + <dc:Bounds x="374" y="-11" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="392" y="30" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225"> + <di:waypoint xsi:type="dc:Point" x="392" y="85" /> + <di:waypoint xsi:type="dc:Point" x="392" y="58" /> + <di:waypoint xsi:type="dc:Point" x="392" y="58" /> + <di:waypoint xsi:type="dc:Point" x="392" y="25" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="407" y="58" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR"> + <dc:Bounds x="506" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR"> + <dc:Bounds x="1206" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1527" y="776" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1545" y="817" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300"> + <di:waypoint xsi:type="dc:Point" x="1306" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1338" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1322" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm"> + <di:waypoint xsi:type="dc:Point" x="92" y="595" /> + <di:waypoint xsi:type="dc:Point" x="92" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="545" /> + <di:waypoint xsi:type="dc:Point" x="309" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="220" y="665" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp"> + <di:waypoint xsi:type="dc:Point" x="359" y="585" /> + <di:waypoint xsi:type="dc:Point" x="359" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="560" y="785" /> + <di:waypoint xsi:type="dc:Point" x="560" y="709" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="485" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign"> + <dc:Bounds x="42" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate"> + <dc:Bounds x="309" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate"> + <dc:Bounds x="702" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate"> + <dc:Bounds x="702" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate"> + <dc:Bounds x="702" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk"> + <di:waypoint xsi:type="dc:Point" x="752" y="595" /> + <di:waypoint xsi:type="dc:Point" x="752" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="767" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="752" y="705" /> + <di:waypoint xsi:type="dc:Point" x="752" y="725" /> + <di:waypoint xsi:type="dc:Point" x="752" y="742" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="767" y="715" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="802" y="785" /> + <di:waypoint xsi:type="dc:Point" x="963" y="785" /> + <di:waypoint xsi:type="dc:Point" x="963" y="704" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2"> + <di:waypoint xsi:type="dc:Point" x="560" y="621" /> + <di:waypoint xsi:type="dc:Point" x="560" y="555" /> + <di:waypoint xsi:type="dc:Point" x="702" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="588" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet"> + <dc:Bounds x="1143" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb"> + <di:waypoint xsi:type="dc:Point" x="1240" y="794" /> + <di:waypoint xsi:type="dc:Point" x="1313" y="794" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1277" y="779" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dgzhsm_di" bpmnElement="SequenceFlow_1dgzhsm"> + <di:waypoint xsi:type="dc:Point" x="964" y="624" /> + <di:waypoint xsi:type="dc:Point" x="964" y="563" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="934" y="593.5" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI"> + <dc:Bounds x="843" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa"> + <di:waypoint xsi:type="dc:Point" x="943" y="239" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="988" y="224.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true"> + <dc:Bounds x="1033" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1012" y="265" width="92" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs"> + <di:waypoint xsi:type="dc:Point" x="1083" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1206" y="241" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1127" y="222" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck"> + <dc:Bounds x="1008" y="77" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8"> + <dc:Bounds x="1040" y="6" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1058" y="47" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu"> + <di:waypoint xsi:type="dc:Point" x="1058" y="215" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="186" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="157" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col"> + <di:waypoint xsi:type="dc:Point" x="1059" y="77" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="42" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="59.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="53" y="910" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="150" y="987" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="783" y="987" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="801" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121"> + <dc:Bounds x="245" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4"> + <dc:Bounds x="616" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="186" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="245" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="216" y="990" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76"> + <di:waypoint xsi:type="dc:Point" x="716" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="783" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="763" y="1005" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="345" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="434" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="390" y="990" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive"> + <dc:Bounds x="914" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated"> + <dc:Bounds x="516" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet"> + <dc:Bounds x="1140" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse"> + <dc:Bounds x="1140" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm"> + <di:waypoint xsi:type="dc:Point" x="1190" y="585" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="621" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1205" y="603" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p"> + <di:waypoint xsi:type="dc:Point" x="1193" y="704" /> + <di:waypoint xsi:type="dc:Point" x="1193" y="753" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1208" y="728.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true"> + <dc:Bounds x="700" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="695" y="184" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl"> + <di:waypoint xsi:type="dc:Point" x="750" y="240" /> + <di:waypoint xsi:type="dc:Point" x="843" y="239" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777" y="224" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou"> + <di:waypoint xsi:type="dc:Point" x="725" y="265" /> + <di:waypoint xsi:type="dc:Point" x="725" y="378" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="378" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="505" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-70" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-79" y="568" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-34" y="545" /> + <di:waypoint xsi:type="dc:Point" x="42" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="4" y="530" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8"> + <dc:Bounds x="1408" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1456" y="234" width="76" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229"> + <di:waypoint xsi:type="dc:Point" x="416" y="241" /> + <di:waypoint xsi:type="dc:Point" x="506" y="242" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12"> + <di:waypoint xsi:type="dc:Point" x="606" y="240" /> + <di:waypoint xsi:type="dc:Point" x="700" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="653" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs"> + <dc:Bounds x="1314" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc"> + <di:waypoint xsi:type="dc:Point" x="1414" y="794" /> + <di:waypoint xsi:type="dc:Point" x="1527" y="794" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1471" y="779" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u"> + <dc:Bounds x="434" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz"> + <di:waypoint xsi:type="dc:Point" x="534" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="616" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="980" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1f4tse6_di" bpmnElement="IntermediateCatchEvent_1f4tse6"> + <dc:Bounds x="946" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="933" y="492" width="61" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ec9eiq_di" bpmnElement="SequenceFlow_0ec9eiq"> + <di:waypoint xsi:type="dc:Point" x="982" y="545" /> + <di:waypoint xsi:type="dc:Point" x="1140" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1061" y="524" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn new file mode 100644 index 0000000000..f369504856 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn @@ -0,0 +1,575 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateAllottedResourceBRGRollback" name="DoCreateAllottedResourceBRGRollback" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" /> + <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeactivateResponse") + +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") + +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncUnassignResponse") + +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback() +rbk.processRollbackException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.deleteAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC? " default="SequenceFlow_0m483st"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" /> + <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="ExclusiveGateway_0mys1pj" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" /> + <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" /> + <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_11nscgh"> + <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback() +rbk.processRollbackJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1ce2d7j"> + <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td"> + <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" /> + <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s"> + <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete"> + <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming> + <bpmn2:linkEventDefinition name="AAI Delete" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="DeleteAAIAR" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete"> + <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="AAI Delete" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr"> + <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" /> + <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC? " default="SequenceFlow_0dzz8fp"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="DeleteSDNC" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRGRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="66" y="392" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="84" y="433" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="160" y="370" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="101" y="412" /> + <di:waypoint xsi:type="dc:Point" x="160" y="412" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="131" y="397" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="966" y="646" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="984" y="687" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="198" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="170" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign"> + <dc:Bounds x="590" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign"> + <dc:Bounds x="590" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="640" y="704" /> + <di:waypoint xsi:type="dc:Point" x="640" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="724.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="690" y="785" /> + <di:waypoint xsi:type="dc:Point" x="787" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="739" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="-9" y="962" width="367" height="150" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="20" y="1025" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="38" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="295" y="1025" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError"> + <dc:Bounds x="125" y="1003" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="56" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="125" y="1043" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="91" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="225" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="264" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="264" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="295" y="1043" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="279" y="1043" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR"> + <dc:Bounds x="787" y="742" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true"> + <dc:Bounds x="197" y="761" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="219" y="648" width="71" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-180" y="767" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-189" y="808" width="59" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-144" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-112" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-112" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-79" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-97" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete"> + <dc:Bounds x="627" y="381" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6"> + <dc:Bounds x="659" y="298" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="650" y="275" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f"> + <di:waypoint xsi:type="dc:Point" x="677" y="381" /> + <di:waypoint xsi:type="dc:Point" x="677" y="334" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="692" y="357.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j"> + <di:waypoint xsi:type="dc:Point" x="887" y="664" /> + <di:waypoint xsi:type="dc:Point" x="966" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="927" y="649" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd"> + <di:waypoint xsi:type="dc:Point" x="222" y="761" /> + <di:waypoint xsi:type="dc:Point" x="222" y="672" /> + <di:waypoint xsi:type="dc:Point" x="303" y="672" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st"> + <di:waypoint xsi:type="dc:Point" x="222" y="811" /> + <di:waypoint xsi:type="dc:Point" x="222" y="889" /> + <di:waypoint xsi:type="dc:Point" x="355" y="889" /> + <di:waypoint xsi:type="dc:Point" x="481" y="796" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="227.96243516445685" y="823.5028190473831" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l"> + <di:waypoint xsi:type="dc:Point" x="260" y="413" /> + <di:waypoint xsi:type="dc:Point" x="334" y="413" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="297" y="398" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s"> + <di:waypoint xsi:type="dc:Point" x="495" y="386" /> + <di:waypoint xsi:type="dc:Point" x="496" y="334" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true"> + <dc:Bounds x="515" y="979" width="405" height="139" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh"> + <dc:Bounds x="563" y="1036" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="1077" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg"> + <dc:Bounds x="683" y="1014" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j"> + <dc:Bounds x="845" y="1036" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="863" y="1077" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7"> + <di:waypoint xsi:type="dc:Point" x="599" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="652" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="652" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="683" y="1054" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="667" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84"> + <di:waypoint xsi:type="dc:Point" x="783" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="813" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="813" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="845" y="1054" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="828" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest"> + <dc:Bounds x="787" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true"> + <dc:Bounds x="470" y="760" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="640" width="86" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="437" y="785" /> + <di:waypoint xsi:type="dc:Point" x="437" y="785" /> + <di:waypoint xsi:type="dc:Point" x="470" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="452" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s"> + <di:waypoint xsi:type="dc:Point" x="495" y="759" /> + <di:waypoint xsi:type="dc:Point" x="495" y="664" /> + <di:waypoint xsi:type="dc:Point" x="590" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="732" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4"> + <di:waypoint xsi:type="dc:Point" x="837" y="742" /> + <di:waypoint xsi:type="dc:Point" x="837" y="704" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true"> + <dc:Bounds x="469" y="385" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="458" y="439" width="83" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp"> + <di:waypoint xsi:type="dc:Point" x="519" y="410" /> + <di:waypoint xsi:type="dc:Point" x="627" y="410" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv"> + <dc:Bounds x="479" y="298" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="473" y="277" width="67" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td"> + <di:waypoint xsi:type="dc:Point" x="495" y="810" /> + <di:waypoint xsi:type="dc:Point" x="495" y="890" /> + <di:waypoint xsi:type="dc:Point" x="640" y="890" /> + <di:waypoint xsi:type="dc:Point" x="787" y="809" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502.01898797901157" y="825.6730723011344" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5"> + <dc:Bounds x="819" y="876" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="916" width="53" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h"> + <di:waypoint xsi:type="dc:Point" x="837" y="876" /> + <di:waypoint xsi:type="dc:Point" x="837" y="848" /> + <di:waypoint xsi:type="dc:Point" x="837" y="826" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="862" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true"> + <dc:Bounds x="334" y="385" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="370" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr"> + <di:waypoint xsi:type="dc:Point" x="384" y="410" /> + <di:waypoint xsi:type="dc:Point" x="469" y="410" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4"> + <di:waypoint xsi:type="dc:Point" x="359" y="435" /> + <di:waypoint xsi:type="dc:Point" x="359" y="535" /> + <di:waypoint xsi:type="dc:Point" x="837" y="535" /> + <di:waypoint xsi:type="dc:Point" x="837" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="520" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true"> + <dc:Bounds x="-79" y="760" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-53" y="631" width="62" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx"> + <di:waypoint xsi:type="dc:Point" x="-54" y="760" /> + <di:waypoint xsi:type="dc:Point" x="-54" y="664" /> + <di:waypoint xsi:type="dc:Point" x="42" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp"> + <di:waypoint xsi:type="dc:Point" x="-54" y="810" /> + <di:waypoint xsi:type="dc:Point" x="-54" y="894" /> + <di:waypoint xsi:type="dc:Point" x="93" y="894" /> + <di:waypoint xsi:type="dc:Point" x="208" y="797" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-43.999999999999986" y="825" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn new file mode 100644 index 0000000000..f26bae0b39 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn @@ -0,0 +1,755 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateAllottedResourceTXC" name="DoCreateAllottedResourceTXC" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" /> + <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>notFound</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" /> + <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_service" target="CSI_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" /> + <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>notFound</bpmn2:outgoing> + <bpmn2:outgoing>found</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" /> + <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy"> + <bpmn2:incoming>found</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.getAaiAR(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.createAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" /> + <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessSDNCAssign(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncAssignResponse") + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessSDNCCreate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncCreateResponse") + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessSDNCActivate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncActivateResponse") + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" /> + <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" /> + <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" /> + <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI Parent ServiceInstance " calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" /> + <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" /> + <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" /> + <camunda:out source="GENGS_service" target="PSI_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" /> + <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu"> + <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* + +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 404, "TunnelXConn alloted resource Parent ServiceInstance:" + +execution.getVariable("parentServiceInstanceId") + + " was not found in AAI")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0x4moh8"> + <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" /> + <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" /> + <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceTXCRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_07kxd8t</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_08hhqb2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.preProcessSDNCGet(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncGetResponse") + +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" /> + <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" /> + <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl"> + <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" /> + <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" /> + <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC() +dcar.generateOutputs(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_07kxd8t" sourceRef="UpdateAAIARActive" targetRef="IntermediateThrowEvent_0ti2fv8" /> + <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0ti2fv8" name="Await SDNC Replication "> + <bpmn2:incoming>SequenceFlow_07kxd8t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08hhqb2</bpmn2:outgoing> + <bpmn2:timerEventDefinition> + <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${sdncReplDelay}</bpmn2:timeDuration> + </bpmn2:timerEventDefinition> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_08hhqb2" sourceRef="IntermediateThrowEvent_0ti2fv8" targetRef="PreProcessSDNCGet" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXC"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="-91" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-73" y="263" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="19" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="-55" y="240" /> + <di:waypoint xsi:type="dc:Point" x="19" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-18" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="119" y="239" /> + <di:waypoint xsi:type="dc:Point" x="195" y="239" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="157" y="224" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance"> + <dc:Bounds x="195" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true"> + <dc:Bounds x="367" y="217" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="270" width="83" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229"> + <di:waypoint xsi:type="dc:Point" x="295" y="239" /> + <di:waypoint xsi:type="dc:Point" x="369" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332" y="224.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException"> + <dc:Bounds x="342" y="85" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293"> + <di:waypoint xsi:type="dc:Point" x="392" y="217" /> + <di:waypoint xsi:type="dc:Point" x="392" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1"> + <dc:Bounds x="374" y="-11" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="392" y="30" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225"> + <di:waypoint xsi:type="dc:Point" x="392" y="85" /> + <di:waypoint xsi:type="dc:Point" x="392" y="58" /> + <di:waypoint xsi:type="dc:Point" x="392" y="58" /> + <di:waypoint xsi:type="dc:Point" x="392" y="25" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="407" y="58" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR"> + <dc:Bounds x="506" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR"> + <dc:Bounds x="1206" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1527" y="776" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1545" y="817" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300"> + <di:waypoint xsi:type="dc:Point" x="1306" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1338" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1322" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm"> + <di:waypoint xsi:type="dc:Point" x="92" y="595" /> + <di:waypoint xsi:type="dc:Point" x="92" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="545" /> + <di:waypoint xsi:type="dc:Point" x="309" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="220" y="665" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp"> + <di:waypoint xsi:type="dc:Point" x="359" y="585" /> + <di:waypoint xsi:type="dc:Point" x="359" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="560" y="785" /> + <di:waypoint xsi:type="dc:Point" x="560" y="709" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="485" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign"> + <dc:Bounds x="42" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate"> + <dc:Bounds x="309" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate"> + <dc:Bounds x="702" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate"> + <dc:Bounds x="702" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate"> + <dc:Bounds x="702" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk"> + <di:waypoint xsi:type="dc:Point" x="752" y="595" /> + <di:waypoint xsi:type="dc:Point" x="752" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="767" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="752" y="705" /> + <di:waypoint xsi:type="dc:Point" x="752" y="725" /> + <di:waypoint xsi:type="dc:Point" x="752" y="742" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="767" y="715" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="802" y="785" /> + <di:waypoint xsi:type="dc:Point" x="963" y="785" /> + <di:waypoint xsi:type="dc:Point" x="963" y="704" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="883" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2"> + <di:waypoint xsi:type="dc:Point" x="560" y="621" /> + <di:waypoint xsi:type="dc:Point" x="560" y="555" /> + <di:waypoint xsi:type="dc:Point" x="702" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="588" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet"> + <dc:Bounds x="1143" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb"> + <di:waypoint xsi:type="dc:Point" x="1240" y="794" /> + <di:waypoint xsi:type="dc:Point" x="1313" y="794" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1277" y="779" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI"> + <dc:Bounds x="843" y="199" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa"> + <di:waypoint xsi:type="dc:Point" x="943" y="239" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="988" y="224.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true"> + <dc:Bounds x="1033" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1012" y="265" width="92" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs"> + <di:waypoint xsi:type="dc:Point" x="1083" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1206" y="241" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1127" y="222" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck"> + <dc:Bounds x="1008" y="77" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8"> + <dc:Bounds x="1040" y="6" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1058" y="47" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu"> + <di:waypoint xsi:type="dc:Point" x="1058" y="215" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="186" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="157" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col"> + <di:waypoint xsi:type="dc:Point" x="1059" y="77" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="42" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="59.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="53" y="910" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="150" y="987" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="783" y="987" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="801" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121"> + <dc:Bounds x="245" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4"> + <dc:Bounds x="616" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="186" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="245" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="216" y="990" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76"> + <di:waypoint xsi:type="dc:Point" x="716" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="748" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="783" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="763" y="1005" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="345" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="434" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="390" y="990" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive"> + <dc:Bounds x="914" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated"> + <dc:Bounds x="516" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet"> + <dc:Bounds x="1140" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse"> + <dc:Bounds x="1140" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm"> + <di:waypoint xsi:type="dc:Point" x="1190" y="585" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="621" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1205" y="603" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p"> + <di:waypoint xsi:type="dc:Point" x="1193" y="704" /> + <di:waypoint xsi:type="dc:Point" x="1193" y="753" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1208" y="728.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true"> + <dc:Bounds x="700" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="695" y="184" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl"> + <di:waypoint xsi:type="dc:Point" x="750" y="240" /> + <di:waypoint xsi:type="dc:Point" x="843" y="239" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777" y="224" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou"> + <di:waypoint xsi:type="dc:Point" x="725" y="265" /> + <di:waypoint xsi:type="dc:Point" x="725" y="378" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="378" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="505" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-70" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-79" y="568" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-34" y="545" /> + <di:waypoint xsi:type="dc:Point" x="42" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="4" y="530" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8"> + <dc:Bounds x="1408" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1456" y="234" width="76" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229"> + <di:waypoint xsi:type="dc:Point" x="416" y="241" /> + <di:waypoint xsi:type="dc:Point" x="506" y="242" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12"> + <di:waypoint xsi:type="dc:Point" x="606" y="240" /> + <di:waypoint xsi:type="dc:Point" x="700" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="653" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs"> + <dc:Bounds x="1314" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc"> + <di:waypoint xsi:type="dc:Point" x="1414" y="794" /> + <di:waypoint xsi:type="dc:Point" x="1527" y="794" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1471" y="779" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u"> + <dc:Bounds x="434" y="965" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz"> + <di:waypoint xsi:type="dc:Point" x="534" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="616" y="1005" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="980" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07kxd8t_di" bpmnElement="SequenceFlow_07kxd8t"> + <di:waypoint xsi:type="dc:Point" x="964" y="624" /> + <di:waypoint xsi:type="dc:Point" x="964" y="563" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="979" y="587.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_038xgwf_di" bpmnElement="IntermediateThrowEvent_0ti2fv8"> + <dc:Bounds x="946" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="933" y="492" width="61" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08hhqb2_di" bpmnElement="SequenceFlow_08hhqb2"> + <di:waypoint xsi:type="dc:Point" x="982" y="545" /> + <di:waypoint xsi:type="dc:Point" x="1140" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1061" y="524" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn new file mode 100644 index 0000000000..490f2b637a --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn @@ -0,0 +1,575 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateAllottedResourceTXCRollback" name="DoCreateAllottedResourceTXCRollback" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" /> + <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeactivateResponse") + +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") + +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncUnassignResponse") + +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback() +rbk.processRollbackException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.deleteAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC? " default="SequenceFlow_0m483st"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" /> + <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="ExclusiveGateway_0mys1pj" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" /> + <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" /> + <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_11nscgh"> + <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback() +rbk.processRollbackJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1ce2d7j"> + <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td"> + <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" /> + <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s"> + <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete"> + <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming> + <bpmn2:linkEventDefinition name="AAI Delete" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="DeleteAAIAR" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete"> + <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="AAI Delete" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr"> + <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" /> + <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC? " default="SequenceFlow_0dzz8fp"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="DeleteSDNC" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXCRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="66" y="392" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="84" y="433" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="160" y="370" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="101" y="412" /> + <di:waypoint xsi:type="dc:Point" x="160" y="412" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="131" y="397" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="966" y="646" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="984" y="687" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="198" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="170" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign"> + <dc:Bounds x="590" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign"> + <dc:Bounds x="590" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="640" y="704" /> + <di:waypoint xsi:type="dc:Point" x="640" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="724.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="690" y="785" /> + <di:waypoint xsi:type="dc:Point" x="787" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="739" y="770" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="-9" y="962" width="367" height="150" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="20" y="1025" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="38" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="295" y="1025" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError"> + <dc:Bounds x="125" y="1003" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="56" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="125" y="1043" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="91" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="225" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="264" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="264" y="1043" /> + <di:waypoint xsi:type="dc:Point" x="295" y="1043" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="279" y="1043" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR"> + <dc:Bounds x="787" y="742" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true"> + <dc:Bounds x="197" y="761" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="219" y="648" width="71" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-180" y="767" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-189" y="808" width="59" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-144" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-112" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-112" y="785" /> + <di:waypoint xsi:type="dc:Point" x="-79" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-97" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete"> + <dc:Bounds x="627" y="381" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6"> + <dc:Bounds x="659" y="298" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="650" y="275" width="73" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f"> + <di:waypoint xsi:type="dc:Point" x="677" y="381" /> + <di:waypoint xsi:type="dc:Point" x="677" y="334" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="692" y="357.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j"> + <di:waypoint xsi:type="dc:Point" x="887" y="664" /> + <di:waypoint xsi:type="dc:Point" x="966" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="927" y="649" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd"> + <di:waypoint xsi:type="dc:Point" x="222" y="761" /> + <di:waypoint xsi:type="dc:Point" x="222" y="672" /> + <di:waypoint xsi:type="dc:Point" x="303" y="672" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st"> + <di:waypoint xsi:type="dc:Point" x="222" y="811" /> + <di:waypoint xsi:type="dc:Point" x="222" y="891" /> + <di:waypoint xsi:type="dc:Point" x="358" y="891" /> + <di:waypoint xsi:type="dc:Point" x="481" y="796" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232.20103151493018" y="822.2200886262924" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l"> + <di:waypoint xsi:type="dc:Point" x="260" y="413" /> + <di:waypoint xsi:type="dc:Point" x="334" y="413" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="297" y="398" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s"> + <di:waypoint xsi:type="dc:Point" x="495" y="386" /> + <di:waypoint xsi:type="dc:Point" x="496" y="334" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true"> + <dc:Bounds x="515" y="979" width="405" height="139" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh"> + <dc:Bounds x="563" y="1036" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="1077" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg"> + <dc:Bounds x="683" y="1014" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j"> + <dc:Bounds x="845" y="1036" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="863" y="1077" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7"> + <di:waypoint xsi:type="dc:Point" x="599" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="652" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="652" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="683" y="1054" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="667" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84"> + <di:waypoint xsi:type="dc:Point" x="783" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="813" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="813" y="1054" /> + <di:waypoint xsi:type="dc:Point" x="845" y="1054" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="828" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest"> + <dc:Bounds x="787" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true"> + <dc:Bounds x="470" y="760" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="490" y="640" width="86" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="437" y="785" /> + <di:waypoint xsi:type="dc:Point" x="437" y="785" /> + <di:waypoint xsi:type="dc:Point" x="470" y="785" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="452" y="785" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s"> + <di:waypoint xsi:type="dc:Point" x="495" y="759" /> + <di:waypoint xsi:type="dc:Point" x="495" y="664" /> + <di:waypoint xsi:type="dc:Point" x="590" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="732" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4"> + <di:waypoint xsi:type="dc:Point" x="837" y="742" /> + <di:waypoint xsi:type="dc:Point" x="837" y="704" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true"> + <dc:Bounds x="469" y="385" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="458" y="439" width="83" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp"> + <di:waypoint xsi:type="dc:Point" x="519" y="410" /> + <di:waypoint xsi:type="dc:Point" x="627" y="410" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv"> + <dc:Bounds x="479" y="298" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="473" y="277" width="67" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td"> + <di:waypoint xsi:type="dc:Point" x="495" y="810" /> + <di:waypoint xsi:type="dc:Point" x="495" y="890" /> + <di:waypoint xsi:type="dc:Point" x="639" y="890" /> + <di:waypoint xsi:type="dc:Point" x="787" y="802" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="503.0189879790115" y="823.6755392339563" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5"> + <dc:Bounds x="819" y="876" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="916" width="53" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h"> + <di:waypoint xsi:type="dc:Point" x="837" y="876" /> + <di:waypoint xsi:type="dc:Point" x="837" y="848" /> + <di:waypoint xsi:type="dc:Point" x="837" y="826" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="862" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true"> + <dc:Bounds x="334" y="385" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="370" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr"> + <di:waypoint xsi:type="dc:Point" x="384" y="410" /> + <di:waypoint xsi:type="dc:Point" x="469" y="410" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4"> + <di:waypoint xsi:type="dc:Point" x="359" y="435" /> + <di:waypoint xsi:type="dc:Point" x="359" y="535" /> + <di:waypoint xsi:type="dc:Point" x="837" y="535" /> + <di:waypoint xsi:type="dc:Point" x="837" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="520" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true"> + <dc:Bounds x="-79" y="760" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-53" y="631" width="62" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx"> + <di:waypoint xsi:type="dc:Point" x="-54" y="760" /> + <di:waypoint xsi:type="dc:Point" x="-54" y="664" /> + <di:waypoint xsi:type="dc:Point" x="42" y="664" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp"> + <di:waypoint xsi:type="dc:Point" x="-54" y="810" /> + <di:waypoint xsi:type="dc:Point" x="-54" y="892" /> + <di:waypoint xsi:type="dc:Point" x="92" y="892" /> + <di:waypoint xsi:type="dc:Point" x="208" y="797" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-48.00000000000003" y="827" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn new file mode 100644 index 0000000000..07de3fc0b1 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn @@ -0,0 +1,136 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoCreateE2ENetworkInstance" name="DoCreateE2ENetworkInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_1gomb9n</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_16gvaru" name="PreProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1gomb9n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0s7w7gp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.preProcessSDNCAssignRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0dp0qqq" name="Post Process SDNC Assign Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1wtx8gj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0k06cqp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.postProcessSDNCAssign(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_0ao684p" name="Call SDNC Adapter Service Topology Assign" calledElement="DoUnderlayVpnOperation"> + <bpmn:extensionElements> + <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0s7w7gp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wtx8gj</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:endEvent id="EndEvent_0tpifgl"> + <bpmn:incoming>SequenceFlow_0o6bjmn</bpmn:incoming> + </bpmn:endEvent> + <bpmn:callActivity id="CallActivity_11yzhx1" name="Call CustomE2EGetService2" calledElement="CustomE2EGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="GENGS_serviceType" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0k06cqp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1oql7zl</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_0yz4lym" name="Post Process AAI GET2" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1oql7zl</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0o6bjmn</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.postProcessAAIGET2(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0s7w7gp" name="" sourceRef="ScriptTask_16gvaru" targetRef="CallActivity_0ao684p" /> + <bpmn:sequenceFlow id="SequenceFlow_1wtx8gj" name="" sourceRef="CallActivity_0ao684p" targetRef="ScriptTask_0dp0qqq" /> + <bpmn:sequenceFlow id="SequenceFlow_0k06cqp" name="" sourceRef="ScriptTask_0dp0qqq" targetRef="CallActivity_11yzhx1" /> + <bpmn:sequenceFlow id="SequenceFlow_0o6bjmn" sourceRef="ScriptTask_0yz4lym" targetRef="EndEvent_0tpifgl" /> + <bpmn:sequenceFlow id="SequenceFlow_1oql7zl" sourceRef="CallActivity_11yzhx1" targetRef="ScriptTask_0yz4lym" /> + <bpmn:sequenceFlow id="SequenceFlow_1gomb9n" sourceRef="StartEvent_1" targetRef="ScriptTask_16gvaru" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2ENetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="173" y="102" width="36" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16gvaru_di" bpmnElement="ScriptTask_16gvaru"> + <dc:Bounds x="346" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0dp0qqq_di" bpmnElement="ScriptTask_0dp0qqq"> + <dc:Bounds x="754" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ao684p_di" bpmnElement="CallActivity_0ao684p"> + <dc:Bounds x="546" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0tpifgl_di" bpmnElement="EndEvent_0tpifgl"> + <dc:Bounds x="1432" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1405" y="143" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_11yzhx1_di" bpmnElement="CallActivity_11yzhx1"> + <dc:Bounds x="983" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0yz4lym_di" bpmnElement="ScriptTask_0yz4lym"> + <dc:Bounds x="1219" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0s7w7gp_di" bpmnElement="SequenceFlow_0s7w7gp"> + <di:waypoint xsi:type="dc:Point" x="446" y="120" /> + <di:waypoint xsi:type="dc:Point" x="546" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="496" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wtx8gj_di" bpmnElement="SequenceFlow_1wtx8gj"> + <di:waypoint xsi:type="dc:Point" x="646" y="120" /> + <di:waypoint xsi:type="dc:Point" x="754" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="700" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k06cqp_di" bpmnElement="SequenceFlow_0k06cqp"> + <di:waypoint xsi:type="dc:Point" x="854" y="120" /> + <di:waypoint xsi:type="dc:Point" x="891" y="120" /> + <di:waypoint xsi:type="dc:Point" x="983" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="872.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0o6bjmn_di" bpmnElement="SequenceFlow_0o6bjmn"> + <di:waypoint xsi:type="dc:Point" x="1319" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1432" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1375.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1oql7zl_di" bpmnElement="SequenceFlow_1oql7zl"> + <di:waypoint xsi:type="dc:Point" x="1083" y="115" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="115" /> + <di:waypoint xsi:type="dc:Point" x="1219" y="115" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1117" y="94" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1gomb9n_di" bpmnElement="SequenceFlow_1gomb9n"> + <di:waypoint xsi:type="dc:Point" x="209" y="120" /> + <di:waypoint xsi:type="dc:Point" x="346" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="277.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn new file mode 100644 index 0000000000..a5fadcf14b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn @@ -0,0 +1,544 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateE2EServiceInstanceV3" name="DoCreateE2EServiceInstanceV3" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1qiiycn</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qiiycn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0w9t6tc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="CustomE2EGetService" targetRef="ScriptTask_0i8cqdy" /> + <bpmn2:callActivity id="CustomE2EGetService" name="Call Custom E2E Get Service" calledElement="CustomE2EGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1i7t9hq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="CustomE2EPutService" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService"> + <bpmn2:extensionElements> + <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" /> + <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" /> + <camunda:in source="serviceType" target="GENPS_serviceType" /> + <camunda:in sourceExpression="service-instance" target="GENPS_type" /> + <camunda:in source="serviceInstanceData" target="GENPS_payload" /> + <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="GENPS_requesId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1w01tqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_129ih1g</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_129ih1g" sourceRef="CustomE2EPutService" targetRef="ScriptTask_0q37vn9" /> + <bpmn2:subProcess id="SubProcess_06d8lk8" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0yljq9y"> + <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_117lkk3"> + <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateE2EServiceInstanceRollback" calledElement="DoCreateE2EServiceInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rollbackError" target="rollbackErrror" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" /> + <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" /> + <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.preProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" /> + <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.postProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_0i8cqdy" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w01tqs</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstance() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1w01tqs" sourceRef="ScriptTask_0i8cqdy" targetRef="CustomE2EPutService" /> + <bpmn2:scriptTask id="ScriptTask_0q37vn9" name="Post Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_129ih1g</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1tkgqu3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateE2EServiceInstance() +ddsi.postProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1qctzm0" sourceRef="Task_0uiekmn" targetRef="Task_0raqlqc" /> + <bpmn2:scriptTask id="Task_0uiekmn" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_03ebqhf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qctzm0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateE2EServiceInstance() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="Task_0raqlqc" name="Init Resource Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qctzm0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13xfsff</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0bq4fxs" name="Go to Decompose_Service"> + <bpmn2:incoming>SequenceFlow_0w9t6tc</bpmn2:incoming> + <bpmn2:linkEventDefinition name="Decompose_Service" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mlbhmt" name="GoTo StartService"> + <bpmn2:incoming>SequenceFlow_012h7yx</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1o01d7d" name="PostProcess Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0xjwb45</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_012h7yx</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCreateE2EServiceInstance() +dcsi.processDecomposition(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0biblpc" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn2: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" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0qxzgvq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xjwb45</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1cllqk3" name="Prepare Decompose Service " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_166w91p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qxzgvq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCreateE2EServiceInstance() +dcsi.prepareDecomposeService(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0tv85pg" name="Decompose_Service"> + <bpmn2:outgoing>SequenceFlow_166w91p</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="Decompose_Service" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0xjwb45" sourceRef="CallActivity_0biblpc" targetRef="ScriptTask_1o01d7d" /> + <bpmn2:sequenceFlow id="SequenceFlow_0qxzgvq" sourceRef="ScriptTask_1cllqk3" targetRef="CallActivity_0biblpc" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qiiycn" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_166w91p" sourceRef="IntermediateCatchEvent_0tv85pg" targetRef="ScriptTask_1cllqk3" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16okck2" name="GoTo StartPrepareResource"> + <bpmn2:incoming>SequenceFlow_1tkgqu3</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartPrepareResource" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1tkgqu3" sourceRef="ScriptTask_0q37vn9" targetRef="IntermediateThrowEvent_16okck2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0w9t6tc" sourceRef="preProcessRequest_ScriptTask" targetRef="IntermediateThrowEvent_0bq4fxs" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0jrb3xu" name="StartService"> + <bpmn2:outgoing>SequenceFlow_1i7t9hq</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1i7t9hq" sourceRef="IntermediateCatchEvent_0jrb3xu" targetRef="CustomE2EGetService" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05dus9b" name="StartPrepareResource"> + <bpmn2:outgoing>SequenceFlow_1hbesp9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartPrepareResource" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1hbesp9" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="Task_0dqjp43" /> + <bpmn2:scriptTask id="Task_0ush1g4" name="Call Service OOF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_01s0ef2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03ebqhf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCreateE2EServiceInstance() +dcsi.doServiceHoming(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1ojtwas" name="Call DoCreateResources" calledElement="DoCreateResourcesV3"> + <bpmn2:extensionElements> + <camunda:in source="nsServiceName" target="nsServiceName" /> + <camunda:in source="nsServiceDescription" target="nsServiceDescription" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="resourceUUID" target="resourceUUID" /> + <camunda:in source="resourceParameters" target="resourceParameters" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="addResourceList" target="addResourceList" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0bf6bzp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0d0c20n</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_04b21gb" name="PreProcess for Add Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13xfsff</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bf6bzp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstance() +csi.preProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1y7jr4t" name="PostProcess for Add Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0d0c20n</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6vgsu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstance() +csi.postProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13xfsff" sourceRef="Task_0raqlqc" targetRef="ScriptTask_04b21gb" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bf6bzp" sourceRef="ScriptTask_04b21gb" targetRef="CallActivity_1ojtwas" /> + <bpmn2:sequenceFlow id="SequenceFlow_0d0c20n" sourceRef="CallActivity_1ojtwas" targetRef="ScriptTask_1y7jr4t" /> + <bpmn2:endEvent id="EndEvent_0hzmoug"> + <bpmn2:incoming>SequenceFlow_0a6vgsu</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0a6vgsu" sourceRef="ScriptTask_1y7jr4t" targetRef="EndEvent_0hzmoug" /> + <bpmn2:sequenceFlow id="SequenceFlow_03ebqhf" sourceRef="Task_0ush1g4" targetRef="Task_0uiekmn" /> + <bpmn2:sequenceFlow id="SequenceFlow_012h7yx" sourceRef="ScriptTask_1o01d7d" targetRef="IntermediateThrowEvent_1mlbhmt" /> + <bpmn2:sequenceFlow id="SequenceFlow_01s0ef2" sourceRef="Task_0dqjp43" targetRef="Task_0ush1g4" /> + <bpmn2:scriptTask id="Task_0dqjp43" name="Call Service Pre Operation" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1hbesp9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01s0ef2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoCreateE2EServiceInstance() +dcsi.doServicePreOperation(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceV3"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="18" y="-207" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="12" y="-166" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="126" y="-229" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4"> + <di:waypoint xsi:type="dc:Point" x="296" y="94" /> + <di:waypoint xsi:type="dc:Point" x="387" y="94" /> + <di:waypoint xsi:type="dc:Point" x="387" y="94" /> + <di:waypoint xsi:type="dc:Point" x="478" y="94" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="357" y="94" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="CustomE2EGetService"> + <dc:Bounds x="196" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="CustomE2EPutService"> + <dc:Bounds x="713" y="54" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g"> + <di:waypoint xsi:type="dc:Point" x="813" y="94" /> + <di:waypoint xsi:type="dc:Point" x="941" y="94" /> + <di:waypoint xsi:type="dc:Point" x="941" y="94" /> + <di:waypoint xsi:type="dc:Point" x="1068" y="94" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="911" y="94" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true"> + <dc:Bounds x="15" y="865" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y"> + <dc:Bounds x="111" y="942" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="84" y="983" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3"> + <dc:Bounds x="744" y="942" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="983" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6"> + <dc:Bounds x="409" y="920" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf"> + <di:waypoint xsi:type="dc:Point" x="509" y="960" /> + <di:waypoint xsi:type="dc:Point" x="577" y="960" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="498" y="945" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11"> + <di:waypoint xsi:type="dc:Point" x="147" y="960" /> + <di:waypoint xsi:type="dc:Point" x="246" y="960" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="152" y="945" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy"> + <dc:Bounds x="478" y="54" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1w01tqs_di" bpmnElement="SequenceFlow_1w01tqs"> + <di:waypoint xsi:type="dc:Point" x="578" y="94" /> + <di:waypoint xsi:type="dc:Point" x="646" y="94" /> + <di:waypoint xsi:type="dc:Point" x="646" y="94" /> + <di:waypoint xsi:type="dc:Point" x="713" y="94" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="616" y="94" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9"> + <dc:Bounds x="1068" y="54" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux"> + <dc:Bounds x="246" y="920" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf"> + <di:waypoint xsi:type="dc:Point" x="346" y="960" /> + <di:waypoint xsi:type="dc:Point" x="409" y="960" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="945" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip"> + <dc:Bounds x="577" y="920" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k"> + <di:waypoint xsi:type="dc:Point" x="677" y="960" /> + <di:waypoint xsi:type="dc:Point" x="709" y="960" /> + <di:waypoint xsi:type="dc:Point" x="709" y="960" /> + <di:waypoint xsi:type="dc:Point" x="744" y="960" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="960" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qctzm0_di" bpmnElement="SequenceFlow_1qctzm0"> + <di:waypoint xsi:type="dc:Point" x="534" y="300" /> + <di:waypoint xsi:type="dc:Point" x="604" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="524" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0v81r5h_di" bpmnElement="Task_0uiekmn"> + <dc:Bounds x="434" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_14tnuxf_di" bpmnElement="Task_0raqlqc"> + <dc:Bounds x="604" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11saqvj_di" bpmnElement="IntermediateThrowEvent_0bq4fxs"> + <dc:Bounds x="1315" y="-207" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1290" y="-167" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1mlbhmt_di" bpmnElement="IntermediateThrowEvent_1mlbhmt"> + <dc:Bounds x="1315" y="-57" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1288" y="-16" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1o01d7d_di" bpmnElement="ScriptTask_1o01d7d"> + <dc:Bounds x="713" y="-79" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0biblpc_di" bpmnElement="CallActivity_0biblpc"> + <dc:Bounds x="478" y="-79" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1cllqk3_di" bpmnElement="ScriptTask_1cllqk3"> + <dc:Bounds x="196" y="-79" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0tv85pg_di" bpmnElement="IntermediateCatchEvent_0tv85pg"> + <dc:Bounds x="26" y="-57" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2" y="-21" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xjwb45_di" bpmnElement="SequenceFlow_0xjwb45"> + <di:waypoint xsi:type="dc:Point" x="578" y="-39" /> + <di:waypoint xsi:type="dc:Point" x="713" y="-39" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="645.5" y="-60" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qxzgvq_di" bpmnElement="SequenceFlow_0qxzgvq"> + <di:waypoint xsi:type="dc:Point" x="296" y="-39" /> + <di:waypoint xsi:type="dc:Point" x="478" y="-39" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="387" y="-60" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qiiycn_di" bpmnElement="SequenceFlow_1qiiycn"> + <di:waypoint xsi:type="dc:Point" x="54" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="126" y="-189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="-210" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_166w91p_di" bpmnElement="SequenceFlow_166w91p"> + <di:waypoint xsi:type="dc:Point" x="62" y="-39" /> + <di:waypoint xsi:type="dc:Point" x="196" y="-39" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="-60" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_16okck2_di" bpmnElement="IntermediateThrowEvent_16okck2"> + <dc:Bounds x="1315" y="76" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1299" y="117" width="71" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tkgqu3_di" bpmnElement="SequenceFlow_1tkgqu3"> + <di:waypoint xsi:type="dc:Point" x="1168" y="94" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="94" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="94" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="94" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1257" y="88" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0w9t6tc_di" bpmnElement="SequenceFlow_0w9t6tc"> + <di:waypoint xsi:type="dc:Point" x="226" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="771" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="771" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="-189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="786" y="-195" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0jrb3xu_di" bpmnElement="IntermediateCatchEvent_0jrb3xu"> + <dc:Bounds x="18" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="8" y="115" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1i7t9hq_di" bpmnElement="SequenceFlow_1i7t9hq"> + <di:waypoint xsi:type="dc:Point" x="54" y="97" /> + <di:waypoint xsi:type="dc:Point" x="196" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="125" y="76" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05dus9b_di" bpmnElement="IntermediateCatchEvent_05dus9b"> + <dc:Bounds x="18" y="282" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-3" y="318" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hbesp9_di" bpmnElement="SequenceFlow_1hbesp9"> + <di:waypoint xsi:type="dc:Point" x="54" y="300" /> + <di:waypoint xsi:type="dc:Point" x="87" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="25.5" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wr11dt_di" bpmnElement="Task_0ush1g4"> + <dc:Bounds x="277" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ojtwas_di" bpmnElement="CallActivity_1ojtwas"> + <dc:Bounds x="971" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04b21gb_di" bpmnElement="ScriptTask_04b21gb"> + <dc:Bounds x="799" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1y7jr4t_di" bpmnElement="ScriptTask_1y7jr4t"> + <dc:Bounds x="1145" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13xfsff_di" bpmnElement="SequenceFlow_13xfsff"> + <di:waypoint xsi:type="dc:Point" x="704" y="300" /> + <di:waypoint xsi:type="dc:Point" x="799" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="706.5" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bf6bzp_di" bpmnElement="SequenceFlow_0bf6bzp"> + <di:waypoint xsi:type="dc:Point" x="899" y="300" /> + <di:waypoint xsi:type="dc:Point" x="971" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0d0c20n_di" bpmnElement="SequenceFlow_0d0c20n"> + <di:waypoint xsi:type="dc:Point" x="1071" y="300" /> + <di:waypoint xsi:type="dc:Point" x="1145" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1063" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0hzmoug_di" bpmnElement="EndEvent_0hzmoug"> + <dc:Bounds x="1315" y="282.4076655052265" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1333" y="322.4076655052265" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a6vgsu_di" bpmnElement="SequenceFlow_0a6vgsu"> + <di:waypoint xsi:type="dc:Point" x="1245" y="300" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1235" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03ebqhf_di" bpmnElement="SequenceFlow_03ebqhf"> + <di:waypoint xsi:type="dc:Point" x="377" y="300" /> + <di:waypoint xsi:type="dc:Point" x="434" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="405.5" y="278" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_012h7yx_di" bpmnElement="SequenceFlow_012h7yx"> + <di:waypoint xsi:type="dc:Point" x="813" y="-39" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="-39" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1064" y="-61" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01s0ef2_di" bpmnElement="SequenceFlow_01s0ef2"> + <di:waypoint xsi:type="dc:Point" x="187" y="300" /> + <di:waypoint xsi:type="dc:Point" x="277" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="278" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1uhlqf5_di" bpmnElement="Task_0dqjp43"> + <dc:Bounds x="87" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn new file mode 100644 index 0000000000..c26ad9ae59 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateE2EServiceInstanceRollback" name="DoCreateE2EServiceInstanceRollback" isExecutable="true"> + <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.processRollbackException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="RollbackSDNC?" default="SequenceFlow_1uw2p9a"> + <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="CallActivity_0ak0ezb"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBackAAI?" default="SequenceFlow_1n7wade"> + <bpmn2:documentation>rollback AAI</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1njogr1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1n7wade</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1x9eh33</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1n7wade" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="PostProcess_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_05wu9i7" sourceRef="deleteSI" targetRef="PostProcess_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x9eh33" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="deleteSI"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackAAI" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0k28xib" sourceRef="CallActivity_0ak0ezb" targetRef="ScriptTask_1uxr0cx" /> + <bpmn2:callActivity id="CallActivity_0ak0ezb" name="Call SDNC Service Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0khjo7l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("sdncDeactivateResponse") +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0khjo7l" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_0ppz9nd" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_05wu9i7</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1n7wade</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1gxe17c"> + <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.processRollbackJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_12e3h6k"> + <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_1awt1ds" name="Post Process SDNC Delete"> + <bpmn2:incoming>SequenceFlow_006g9e8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1njogr1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("sdncDeleteResponse") +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.validateSDNCResponse(execution, response, "delete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0ppz9nd" name="Call SDNC Service Topology Dekete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0khjo7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_006g9e8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_006g9e8" sourceRef="CallActivity_0ppz9nd" targetRef="ScriptTask_1awt1ds" /> + <bpmn2:sequenceFlow id="SequenceFlow_1njogr1" sourceRef="ScriptTask_1awt1ds" targetRef="ExclusiveGateway_0ii31dq" /> + <bpmn2:scriptTask id="deleteSI" name=" AAI Delete (svc instance) " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1x9eh33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_05wu9i7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.deleteServiceInstance(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent"> + <dc:Bounds x="151" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="146" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="234" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="187" y="97" /> + <di:waypoint xsi:type="dc:Point" x="234" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="1208" y="350" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1226" y="391" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="508" y="323" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="576" y="389" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="430" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="869" y="389" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="887" y="430" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="612" y="407" /> + <di:waypoint xsi:type="dc:Point" x="680" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="647" y="392" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="334" y="97" /> + <di:waypoint xsi:type="dc:Point" x="366" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="350" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true"> + <dc:Bounds x="448" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="433" y="129" width="79" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb"> + <di:waypoint xsi:type="dc:Point" x="498" y="97" /> + <di:waypoint xsi:type="dc:Point" x="539" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="100" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a"> + <di:waypoint xsi:type="dc:Point" x="473" y="72" /> + <di:waypoint xsi:type="dc:Point" x="473" y="-23" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="-23" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="72" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="751" y="-41" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true"> + <dc:Bounds x="1046" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1094" y="104" width="66" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1n7wade_di" bpmnElement="SequenceFlow_1n7wade"> + <di:waypoint xsi:type="dc:Point" x="1071" y="122" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="241" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="241" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1081" y="124.63709677419354" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05wu9i7_di" bpmnElement="SequenceFlow_05wu9i7"> + <di:waypoint xsi:type="dc:Point" x="1217" y="137" /> + <di:waypoint xsi:type="dc:Point" x="1217" y="201" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1187" y="169" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x9eh33_di" bpmnElement="SequenceFlow_1x9eh33"> + <di:waypoint xsi:type="dc:Point" x="1096" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1167" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1126" y="82" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib"> + <di:waypoint xsi:type="dc:Point" x="639" y="97" /> + <di:waypoint xsi:type="dc:Point" x="671" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb"> + <dc:Bounds x="539" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx"> + <dc:Bounds x="671" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0khjo7l_di" bpmnElement="SequenceFlow_0khjo7l"> + <di:waypoint xsi:type="dc:Point" x="771" y="97" /> + <di:waypoint xsi:type="dc:Point" x="796" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true"> + <dc:Bounds x="366" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="358" y="54" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="680" y="367" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="780" y="407" /> + <di:waypoint xsi:type="dc:Point" x="869" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="825" y="392" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask"> + <dc:Bounds x="1176" y="201" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl"> + <di:waypoint xsi:type="dc:Point" x="1226" y="281" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="350" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1241" y="315.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh"> + <di:waypoint xsi:type="dc:Point" x="416" y="97" /> + <di:waypoint xsi:type="dc:Point" x="448" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="82" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy"> + <di:waypoint xsi:type="dc:Point" x="391" y="122" /> + <di:waypoint xsi:type="dc:Point" x="391" y="268" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="195" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true"> + <dc:Bounds x="325" y="576" width="419" height="150" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c"> + <dc:Bounds x="360" y="628" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="669" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0"> + <dc:Bounds x="468" y="606" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k"> + <dc:Bounds x="618" y="628" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="636" y="669" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf"> + <di:waypoint xsi:type="dc:Point" x="396" y="646" /> + <di:waypoint xsi:type="dc:Point" x="468" y="646" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="421" y="646" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff"> + <di:waypoint xsi:type="dc:Point" x="568" y="646" /> + <di:waypoint xsi:type="dc:Point" x="618" y="646" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="593" y="646" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1awt1ds_di" bpmnElement="ScriptTask_1awt1ds"> + <dc:Bounds x="921" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ppz9nd_di" bpmnElement="CallActivity_0ppz9nd"> + <dc:Bounds x="796" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_006g9e8_di" bpmnElement="SequenceFlow_006g9e8"> + <di:waypoint xsi:type="dc:Point" x="896" y="97" /> + <di:waypoint xsi:type="dc:Point" x="921" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="909" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1njogr1_di" bpmnElement="SequenceFlow_1njogr1"> + <di:waypoint xsi:type="dc:Point" x="1021" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0uml7gl_di" bpmnElement="deleteSI"> + <dc:Bounds x="1167" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn new file mode 100644 index 0000000000..4c107c7cb4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn @@ -0,0 +1,1051 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateE2EServiceInstanceV2" name="DoCreateE2EServiceInstanceV2" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstanceV2() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="CustomE2EGetService" targetRef="ScriptTask_0i8cqdy_PostProcessAAIGET" /> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="CustomE2EGetService" /> + <bpmn2:callActivity id="CustomE2EGetService" name="Call Custom E2E Get Service" calledElement="CustomE2EGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="CustomE2EPutService" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService"> + <bpmn2:extensionElements> + <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" /> + <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" /> + <camunda:in source="serviceType" target="GENPS_serviceType" /> + <camunda:in sourceExpression="service-instance" target="GENPS_type" /> + <camunda:in source="serviceInstanceData" target="GENPS_payload" /> + <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="GENPS_requesId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0zmz5am</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_129ih1g</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_129ih1g" sourceRef="CustomE2EPutService" targetRef="ScriptTask_0q37vn9_PostProcessAAIPUT" /> + <bpmn2:subProcess id="SubProcess_06d8lk8" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0yljq9y"> + <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_117lkk3"> + <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateE2EServiceInstanceRollback" calledElement="DoCreateE2EServiceInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rollbackError" target="rollbackErrror" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" /> + <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" /> + <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstanceV2() +dcsi.preProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" /> + <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstanceV2() +dcsi.postProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_0i8cqdy_PostProcessAAIGET" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10aubhh</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateE2EServiceInstanceV2() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0q37vn9_PostProcessAAIPUT" name="Post Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_129ih1g</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03fabby</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.postProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0kbbt94" /> + <bpmn2:sequenceFlow id="SequenceFlow_03fabby" sourceRef="ScriptTask_0q37vn9_PostProcessAAIPUT" targetRef="IntermediateThrowEvent_0cabwkq" /> + <bpmn2:scriptTask id="Task_1u82cbz" name="PreProcess Decompose Next Resouce" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13l7ffp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gorww6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.preProcessDecomposeNextResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1761epe" default="SequenceFlow_14ef6wp"> + <bpmn2:incoming>SequenceFlow_1wf52w6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1t9tmp4</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_14ef6wp</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_163tmnq</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0gorww6" sourceRef="Task_1u82cbz" targetRef="ScriptTask_1oc0qjo" /> + <bpmn2:sequenceFlow id="SequenceFlow_1t9tmp4" name="VFC" sourceRef="ExclusiveGateway_1761epe" targetRef="Task_09laxun"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("controllerType") =="VFC"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="Task_09laxun" name="PreProcess Resource Request for VFC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1t9tmp4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1t4cc7w</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.preProcessResourceRequestForController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1t4cc7w" sourceRef="Task_09laxun" targetRef="ExclusiveGateway_1xkr802" /> + <bpmn2:callActivity id="Task_1wyyy33" name="Call DoCreateVFCNetworkServiceInstance" calledElement="DoCreateVFCNetworkServiceInstance"> + <bpmn2:extensionElements> + <camunda:in source="nsServiceName" target="nsServiceName" /> + <camunda:in source="nsServiceDescription" target="nsServiceDescription" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="resourceUUID" target="resourceUUID" /> + <camunda:in source="resourceParameters" target="resourceParameters" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1a1du22</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1p99k36</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1p99k36" sourceRef="Task_1wyyy33" targetRef="ExclusiveGateway_1iu2jb7" /> + <bpmn2:scriptTask id="Task_0ag30bf" name="PostProcess Resource Request for VFC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0cyffv0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_07q8ra0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.postProcessResourceRequestForVFC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1op29ls" name="PostProcess Resource Request for SDNC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_06byir6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ylmq2b</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.postProcessResourceRequestForSDNC(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0g6otdg" name="PreProcess Resource Request for SDNC" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vey6x4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0br9juy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.preProcessResourceRequestForController(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0r4jkig"> + <bpmn2:incoming>SequenceFlow_0ylmq2b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_07q8ra0</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0gxsqsa</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1yhd9dp</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ylmq2b" sourceRef="ScriptTask_1op29ls" targetRef="ExclusiveGateway_0r4jkig" /> + <bpmn2:sequenceFlow id="SequenceFlow_07q8ra0" sourceRef="Task_0ag30bf" targetRef="ExclusiveGateway_0r4jkig" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1pwgsa8" name="Resource Finish?" default="SequenceFlow_13l7ffp"> + <bpmn2:incoming>SequenceFlow_1rhn48b</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1mbrbsc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13l7ffp</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1fq4qzy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_13l7ffp" name="No" sourceRef="ExclusiveGateway_1pwgsa8" targetRef="Task_1u82cbz" /> + <bpmn2:scriptTask id="Task_0vtxtuq_QueryServiceResources" name="Query Service Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1r1hl23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ct6u3o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.getServiceResources(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_1t9ln4p" name="Call Sync SDNC service Create " camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn2:incoming>SequenceFlow_1vio1tn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_07pkpa0</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:serviceTask id="CallActivity_0x5g3pa" name="Call DoCreateSDNCNetworkInstance" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn2:incoming>SequenceFlow_0br9juy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06byir6</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="Post Config Service Instance Creation" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0cnuo36</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.postConfigRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1xkr802" name="skip VFC?" default="SequenceFlow_1a1du22"> + <bpmn2:incoming>SequenceFlow_1t4cc7w</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1a1du22</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_14jy44g</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1a1du22" name="No" sourceRef="ExclusiveGateway_1xkr802" targetRef="Task_1wyyy33" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1iu2jb7"> + <bpmn2:incoming>SequenceFlow_1p99k36</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_14jy44g</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cyffv0</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0cyffv0" sourceRef="ExclusiveGateway_1iu2jb7" targetRef="Task_0ag30bf" /> + <bpmn2:sequenceFlow id="SequenceFlow_14jy44g" name="yes" sourceRef="ExclusiveGateway_1xkr802" targetRef="ExclusiveGateway_1iu2jb7"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("skipVFC") == "true" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0br9juy" sourceRef="ScriptTask_0g6otdg" targetRef="CallActivity_0x5g3pa" /> + <bpmn2:sequenceFlow id="SequenceFlow_06byir6" sourceRef="CallActivity_0x5g3pa" targetRef="ScriptTask_1op29ls" /> + <bpmn2:sequenceFlow id="SequenceFlow_14ef6wp" name="Other" sourceRef="ExclusiveGateway_1761epe" targetRef="Task_0zhvu4r_llllll" /> + <bpmn2:scriptTask id="Task_0zhvu4r_llllll" name="PosOtherCotrollerType" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14ef6wp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gxsqsa</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.postOtherControllerType(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0gxsqsa" sourceRef="Task_0zhvu4r_llllll" targetRef="ExclusiveGateway_0r4jkig" /> + <bpmn2:sequenceFlow id="SequenceFlow_10aubhh" sourceRef="ScriptTask_0i8cqdy_PostProcessAAIGET" targetRef="IntermediateThrowEvent_0aggdcl_GoToStartService" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0aggdcl_GoToStartService" name="GoTo StartService"> + <bpmn2:incoming>SequenceFlow_10aubhh</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="StartEvent_0l5bz4h_StartService" name="StartService"> + <bpmn2:outgoing>SequenceFlow_0zmz5am</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartService" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zmz5am" sourceRef="StartEvent_0l5bz4h_StartService" targetRef="CustomE2EPutService" /> + <bpmn2:sequenceFlow id="SequenceFlow_1rhn48b" sourceRef="StartEvent_StartResource" targetRef="ExclusiveGateway_1pwgsa8" /> + <bpmn2:intermediateCatchEvent id="StartEvent_StartResource" name="StartResource"> + <bpmn2:outgoing>SequenceFlow_1rhn48b</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartResource" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ct6u3o" sourceRef="Task_0vtxtuq_QueryServiceResources" targetRef="IntermediateThrowEvent_1dwg5lz" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dwg5lz" name="GoTo StartResource"> + <bpmn2:incoming>SequenceFlow_1ct6u3o</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartResource" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_1wk7zcu" /> + <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="FinishProcess"> + <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:endEvent id="EndEvent_0x8im5g"> + <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" /> + <bpmn2:sequenceFlow id="SequenceFlow_1fq4qzy" name="Yes" sourceRef="ExclusiveGateway_1pwgsa8" targetRef="IntermediateThrowEvent_GoToFinishProcess"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_resourceFinish") == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_GoToFinishProcess" name="GoTo FinishProcess"> + <bpmn2:incoming>SequenceFlow_1fq4qzy</bpmn2:incoming> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1aszwcv_CheckResourceType" name="Check Resouce Type" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10jgs3j</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wf52w6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.checkResourceType(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1wf52w6" sourceRef="ScriptTask_1aszwcv_CheckResourceType" targetRef="ExclusiveGateway_1761epe" /> + <bpmn2:scriptTask id="ScriptTask_0jm9d9b" name="PostProcess Decompose Next Resouce" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yhd9dp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0uj9myy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateE2EServiceInstanceV2() +csi.postProcessDecomposeNextResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1yhd9dp" sourceRef="ExclusiveGateway_0r4jkig" targetRef="ScriptTask_0jm9d9b" /> + <bpmn2:sequenceFlow id="SequenceFlow_0uj9myy" sourceRef="ScriptTask_0jm9d9b" targetRef="ScriptTask_1vo6y1t" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0cabwkq" name="GoTo UpdateResourceOperStatus"> + <bpmn2:incoming>SequenceFlow_03fabby</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateCatchEvent id="StartEvent_1p7w4fj" name="Update Resource Oper Status"> + <bpmn2:outgoing>SequenceFlow_0e8oxe4</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0e8oxe4" sourceRef="StartEvent_1p7w4fj" targetRef="ScriptTask_0vaaotj" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0pz2s2d"> + <bpmn2:incoming>SequenceFlow_07pkpa0</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_01zluif</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vey6x4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0vey6x4" sourceRef="ExclusiveGateway_0pz2s2d" targetRef="ScriptTask_0g6otdg" /> + <bpmn2:sequenceFlow id="SequenceFlow_07pkpa0" sourceRef="ServiceTask_1t9ln4p" targetRef="ExclusiveGateway_0pz2s2d" /> + <bpmn2:sequenceFlow id="SequenceFlow_163tmnq" name="SDNC" sourceRef="ExclusiveGateway_1761epe" targetRef="ExclusiveGateway_0k814as"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("controllerType") =="SDNC"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0k814as" name="SDNC service Create?" default="SequenceFlow_1vio1tn"> + <bpmn2:incoming>SequenceFlow_163tmnq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01zluif</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1vio1tn</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_01zluif" name="yes" sourceRef="ExclusiveGateway_0k814as" targetRef="ExclusiveGateway_0pz2s2d"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("unit_test") == "true" || execution.getVariable("serviceSDNCCreate") == "true" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1vio1tn" name="no" sourceRef="ExclusiveGateway_0k814as" targetRef="ServiceTask_1t9ln4p" /> + <bpmn2:scriptTask id="ScriptTask_0vaaotj" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0e8oxe4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sata7n</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_1jbqff7" name="Update Service Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1sata7n</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x0jvs1</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_1sata7n" sourceRef="ScriptTask_0vaaotj" targetRef="ServiceTask_1jbqff7" /> + <bpmn2:sequenceFlow id="SequenceFlow_0x0jvs1" sourceRef="ServiceTask_1jbqff7" targetRef="ScriptTask_1pwo0jp" /> + <bpmn2:scriptTask id="ScriptTask_1wk7zcu" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gr3l25</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("progress", "100") +execution.setVariable("operationStatus", "End") +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_1a6cmdu" name="Update Service Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0gr3l25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cnuo36</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_0gr3l25" sourceRef="ScriptTask_1wk7zcu" targetRef="ServiceTask_1a6cmdu" /> + <bpmn2:sequenceFlow id="SequenceFlow_0cnuo36" sourceRef="ServiceTask_1a6cmdu" targetRef="ScriptTask_04rn9mp" /> + <bpmn2:scriptTask id="ScriptTask_1vo6y1t" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0uj9myy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_037rvnb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_037rvnb" sourceRef="ScriptTask_1vo6y1t" targetRef="ServiceTask_13w9clz" /> + <bpmn2:serviceTask id="ServiceTask_13w9clz" name="Update Service Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_037rvnb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mbrbsc</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_1mbrbsc" sourceRef="ServiceTask_13w9clz" targetRef="ExclusiveGateway_1pwgsa8" /> + <bpmn2:scriptTask id="ScriptTask_1pwo0jp" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0x0jvs1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0aylb6e</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0aylb6e" sourceRef="ScriptTask_1pwo0jp" targetRef="ServiceTask_1dqzdko" /> + <bpmn2:serviceTask id="ServiceTask_1dqzdko" name="Init Resource Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0aylb6e</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1r1hl23</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_1r1hl23" sourceRef="ServiceTask_1dqzdko" targetRef="Task_0vtxtuq_QueryServiceResources" /> + <bpmn2:serviceTask id="ServiceTask_0uiibxn" name="Update Service Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_01oo8ar</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10jgs3j</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_10jgs3j" sourceRef="ServiceTask_0uiibxn" targetRef="ScriptTask_1aszwcv_CheckResourceType" /> + <bpmn2:scriptTask id="ScriptTask_1oc0qjo" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gorww6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01oo8ar</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +def ddsi = new DoCreateE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_01oo8ar" sourceRef="ScriptTask_1oc0qjo" targetRef="ServiceTask_0uiibxn" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="-14" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-20" y="120" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="187" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="22" y="97" /> + <di:waypoint xsi:type="dc:Point" x="187" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="59.5" y="82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4"> + <di:waypoint xsi:type="dc:Point" x="664" y="97" /> + <di:waypoint xsi:type="dc:Point" x="917" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="745.5" y="82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61" targetElement="CallActivity_1md4kyb_di"> + <di:waypoint xsi:type="dc:Point" x="287" y="97" /> + <di:waypoint xsi:type="dc:Point" x="564" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="380.5" y="82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="CustomE2EGetService"> + <dc:Bounds x="564" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="CustomE2EPutService"> + <dc:Bounds x="564" y="244" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g"> + <di:waypoint xsi:type="dc:Point" x="664" y="284" /> + <di:waypoint xsi:type="dc:Point" x="917" y="284" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="745.5" y="269" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true"> + <dc:Bounds x="-11" y="1751" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y"> + <dc:Bounds x="85" y="1828" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="58" y="1869" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3"> + <dc:Bounds x="718" y="1828" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="691" y="1869" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6"> + <dc:Bounds x="383" y="1806" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf"> + <di:waypoint xsi:type="dc:Point" x="483" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="551" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="472" y="1831" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11"> + <di:waypoint xsi:type="dc:Point" x="121" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="220" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="126" y="1831" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy_PostProcessAAIGET"> + <dc:Bounds x="917" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9_PostProcessAAIPUT"> + <dc:Bounds x="917" y="244" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux"> + <dc:Bounds x="220" y="1806" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf"> + <di:waypoint xsi:type="dc:Point" x="320" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="383" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="307" y="1831" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip"> + <dc:Bounds x="551" y="1806" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k"> + <di:waypoint xsi:type="dc:Point" x="651" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="683" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="683" y="1846" /> + <di:waypoint xsi:type="dc:Point" x="718" y="1846" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="653" y="1846" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_01p249c_di" bpmnElement="EndEvent_0kbbt94"> + <dc:Bounds x="-823" y="841" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-941" y="881" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_03fabby_di" bpmnElement="SequenceFlow_03fabby"> + <di:waypoint xsi:type="dc:Point" x="1017" y="284" /> + <di:waypoint xsi:type="dc:Point" x="1239" y="284" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083" y="263" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1etg91s_di" bpmnElement="Task_1u82cbz"> + <dc:Bounds x="398" y="625" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1761epe_di" bpmnElement="ExclusiveGateway_1761epe" isMarkerVisible="true"> + <dc:Bounds x="1137" y="1189" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1117" y="1243" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gorww6_di" bpmnElement="SequenceFlow_0gorww6"> + <di:waypoint xsi:type="dc:Point" x="498" y="665" /> + <di:waypoint xsi:type="dc:Point" x="580" y="665" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="494" y="644" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t9tmp4_di" bpmnElement="SequenceFlow_1t9tmp4"> + <di:waypoint xsi:type="dc:Point" x="1162" y="1189" /> + <di:waypoint xsi:type="dc:Point" x="1162" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="1095" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1166" y="1097" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1azssf7_di" bpmnElement="Task_09laxun"> + <dc:Bounds x="995" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1t4cc7w_di" bpmnElement="SequenceFlow_1t4cc7w"> + <di:waypoint xsi:type="dc:Point" x="995" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="866" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="885.5" y="996" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1v57nb9_di" bpmnElement="Task_1wyyy33"> + <dc:Bounds x="539" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1p99k36_di" bpmnElement="SequenceFlow_1p99k36"> + <di:waypoint xsi:type="dc:Point" x="539" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="401" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="425" y="996" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1fj89ew_di" bpmnElement="Task_0ag30bf"> + <dc:Bounds x="226" y="977" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1op29ls_di" bpmnElement="ScriptTask_1op29ls"> + <dc:Bounds x="226" y="1339" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0g6otdg_di" bpmnElement="ScriptTask_0g6otdg"> + <dc:Bounds x="643" y="1339" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0r4jkig_di" bpmnElement="ExclusiveGateway_0r4jkig" isMarkerVisible="true"> + <dc:Bounds x="126" y="1189" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="123" y="1243" width="60" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ylmq2b_di" bpmnElement="SequenceFlow_0ylmq2b"> + <di:waypoint xsi:type="dc:Point" x="226" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="151" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="151" y="1239" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="143.5" y="1358" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07q8ra0_di" bpmnElement="SequenceFlow_07q8ra0"> + <di:waypoint xsi:type="dc:Point" x="226" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="151" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="151" y="1189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="143.5" y="996" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1pwgsa8_di" bpmnElement="ExclusiveGateway_1pwgsa8" isMarkerVisible="true"> + <dc:Bounds x="212" y="640" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="194" y="694" width="86" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13l7ffp_di" bpmnElement="SequenceFlow_13l7ffp"> + <di:waypoint xsi:type="dc:Point" x="262" y="665" /> + <di:waypoint xsi:type="dc:Point" x="398" y="665" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="377.03973509933775" y="644" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_08hez0f_di" bpmnElement="Task_0vtxtuq_QueryServiceResources"> + <dc:Bounds x="917" y="451" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1t9ln4p_di" bpmnElement="ServiceTask_1t9ln4p"> + <dc:Bounds x="881" y="1339" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1asiahh_di" bpmnElement="CallActivity_0x5g3pa"> + <dc:Bounds x="429" y="1339" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp"> + <dc:Bounds x="539" y="1590" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1xkr802_di" bpmnElement="ExclusiveGateway_1xkr802" isMarkerVisible="true"> + <dc:Bounds x="816" y="992" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="817" y="1051" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1a1du22_di" bpmnElement="SequenceFlow_1a1du22"> + <di:waypoint xsi:type="dc:Point" x="816" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="639" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="721.1366906474819" y="996" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1iu2jb7_di" bpmnElement="ExclusiveGateway_1iu2jb7" isMarkerVisible="true"> + <dc:Bounds x="351" y="992" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="331" y="1051" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0cyffv0_di" bpmnElement="SequenceFlow_0cyffv0"> + <di:waypoint xsi:type="dc:Point" x="351" y="1017" /> + <di:waypoint xsi:type="dc:Point" x="326" y="1017" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="293.5" y="996" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14jy44g_di" bpmnElement="SequenceFlow_14jy44g"> + <di:waypoint xsi:type="dc:Point" x="841" y="992" /> + <di:waypoint xsi:type="dc:Point" x="841" y="932" /> + <di:waypoint xsi:type="dc:Point" x="376" y="932" /> + <di:waypoint xsi:type="dc:Point" x="376" y="992" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="599.5643203883494" y="911" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0br9juy_di" bpmnElement="SequenceFlow_0br9juy"> + <di:waypoint xsi:type="dc:Point" x="643" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="529" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="541" y="1358" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06byir6_di" bpmnElement="SequenceFlow_06byir6"> + <di:waypoint xsi:type="dc:Point" x="429" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="326" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332.5" y="1358" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14ef6wp_di" bpmnElement="SequenceFlow_14ef6wp"> + <di:waypoint xsi:type="dc:Point" x="1137" y="1214" /> + <di:waypoint xsi:type="dc:Point" x="639" y="1214" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="874.1140567200987" y="1193" width="29" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1pcl6u1_di" bpmnElement="Task_0zhvu4r_llllll"> + <dc:Bounds x="539" y="1174" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gxsqsa_di" bpmnElement="SequenceFlow_0gxsqsa"> + <di:waypoint xsi:type="dc:Point" x="539" y="1214" /> + <di:waypoint xsi:type="dc:Point" x="176" y="1214" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="312.5" y="1193" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10aubhh_di" bpmnElement="SequenceFlow_10aubhh"> + <di:waypoint xsi:type="dc:Point" x="1017" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1239" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1128" y="76" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1m5zb3d_di" bpmnElement="IntermediateThrowEvent_0aggdcl_GoToStartService"> + <dc:Bounds x="1239" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1213" y="119" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1vjqlwn_di" bpmnElement="StartEvent_0l5bz4h_StartService"> + <dc:Bounds x="-14" y="266" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-26" y="306" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zmz5am_di" bpmnElement="SequenceFlow_0zmz5am"> + <di:waypoint xsi:type="dc:Point" x="22" y="284" /> + <di:waypoint xsi:type="dc:Point" x="564" y="284" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="248" y="263" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1rhn48b_di" bpmnElement="SequenceFlow_1rhn48b"> + <di:waypoint xsi:type="dc:Point" x="22" y="595" /> + <di:waypoint xsi:type="dc:Point" x="237" y="595" /> + <di:waypoint xsi:type="dc:Point" x="237" y="640" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129.5" y="574" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0jks7by_di" bpmnElement="StartEvent_StartResource"> + <dc:Bounds x="-14" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-31" y="617" width="71" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ct6u3o_di" bpmnElement="SequenceFlow_1ct6u3o"> + <di:waypoint xsi:type="dc:Point" x="1018" y="491" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="491" /> + <di:waypoint xsi:type="dc:Point" x="1085" y="491" /> + <di:waypoint xsi:type="dc:Point" x="1239" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1100" y="485" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0ys6800_di" bpmnElement="IntermediateThrowEvent_1dwg5lz"> + <dc:Bounds x="1239" y="473" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1222" y="513" width="71" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae"> + <di:waypoint xsi:type="dc:Point" x="40" y="1630" /> + <di:waypoint xsi:type="dc:Point" x="148" y="1630" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="49" y="1609" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664"> + <dc:Bounds x="4" y="1612" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-13" y="1652" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g"> + <dc:Bounds x="723" y="1612" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="741" y="1652" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2"> + <di:waypoint xsi:type="dc:Point" x="639" y="1630" /> + <di:waypoint xsi:type="dc:Point" x="723" y="1630" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="636" y="1609" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fq4qzy_di" bpmnElement="SequenceFlow_1fq4qzy"> + <di:waypoint xsi:type="dc:Point" x="237" y="690" /> + <di:waypoint xsi:type="dc:Point" x="237" y="794" /> + <di:waypoint xsi:type="dc:Point" x="258" y="794" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="227.12763168720514" y="735.6050882148045" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11jt9tx_di" bpmnElement="IntermediateThrowEvent_GoToFinishProcess"> + <dc:Bounds x="258" y="776" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="242" y="816" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1aszwcv_di" bpmnElement="ScriptTask_1aszwcv_CheckResourceType"> + <dc:Bounds x="1027" y="625" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wf52w6_di" bpmnElement="SequenceFlow_1wf52w6"> + <di:waypoint xsi:type="dc:Point" x="1127" y="665" /> + <di:waypoint xsi:type="dc:Point" x="1240" y="665" /> + <di:waypoint xsi:type="dc:Point" x="1240" y="1214" /> + <di:waypoint xsi:type="dc:Point" x="1187" y="1214" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1210" y="933.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0jm9d9b_di" bpmnElement="ScriptTask_0jm9d9b"> + <dc:Bounds x="-9" y="1174" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1yhd9dp_di" bpmnElement="SequenceFlow_1yhd9dp"> + <di:waypoint xsi:type="dc:Point" x="126" y="1214" /> + <di:waypoint xsi:type="dc:Point" x="91" y="1214" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="108.5" y="1193" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uj9myy_di" bpmnElement="SequenceFlow_0uj9myy"> + <di:waypoint xsi:type="dc:Point" x="41" y="1174" /> + <di:waypoint xsi:type="dc:Point" x="41" y="985" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="11" y="1073.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0nf1193_di" bpmnElement="IntermediateThrowEvent_0cabwkq"> + <dc:Bounds x="1239" y="266" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1219" y="306" width="83" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0v3ecwh_di" bpmnElement="StartEvent_1p7w4fj"> + <dc:Bounds x="-14" y="473" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-38" y="513" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0e8oxe4_di" bpmnElement="SequenceFlow_0e8oxe4"> + <di:waypoint xsi:type="dc:Point" x="22" y="491" /> + <di:waypoint xsi:type="dc:Point" x="226" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="79" y="470" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0pz2s2d_di" bpmnElement="ExclusiveGateway_0pz2s2d" isMarkerVisible="true"> + <dc:Bounds x="791" y="1354" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="726" y="1408" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vey6x4_di" bpmnElement="SequenceFlow_0vey6x4"> + <di:waypoint xsi:type="dc:Point" x="791" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="743" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="1358" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07pkpa0_di" bpmnElement="SequenceFlow_07pkpa0"> + <di:waypoint xsi:type="dc:Point" x="881" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="841" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="816" y="1358" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_163tmnq_di" bpmnElement="SequenceFlow_163tmnq"> + <di:waypoint xsi:type="dc:Point" x="1162" y="1239" /> + <di:waypoint xsi:type="dc:Point" x="1162" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="1070" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1171" y="1300" width="31" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0k814as_di" bpmnElement="ExclusiveGateway_0k814as" isMarkerVisible="true"> + <dc:Bounds x="1020" y="1354" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1022" y="1410" width="46" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01zluif_di" bpmnElement="SequenceFlow_01zluif"> + <di:waypoint xsi:type="dc:Point" x="1045" y="1354" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="1295" /> + <di:waypoint xsi:type="dc:Point" x="816" y="1295" /> + <di:waypoint xsi:type="dc:Point" x="816" y="1354" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="922" y="1274" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vio1tn_di" bpmnElement="SequenceFlow_1vio1tn"> + <di:waypoint xsi:type="dc:Point" x="1020" y="1379" /> + <di:waypoint xsi:type="dc:Point" x="981" y="1379" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1001" y="1402" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0vaaotj_di" bpmnElement="ScriptTask_0vaaotj"> + <dc:Bounds x="226" y="451" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1jbqff7_di" bpmnElement="ServiceTask_1jbqff7"> + <dc:Bounds x="390" y="451" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sata7n_di" bpmnElement="SequenceFlow_1sata7n"> + <di:waypoint xsi:type="dc:Point" x="326" y="491" /> + <di:waypoint xsi:type="dc:Point" x="390" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313" y="470" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0x0jvs1_di" bpmnElement="SequenceFlow_0x0jvs1"> + <di:waypoint xsi:type="dc:Point" x="490" y="491" /> + <di:waypoint xsi:type="dc:Point" x="564" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="482" y="470" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1wk7zcu_di" bpmnElement="ScriptTask_1wk7zcu"> + <dc:Bounds x="148" y="1590" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_1a6cmdu_di" bpmnElement="ServiceTask_1a6cmdu"> + <dc:Bounds x="379" y="1590" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gr3l25_di" bpmnElement="SequenceFlow_0gr3l25"> + <di:waypoint xsi:type="dc:Point" x="248" y="1630" /> + <di:waypoint xsi:type="dc:Point" x="379" y="1630" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="313.5" y="1609" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cnuo36_di" bpmnElement="SequenceFlow_0cnuo36"> + <di:waypoint xsi:type="dc:Point" x="479" y="1630" /> + <di:waypoint xsi:type="dc:Point" x="539" y="1630" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="509" y="1609" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1vo6y1t_di" bpmnElement="ScriptTask_1vo6y1t"> + <dc:Bounds x="-9" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_037rvnb_di" bpmnElement="SequenceFlow_037rvnb"> + <di:waypoint xsi:type="dc:Point" x="41" y="905" /> + <di:waypoint xsi:type="dc:Point" x="41" y="844" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="56" y="868.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_13w9clz_di" bpmnElement="ServiceTask_13w9clz"> + <dc:Bounds x="-9" y="764" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1mbrbsc_di" bpmnElement="SequenceFlow_1mbrbsc"> + <di:waypoint xsi:type="dc:Point" x="41" y="764" /> + <di:waypoint xsi:type="dc:Point" x="41" y="665" /> + <di:waypoint xsi:type="dc:Point" x="212" y="665" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="56" y="708.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1pwo0jp_di" bpmnElement="ScriptTask_1pwo0jp"> + <dc:Bounds x="564" y="451" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0aylb6e_di" bpmnElement="SequenceFlow_0aylb6e"> + <di:waypoint xsi:type="dc:Point" x="664" y="491" /> + <di:waypoint xsi:type="dc:Point" x="741" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="702.5" y="470" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1dqzdko_di" bpmnElement="ServiceTask_1dqzdko"> + <dc:Bounds x="741" y="451" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1r1hl23_di" bpmnElement="SequenceFlow_1r1hl23"> + <di:waypoint xsi:type="dc:Point" x="841" y="491" /> + <di:waypoint xsi:type="dc:Point" x="917" y="491" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="879" y="470" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0uiibxn_di" bpmnElement="ServiceTask_0uiibxn"> + <dc:Bounds x="750" y="625" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_10jgs3j_di" bpmnElement="SequenceFlow_10jgs3j"> + <di:waypoint xsi:type="dc:Point" x="850" y="665" /> + <di:waypoint xsi:type="dc:Point" x="1027" y="665" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="938.5" y="644" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1oc0qjo_di" bpmnElement="ScriptTask_1oc0qjo"> + <dc:Bounds x="580" y="625" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01oo8ar_di" bpmnElement="SequenceFlow_01oo8ar"> + <di:waypoint xsi:type="dc:Point" x="680" y="665" /> + <di:waypoint xsi:type="dc:Point" x="750" y="665" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="715" y="644" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn new file mode 100644 index 0000000000..12dbfe6dde --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn @@ -0,0 +1,1363 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateNetworkInstance" name="DoCreateNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1n61wit</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:endEvent id="aai_Error_EndEvent" name="AAI Name Error"> + <bpmn2:incoming>isReturnCode404_No_SequenceFlow</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_53" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:inclusiveGateway id="InclusiveGateway"> + <bpmn2:incoming>isNetworkActiveNo_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>isReturnCode404_Yes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_21" sourceRef="InclusiveGateway" targetRef="callRESTQueryCloudRegion_ScriptTask" /> + <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:incoming>isNameSentNo_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="isSdncRpc1_ExclusiveGateway1" /> + <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare Assign SDNC Request" scriptFormat="groovy"> + <bpmn2:incoming>isSdncRpc1No_SequenceFlow1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareSDNCRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callAssignSDNCAdapter_CallActivity" /> + <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Assign Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0d93bqw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.validateSDNCResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="isSdncTopoOk_ExclusiveGateway" name="Is SDNC Ok?" default="sdncTopoNo_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>sdncTopoNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>sdncTopoYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="sdncTopoNo_SequenceFlow" name="No" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="sndcError_EndEvent" /> + <bpmn2:sequenceFlow id="sdncTopoYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="callRESTQueryNetworkId_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoOk_ExclusiveGateway" /> + <bpmn2:boundaryEvent id="BoundaryEvent_4" name="" attachedToRef="validateSDNCResponse_ScriptTask"> + <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_84" errorRef="Error_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="BoundaryEvent_4" targetRef="sndcError_EndEvent" /> + <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error"> + <bpmn2:incoming>sdncTopoNo_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="callRESTQueryNetworkId_ScriptTask" name="Call REST Query Network Id In AAI" scriptFormat="groovy"> + <bpmn2:incoming>sdncTopoYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAINetworkId(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="callRESTQueryNetworkId_ScriptTask" targetRef="callRESTQueryVpnBinding_ScriptTask" /> + <bpmn2:callActivity id="callAssignSDNCAdapter_CallActivity" name="Call SDNC Assign Adapter V1 " calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="CRENWKI_assignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKI_assignSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncReturnCode" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callAssignSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" /> + <bpmn2:scriptTask id="validateCreatePONetwork_ScriptTask" name="Validate Create PO Network" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_59</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.validateCreateNetworkResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="isNetworkActive_ExclusiveGateway" name="Is Network Active?" default="isNetworkActiveNo_SequenceFlow"> + <bpmn2:incoming>isAAIQueryNameYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>isNetworkActiveYes_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isNetworkActiveNo_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isNetworkActiveYes_SequenceFlow" name="Yes" sourceRef="isNetworkActive_ExclusiveGateway" targetRef="ScriptTask_0p3v749"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_orchestrationStatus") == "ACTIVE"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isNetworkActiveNo_SequenceFlow" name="No" sourceRef="isNetworkActive_ExclusiveGateway" targetRef="InclusiveGateway" /> + <bpmn2:exclusiveGateway id="isAAIQueryNameOk_ExclusiveGateway" name="Is Query Name Ok? " default="isAAIQueryNameNo_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>isAAIQueryNameNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isAAIQueryNameYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isAAIQueryNameNo_SequenceFlow" name="No" sourceRef="isAAIQueryNameOk_ExclusiveGateway" targetRef="isReturnCode404_ExclusiveGateway" /> + <bpmn2:sequenceFlow id="isAAIQueryNameYes_SequenceFlow" name="Yes" sourceRef="isAAIQueryNameOk_ExclusiveGateway" targetRef="isNetworkActive_ExclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isAAIqueryNameGood") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="isReturnCode404_ExclusiveGateway" name="Is Code 404?" default="isReturnCode404_No_SequenceFlow"> + <bpmn2:incoming>isAAIQueryNameNo_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>isReturnCode404_No_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isReturnCode404_Yes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isReturnCode404_No_SequenceFlow" name="No" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="aai_Error_EndEvent" /> + <bpmn2:sequenceFlow id="isReturnCode404_Yes_SequenceFlow" name="Yes" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="InclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_aaiNameReturnCode" ) == "404"} + +]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Prepare Rollback Data" triggeredByEvent="true"> + <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ScriptTask_0j3058g" /> + <bpmn2:exclusiveGateway id="isPONR_ExclusiveGateway" name="isPONR?" default="isPONR_No_SequenceFlow"> + <bpmn2:incoming>isRollbackOn_SequenceFlow_Yes</bpmn2:incoming> + <bpmn2:outgoing>isPONR_Yes_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isPONR_No_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isPONR_Yes_SequenceFlow" name="Yes" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1umhuft"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isPONR") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isPONR_No_SequenceFlow" name="No" sourceRef="isPONR_ExclusiveGateway" targetRef="isSDNCActivate_ExclusiveGateway" /> + <bpmn2:exclusiveGateway id="sdncOk_ExclusiveGateway" name="is SDNC Topo Ok?" default="sdncOk_No_ExclusiveGateway"> + <bpmn2:incoming>SequenceFlow_0k7y7b5</bpmn2:incoming> + <bpmn2:outgoing>sdncOk_Yeso_ExclusiveGateway</bpmn2:outgoing> + <bpmn2:outgoing>sdncOk_No_ExclusiveGateway</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="sdncOk_Yeso_ExclusiveGateway" name="Yes" sourceRef="sdncOk_ExclusiveGateway" targetRef="isSdncRpc4_ExclusiveGateway4"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isSdncRollbackNeeded" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="sdncOk_No_ExclusiveGateway" name="No" sourceRef="sdncOk_ExclusiveGateway" targetRef="ExclusiveGateway_1qb2vwe" /> + <bpmn2:scriptTask id="prepareSDNCRollbackRequest_ScriptTask" name="Prepare SDNCRollback Request" scriptFormat="groovy"> + <bpmn2:incoming>isSdncRpc4No_SequenceFlow4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0lndbvr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareSDNCRollbackRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="isSDNCActivate_ExclusiveGateway" name="is SDNC Activate Ok?" default="SequenceFlow_12tlymf"> + <bpmn2:incoming>isPONR_No_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cly7z2</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_12tlymf</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0cly7z2" name="Yes" sourceRef="isSDNCActivate_ExclusiveGateway" targetRef="Task_1imzwi3"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isSdncActivateRollbackNeeded" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_12tlymf" name="No" sourceRef="isSDNCActivate_ExclusiveGateway" targetRef="ExclusiveGateway_1bk0tqd" /> + <bpmn2:exclusiveGateway id="isSdncRpc4_ExclusiveGateway4" name="is not '1610' SNDC Call?" default="isSdncRpc4No_SequenceFlow4"> + <bpmn2:incoming>sdncOk_Yeso_ExclusiveGateway</bpmn2:incoming> + <bpmn2:outgoing>isSdncRpc4Yes_SequenceFlow4</bpmn2:outgoing> + <bpmn2:outgoing>isSdncRpc4No_SequenceFlow4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isSdncRpc4Yes_SequenceFlow4" name="Yes" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="Task_0q6pzpn"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isSdncRpc4No_SequenceFlow4" name="No" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="prepareSDNCRollbackRequest_ScriptTask" /> + <bpmn2:scriptTask id="Task_0q6pzpn" name="Prepare RSRC SDNCRollback Request" scriptFormat="groovy"> + <bpmn2:incoming>isSdncRpc4Yes_SequenceFlow4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bwpkkb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareRpcSDNCRollbackRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1kpt4kc"> + <bpmn2:incoming>SequenceFlow_1qwubew</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_0myjg9k" name="Prepare RollbackData" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15sffxc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_096tad6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0b8j5rw" sourceRef="Task_1imzwi3" targetRef="ExclusiveGateway_1bk0tqd" /> + <bpmn2:scriptTask id="Task_1imzwi3" name="Prepare RSRC SDNC Activate Rollback Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0cly7z2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b8j5rw</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareRpcSDNCActivateRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1u07hp7" name="DoCreate NetworkInstanceRollback " calledElement="DoCreateNetworkInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="wasDeleted" target="wasDeleted" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="workflowException" target="workflowException" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_096tad6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0vzsyrd</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0vzsyrd" sourceRef="CallActivity_1u07hp7" targetRef="ScriptTask_0w2ekuz" /> + <bpmn2:sequenceFlow id="SequenceFlow_0bwpkkb" sourceRef="Task_0q6pzpn" targetRef="ExclusiveGateway_1qb2vwe" /> + <bpmn2:sequenceFlow id="SequenceFlow_0lndbvr" sourceRef="prepareSDNCRollbackRequest_ScriptTask" targetRef="ExclusiveGateway_1qb2vwe" /> + <bpmn2:sequenceFlow id="SequenceFlow_096tad6" sourceRef="ScriptTask_0myjg9k" targetRef="CallActivity_1u07hp7" /> + <bpmn2:scriptTask id="ScriptTask_0w2ekuz" name="PostProcess Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0vzsyrd</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_17nx822</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qwubew</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1qwubew" sourceRef="ScriptTask_0w2ekuz" targetRef="EndEvent_1kpt4kc" /> + <bpmn2:exclusiveGateway id="isRollbackOn_ExclusiveGateway" name="Is Rollback On?" default="isRollbackOn_SequenceFlow_No"> + <bpmn2:incoming>SequenceFlow_10ttvwn</bpmn2:incoming> + <bpmn2:outgoing>isRollbackOn_SequenceFlow_Yes</bpmn2:outgoing> + <bpmn2:outgoing>isRollbackOn_SequenceFlow_No</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isRollbackOn_SequenceFlow_Yes" name="Yes" sourceRef="isRollbackOn_ExclusiveGateway" targetRef="isPONR_ExclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_rollbackEnabled") == true && execution.getVariable("CRENWKI_isSdncRollbackNeeded") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isRollbackOn_SequenceFlow_No" name="No" sourceRef="isRollbackOn_ExclusiveGateway" targetRef="ExclusiveGateway_1umhuft" /> + <bpmn2:inclusiveGateway id="ExclusiveGateway_1qb2vwe"> + <bpmn2:incoming>SequenceFlow_0lndbvr</bpmn2:incoming> + <bpmn2:incoming>sdncOk_No_ExclusiveGateway</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0bwpkkb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15sffxc</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_15sffxc" sourceRef="ExclusiveGateway_1qb2vwe" targetRef="ScriptTask_0myjg9k" /> + <bpmn2:inclusiveGateway id="ExclusiveGateway_1bk0tqd"> + <bpmn2:incoming>SequenceFlow_0b8j5rw</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_12tlymf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k7y7b5</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0k7y7b5" sourceRef="ExclusiveGateway_1bk0tqd" targetRef="sdncOk_ExclusiveGateway" /> + <bpmn2:inclusiveGateway id="ExclusiveGateway_1umhuft"> + <bpmn2:incoming>isPONR_Yes_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>isRollbackOn_SequenceFlow_No</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17nx822</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_17nx822" sourceRef="ExclusiveGateway_1umhuft" targetRef="ScriptTask_0w2ekuz" /> + <bpmn2:scriptTask id="ScriptTask_0j3058g" name="Set Exception Flag" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10ttvwn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.setExceptionFlag(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10ttvwn" sourceRef="ScriptTask_0j3058g" targetRef="isRollbackOn_ExclusiveGateway" /> + <bpmn2:textAnnotation id="TextAnnotation_1py1p84"> <bpmn2:text><![CDATA[Â Â +Include ONLY inputs/varrables: Â +rollbackData, as Map +-rollbackSDNCRequest +-rollbackActivateSDNCRequest +-rollbackNetworkRequest +WorkflowException +Â ]]></bpmn2:text> +</bpmn2:textAnnotation> + <bpmn2:association id="Association_0nketgd" sourceRef="CallActivity_1u07hp7" targetRef="TextAnnotation_1py1p84" /> + <bpmn2:textAnnotation id="TextAnnotation_0wjpv6r"> <bpmn2:text>PO Network Rollback is created in validation.</bpmn2:text> +</bpmn2:textAnnotation> + <bpmn2:association id="Association_0eolbkz" sourceRef="ExclusiveGateway_1bk0tqd" targetRef="TextAnnotation_0wjpv6r" /> + </bpmn2:subProcess> + <bpmn2:serviceTask id="callCreateNetwork_ServiceTask" name="Call Create Network"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="payload">${CRENWKI_createNetworkRequest}</camunda:inputParameter> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)} +]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry> + <camunda:entry key="content-type">application/xml</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CRENWKI_networkReturnCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CRENWKI_createNetworkResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_61</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_59</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_59" name="" sourceRef="callCreateNetwork_ServiceTask" targetRef="validateCreatePONetwork_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="validateCreatePONetwork_ScriptTask" targetRef="callRESTReQueryNetworkID_ScriptTask" /> + <bpmn2:scriptTask id="callRESTReQueryNetworkID_ScriptTask" name="Call REST ReQuery Network Id in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTReQueryNetworkID_ScriptTask" targetRef="callRESTUpdateContrailNetwork_ScriptTask" /> + <bpmn2:scriptTask id="callRESTUpdateContrailNetwork_ScriptTask" name="Call REST Update Contrail Network in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ipz2ze</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:callActivity id="callGetServiceInstance" name="Get Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="CRENWKI_serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:out source="GENGS_serviceInstance" target="CRENWKI_serviceInstance" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGSI_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGSI_SuccessIndicator" /> + <camunda:out source="GENGS_siResourceLink" target="GENGSI_siResourceLink" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ftylq3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Call REST Query Network Name In AAI" scriptFormat="groovy"> + <bpmn2:incoming>isNameSentYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAINetworkName(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callAAIQuery_scriptTask" targetRef="isAAIQueryNameOk_ExclusiveGateway" /> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="callGetServiceInstance" targetRef="siFoundCheck" /> + <bpmn2:exclusiveGateway id="siFoundCheck" name="Service Instance Found?" default="siFoundNo"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>siFoundYes</bpmn2:outgoing> + <bpmn2:outgoing>siFoundNo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="siFoundYes" name="Yes" sourceRef="siFoundCheck" targetRef="isNameSent_ExclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGSI_FoundIndicator" ) == true && execution.getVariable("GENGSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" /> + <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>siFoundNo</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found") +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="callRESTQueryVpnBinding_ScriptTask" name="Call REST Query Vpn Binding in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="callRESTQueryVpnBinding_ScriptTask" targetRef="callRESTQueryNetworkPolicy_ScriptTask" /> + <bpmn2:scriptTask id="callRESTQueryNetworkPolicy_ScriptTask" name="Call REST Query Network Policy in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="callRESTQueryNetworkPolicy_ScriptTask" targetRef="callRESTQueryNetworkTableRef_ScriptTask" /> + <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Create Network Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_61</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareCreateNetworkRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_61" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="callCreateNetwork_ServiceTask" /> + <bpmn2:scriptTask id="callRESTQueryNetworkTableRef_ScriptTask" name="Call REST Query Network TableRef in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.callRESTQueryAAINetworkTableRef(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="callRESTQueryNetworkTableRef_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_1n61wit" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_preprocess" /> + <bpmn2:scriptTask id="ScriptTask_preprocess" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1n61wit</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ftylq3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ftylq3" sourceRef="ScriptTask_preprocess" targetRef="callGetServiceInstance" /> + <bpmn2:exclusiveGateway id="isNameSent_ExclusiveGateway" name="is Network Name Sent? " default="isNameSentNo_SequenceFlow"> + <bpmn2:incoming>siFoundYes</bpmn2:incoming> + <bpmn2:outgoing>isNameSentYes_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isNameSentNo_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isNameSentYes_SequenceFlow" name="Yes" sourceRef="isNameSent_ExclusiveGateway" targetRef="callAAIQuery_scriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_networkName") != ""}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isNameSentNo_SequenceFlow" name="No" sourceRef="isNameSent_ExclusiveGateway" targetRef="callRESTQueryCloudRegion_ScriptTask" /> + <bpmn2:callActivity id="Task_1ipbwbj" name="Call SDNC RSRC Activate Adapter V1 " calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="CRENWKI_activateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKI_activateSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncActivateReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_13deudk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08qibb9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_1rd6dg6" name="Prepare SDNC RSRC Activate Request" scriptFormat="groovy"> + <bpmn2:incoming>isSdncRpc2Yes_SequenceFlow2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13deudk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareRpcSDNCActivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0n0ptg6" name="is SDNC PRC Activate Ok? " default="SequenceFlow_18ybfu5"> + <bpmn2:incoming>SequenceFlow_1t03rs2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jia57e</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_18ybfu5</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_13deudk" sourceRef="Task_1rd6dg6" targetRef="Task_1ipbwbj" /> + <bpmn2:sequenceFlow id="SequenceFlow_08qibb9" sourceRef="Task_1ipbwbj" targetRef="validateSDNCActivate_Task" /> + <bpmn2:sequenceFlow id="SequenceFlow_1t03rs2" sourceRef="validateSDNCActivate_Task" targetRef="ExclusiveGateway_0n0ptg6" /> + <bpmn2:sequenceFlow id="SequenceFlow_1jia57e" name="Yes" sourceRef="ExclusiveGateway_0n0ptg6" targetRef="Task_0zzobg6"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_18ybfu5" name="No" sourceRef="ExclusiveGateway_0n0ptg6" targetRef="EndEvent_13v46cq" /> + <bpmn2:scriptTask id="validateSDNCActivate_Task" name="Validate SDNCRSRC Activate Response " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08qibb9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1t03rs2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.validateRpcSDNCActivateResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:boundaryEvent id="BoundaryEvent_0vb26bm" attachedToRef="validateSDNCActivate_Task"> + <bpmn2:outgoing>SequenceFlow_0s51ns0</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0s51ns0" sourceRef="BoundaryEvent_0vb26bm" targetRef="EndEvent_13v46cq" /> + <bpmn2:endEvent id="EndEvent_13v46cq" name="SNDC Activate Error "> + <bpmn2:incoming>SequenceFlow_18ybfu5</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0s51ns0</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="isSdncRpc1_ExclusiveGateway1" name="is not '1610' SNDC Call?" default="isSdncRpc1No_SequenceFlow1"> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>isSdncRpc1No_SequenceFlow1</bpmn2:outgoing> + <bpmn2:outgoing>isSdncRpc1Yes_SequenceFlow1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isSdncRpc1No_SequenceFlow1" name="No" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="prepareSDNCTopoRequest_ScriptTask" /> + <bpmn2:sequenceFlow id="isSdncRpc1Yes_SequenceFlow1" name="Yes" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="Task_10lubzj"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_0pbtywn" name="Call SDNC RSRC Assign Adapter V1 " calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="CRENWKI_assignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKI_assignSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0j8bxnb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0d93bqw</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0j8bxnb" sourceRef="Task_10lubzj" targetRef="Task_0pbtywn" /> + <bpmn2:sequenceFlow id="SequenceFlow_0d93bqw" sourceRef="Task_0pbtywn" targetRef="validateSDNCResponse_ScriptTask" /> + <bpmn2:exclusiveGateway id="isSdncRpc2_ExclusiveGateway2" name="is not '1610' SNDC Call?" default="isSdncRpc2No_SequenceFlow2"> + <bpmn2:incoming>SequenceFlow_1ipz2ze</bpmn2:incoming> + <bpmn2:outgoing>isSdncRpc2Yes_SequenceFlow2</bpmn2:outgoing> + <bpmn2:outgoing>isSdncRpc2No_SequenceFlow2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isSdncRpc2Yes_SequenceFlow2" name="Yes" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_1rd6dg6"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isSdncRpc2No_SequenceFlow2" name="No" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_0zzobg6" /> + <bpmn2:scriptTask id="Task_10lubzj" name="Prepare Assign SDNC RPC Request" scriptFormat="groovy"> + <bpmn2:incoming>isSdncRpc1Yes_SequenceFlow1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0j8bxnb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.prepareRpcSDNCRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_1te02c4"> + <bpmn2:incoming>SequenceFlow_1s8b1m1</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:endEvent id="EndEvent_0ti2ctu" name="Silent Success"> + <bpmn2:incoming>SequenceFlow_18ylufb</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1s8b1m1" sourceRef="Task_0zzobg6" targetRef="EndEvent_1te02c4" /> + <bpmn2:scriptTask id="Task_0zzobg6" name="PostProcess Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1jia57e</bpmn2:incoming> + <bpmn2:incoming>isSdncRpc2No_SequenceFlow2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s8b1m1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1ipz2ze" sourceRef="callRESTUpdateContrailNetwork_ScriptTask" targetRef="isSdncRpc2_ExclusiveGateway2" /> + <bpmn2:scriptTask id="ScriptTask_0p3v749" name="Post Process Response" scriptFormat="groovy"> + <bpmn2:incoming>isNetworkActiveYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18ylufb</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstance = new DoCreateNetworkInstance() +DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_18ylufb" sourceRef="ScriptTask_0p3v749" targetRef="EndEvent_0ti2ctu" /> + <bpmn2:textAnnotation id="TextAnnotation_1orb6o6"> <bpmn2:text><![CDATA[if '200', Prepare PO Network Rollback]]></bpmn2:text> +</bpmn2:textAnnotation> + <bpmn2:association id="Association_0c315jr" sourceRef="validateCreatePONetwork_ScriptTask" targetRef="TextAnnotation_1orb6o6" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent"> + <dc:Bounds x="397" y="177" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="390" y="218" width="49" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask"> + <dc:Bounds x="926" y="-31" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_62" bpmnElement="isAAIQueryNameOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1098" y="-16" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1085" y="-56" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_62"> + <di:waypoint xsi:type="dc:Point" x="1026" y="8" /> + <di:waypoint xsi:type="dc:Point" x="1098" y="9" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1062" y="-6.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateCreatePONetwork_ScriptTask"> + <dc:Bounds x="1457" y="1258" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="isAAIQueryNameNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_64"> + <di:waypoint xsi:type="dc:Point" x="1123" y="34" /> + <di:waypoint xsi:type="dc:Point" x="1123" y="91" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1131" y="39.0514827586207" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="isAAIQueryNameYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_73"> + <di:waypoint xsi:type="dc:Point" x="1148" y="9" /> + <di:waypoint xsi:type="dc:Point" x="1186" y="9" /> + <di:waypoint xsi:type="dc:Point" x="1186" y="9" /> + <di:waypoint xsi:type="dc:Point" x="1224" y="9" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1151" y="14.164179104477611" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_64" bpmnElement="isReturnCode404_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1098" y="91" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1026" y="110" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="isReturnCode404_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_EndEvent_118"> + <di:waypoint xsi:type="dc:Point" x="1123" y="141" /> + <di:waypoint xsi:type="dc:Point" x="1123" y="187" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1132" y="138.4109225063519" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="isReturnCode404_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_InclusiveGateway_4"> + <di:waypoint xsi:type="dc:Point" x="1148" y="116" /> + <di:waypoint xsi:type="dc:Point" x="1186" y="116" /> + <di:waypoint xsi:type="dc:Point" x="1186" y="116" /> + <di:waypoint xsi:type="dc:Point" x="1224" y="116" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1151" y="118.55844155844156" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_118" bpmnElement="aai_Error_EndEvent"> + <dc:Bounds x="1105" y="187" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1085" y="228" width="77" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_83" bpmnElement="callCreateNetwork_ServiceTask"> + <dc:Bounds x="1454" y="1135" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask"> + <dc:Bounds x="1590" y="155" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true"> + <dc:Bounds x="31" y="608" width="1266" height="686" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent"> + <dc:Bounds x="107" y="1166" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="101" y="1207" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1615" y="520" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1606" y="580" width="67" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1665" y="545" /> + <di:waypoint xsi:type="dc:Point" x="1739" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1670" y="545.8651480742376" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="1615" y="545" /> + <di:waypoint xsi:type="dc:Point" x="1554" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1587" y="549.9992641545633" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent"> + <dc:Bounds x="1739" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1727" y="576" width="59" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callAssignSDNCAdapter_CallActivity"> + <dc:Bounds x="1590" y="276" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_67" targetElement="_BPMNShape_CallActivity_19"> + <di:waypoint xsi:type="dc:Point" x="1640" y="235" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="276" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1655" y="255.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131"> + <di:waypoint xsi:type="dc:Point" x="1640" y="356" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="395" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1655" y="375.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50"> + <di:waypoint xsi:type="dc:Point" x="143" y="1184" /> + <di:waypoint xsi:type="dc:Point" x="170" y="1184" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="157" y="1169" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask"> + <dc:Bounds x="1590" y="395" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67"> + <di:waypoint xsi:type="dc:Point" x="1640" y="475" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="498" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="498" /> + <di:waypoint xsi:type="dc:Point" x="1640" y="520" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1655" y="498" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_73" bpmnElement="isNetworkActive_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1224" y="-16" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1221" y="-57" width="56" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_39" bpmnElement="isNetworkActiveYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_73"> + <di:waypoint xsi:type="dc:Point" x="1274" y="9" /> + <di:waypoint xsi:type="dc:Point" x="1335" y="9" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1275" y="14.380425096632202" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_44" bpmnElement="isNetworkActiveNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_73" targetElement="_BPMNShape_InclusiveGateway_4"> + <di:waypoint xsi:type="dc:Point" x="1249" y="34" /> + <di:waypoint xsi:type="dc:Point" x="1249" y="91" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1258" y="37.520779498373976" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_45" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_InclusiveGateway_4" targetElement="_BPMNShape_ScriptTask_245"> + <di:waypoint xsi:type="dc:Point" x="1249" y="141" /> + <di:waypoint xsi:type="dc:Point" x="1249" y="276" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1264" y="208.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_4" bpmnElement="InclusiveGateway"> + <dc:Bounds x="1224" y="91" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1306" y="86" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="callRESTQueryNetworkId_ScriptTask"> + <dc:Bounds x="1454" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTReQueryNetworkID_ScriptTask"> + <dc:Bounds x="1454" y="1392" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_135" bpmnElement="callRESTUpdateContrailNetwork_ScriptTask"> + <dc:Bounds x="1454" y="1538" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_135"> + <di:waypoint xsi:type="dc:Point" x="1504" y="1472" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="1538" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="1505" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="callRESTQueryVpnBinding_ScriptTask"> + <dc:Bounds x="1454" y="627" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_215"> + <di:waypoint xsi:type="dc:Point" x="1504" y="707" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="727" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="727" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="750" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="727" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_49" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_ScriptTask_156"> + <di:waypoint xsi:type="dc:Point" x="1504" y="585" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="606" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="606" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="627" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="606" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_87" bpmnElement="SequenceFlow_59" sourceElement="_BPMNShape_ServiceTask_83" targetElement="_BPMNShape_ScriptTask_63"> + <di:waypoint xsi:type="dc:Point" x="1505" y="1215" /> + <di:waypoint xsi:type="dc:Point" x="1505" y="1237" /> + <di:waypoint xsi:type="dc:Point" x="1505" y="1237" /> + <di:waypoint xsi:type="dc:Point" x="1505" y="1258" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1520" y="1237" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="prepareNetworkRequest_ScriptTask"> + <dc:Bounds x="1454" y="1009" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_89" bpmnElement="SequenceFlow_61" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ServiceTask_83"> + <di:waypoint xsi:type="dc:Point" x="1504" y="1089" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="1111" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="1111" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="1135" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="1111" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="callRESTQueryNetworkPolicy_ScriptTask"> + <dc:Bounds x="1454" y="750" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ScriptTask_333"> + <di:waypoint xsi:type="dc:Point" x="1504" y="830" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="879" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="854.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="isPONR_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="304" y="1060" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="248" y="1078" width="46" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_77" bpmnElement="isPONR_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215"> + <di:waypoint xsi:type="dc:Point" x="354" y="1085" /> + <di:waypoint xsi:type="dc:Point" x="457" y="1085" /> + <di:waypoint xsi:type="dc:Point" x="457" y="1159" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="351" y="1088" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_85" bpmnElement="isPONR_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215"> + <di:waypoint xsi:type="dc:Point" x="329" y="1060" /> + <di:waypoint xsi:type="dc:Point" x="329" y="1003" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="339" y="1051" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_217" bpmnElement="sdncOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="527" y="845" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="858" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_92" bpmnElement="sdncOk_Yeso_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217" targetElement="_BPMNShape_ScriptTask_261"> + <di:waypoint xsi:type="dc:Point" x="552" y="845" /> + <di:waypoint xsi:type="dc:Point" x="552" y="776" /> + <di:waypoint xsi:type="dc:Point" x="713" y="776" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="559" y="829" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_93" bpmnElement="sdncOk_No_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217"> + <di:waypoint xsi:type="dc:Point" x="551" y="894" /> + <di:waypoint xsi:type="dc:Point" x="551" y="978" /> + <di:waypoint xsi:type="dc:Point" x="713" y="978" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="559" y="895" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_245" bpmnElement="callRESTQueryCloudRegion_ScriptTask"> + <dc:Bounds x="1199" y="276" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_53" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_245" targetElement="_BPMNShape_ScriptTask_67"> + <di:waypoint xsi:type="dc:Point" x="1299" y="316" /> + <di:waypoint xsi:type="dc:Point" x="1337" y="316" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1318" y="301" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_38" bpmnElement="BoundaryEvent_4"> + <dc:Bounds x="1672" y="457" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1690" y="493" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_69" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_BoundaryEvent_38" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1702" y="488" /> + <di:waypoint xsi:type="dc:Point" x="1745" y="533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1724" y="495.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_261" bpmnElement="prepareSDNCRollbackRequest_ScriptTask"> + <dc:Bounds x="886" y="830" width="100" height="79" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_134"> + <di:waypoint xsi:type="dc:Point" x="1507" y="1338" /> + <di:waypoint xsi:type="dc:Point" x="1505" y="1392" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1506" y="1350" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="21" y="381" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="54" y="458" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="72" y="499" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="169" y="436" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="330" y="458" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="348" y="499" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="90" y="476" /> + <di:waypoint xsi:type="dc:Point" x="169" y="476" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="476" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="269" y="476" /> + <di:waypoint xsi:type="dc:Point" x="330" y="476" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="301" y="476" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="callGetServiceInstance"> + <dc:Bounds x="759" y="155" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_244" bpmnElement="siFoundCheck" isMarkerVisible="true"> + <dc:Bounds x="784" y="291" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="696" y="304" width="80" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_CallActivity_72" targetElement="_BPMNShape_ExclusiveGateway_244"> + <di:waypoint xsi:type="dc:Point" x="809" y="235" /> + <di:waypoint xsi:type="dc:Point" x="809" y="291" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="824" y="263" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="siFoundYes" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_62"> + <di:waypoint xsi:type="dc:Point" x="834" y="316" /> + <di:waypoint xsi:type="dc:Point" x="951" y="316" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="851" y="319" width="18" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound"> + <dc:Bounds x="759" y="395" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="siFoundNo" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_331"> + <di:waypoint xsi:type="dc:Point" x="809" y="341" /> + <di:waypoint xsi:type="dc:Point" x="809" y="395" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="823" y="340.55618916742606" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_333" bpmnElement="callRESTQueryNetworkTableRef_ScriptTask"> + <dc:Bounds x="1454" y="879" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_333" targetElement="_BPMNShape_ScriptTask_157"> + <di:waypoint xsi:type="dc:Point" x="1504" y="959" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="981" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="981" /> + <di:waypoint xsi:type="dc:Point" x="1504" y="1009" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1519" y="981" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1n61wit_di" bpmnElement="SequenceFlow_1n61wit"> + <di:waypoint xsi:type="dc:Point" x="433" y="195" /> + <di:waypoint xsi:type="dc:Point" x="492" y="195" /> + <di:waypoint xsi:type="dc:Point" x="492" y="195" /> + <di:waypoint xsi:type="dc:Point" x="546" y="195" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="507" y="195" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1jay2gg_di" bpmnElement="ScriptTask_preprocess"> + <dc:Bounds x="546" y="155" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ftylq3_di" bpmnElement="SequenceFlow_0ftylq3"> + <di:waypoint xsi:type="dc:Point" x="646" y="195" /> + <di:waypoint xsi:type="dc:Point" x="706" y="195" /> + <di:waypoint xsi:type="dc:Point" x="706" y="195" /> + <di:waypoint xsi:type="dc:Point" x="759" y="195" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="721" y="195" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0lw40k5_di" bpmnElement="isNameSent_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="951" y="291" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="933" y="349" width="85" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0635hhm_di" bpmnElement="isNameSentYes_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="976" y="291" /> + <di:waypoint xsi:type="dc:Point" x="976" y="170" /> + <di:waypoint xsi:type="dc:Point" x="976" y="170" /> + <di:waypoint xsi:type="dc:Point" x="976" y="49" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="988" y="275" width="18" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sirjgc_di" bpmnElement="isNameSentNo_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1001" y="316" /> + <di:waypoint xsi:type="dc:Point" x="1199" y="316" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1005" y="328" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1uxa4p9_di" bpmnElement="Task_1ipbwbj"> + <dc:Bounds x="1014" y="1538" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0m5hrmn_di" bpmnElement="Task_1rd6dg6"> + <dc:Bounds x="1183" y="1538" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0n0ptg6_di" bpmnElement="ExclusiveGateway_0n0ptg6" isMarkerVisible="true"> + <dc:Bounds x="724" y="1553" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="644" y="1566" width="68" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13deudk_di" bpmnElement="SequenceFlow_13deudk"> + <di:waypoint xsi:type="dc:Point" x="1183" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="1114" y="1578" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1149" y="1563" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_08qibb9_di" bpmnElement="SequenceFlow_08qibb9"> + <di:waypoint xsi:type="dc:Point" x="1014" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="953" y="1578" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="984" y="1563" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t03rs2_di" bpmnElement="SequenceFlow_1t03rs2"> + <di:waypoint xsi:type="dc:Point" x="853" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="774" y="1578" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="814" y="1563" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1jia57e_di" bpmnElement="SequenceFlow_1jia57e"> + <di:waypoint xsi:type="dc:Point" x="749" y="1553" /> + <di:waypoint xsi:type="dc:Point" x="749" y="1484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="757" y="1537.7047949008065" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18ybfu5_di" bpmnElement="SequenceFlow_18ybfu5"> + <di:waypoint xsi:type="dc:Point" x="749" y="1603" /> + <di:waypoint xsi:type="dc:Point" x="749" y="1669" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="758" y="1603.7606668519034" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1v458g5_di" bpmnElement="validateSDNCActivate_Task"> + <dc:Bounds x="853" y="1538" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_0pg57au_di" bpmnElement="BoundaryEvent_0vb26bm"> + <dc:Bounds x="859" y="1600" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="877" y="1636" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0s51ns0_di" bpmnElement="SequenceFlow_0s51ns0"> + <di:waypoint xsi:type="dc:Point" x="877" y="1636" /> + <di:waypoint xsi:type="dc:Point" x="877" y="1687" /> + <di:waypoint xsi:type="dc:Point" x="767" y="1687" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="892" y="1661.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0h7h49p_di" bpmnElement="EndEvent_13v46cq"> + <dc:Bounds x="731" y="1669" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="711" y="1715" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0f9d94i_di" bpmnElement="isSDNCActivate_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="304" y="953" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="210" y="966" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0cly7z2_di" bpmnElement="SequenceFlow_0cly7z2"> + <di:waypoint xsi:type="dc:Point" x="329" y="953" /> + <di:waypoint xsi:type="dc:Point" x="329" y="910" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="335" y="937" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12tlymf_di" bpmnElement="SequenceFlow_12tlymf"> + <di:waypoint xsi:type="dc:Point" x="354" y="978" /> + <di:waypoint xsi:type="dc:Point" x="457" y="978" /> + <di:waypoint xsi:type="dc:Point" x="457" y="895" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="350" y="988" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1ts3ph0_di" bpmnElement="isSdncRpc1_ExclusiveGateway1" isMarkerVisible="true"> + <dc:Bounds x="1337.228" y="291" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1401" y="304" width="61" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1r5sja0_di" bpmnElement="isSdncRpc1No_SequenceFlow1"> + <di:waypoint xsi:type="dc:Point" x="1362" y="291" /> + <di:waypoint xsi:type="dc:Point" x="1362" y="195" /> + <di:waypoint xsi:type="dc:Point" x="1590" y="195" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1371" y="273" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ow57qy_di" bpmnElement="isSdncRpc1Yes_SequenceFlow1"> + <di:waypoint xsi:type="dc:Point" x="1362" y="341" /> + <di:waypoint xsi:type="dc:Point" x="1362" y="395" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1373" y="341" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_067czgj_di" bpmnElement="Task_0pbtywn"> + <dc:Bounds x="1454" y="395" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0j8bxnb_di" bpmnElement="SequenceFlow_0j8bxnb"> + <di:waypoint xsi:type="dc:Point" x="1412" y="435" /> + <di:waypoint xsi:type="dc:Point" x="1454" y="435" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1433" y="420" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0d93bqw_di" bpmnElement="SequenceFlow_0d93bqw"> + <di:waypoint xsi:type="dc:Point" x="1554" y="435" /> + <di:waypoint xsi:type="dc:Point" x="1590" y="435" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1572" y="420" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_00dh41t_di" bpmnElement="isSdncRpc4_ExclusiveGateway4" isMarkerVisible="true"> + <dc:Bounds x="713" y="751" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="714" y="710" width="61" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0suu90e_di" bpmnElement="isSdncRpc4Yes_SequenceFlow4"> + <di:waypoint xsi:type="dc:Point" x="738" y="801" /> + <di:waypoint xsi:type="dc:Point" x="738" y="830" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="743" y="800" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xnyl6e_di" bpmnElement="isSdncRpc4No_SequenceFlow4"> + <di:waypoint xsi:type="dc:Point" x="763" y="776" /> + <di:waypoint xsi:type="dc:Point" x="936" y="776" /> + <di:waypoint xsi:type="dc:Point" x="936" y="830" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="772" y="755" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1gghe34_di" bpmnElement="isSdncRpc2_ExclusiveGateway2" isMarkerVisible="true"> + <dc:Bounds x="1360" y="1553" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1343" y="1619" width="83" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lphs99_di" bpmnElement="isSdncRpc2Yes_SequenceFlow2"> + <di:waypoint xsi:type="dc:Point" x="1360" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="1283" y="1578" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1337" y="1580.0388981849903" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0lk1uut_di" bpmnElement="isSdncRpc2No_SequenceFlow2"> + <di:waypoint xsi:type="dc:Point" x="1385" y="1553" /> + <di:waypoint xsi:type="dc:Point" x="1385" y="1444" /> + <di:waypoint xsi:type="dc:Point" x="799" y="1444" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1362" y="1543.660178848007" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1lkq0a3_di" bpmnElement="Task_10lubzj"> + <dc:Bounds x="1312" y="395" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_19o9l99_di" bpmnElement="Task_0q6pzpn"> + <dc:Bounds x="688" y="830" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1te02c4_di" bpmnElement="EndEvent_1te02c4"> + <dc:Bounds x="467" y="1426" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="486" y="1462" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1kpt4kc_di" bpmnElement="EndEvent_1kpt4kc"> + <dc:Bounds x="1160" y="1075" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1179" y="1111" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0ti2ctu_di" bpmnElement="EndEvent_0ti2ctu"> + <dc:Bounds x="1486" y="-9" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1468" y="38" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s8b1m1_di" bpmnElement="SequenceFlow_1s8b1m1"> + <di:waypoint xsi:type="dc:Point" x="699" y="1444" /> + <di:waypoint xsi:type="dc:Point" x="597" y="1444" /> + <di:waypoint xsi:type="dc:Point" x="597" y="1444" /> + <di:waypoint xsi:type="dc:Point" x="503" y="1444" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="612" y="1444" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1feo4ms_di" bpmnElement="Task_0zzobg6"> + <dc:Bounds x="699" y="1404" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0myjg9k_di" bpmnElement="ScriptTask_0myjg9k"> + <dc:Bounds x="688" y="1053" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0b8j5rw_di" bpmnElement="SequenceFlow_0b8j5rw"> + <di:waypoint xsi:type="dc:Point" x="379" y="870" /> + <di:waypoint xsi:type="dc:Point" x="432" y="870" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="855" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_17adm0m_di" bpmnElement="Task_1imzwi3"> + <dc:Bounds x="279" y="830" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ipz2ze_di" bpmnElement="SequenceFlow_1ipz2ze"> + <di:waypoint xsi:type="dc:Point" x="1454" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="1432" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="1432" y="1578" /> + <di:waypoint xsi:type="dc:Point" x="1410" y="1578" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1447" y="1578" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1u07hp7_di" bpmnElement="CallActivity_1u07hp7"> + <dc:Bounds x="841" y="1053" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vzsyrd_di" bpmnElement="SequenceFlow_0vzsyrd"> + <di:waypoint xsi:type="dc:Point" x="941" y="1093" /> + <di:waypoint xsi:type="dc:Point" x="1007" y="1093" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="974" y="1078" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bwpkkb_di" bpmnElement="SequenceFlow_0bwpkkb"> + <di:waypoint xsi:type="dc:Point" x="738" y="910" /> + <di:waypoint xsi:type="dc:Point" x="738" y="953" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="753" y="922" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0lndbvr_di" bpmnElement="SequenceFlow_0lndbvr"> + <di:waypoint xsi:type="dc:Point" x="936" y="909" /> + <di:waypoint xsi:type="dc:Point" x="936" y="978" /> + <di:waypoint xsi:type="dc:Point" x="763" y="978" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="951" y="944" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_096tad6_di" bpmnElement="SequenceFlow_096tad6"> + <di:waypoint xsi:type="dc:Point" x="788" y="1093" /> + <di:waypoint xsi:type="dc:Point" x="841" y="1093" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="815" y="1078" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="TextAnnotation_1py1p84_di" bpmnElement="TextAnnotation_1py1p84"> + <dc:Bounds x="1036" y="901" width="252" height="119" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0nketgd_di" bpmnElement="Association_0nketgd"> + <di:waypoint xsi:type="dc:Point" x="941" y="1069" /> + <di:waypoint xsi:type="dc:Point" x="1041" y="1020" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0w2ekuz_di" bpmnElement="ScriptTask_0w2ekuz"> + <dc:Bounds x="1007" y="1053" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qwubew_di" bpmnElement="SequenceFlow_1qwubew"> + <di:waypoint xsi:type="dc:Point" x="1107" y="1093" /> + <di:waypoint xsi:type="dc:Point" x="1160" y="1093" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="1068" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1r7vhm5_di" bpmnElement="isRollbackOn_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="304" y="1159" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="290" y="1209" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19kcbiw_di" bpmnElement="isRollbackOn_SequenceFlow_Yes"> + <di:waypoint xsi:type="dc:Point" x="329" y="1159" /> + <di:waypoint xsi:type="dc:Point" x="329" y="1110" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="337" y="1142" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0pl3e54_di" bpmnElement="isRollbackOn_SequenceFlow_No"> + <di:waypoint xsi:type="dc:Point" x="354" y="1184" /> + <di:waypoint xsi:type="dc:Point" x="432" y="1184" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="355" y="1190" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0zl5xa8_di" bpmnElement="ExclusiveGateway_1qb2vwe"> + <dc:Bounds x="713" y="953" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="738" y="1003" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15sffxc_di" bpmnElement="SequenceFlow_15sffxc"> + <di:waypoint xsi:type="dc:Point" x="738" y="1003" /> + <di:waypoint xsi:type="dc:Point" x="738" y="1053" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="753" y="1028" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0t3i8it_di" bpmnElement="ExclusiveGateway_1bk0tqd"> + <dc:Bounds x="432" y="845" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="457" y="895" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k7y7b5_di" bpmnElement="SequenceFlow_0k7y7b5"> + <di:waypoint xsi:type="dc:Point" x="482" y="870" /> + <di:waypoint xsi:type="dc:Point" x="527" y="870" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="505" y="845" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0p3v749_di" bpmnElement="ScriptTask_0p3v749"> + <dc:Bounds x="1335" y="-31" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_18ylufb_di" bpmnElement="SequenceFlow_18ylufb"> + <di:waypoint xsi:type="dc:Point" x="1435" y="9" /> + <di:waypoint xsi:type="dc:Point" x="1486" y="9" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1461" y="-6" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_1eochiz_di" bpmnElement="ExclusiveGateway_1umhuft"> + <dc:Bounds x="432" y="1159" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="457" y="1209" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17nx822_di" bpmnElement="SequenceFlow_17nx822"> + <di:waypoint xsi:type="dc:Point" x="482" y="1184" /> + <di:waypoint xsi:type="dc:Point" x="1057" y="1184" /> + <di:waypoint xsi:type="dc:Point" x="1057" y="1133" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="770" y="1169" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="TextAnnotation_1orb6o6_di" bpmnElement="TextAnnotation_1orb6o6"> + <dc:Bounds x="1606" y="1241" width="233" height="37" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0c315jr_di" bpmnElement="Association_0c315jr"> + <di:waypoint xsi:type="dc:Point" x="1557" y="1289" /> + <di:waypoint xsi:type="dc:Point" x="1621" y="1278" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="TextAnnotation_0wjpv6r_di" bpmnElement="TextAnnotation_0wjpv6r"> + <dc:Bounds x="341" y="735" width="180" height="36" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0eolbkz_di" bpmnElement="Association_0eolbkz"> + <di:waypoint xsi:type="dc:Point" x="452" y="850" /> + <di:waypoint xsi:type="dc:Point" x="435" y="771" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0j3058g_di" bpmnElement="ScriptTask_0j3058g"> + <dc:Bounds x="170" y="1144" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_10ttvwn_di" bpmnElement="SequenceFlow_10ttvwn"> + <di:waypoint xsi:type="dc:Point" x="270" y="1184" /> + <di:waypoint xsi:type="dc:Point" x="304" y="1184" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="287" y="1159" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn new file mode 100644 index 0000000000..6a4861b9a4 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn @@ -0,0 +1,517 @@ +<?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="1.4.0"> + <bpmn:process id="DoCreateNetworkInstanceRollback" name="DoCreateNetworkInstanceRollback" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback() +DoCreateNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" /> + <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0p5zgdb" /> + <bpmn:callActivity id="CallActivity_1x88fsq" name="Call RSRC SDNC Deactivate Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="CRENWKIR_rollbackActivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackActivateSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackActivateSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1mxbdps</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07s5r14</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:callActivity id="CallActivity_0kbwa1x" name="Call Unassign RSRC SDNC Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="CRENWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0mw0dgd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1rrutp3</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:exclusiveGateway id="ExclusiveGateway_0p5zgdb" name="is RPC Activate Rollback?" default="SequenceFlow_1bb7zpp"> + <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1bb7zpp</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1mxbdps</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_0v0en47" name="is PO Network Rollback?" default="SequenceFlow_1lteduj"> + <bpmn:incoming>SequenceFlow_1bb7zpp</bpmn:incoming> + <bpmn:incoming>SequenceFlow_07s5r14</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e1uixp</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1lteduj</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:callActivity id="CallActivity_1xilevb" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="CRENWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_101y57s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0790olb</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:exclusiveGateway id="ExclusiveGateway_17g4q5c" name="is RSRC SDNC?" default="SequenceFlow_101y57s"> + <bpmn:incoming>SequenceFlow_0virkpu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_101y57s</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0mw0dgd</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0qc4v9t</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0el8yzs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yto4gz</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback() +DoCreateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_1n5jck8" name="is SDNC Rollback?" default="SequenceFlow_0qc4v9t"> + <bpmn:incoming>SequenceFlow_1lteduj</bpmn:incoming> + <bpmn:incoming>SequenceFlow_17o4w67</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0virkpu</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0qc4v9t</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1bb7zpp" name="No" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="ExclusiveGateway_0v0en47" /> + <bpmn:sequenceFlow id="SequenceFlow_1mxbdps" name="Yes" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="CallActivity_1x88fsq"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackActivateSDNCRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0e1uixp" name="Yes" sourceRef="ExclusiveGateway_0v0en47" targetRef="ServiceTask_0bqh5yl"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_07s5r14" sourceRef="CallActivity_1x88fsq" targetRef="ExclusiveGateway_0v0en47" /> + <bpmn:sequenceFlow id="SequenceFlow_1lteduj" name="No" sourceRef="ExclusiveGateway_0v0en47" targetRef="ExclusiveGateway_1n5jck8" /> + <bpmn:sequenceFlow id="SequenceFlow_0virkpu" name="Yes" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ExclusiveGateway_17g4q5c"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" /> + <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" /> + <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_0kbwa1x"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_1fvr7ad"> + <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0qc4v9t" name="No" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:sequenceFlow id="SequenceFlow_0790olb" sourceRef="CallActivity_1xilevb" targetRef="ExclusiveGateway_0b9kbop" /> + <bpmn:sequenceFlow id="SequenceFlow_1rrutp3" sourceRef="CallActivity_0kbwa1x" targetRef="ExclusiveGateway_0b9kbop" /> + <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback() +DoCreateNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1j0eixl"> + <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_1" /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0jxh015"> + <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" /> + <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" /> + </bpmn:subProcess> + <bpmn:inclusiveGateway id="ExclusiveGateway_0b9kbop"> + <bpmn:incoming>SequenceFlow_1rrutp3</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0790olb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0el8yzs</bpmn:outgoing> + </bpmn:inclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0el8yzs" sourceRef="ExclusiveGateway_0b9kbop" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:sequenceFlow id="SequenceFlow_0yto4gz" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" /> + <bpmn:subProcess id="SubProcess_0y6ppiy" triggeredByEvent="true"> + <bpmn:endEvent id="EndEvent_1aqh7ih"> + <bpmn:incoming>SequenceFlow_0lomcvn</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="Task_07i164j" name="Catch Exception" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0q0te67</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0lomcvn</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("workflowException", execution.getVariable("WorkflowException") +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0q0te67" sourceRef="StartEvent_1p75ok8" targetRef="Task_07i164j" /> + <bpmn:sequenceFlow id="SequenceFlow_0lomcvn" sourceRef="Task_07i164j" targetRef="EndEvent_1aqh7ih" /> + <bpmn:startEvent id="StartEvent_1p75ok8"> + <bpmn:outgoing>SequenceFlow_0q0te67</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:startEvent> + </bpmn:subProcess> + <bpmn:boundaryEvent id="BoundaryEvent_0dnnott" attachedToRef="CallActivity_1x88fsq"> + <bpmn:outgoing>SequenceFlow_0ctlrql</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:sequenceFlow id="SequenceFlow_0ctlrql" sourceRef="BoundaryEvent_0dnnott" targetRef="EndEvent_0n9y395" /> + <bpmn:endEvent id="EndEvent_0n9y395"> + <bpmn:incoming>SequenceFlow_0ctlrql</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:endEvent> + <bpmn:boundaryEvent id="BoundaryEvent_1yj6513" attachedToRef="CallActivity_0kbwa1x"> + <bpmn:outgoing>SequenceFlow_1j55a94</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:boundaryEvent id="BoundaryEvent_1y8kgef" attachedToRef="CallActivity_1xilevb"> + <bpmn:outgoing>SequenceFlow_1yn24xq</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:endEvent id="EndEvent_05tcxw3"> + <bpmn:incoming>SequenceFlow_1j55a94</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1yn24xq</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1j55a94" sourceRef="BoundaryEvent_1yj6513" targetRef="EndEvent_05tcxw3" /> + <bpmn:sequenceFlow id="SequenceFlow_1yn24xq" sourceRef="BoundaryEvent_1y8kgef" targetRef="EndEvent_05tcxw3" /> + <bpmn:scriptTask id="ServiceTask_0bqh5yl" name="Call Rollback Network" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0e1uixp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17o4w67</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback() +DoCreateNetworkInstanceRollback.callPONetworkAdapter(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:textAnnotation id="TextAnnotation_000ap15"> <bpmn:text><![CDATA[Include ONLY inputs/varrables: Â +rollbackData, as Map +-rollbackSDNCRequest +-rollbackActivateSDNCRequest +-rollbackNetworkRequest +WorkflowException +Â +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" /> + <bpmn:textAnnotation id="TextAnnotation_0vwyo82"> <bpmn:text><![CDATA[set value for: +WorkflowException +rolledBack +wasDeleted +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" /> + </bpmn:process> + <bpmn:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="214" y="240" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="276" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1"> + <dc:Bounds x="333" y="218" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg"> + <di:waypoint xsi:type="dc:Point" x="250" y="258" /> + <di:waypoint xsi:type="dc:Point" x="333" y="258" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="292" y="243" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2"> + <di:waypoint xsi:type="dc:Point" x="433" y="258" /> + <di:waypoint xsi:type="dc:Point" x="556" y="258" /> + <di:waypoint xsi:type="dc:Point" x="556" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="243" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1x88fsq_di" bpmnElement="CallActivity_1x88fsq"> + <dc:Bounds x="506" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0kbwa1x_di" bpmnElement="CallActivity_0kbwa1x"> + <dc:Bounds x="972" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0p5zgdb_di" bpmnElement="ExclusiveGateway_0p5zgdb" isMarkerVisible="true"> + <dc:Bounds x="531" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="439" y="360" width="79" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0v0en47_di" bpmnElement="ExclusiveGateway_0v0en47" isMarkerVisible="true"> + <dc:Bounds x="697" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685" y="312" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15"> + <dc:Bounds x="112" y="355" width="277" height="115" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal"> + <di:waypoint xsi:type="dc:Point" x="349" y="298" /> + <di:waypoint xsi:type="dc:Point" x="300" y="355" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1xilevb_di" bpmnElement="CallActivity_1xilevb"> + <dc:Bounds x="972" y="608" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_17g4q5c_di" bpmnElement="ExclusiveGateway_17g4q5c" isMarkerVisible="true"> + <dc:Bounds x="879" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="914" y="460" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu"> + <dc:Bounds x="1123" y="332" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1n5jck8_di" bpmnElement="ExclusiveGateway_1n5jck8" isMarkerVisible="true"> + <dc:Bounds x="879" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="880" y="308" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82"> + <dc:Bounds x="1287" y="410" width="165" height="60" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b"> + <di:waypoint xsi:type="dc:Point" x="1223" y="389" /> + <di:waypoint xsi:type="dc:Point" x="1287" y="412" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bb7zpp_di" bpmnElement="SequenceFlow_1bb7zpp"> + <di:waypoint xsi:type="dc:Point" x="581" y="372" /> + <di:waypoint xsi:type="dc:Point" x="697" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="349.27450980392155" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mxbdps_di" bpmnElement="SequenceFlow_1mxbdps"> + <di:waypoint xsi:type="dc:Point" x="556" y="397" /> + <di:waypoint xsi:type="dc:Point" x="556" y="481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="560" y="397.10731155015196" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e1uixp_di" bpmnElement="SequenceFlow_0e1uixp"> + <di:waypoint xsi:type="dc:Point" x="722" y="397" /> + <di:waypoint xsi:type="dc:Point" x="722" y="439" /> + <di:waypoint xsi:type="dc:Point" x="722" y="439" /> + <di:waypoint xsi:type="dc:Point" x="722" y="481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="730" y="395" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07s5r14_di" bpmnElement="SequenceFlow_07s5r14"> + <di:waypoint xsi:type="dc:Point" x="606" y="521" /> + <di:waypoint xsi:type="dc:Point" x="647" y="521" /> + <di:waypoint xsi:type="dc:Point" x="647" y="372" /> + <di:waypoint xsi:type="dc:Point" x="697" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="662" y="446.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lteduj_di" bpmnElement="SequenceFlow_1lteduj"> + <di:waypoint xsi:type="dc:Point" x="747" y="372" /> + <di:waypoint xsi:type="dc:Point" x="879" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="750" y="350.14631933618307" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0virkpu_di" bpmnElement="SequenceFlow_0virkpu"> + <di:waypoint xsi:type="dc:Point" x="904" y="397" /> + <di:waypoint xsi:type="dc:Point" x="904" y="496" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="914" y="392.7469456247061" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17o4w67_di" bpmnElement="SequenceFlow_17o4w67"> + <di:waypoint xsi:type="dc:Point" x="772" y="521" /> + <di:waypoint xsi:type="dc:Point" x="817" y="521" /> + <di:waypoint xsi:type="dc:Point" x="817" y="372" /> + <di:waypoint xsi:type="dc:Point" x="879" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="446.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_101y57s_di" bpmnElement="SequenceFlow_101y57s"> + <di:waypoint xsi:type="dc:Point" x="904" y="546" /> + <di:waypoint xsi:type="dc:Point" x="904" y="648" /> + <di:waypoint xsi:type="dc:Point" x="972" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="913" y="544" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mw0dgd_di" bpmnElement="SequenceFlow_0mw0dgd"> + <di:waypoint xsi:type="dc:Point" x="929" y="521" /> + <di:waypoint xsi:type="dc:Point" x="972" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="930" y="498" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad"> + <dc:Bounds x="1278" y="255" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1296" y="291" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qc4v9t_di" bpmnElement="SequenceFlow_0qc4v9t"> + <di:waypoint xsi:type="dc:Point" x="929" y="372" /> + <di:waypoint xsi:type="dc:Point" x="1123" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="351.1191898360114" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0790olb_di" bpmnElement="SequenceFlow_0790olb"> + <di:waypoint xsi:type="dc:Point" x="1072" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="648" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1123" y="633" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1rrutp3_di" bpmnElement="SequenceFlow_1rrutp3"> + <di:waypoint xsi:type="dc:Point" x="1072" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1148" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1110" y="506" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true"> + <dc:Bounds x="-6" y="665" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk"> + <dc:Bounds x="142" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl"> + <dc:Bounds x="27" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="783" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015"> + <dc:Bounds x="303" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="321" y="783" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v"> + <di:waypoint xsi:type="dc:Point" x="63" y="760" /> + <di:waypoint xsi:type="dc:Point" x="142" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="105" y="760" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3"> + <di:waypoint xsi:type="dc:Point" x="242" y="760" /> + <di:waypoint xsi:type="dc:Point" x="303" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="277" y="760" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0dot6c9_di" bpmnElement="ExclusiveGateway_0b9kbop"> + <dc:Bounds x="1148" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1173" y="546" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0el8yzs_di" bpmnElement="SequenceFlow_0el8yzs"> + <di:waypoint xsi:type="dc:Point" x="1173" y="496" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="412" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1188" y="444" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yto4gz_di" bpmnElement="SequenceFlow_0yto4gz"> + <di:waypoint xsi:type="dc:Point" x="1173" y="332" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1278" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1188" y="302.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1laq87i_di" bpmnElement="SubProcess_0y6ppiy" isExpanded="true"> + <dc:Bounds x="2" y="886" width="382" height="213" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1aqh7ih_di" bpmnElement="EndEvent_1aqh7ih"> + <dc:Bounds x="305" y="964" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="1000" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0gg2fk5_di" bpmnElement="Task_07i164j"> + <dc:Bounds x="132" y="942" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q0te67_di" bpmnElement="SequenceFlow_0q0te67"> + <di:waypoint xsi:type="dc:Point" x="68" y="982" /> + <di:waypoint xsi:type="dc:Point" x="132" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="100" y="967" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0lomcvn_di" bpmnElement="SequenceFlow_0lomcvn"> + <di:waypoint xsi:type="dc:Point" x="232" y="982" /> + <di:waypoint xsi:type="dc:Point" x="305" y="982" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="269" y="957" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="BoundaryEvent_0i4ili6_di" bpmnElement="BoundaryEvent_0dnnott"> + <dc:Bounds x="588" y="543" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ctlrql_di" bpmnElement="SequenceFlow_0ctlrql"> + <di:waypoint xsi:type="dc:Point" x="612" y="577" /> + <di:waypoint xsi:type="dc:Point" x="631" y="622" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="622" y="584.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ra7y1s_di" bpmnElement="EndEvent_0n9y395"> + <dc:Bounds x="621" y="620" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639" y="656" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0a7qaw9_di" bpmnElement="StartEvent_1p75ok8"> + <dc:Bounds x="32" y="964" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="50" y="1000" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_13arr8o_di" bpmnElement="BoundaryEvent_1yj6513"> + <dc:Bounds x="1054" y="543" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1072" y="579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_0qs2m90_di" bpmnElement="BoundaryEvent_1y8kgef"> + <dc:Bounds x="1054" y="590" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1072" y="626" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0tnenxe_di" bpmnElement="EndEvent_05tcxw3"> + <dc:Bounds x="1116" y="573" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="609" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1j55a94_di" bpmnElement="SequenceFlow_1j55a94"> + <di:waypoint xsi:type="dc:Point" x="1088" y="569" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="584" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1103" y="561.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yn24xq_di" bpmnElement="SequenceFlow_1yn24xq"> + <di:waypoint xsi:type="dc:Point" x="1088" y="599" /> + <di:waypoint xsi:type="dc:Point" x="1116" y="591" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1102" y="580" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0c5jqhn_di" bpmnElement="ServiceTask_0bqh5yl"> + <dc:Bounds x="672" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn new file mode 100644 index 0000000000..dc2cf9b676 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateResourcesV3" name="DoCreateResourcesV3" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1qiiycn</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qiiycn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0w9t6tc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateResources() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1xdjlzm" name="Post Config Service Instance Creation" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16nxl6h</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0epxs3b</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateResources() +csi.postConfigRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="Task_0io5qby" name="Call Sync SDNC service Create " camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn2:incoming>SequenceFlow_0k0f7lm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11f2zuu</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_11f2zuu" sourceRef="Task_0io5qby" targetRef="IntermediateThrowEvent_0f2w7aj" /> + <bpmn2:scriptTask id="ScriptTask_1y0los4" name="Sequence Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1hbesp9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13d9g1n</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.sequenceResoure(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13d9g1n" sourceRef="ScriptTask_1y0los4" targetRef="ExclusiveGateway_07rr3wp" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0n9y4du" name="All ResourceFinished?" default="SequenceFlow_0q6uy30"> + <bpmn2:incoming>SequenceFlow_1jenxlp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q6uy30</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16nxl6h</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0q6uy30" name="no" sourceRef="ExclusiveGateway_0n9y4du" targetRef="ScriptTask_0l4nkqr" /> + <bpmn2:scriptTask id="ScriptTask_0y4u2ty" name="Parse Next Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13c7bhn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jenxlp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.parseNextResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1jenxlp" sourceRef="ScriptTask_0y4u2ty" targetRef="ExclusiveGateway_0n9y4du" /> + <bpmn2:scriptTask id="ScriptTask_0l4nkqr" name="Get Current Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q6uy30</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1qozd66</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0uiygod</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.getCurrentResoure(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_07rr3wp" name="Is SDN-C Service Needed" default="SequenceFlow_18wj44x"> + <bpmn2:incoming>SequenceFlow_13d9g1n</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18wj44x</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1vprtt9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_18wj44x" name="no" sourceRef="ExclusiveGateway_07rr3wp" targetRef="IntermediateThrowEvent_0f2w7aj" /> + <bpmn2:scriptTask id="Task_0qlkmvt" name="Prepare resource recipe Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0uiygod</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1u9k0dm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.prepareResourceRecipeRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_12ghoph" name="Execute Resource Recipe" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1u9k0dm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13c7bhn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.executeResourceRecipe(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0bq4fxs" name="Go to StratPrepareService"> + <bpmn2:incoming>SequenceFlow_0w9t6tc</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartPrepareResource" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qiiycn" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_0w9t6tc" sourceRef="preProcessRequest_ScriptTask" targetRef="IntermediateThrowEvent_0bq4fxs" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0f2w7aj" name="GoTo ResourceLoop"> + <bpmn2:incoming>SequenceFlow_18wj44x</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_11f2zuu</bpmn2:incoming> + <bpmn2:linkEventDefinition name="ResourceLoop" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1vprtt9" name="yes" sourceRef="ExclusiveGateway_07rr3wp" targetRef="Task_1blaq0f"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05dus9b" name="StartPrepareResource"> + <bpmn2:outgoing>SequenceFlow_1hbesp9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartPrepareResource" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1hbesp9" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="ScriptTask_1y0los4" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_02bah5m" name="ResourceLoop"> + <bpmn2:outgoing>SequenceFlow_1qozd66</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="ResourceLoop" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_16nxl6h" name="yes" sourceRef="ExclusiveGateway_0n9y4du" targetRef="ScriptTask_1xdjlzm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0uiygod" sourceRef="ScriptTask_0l4nkqr" targetRef="Task_0qlkmvt" /> + <bpmn2:sequenceFlow id="SequenceFlow_1u9k0dm" sourceRef="Task_0qlkmvt" targetRef="Task_12ghoph" /> + <bpmn2:sequenceFlow id="SequenceFlow_13c7bhn" sourceRef="Task_12ghoph" targetRef="ScriptTask_0y4u2ty" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qozd66" sourceRef="IntermediateCatchEvent_02bah5m" targetRef="ScriptTask_0l4nkqr" /> + <bpmn2:endEvent id="EndEvent_1ddg1di"> + <bpmn2:incoming>SequenceFlow_0epxs3b</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0epxs3b" sourceRef="ScriptTask_1xdjlzm" targetRef="EndEvent_1ddg1di" /> + <bpmn2:subProcess id="SubProcess_0sfdqc1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0x7o2ug"> + <bpmn2:outgoing>SequenceFlow_0gr9xqj</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_0lgdyyb"> + <bpmn2:incoming>SequenceFlow_0a6l29p</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1648adp" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gr9xqj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a6l29p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0gr9xqj" name="" sourceRef="StartEvent_0x7o2ug" targetRef="ScriptTask_1648adp" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a6l29p" name="" sourceRef="ScriptTask_1648adp" targetRef="EndEvent_0lgdyyb" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="Task_1blaq0f" name="Prepare SDNC service Create" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1vprtt9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k0f7lm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateResources() +ddsi.prepareServiceTopologyRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0k0f7lm" sourceRef="Task_1blaq0f" targetRef="Task_0io5qby" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateResourcesV3"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="18" y="-207" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="12" y="-166" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="126" y="-229" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1xdjlzm_di" bpmnElement="ScriptTask_1xdjlzm"> + <dc:Bounds x="1119" y="485" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0qi8cgg_di" bpmnElement="Task_0io5qby"> + <dc:Bounds x="1047" y="353" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11f2zuu_di" bpmnElement="SequenceFlow_11f2zuu"> + <di:waypoint xsi:type="dc:Point" x="1147" y="393" /> + <di:waypoint xsi:type="dc:Point" x="1219" y="393" /> + <di:waypoint xsi:type="dc:Point" x="1219" y="300" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1189" y="340.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1y0los4_di" bpmnElement="ScriptTask_1y0los4"> + <dc:Bounds x="444" y="260" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13d9g1n_di" bpmnElement="SequenceFlow_13d9g1n"> + <di:waypoint xsi:type="dc:Point" x="544" y="300" /> + <di:waypoint xsi:type="dc:Point" x="753" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="603.5" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0n9y4du_di" bpmnElement="ExclusiveGateway_0n9y4du" isMarkerVisible="true"> + <dc:Bounds x="929" y="500" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="911" y="454" width="85" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0q6uy30_di" bpmnElement="SequenceFlow_0q6uy30"> + <di:waypoint xsi:type="dc:Point" x="954" y="550" /> + <di:waypoint xsi:type="dc:Point" x="954" y="691" /> + <di:waypoint xsi:type="dc:Point" x="246" y="691" /> + <di:waypoint xsi:type="dc:Point" x="246" y="565" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="593" y="670" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0y4u2ty_di" bpmnElement="ScriptTask_0y4u2ty"> + <dc:Bounds x="728" y="485" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jenxlp_di" bpmnElement="SequenceFlow_1jenxlp"> + <di:waypoint xsi:type="dc:Point" x="828" y="525" /> + <di:waypoint xsi:type="dc:Point" x="929" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="833.5" y="504" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0l4nkqr_di" bpmnElement="ScriptTask_0l4nkqr"> + <dc:Bounds x="196" y="485" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_07rr3wp_di" bpmnElement="ExclusiveGateway_07rr3wp" isMarkerVisible="true"> + <dc:Bounds x="753" y="275" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="734" y="243" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_18wj44x_di" bpmnElement="SequenceFlow_18wj44x"> + <di:waypoint xsi:type="dc:Point" x="803" y="300" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="831" y="294" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0u88n0f_di" bpmnElement="Task_0qlkmvt"> + <dc:Bounds x="357" y="485" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1y17r20_di" bpmnElement="Task_12ghoph"> + <dc:Bounds x="551" y="485" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11saqvj_di" bpmnElement="IntermediateThrowEvent_0bq4fxs"> + <dc:Bounds x="1315" y="-207" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1292" y="-167" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qiiycn_di" bpmnElement="SequenceFlow_1qiiycn"> + <di:waypoint xsi:type="dc:Point" x="54" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="126" y="-189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="-210" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0w9t6tc_di" bpmnElement="SequenceFlow_0w9t6tc"> + <di:waypoint xsi:type="dc:Point" x="226" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="771" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="771" y="-189" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="-189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="786" y="-195" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0f2w7aj_di" bpmnElement="IntermediateThrowEvent_0f2w7aj"> + <dc:Bounds x="1315" y="282" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1299" y="323" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1vprtt9_di" bpmnElement="SequenceFlow_1vprtt9"> + <di:waypoint xsi:type="dc:Point" x="778" y="325" /> + <di:waypoint xsi:type="dc:Point" x="778" y="393" /> + <di:waypoint xsi:type="dc:Point" x="861" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784" y="353" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05dus9b_di" bpmnElement="IntermediateCatchEvent_05dus9b"> + <dc:Bounds x="18" y="282" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-3" y="318" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hbesp9_di" bpmnElement="SequenceFlow_1hbesp9"> + <di:waypoint xsi:type="dc:Point" x="54" y="300" /> + <di:waypoint xsi:type="dc:Point" x="444" y="300" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="204" y="279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_02bah5m_di" bpmnElement="IntermediateCatchEvent_02bah5m"> + <dc:Bounds x="18" y="507" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2" y="543" width="73" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16nxl6h_di" bpmnElement="SequenceFlow_16nxl6h"> + <di:waypoint xsi:type="dc:Point" x="979" y="525" /> + <di:waypoint xsi:type="dc:Point" x="1119" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1040" y="504" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uiygod_di" bpmnElement="SequenceFlow_0uiygod"> + <di:waypoint xsi:type="dc:Point" x="296" y="525" /> + <di:waypoint xsi:type="dc:Point" x="357" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="326.5" y="504" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1u9k0dm_di" bpmnElement="SequenceFlow_1u9k0dm"> + <di:waypoint xsi:type="dc:Point" x="457" y="525" /> + <di:waypoint xsi:type="dc:Point" x="551" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="504" y="504" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13c7bhn_di" bpmnElement="SequenceFlow_13c7bhn"> + <di:waypoint xsi:type="dc:Point" x="651" y="525" /> + <di:waypoint xsi:type="dc:Point" x="728" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689.5" y="504" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qozd66_di" bpmnElement="SequenceFlow_1qozd66"> + <di:waypoint xsi:type="dc:Point" x="54" y="525" /> + <di:waypoint xsi:type="dc:Point" x="196" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="125" y="504" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ddg1di_di" bpmnElement="EndEvent_1ddg1di"> + <dc:Bounds x="1314.8151147098515" y="506.9419703103914" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1332.8151147098515" y="546.9419703103914" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0epxs3b_di" bpmnElement="SequenceFlow_0epxs3b"> + <di:waypoint xsi:type="dc:Point" x="1219" y="525" /> + <di:waypoint xsi:type="dc:Point" x="1315" y="525" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1267" y="504" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0sfdqc1_di" bpmnElement="SubProcess_0sfdqc1" isExpanded="true"> + <dc:Bounds x="338" y="817" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0x7o2ug_di" bpmnElement="StartEvent_0x7o2ug"> + <dc:Bounds x="407" y="885" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="335" y="926" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0lgdyyb_di" bpmnElement="EndEvent_0lgdyyb"> + <dc:Bounds x="700" y="885" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="628" y="926" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1648adp_di" bpmnElement="ScriptTask_1648adp"> + <dc:Bounds x="511" y="863" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gr9xqj_di" bpmnElement="SequenceFlow_0gr9xqj"> + <di:waypoint xsi:type="dc:Point" x="443" y="903" /> + <di:waypoint xsi:type="dc:Point" x="511" y="903" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="387" y="888" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a6l29p_di" bpmnElement="SequenceFlow_0a6l29p"> + <di:waypoint xsi:type="dc:Point" x="611" y="903" /> + <di:waypoint xsi:type="dc:Point" x="700" y="903" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="567.5" y="888" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0dh2mj1_di" bpmnElement="Task_1blaq0f"> + <dc:Bounds x="861" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k0f7lm_di" bpmnElement="SequenceFlow_0k0f7lm"> + <di:waypoint xsi:type="dc:Point" x="961" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1047" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1004" y="372.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn new file mode 100644 index 0000000000..29116a67fc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn @@ -0,0 +1,515 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateServiceInstance" name="DoCreateServiceInstance" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="getAAICustomerById_scriptTask" name="Get AAI Customer By globalCustomerId " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.getAAICustomerById(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="getAAICustomerById_scriptTask" targetRef="ExclusiveGateway_09wkav2" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="callGenericGetService" targetRef="ScriptTask_0i8cqdy" /> + <bpmn2:scriptTask id="PreProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_156ih25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.preProcessSDNCAssignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessSDNCAssignRequest" name="Post Process SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.postProcessSDNCAssign(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterServiceTopologyAssign" name="Call SDNC Adapter Service Topology Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_01q6pl4</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="getAAICustomerById_scriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="PreProcessSDNCAssignRequest" targetRef="CallSDNCAdapterServiceTopologyAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallSDNCAdapterServiceTopologyAssign" targetRef="PostProcessSDNCAssignRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="PostProcessSDNCAssignRequest" targetRef="CallActivity_1707jgc" /> + <bpmn2:callActivity id="callGenericGetService" name="Call GenericGetService" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="callGenericPutService" name="Call Generic Put Service" calledElement="GenericPutService"> + <bpmn2:extensionElements> + <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" /> + <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" /> + <camunda:in source="subscriptionServiceType" target="GENPS_serviceType" /> + <camunda:in sourceExpression="service-instance" target="GENPS_type" /> + <camunda:in source="serviceInstanceData" target="GENPS_payload" /> + <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="GENPS_requesId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1w01tqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jhzmzn</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="need to check SI name in AAI?" default="SequenceFlow_1uw2p9a"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="callGenericGetService"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("checkAAI" ) == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="callGenericPutService" /> + <bpmn2:subProcess id="SubProcess_06d8lk8" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_0yljq9y"> + <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_117lkk3"> + <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateServiceInstanceRollback" calledElement="DoCreateServiceInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rollbackError" target="rollbackErrror" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" /> + <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" /> + <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.preProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" /> + <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.postProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" /> + </bpmn2:subProcess> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1nk6aol" name="sdncVersion is 1610 and not port mirror?" default="SequenceFlow_156ih25"> + <bpmn2:incoming>SequenceFlow_0w5i6vf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_156ih25</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_00v4npo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_156ih25" name="no" sourceRef="ExclusiveGateway_1nk6aol" targetRef="PreProcessSDNCAssignRequest" /> + <bpmn2:endEvent id="EndEvent_10659gr"> + <bpmn2:incoming>SequenceFlow_00v4npo</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_00v4npo" name="yes" sourceRef="ExclusiveGateway_1nk6aol" targetRef="EndEvent_10659gr"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{!execution.getVariable("sendToSDNC")}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_0i8cqdy" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w01tqs</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1w01tqs" sourceRef="ScriptTask_0i8cqdy" targetRef="callGenericPutService" /> + <bpmn2:callActivity id="CallActivity_1707jgc" name="Call GenericGetService2" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="subscriptionServiceType" target="GENGS_serviceType" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0tx5frq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0tx5frq" sourceRef="CallActivity_1707jgc" targetRef="ScriptTask_1tp0fcx" /> + <bpmn2:sequenceFlow id="SequenceFlow_01q6pl4" sourceRef="ScriptTask_1tp0fcx" targetRef="EndEvent_3" /> + <bpmn2:scriptTask id="ScriptTask_1tp0fcx" name="Post Process AAI GET2" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0tx5frq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01q6pl4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.postProcessAAIGET2(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0q37vn9" name="Post Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1jhzmzn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16sdyz9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCreateServiceInstance() +ddsi.postProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0k0wn03" sourceRef="Task_0wj9ajs" targetRef="Task_1g8wthf" /> + <bpmn2:scriptTask id="Task_0wj9ajs" name="Create Project" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16sdyz9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k0wn03</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.createProject(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_1g8wthf" name="Create Owning Entity" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0k0wn03</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0w5i6vf</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.createOwningEntity(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1jhzmzn" sourceRef="callGenericPutService" targetRef="ScriptTask_0q37vn9" /> + <bpmn2:sequenceFlow id="SequenceFlow_0w5i6vf" sourceRef="Task_1g8wthf" targetRef="ExclusiveGateway_1nk6aol" /> + <bpmn2:sequenceFlow id="SequenceFlow_16sdyz9" sourceRef="ScriptTask_0q37vn9" targetRef="Task_0wj9ajs" /> + <bpmn2:subProcess id="SubProcess_1awd8cm" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1thtxi5" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0x48any</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_052o4xc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstance() +dcsi.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:startEvent id="StartEvent_0xjnqhv"> + <bpmn2:outgoing>SequenceFlow_0x48any</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_0eikrc1"> + <bpmn2:incoming>SequenceFlow_052o4xc</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0x48any" name="" sourceRef="StartEvent_0xjnqhv" targetRef="ScriptTask_1thtxi5" /> + <bpmn2:sequenceFlow id="SequenceFlow_052o4xc" name="" sourceRef="ScriptTask_1thtxi5" targetRef="EndEvent_0eikrc1" /> + </bpmn2:subProcess> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="152" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="245" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="188" y="97" /> + <di:waypoint xsi:type="dc:Point" x="245" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="217" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="getAAICustomerById_scriptTask"> + <dc:Bounds x="393" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_62"> + <di:waypoint xsi:type="dc:Point" x="493" y="97" /> + <di:waypoint xsi:type="dc:Point" x="565" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="529" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="1122" y="1297" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1095" y="1338" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4"> + <di:waypoint xsi:type="dc:Point" x="839" y="94" /> + <di:waypoint xsi:type="dc:Point" x="971" y="94" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="905" y="79" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_334" bpmnElement="PreProcessSDNCAssignRequest"> + <dc:Bounds x="972" y="810" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_335" bpmnElement="PostProcessSDNCAssignRequest"> + <dc:Bounds x="972" y="1054" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_74" bpmnElement="CallSDNCAdapterServiceTopologyAssign"> + <dc:Bounds x="972" y="930" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_62"> + <di:waypoint xsi:type="dc:Point" x="345" y="97" /> + <di:waypoint xsi:type="dc:Point" x="393" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="369" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_334" targetElement="_BPMNShape_CallActivity_74"> + <di:waypoint xsi:type="dc:Point" x="1020" y="890" /> + <di:waypoint xsi:type="dc:Point" x="1020" y="930" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="990" y="910" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_CallActivity_74" targetElement="_BPMNShape_ScriptTask_335"> + <di:waypoint xsi:type="dc:Point" x="1022" y="1010" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="1054" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="992" y="1032" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_335"> + <di:waypoint xsi:type="dc:Point" x="1024" y="1134" /> + <di:waypoint xsi:type="dc:Point" x="1024" y="1162" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="994" y="1148" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="callGenericGetService"> + <dc:Bounds x="739" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="callGenericPutService"> + <dc:Bounds x="972" y="206" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true"> + <dc:Bounds x="565" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="547" y="27" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb"> + <di:waypoint xsi:type="dc:Point" x="615" y="97" /> + <di:waypoint xsi:type="dc:Point" x="739" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="635" y="76" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a"> + <di:waypoint xsi:type="dc:Point" x="590" y="122" /> + <di:waypoint xsi:type="dc:Point" x="590" y="246" /> + <di:waypoint xsi:type="dc:Point" x="972" y="246" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="132.89706349694825" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true"> + <dc:Bounds x="99" y="531" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y"> + <dc:Bounds x="195" y="608" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="213" y="649" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3"> + <dc:Bounds x="828" y="608" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="846" y="649" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6"> + <dc:Bounds x="493" y="586" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf"> + <di:waypoint xsi:type="dc:Point" x="593" y="626" /> + <di:waypoint xsi:type="dc:Point" x="661" y="626" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="627" y="611" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11"> + <di:waypoint xsi:type="dc:Point" x="231" y="626" /> + <di:waypoint xsi:type="dc:Point" x="330" y="626" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="281" y="611" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1nk6aol_di" bpmnElement="ExclusiveGateway_1nk6aol" isMarkerVisible="true"> + <dc:Bounds x="997" y="717" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="729" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_156ih25_di" bpmnElement="SequenceFlow_156ih25"> + <di:waypoint xsi:type="dc:Point" x="1022" y="767" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1039" y="770" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_10659gr_di" bpmnElement="EndEvent_10659gr"> + <dc:Bounds x="1105" y="724" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1078" y="765" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_00v4npo_di" bpmnElement="SequenceFlow_00v4npo"> + <di:waypoint xsi:type="dc:Point" x="1047" y="742" /> + <di:waypoint xsi:type="dc:Point" x="1075" y="742" /> + <di:waypoint xsi:type="dc:Point" x="1075" y="742" /> + <di:waypoint xsi:type="dc:Point" x="1105" y="742" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1050.5" y="718" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy"> + <dc:Bounds x="971" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1w01tqs_di" bpmnElement="SequenceFlow_1w01tqs"> + <di:waypoint xsi:type="dc:Point" x="1021" y="137" /> + <di:waypoint xsi:type="dc:Point" x="1021" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1021" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1021" y="206" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1036" y="172" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux"> + <dc:Bounds x="330" y="586" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf"> + <di:waypoint xsi:type="dc:Point" x="430" y="626" /> + <di:waypoint xsi:type="dc:Point" x="493" y="626" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="462" y="611" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip"> + <dc:Bounds x="661" y="586" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k"> + <di:waypoint xsi:type="dc:Point" x="761" y="626" /> + <di:waypoint xsi:type="dc:Point" x="793" y="626" /> + <di:waypoint xsi:type="dc:Point" x="793" y="626" /> + <di:waypoint xsi:type="dc:Point" x="828" y="626" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="808" y="626" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1707jgc_di" bpmnElement="CallActivity_1707jgc"> + <dc:Bounds x="972" y="1162" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0tx5frq_di" bpmnElement="SequenceFlow_0tx5frq"> + <di:waypoint xsi:type="dc:Point" x="1022" y="1242" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="1275" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="992" y="1258.5" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01q6pl4_di" bpmnElement="SequenceFlow_01q6pl4"> + <di:waypoint xsi:type="dc:Point" x="1072" y="1315" /> + <di:waypoint xsi:type="dc:Point" x="1094" y="1315" /> + <di:waypoint xsi:type="dc:Point" x="1094" y="1315" /> + <di:waypoint xsi:type="dc:Point" x="1122" y="1315" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1064" y="1315" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1tp0fcx_di" bpmnElement="ScriptTask_1tp0fcx"> + <dc:Bounds x="972" y="1275" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9"> + <dc:Bounds x="972" y="336" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k0wn03_di" bpmnElement="SequenceFlow_0k0wn03"> + <di:waypoint xsi:type="dc:Point" x="1022" y="541" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="589" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="992" y="559" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0v8y3ex_di" bpmnElement="Task_0wj9ajs"> + <dc:Bounds x="972" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lndrbk_di" bpmnElement="Task_1g8wthf"> + <dc:Bounds x="972" y="589" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jhzmzn_di" bpmnElement="SequenceFlow_1jhzmzn"> + <di:waypoint xsi:type="dc:Point" x="1022" y="286" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="336" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1037" y="305" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0w5i6vf_di" bpmnElement="SequenceFlow_0w5i6vf"> + <di:waypoint xsi:type="dc:Point" x="1022" y="669" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="717" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1037" y="687" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16sdyz9_di" bpmnElement="SequenceFlow_16sdyz9"> + <di:waypoint xsi:type="dc:Point" x="1022" y="416" /> + <di:waypoint xsi:type="dc:Point" x="1022" y="461" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1037" y="432.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1awd8cm_di" bpmnElement="SubProcess_1awd8cm" isExpanded="true"> + <dc:Bounds x="98" y="304" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1thtxi5_di" bpmnElement="ScriptTask_1thtxi5"> + <dc:Bounds x="246" y="359" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0xjnqhv_di" bpmnElement="StartEvent_0xjnqhv"> + <dc:Bounds x="131" y="381" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="149" y="422" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0eikrc1_di" bpmnElement="EndEvent_0eikrc1"> + <dc:Bounds x="407" y="381" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="425" y="422" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0x48any_di" bpmnElement="SequenceFlow_0x48any"> + <di:waypoint xsi:type="dc:Point" x="167" y="399" /> + <di:waypoint xsi:type="dc:Point" x="246" y="399" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="399" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_052o4xc_di" bpmnElement="SequenceFlow_052o4xc"> + <di:waypoint xsi:type="dc:Point" x="346" y="399" /> + <di:waypoint xsi:type="dc:Point" x="407" y="399" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="381" y="399" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn new file mode 100644 index 0000000000..eb3e35f6fe --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateServiceInstanceRollback" name="DoCreateServiceInstanceRollback" isExecutable="true"> + <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateServiceInstanceRollback() +rbk.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateServiceInstanceRollback() +rbk.processRollbackException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="RollbackSDNC?" default="SequenceFlow_1uw2p9a"> + <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="CallActivity_0ak0ezb"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBackAAI?" default="SequenceFlow_1n7wade"> + <bpmn2:documentation>rollback AAI</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1njogr1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1n7wade</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1x9eh33</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1n7wade" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="PostProcess_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_0k28xib" sourceRef="CallActivity_0ak0ezb" targetRef="ScriptTask_1uxr0cx" /> + <bpmn2:callActivity id="CallActivity_0ak0ezb" name="Call SDNC Service Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0khjo7l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("sdncDeactivateResponse") +def rbk= new DoCreateServiceInstanceRollback() +rbk.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0khjo7l" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_0ppz9nd" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1n7wade</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0h3wkj4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1gxe17c"> + <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateServiceInstanceRollback() +rbk.processRollbackJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_12e3h6k"> + <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_1awt1ds" name="Post Process SDNC Delete"> + <bpmn2:incoming>SequenceFlow_006g9e8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1njogr1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("sdncDeleteResponse") +def rbk= new DoCreateServiceInstanceRollback() +rbk.validateSDNCResponse(execution, response, "delete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0ppz9nd" name="Call SDNC Service Topology Dekete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0khjo7l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_006g9e8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_006g9e8" sourceRef="CallActivity_0ppz9nd" targetRef="ScriptTask_1awt1ds" /> + <bpmn2:sequenceFlow id="SequenceFlow_1njogr1" sourceRef="ScriptTask_1awt1ds" targetRef="ExclusiveGateway_0ii31dq" /> + <bpmn2:serviceTask id="Task_06o1aio" name="AAI Delete Service" camunda:class="org.onap.so.bpmn.infrastructure.aai.AAIDeleteServiceInstance"> + <bpmn2:incoming>SequenceFlow_1x9eh33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0h3wkj4</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_0h3wkj4" sourceRef="Task_06o1aio" targetRef="PostProcess_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x9eh33" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="Task_06o1aio"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackAAI" ) == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent"> + <dc:Bounds x="151" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="146" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="234" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="187" y="97" /> + <di:waypoint xsi:type="dc:Point" x="234" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="1208" y="350" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1226" y="391" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="508" y="323" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="576" y="389" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="430" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="869" y="389" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="887" y="430" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="612" y="407" /> + <di:waypoint xsi:type="dc:Point" x="680" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="647" y="392" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="334" y="97" /> + <di:waypoint xsi:type="dc:Point" x="366" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="350" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true"> + <dc:Bounds x="448" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="433" y="129" width="79" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb"> + <di:waypoint xsi:type="dc:Point" x="498" y="97" /> + <di:waypoint xsi:type="dc:Point" x="539" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="100" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a"> + <di:waypoint xsi:type="dc:Point" x="473" y="72" /> + <di:waypoint xsi:type="dc:Point" x="473" y="-23" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="-23" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="72" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="751" y="-41" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true"> + <dc:Bounds x="1046" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1094" y="104" width="66" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1n7wade_di" bpmnElement="SequenceFlow_1n7wade"> + <di:waypoint xsi:type="dc:Point" x="1071" y="122" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="241" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="241" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1081" y="124.63709677419354" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib"> + <di:waypoint xsi:type="dc:Point" x="639" y="97" /> + <di:waypoint xsi:type="dc:Point" x="671" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb"> + <dc:Bounds x="539" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx"> + <dc:Bounds x="671" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0khjo7l_di" bpmnElement="SequenceFlow_0khjo7l"> + <di:waypoint xsi:type="dc:Point" x="771" y="97" /> + <di:waypoint xsi:type="dc:Point" x="796" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true"> + <dc:Bounds x="366" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="358" y="54" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="680" y="367" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="780" y="407" /> + <di:waypoint xsi:type="dc:Point" x="869" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="825" y="392" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask"> + <dc:Bounds x="1176" y="201" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl"> + <di:waypoint xsi:type="dc:Point" x="1226" y="281" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="350" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1241" y="315.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh"> + <di:waypoint xsi:type="dc:Point" x="416" y="97" /> + <di:waypoint xsi:type="dc:Point" x="448" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="82" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy"> + <di:waypoint xsi:type="dc:Point" x="391" y="122" /> + <di:waypoint xsi:type="dc:Point" x="391" y="268" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="267" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="195" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true"> + <dc:Bounds x="325" y="576" width="419" height="150" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c"> + <dc:Bounds x="360" y="628" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="378" y="669" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0"> + <dc:Bounds x="468" y="606" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k"> + <dc:Bounds x="618" y="628" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="636" y="669" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf"> + <di:waypoint xsi:type="dc:Point" x="396" y="646" /> + <di:waypoint xsi:type="dc:Point" x="468" y="646" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="421" y="646" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff"> + <di:waypoint xsi:type="dc:Point" x="568" y="646" /> + <di:waypoint xsi:type="dc:Point" x="618" y="646" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="593" y="646" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1awt1ds_di" bpmnElement="ScriptTask_1awt1ds"> + <dc:Bounds x="921" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ppz9nd_di" bpmnElement="CallActivity_0ppz9nd"> + <dc:Bounds x="796" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_006g9e8_di" bpmnElement="SequenceFlow_006g9e8"> + <di:waypoint xsi:type="dc:Point" x="896" y="97" /> + <di:waypoint xsi:type="dc:Point" x="921" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="909" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1njogr1_di" bpmnElement="SequenceFlow_1njogr1"> + <di:waypoint xsi:type="dc:Point" x="1021" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0e780gv_di" bpmnElement="Task_06o1aio"> + <dc:Bounds x="1176" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0h3wkj4_di" bpmnElement="SequenceFlow_0h3wkj4"> + <di:waypoint xsi:type="dc:Point" x="1276" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1296" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1296" y="241" /> + <di:waypoint xsi:type="dc:Point" x="1276" y="241" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1311" y="163" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x9eh33_di" bpmnElement="SequenceFlow_1x9eh33"> + <di:waypoint xsi:type="dc:Point" x="1096" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1136" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1136" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1115.9718309859154" y="71" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn new file mode 100644 index 0000000000..88a99c2938 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2"> + <bpmn:process id="DoCreateServiceInstanceRollbackV2" name="DoCreateServiceInstanceRollbackV2" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="start"> + <bpmn:outgoing>SequenceFlow_0r35zfs</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_0r35zfs" sourceRef="StartEvent_1" targetRef="ScriptTask_2" /> + <bpmn:endEvent id="EndEvent_1uwvw04" name="end"> + <bpmn:incoming>SequenceFlow_1f949uf</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1f949uf" sourceRef="ScriptTask_2" targetRef="EndEvent_1uwvw04" /> + <bpmn:scriptTask id="ScriptTask_2" name="ServiceInstance Rollback (A&AI)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0r35zfs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1f949uf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsir = new DoCreateServiceInstanceRollbackV2() +dcsir.aaiServiceInstanceRollback(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_06tpqag" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_1n34l5n" name="error start"> + <bpmn:outgoing>SequenceFlow_1tnfu1n</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1tnfu1n" sourceRef="StartEvent_1n34l5n" targetRef="Task_11sf5id" /> + <bpmn:endEvent id="EndEvent_1ldhg44" name="end"> + <bpmn:incoming>SequenceFlow_0hi9120</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0hi9120" sourceRef="Task_11sf5id" targetRef="EndEvent_1ldhg44" /> + <bpmn:scriptTask id="Task_11sf5id" name="Rollback ERROR" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1tnfu1n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0hi9120</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsir = new DoCreateServiceInstanceRollbackV2() +dcsir.rollbackError(execution)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:subProcess> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceRollbackV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="223" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="230" y="138" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0r35zfs_di" bpmnElement="SequenceFlow_0r35zfs"> + <di:waypoint xsi:type="dc:Point" x="259" y="120" /> + <di:waypoint xsi:type="dc:Point" x="325" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="247" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1uwvw04_di" bpmnElement="EndEvent_1uwvw04"> + <dc:Bounds x="490" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="142" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f949uf_di" bpmnElement="SequenceFlow_1f949uf"> + <di:waypoint xsi:type="dc:Point" x="425" y="120" /> + <di:waypoint xsi:type="dc:Point" x="490" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412.5" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0kr8b5y_di" bpmnElement="ScriptTask_2"> + <dc:Bounds x="325" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_03s2qcr_di" bpmnElement="SubProcess_06tpqag" isExpanded="true"> + <dc:Bounds x="200" y="216" width="350" height="200" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1nwdcsr_di" bpmnElement="StartEvent_1n34l5n"> + <dc:Bounds x="229" y="295" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="223" y="335" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tnfu1n_di" bpmnElement="SequenceFlow_1tnfu1n"> + <di:waypoint xsi:type="dc:Point" x="265" y="313" /> + <di:waypoint xsi:type="dc:Point" x="318" y="313" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="291.5" y="292" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ldhg44_di" bpmnElement="EndEvent_1ldhg44"> + <dc:Bounds x="453" y="295" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="462" y="335" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hi9120_di" bpmnElement="SequenceFlow_0hi9120"> + <di:waypoint xsi:type="dc:Point" x="418" y="313" /> + <di:waypoint xsi:type="dc:Point" x="453" y="313" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="435.5" y="292" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1w1j8ao_di" bpmnElement="Task_11sf5id"> + <dc:Bounds x="318" y="273" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn new file mode 100644 index 0000000000..e8dbc8c7f6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn @@ -0,0 +1,197 @@ +<?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="1.8.2"> + <bpmn:process id="DoCreateServiceInstanceV2" name="DoCreateServiceInstanceV2" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Start"> + <bpmn:outgoing>SequenceFlow_0g8qp84</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_0651nnp" sourceRef="ScriptTask_1" targetRef="ScriptTask_2" /> + <bpmn:sequenceFlow id="SequenceFlow_0u0ptz7" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1" name="Run SDNC Request?"> + <bpmn:incoming>SequenceFlow_0ekno6w</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t50vt9</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0xhy3o1</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0ekno6w" sourceRef="ScriptTask_3" targetRef="ExclusiveGateway_1" /> + <bpmn:sequenceFlow id="SequenceFlow_1t50vt9" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_4"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("callSDNC")}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_2" name="End"> + <bpmn:incoming>SequenceFlow_0xhy3o1</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xhy3o1" name="No" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_2" /> + <bpmn:endEvent id="EndEvent_1" name="End"> + <bpmn:incoming>SequenceFlow_0eryvle</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0eryvle" sourceRef="ScriptTask_4" targetRef="EndEvent_1" /> + <bpmn:scriptTask id="ScriptTask_1" name="Create Service Instance (A&AI)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0g8qp84</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0651nnp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstanceV2() +dcsi.createServiceInstance(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_2" name="Create Project (A&AI)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0651nnp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0u0ptz7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstanceV2() +dcsi.createProject(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_3" name="Create Owning Entity (A&AI)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0u0ptz7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0ekno6w</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstanceV2() +dcsi.createOwningEntity(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_4" name="Create Service Instance (SDNC)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1t50vt9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0eryvle</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateServiceInstanceV2() +dcsi.sdncCreateServiceInstance(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_0lezgt7" name="Error Handling" triggeredByEvent="true"> + <bpmn:startEvent id="ErrorEvent_2" name="Error"> + <bpmn:outgoing>SequenceFlow_0mk8fd7</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_3" name="End"> + <bpmn:incoming>SequenceFlow_14mdxgk</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0mk8fd7" sourceRef="ErrorEvent_2" targetRef="SubTask_1" /> + <bpmn:sequenceFlow id="SequenceFlow_14mdxgk" sourceRef="SubTask_1" targetRef="EndEvent_3" /> + <bpmn:callActivity id="SubTask_1" name="DoCreate Rollback" calledElement="DoCreateServiceInstanceRollbackV2"> + <bpmn:extensionElements> + <camunda:in source="sdncRollback" target="sdncRollback" /> + <camunda:in source="aaiServiceInstanceRollback" target="aaiServiceInstanceRollback" /> + <camunda:in source="ServiceDecomposition" target="ServiceDecomposition" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0mk8fd7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14mdxgk</bpmn:outgoing> + </bpmn:callActivity> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_0g8qp84" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="166" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="173" y="138" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0651nnp_di" bpmnElement="SequenceFlow_0651nnp"> + <di:waypoint xsi:type="dc:Point" x="371" y="120" /> + <di:waypoint xsi:type="dc:Point" x="442" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u0ptz7_di" bpmnElement="SequenceFlow_0u0ptz7"> + <di:waypoint xsi:type="dc:Point" x="542" y="120" /> + <di:waypoint xsi:type="dc:Point" x="620" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1hnvq9n_di" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> + <dc:Bounds x="784" y="95" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="773" y="67" width="72" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ekno6w_di" bpmnElement="SequenceFlow_0ekno6w"> + <di:waypoint xsi:type="dc:Point" x="720" y="120" /> + <di:waypoint xsi:type="dc:Point" x="784" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="752" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1t50vt9_di" bpmnElement="SequenceFlow_1t50vt9"> + <di:waypoint xsi:type="dc:Point" x="834" y="120" /> + <di:waypoint xsi:type="dc:Point" x="911" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="856" y="94" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1tlnfr4_di" bpmnElement="EndEvent_2"> + <dc:Bounds x="791" y="196" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="800" y="236" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xhy3o1_di" bpmnElement="SequenceFlow_0xhy3o1"> + <di:waypoint xsi:type="dc:Point" x="809" y="145" /> + <di:waypoint xsi:type="dc:Point" x="809" y="196" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="815" y="165" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_015y2ht_di" bpmnElement="EndEvent_1"> + <dc:Bounds x="1078" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1087" y="142" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0eryvle_di" bpmnElement="SequenceFlow_0eryvle"> + <di:waypoint xsi:type="dc:Point" x="1011" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1044.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1qtzumy_di" bpmnElement="ScriptTask_1"> + <dc:Bounds x="271" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_10octqt_di" bpmnElement="ScriptTask_2"> + <dc:Bounds x="442" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_140drj4_di" bpmnElement="ScriptTask_3"> + <dc:Bounds x="620" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1q37c16_di" bpmnElement="ScriptTask_4"> + <dc:Bounds x="911" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1p4inl6_di" bpmnElement="SubProcess_0lezgt7" isExpanded="true"> + <dc:Bounds x="368" y="268" width="350" height="200" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0g6sxcc_di" bpmnElement="ErrorEvent_2"> + <dc:Bounds x="409" y="335" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="415" y="375" width="25" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_061qhx5_di" bpmnElement="EndEvent_3"> + <dc:Bounds x="623" y="335" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="632" y="375" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g8qp84_di" bpmnElement="SequenceFlow_0g8qp84"> + <di:waypoint xsi:type="dc:Point" x="202" y="120" /> + <di:waypoint xsi:type="dc:Point" x="271" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="191.5" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mk8fd7_di" bpmnElement="SequenceFlow_0mk8fd7"> + <di:waypoint xsi:type="dc:Point" x="445" y="353" /> + <di:waypoint xsi:type="dc:Point" x="482" y="353" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="463.5" y="332" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14mdxgk_di" bpmnElement="SequenceFlow_14mdxgk"> + <di:waypoint xsi:type="dc:Point" x="582" y="353" /> + <di:waypoint xsi:type="dc:Point" x="623" y="353" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="602.5" y="332" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1jzchuz_di" bpmnElement="SubTask_1"> + <dc:Bounds x="482" y="313" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn new file mode 100644 index 0000000000..c151370698 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoCreateVFCNetworkServiceInstance" name="DoCreateVFCNetworkServiceInstance" isExecutable="true"> + <bpmn:startEvent id="createNS_StartEvent" name="createNS_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="Task_09nzhwk" /> + <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" /> + <bpmn:scriptTask id="Task_09nzhwk" name="Create Network Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.createNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="instantiate_NSTask" name="Instantiate Network Service" scriptFormat="groovy"> + <bpmn:incoming>createNSSuccess_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.instantiateNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Create NS Success?"> + <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming> + <bpmn:outgoing>createNSSuccess_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>createNSFailed_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="createNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="instantiate_NSTask"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceName" ) != null && execution.getVariable("nsInstanceName" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="createNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="createNSFailed_EndEvent"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceName" ) == null || execution.getVariable("nsInstanceName" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="Instantiate NS Success?"> + <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming> + <bpmn:outgoing>instantiateFailed_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>instantiateSuccess_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="instantiate_NSTask" targetRef="ExclusiveGateway_1is7zys" /> + <bpmn:sequenceFlow id="instantiateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) == null || execution.getVariable("jobId" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="instantiateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) != null && execution.getVariable("jobId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="Instantiate Finished?"> + <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming> + <bpmn:outgoing>operationFinished_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>operationProcessing_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="operationFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="finishNSCreate_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) != "processing" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="operationProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) == "processing" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="EndEvent_1x6k78c" /> + <bpmn:endEvent id="createNSFailed_EndEvent" name="createNSFailed"> + <bpmn:incoming>createNSFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1gkvvpn"> + <bpmn:incoming>instantiateFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1x6k78c"> + <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy"> + <bpmn:incoming>instantiateSuccess_SequenceFlow</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.queryNSProgress(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="finishNSCreate_Task" name="Finish NS Create"> + <bpmn:incoming>operationFinished_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.finishNSCreate(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" /> + <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy"> + <bpmn:incoming>operationProcessing_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.timeDelay(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVFCNetworkServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent"> + <dc:Bounds x="175" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="152" y="147" width="83" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint xsi:type="dc:Point" x="211" y="129" /> + <di:waypoint xsi:type="dc:Point" x="251" y="129" /> + <di:waypoint xsi:type="dc:Point" x="251" y="129" /> + <di:waypoint xsi:type="dc:Point" x="293" y="129" /> + <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 xsi:type="dc:Point" x="393" y="129" /> + <di:waypoint xsi:type="dc:Point" x="479" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="436" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h"> + <di:waypoint xsi:type="dc:Point" x="579" y="129" /> + <di:waypoint xsi:type="dc:Point" x="683" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="631" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk"> + <dc:Bounds x="479" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="293" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask"> + <dc:Bounds x="839" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true"> + <dc:Bounds x="683" y="104" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="685" y="158" width="52" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rt03zl_di" bpmnElement="createNSSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="733" y="129" /> + <di:waypoint xsi:type="dc:Point" x="839" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777" y="108" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="createNSFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="708" y="104" /> + <di:waypoint xsi:type="dc:Point" x="708" y="33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="717" y="63" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true"> + <dc:Bounds x="1034" y="105" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1029" y="159" width="69" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t"> + <di:waypoint xsi:type="dc:Point" x="939" y="129" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="130" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="986.5" y="108.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="instantiateFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="105" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1068" y="63" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="instantiateSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="155" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="271" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1066" y="207" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true"> + <dc:Bounds x="1034" y="570" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1038" y="624" width="50" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="operationFinished_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1034" y="595" /> + <di:waypoint xsi:type="dc:Point" x="909" y="595" /> + <di:waypoint xsi:type="dc:Point" x="909" y="595" /> + <di:waypoint xsi:type="dc:Point" x="783" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="963" y="574" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="operationProcessing_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1084" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1131" y="607" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g"> + <di:waypoint xsi:type="dc:Point" x="683" y="595" /> + <di:waypoint xsi:type="dc:Point" x="520" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="556.5" y="574" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="createNSFailed_EndEvent"> + <dc:Bounds x="690" y="-3" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="37" width="75" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn"> + <dc:Bounds x="1041" y="-3" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1014" y="37" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="484" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412" y="617" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task"> + <dc:Bounds x="1009" y="271" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task"> + <dc:Bounds x="683" y="555" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p"> + <di:waypoint xsi:type="dc:Point" x="1059" y="351" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="454.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task"> + <dc:Bounds x="1162" y="406" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj"> + <di:waypoint xsi:type="dc:Point" x="1212" y="406" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="311" /> + <di:waypoint xsi:type="dc:Point" x="1109" y="311" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1227" y="352.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn new file mode 100644 index 0000000000..820d1174be --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn @@ -0,0 +1,1701 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_pNTO8MRhEeWv36YLr7PC3Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVfModule" name="DoCreateVfModule" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="DoCreateVfModule"> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_26" name="DoCreateVfModule" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="IntermediateCatchEvent_1" targetRef="IsVolumeGroupIdSpecified" /> + <bpmn2:exclusiveGateway id="IsVolumeGroupIdSpecified" name="Is volume_group_id specified?" default="SequenceFlow_11"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_40</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="no" sourceRef="IsVolumeGroupIdSpecified" targetRef="ExclusiveGateway_4" /> + <bpmn2:callActivity id="ConfirmVolumeGroupTenant" name="Confirm Volume Group Tenant" calledElement="ConfirmVolumeGroupTenant"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DCVFM_tenantId" target="tenantId" /> + <camunda:in source="DCVFM_cloudRegionForVolume" target="aicCloudRegion" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DCVFM_volumeGroupStackId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_43</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ConfirmVolumeGroupTenant" targetRef="IsVolumeGroupNameSpecified" /> + <bpmn2:exclusiveGateway id="IsVolumeGroupNameSpecified" name="Is volume_group_name specified?" default="SequenceFlow_21"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="IsVolumeGroupNameSpecified" targetRef="ConfirmVolumeName"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupName") != null && execution.getVariable("DCVFM_volumeGroupName") != "" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="IsVolumeGroupNameSpecified" targetRef="ExclusiveGateway_4" /> + <bpmn2:callActivity id="ConfirmVolumeName" name="Confirm Volume Group Name" calledElement="ConfirmVolumeGroupName"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_volumeGroupId" target="ConfirmVolumeGroupName_volumeGroupId" /> + <camunda:in source="DCVFM_volumeGroupName" target="ConfirmVolumeGroupName_volumeGroupName" /> + <camunda:in source="DCVFM_cloudRegionForVolume" target="ConfirmVolumeGroupName_aicCloudRegion" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="DCVM_confirmResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ConfirmVolumeName" targetRef="ExclusiveGateway_4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_4"> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ExclusiveGateway_4" targetRef="CreateAAIVfModule" /> + <bpmn2:callActivity id="CallSDNCAdapterVDModuleTopologyAssign" name="Call SDNC Adapter: VF Module Topology Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_assignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFM_assignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCAssignRequest" name="PostProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1nh92s8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse") + +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.validateSDNCResponse(execution, response, "assign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessSDNCAssignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="PreProcessSDNCAssignRequest" targetRef="CallSDNCAdapterVDModuleTopologyAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="CallSDNCAdapterVDModuleTopologyAssign" targetRef="PostProcessSDNCAssignRequest" /> + <bpmn2:scriptTask id="PreProcessSDNCGetRequest" name="PreProcess SDNC GET Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0p61zug</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0aegg0r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessSDNCGetRequest(execution, "vfmodule")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterVFModuleTopologyGET" name="Call SDNC Adapter: VF Module Topology GET" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_getSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFM_getSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="PreProcessSDNCGetRequest" targetRef="CallSDNCAdapterVFModuleTopologyGET" /> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="CallSDNCAdapterVFModuleTopologyGET" targetRef="PostProcessSDNCGetRequest" /> + <bpmn2:scriptTask id="PostProcessSDNCGetRequest" name="PostProcess SDNC GET Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_31</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("DCVFM_getSDNCAdapterResponse") + +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="UpdateAAIVfModule_1" name="UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="DCVM_updateAAIVfModuleResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PreProcessUpdateAAIVfModule_1" name="PreProcess Update AAIVfModule" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1avfxsz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessUpdateAAIVfModuleRequestOrch(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCActivateRequest" name="PreProcess SDNC Activate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessSDNCActivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterVFModuleTopologyActivate" name="Call SDNC Adapter: VF Module Topology Activate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_activateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFM_activateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCActivateRequest" name="PostProcess SDNC Activate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + + String response = execution.getVariable("DCVFM_activateSDNCAdapterResponse") + +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_5" name="Is volume_group_id specified?" default="SequenceFlow_30"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="ExclusiveGateway_5" targetRef="ExclusiveGateway_6" /> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessUpdateAAIVfModule_1" targetRef="UpdateAAIVfModule_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="UpdateAAIVfModule_1" targetRef="PreProcessSDNCActivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="PreProcessSDNCActivateRequest" targetRef="CallSDNCAdapterVFModuleTopologyActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="CallSDNCAdapterVFModuleTopologyActivate" targetRef="PostProcessSDNCActivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="PostProcessSDNCActivateRequest" targetRef="ExclusiveGateway_5" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="UpdateAndActivate"> + <bpmn2:outgoing>SequenceFlow_0363dz7</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_30" name="UpdateAndActivate" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" name="Provision"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_29" name="Provision" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="IntermediateCatchEvent_2" targetRef="PreProcessSDNCAssignRequest" /> + <bpmn2:scriptTask id="PrepareCreateAAIVfModuleVolumeGroupRequest" name="Prepare CreateAAIVfModuleVolumeGroup Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.prepareCreateAAIVfModuleVolumeGroupRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CreateAAIVfModuleVolumeGroup" name="CreateAAIVfModuleVolumeGroup" calledElement="CreateAAIVfModuleVolumeGroup"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_createAAIVfModuleVolumeGroupRequest" target="CreateAAIVfModuleVolumeGroupRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="DCVM_updateAAIVfModuleResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="CreateAAIVfModuleVolumeGroup" targetRef="ExclusiveGateway_6" /> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="PrepareCreateAAIVfModuleVolumeGroupRequest" targetRef="CreateAAIVfModuleVolumeGroup" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_6"> + <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="ExclusiveGateway_6" targetRef="ScriptTask_setSuccess" /> + <bpmn2:scriptTask id="PreProcessVNFAdapterRequest" name="PreProcess VNF Adapter Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallVNFAdapterVFModuleCreate" name="Call VNF Adapter to create VF Module" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_createVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:out source="vnfAdapterRestV1Response" target="DCVFM_createVnfAResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in variables="all" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessVNFAdapterRequest" name="PostProcess VNF Adapter Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ushk1d</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.postProcessVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="To UpdateAndActivate"> + <bpmn2:incoming>SequenceFlow_0xfanpi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0abffyj</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_31" name="UpdateAndActivate" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="PostProcessSDNCGetRequest" targetRef="PreProcessVNFAdapterRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="PreProcessVNFAdapterRequest" targetRef="CallVNFAdapterVFModuleCreate" /> + <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="CallVNFAdapterVFModuleCreate" targetRef="PostProcessVNFAdapterRequest" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_3" name="To Provision"> + <bpmn2:incoming>SequenceFlow_0zcfn2x</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_170kw7h</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_28" name="Provision" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Need to query SDNC for VNF Topology?" default="SequenceFlow_0zcfn2x"> + <bpmn2:incoming>SequenceFlow_39</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zcfn2x</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0m382su</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="PostProcessCreateAAIVfModule" name="PostProcess CreateAAIVfModule" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.postProcessCreateAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="PostProcessCreateAAIVfModule" targetRef="IsBaseVfModule" /> + <bpmn2:exclusiveGateway id="IsBaseVfModule" name="Is Base VF Module?" default="SequenceFlow_36"> + <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_36" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_39" name="yes" sourceRef="IsBaseVfModule" targetRef="ExclusiveGateway_2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_isBaseVfModule") == "true"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="QueryAAIVfModule" name="Query AAI Vf Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_36</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_37</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_2" /> + <bpmn2:scriptTask id="ScriptTask_setSuccess" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.setSuccessIndicator(execution, true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_setSuccess" targetRef="EndEvent_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_8" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="QueryCloudRegion" name="Query Cloud Region" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_40</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +return doCreateVfModule.queryCloudRegion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_40" name="yes" sourceRef="IsVolumeGroupIdSpecified" targetRef="QueryCloudRegion"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_43" name="" sourceRef="QueryCloudRegion" targetRef="ConfirmVolumeGroupTenant" /> + <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_19933zh" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="To DoCreateVfModule"> + <bpmn2:incoming>SequenceFlow_1f53tby</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0270n5c</bpmn2:incoming> + <bpmn2:linkEventDefinition id="_LinkEventDefinition_25" name="DoCreateVfModule" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:callActivity id="CreateAAIVfModule" name="CreateAAIVfModule" calledElement="CreateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="DCVFM_vfModuleId" target="newVfModuleId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="CreateAAIVfModuleResponse" target="DCVFM_createVfModuleResponse" /> + <camunda:in source="DCVFM_vnfId" target="vnfId" /> + <camunda:in source="DCVFM_vnfName" target="vnfName" /> + <camunda:in source="DCVFM_vnfType" target="vnfType" /> + <camunda:in source="DCVFM_serviceId" target="serviceId" /> + <camunda:in source="DCVFM_personaModelId" target="personaModelId" /> + <camunda:in source="DCVFM_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="DCVFM_vfModuleName" target="vfModuleName" /> + <camunda:in source="DCVFM_vfModuleModelName" target="vfModuleModelName" /> + <camunda:in source="DCVFM_personaModelVersion" target="personaModelVersion" /> + <camunda:in source="DCVFM_modelCustomizationUuid" target="modelCustomizationId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="CreateAAIVfModule" targetRef="PostProcessCreateAAIVfModule" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_183x8vk" name="need to create network policies in AAI?" default="SequenceFlow_0xfanpi"> + <bpmn2:incoming>SequenceFlow_1ushk1d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ery1pk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0xfanpi</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1ushk1d" sourceRef="PostProcessVNFAdapterRequest" targetRef="ExclusiveGateway_183x8vk" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ery1pk" name="yes" sourceRef="ExclusiveGateway_183x8vk" targetRef="CreateNetworkPoliciesInAAI"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList") != null && !execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList").isEmpty()]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0xfanpi" name="no" sourceRef="ExclusiveGateway_183x8vk" targetRef="IntermediateThrowEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_0abffyj" sourceRef="CreateNetworkPoliciesInAAI" targetRef="IntermediateThrowEvent_2" /> + <bpmn2:scriptTask id="CreateNetworkPoliciesInAAI" name="Create Network Policies In AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ery1pk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0abffyj</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.createNetworkPoliciesInAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0f54imv" name="need to update VNF in AAI?" default="SequenceFlow_1k5uku2"> + <bpmn2:incoming>SequenceFlow_0363dz7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bi38s7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1k5uku2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1edqxlf"> + <bpmn2:incoming>SequenceFlow_112los9</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1k5uku2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1avfxsz</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0bi38s7" name="yes" sourceRef="ExclusiveGateway_0f54imv" targetRef="PreProcessUpdateAAIGenericVnf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[!execution.getVariable("DCVFM_oamManagementV4Address").isEmpty() || !execution.getVariable("DCVFM_oamManagementV6Address").isEmpty()]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1qm81ym" sourceRef="PreProcessUpdateAAIGenericVnf" targetRef="UpdateAAIGenericVNFTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_112los9" sourceRef="UpdateAAIGenericVNFTask" targetRef="ExclusiveGateway_1edqxlf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1k5uku2" name="no" sourceRef="ExclusiveGateway_0f54imv" targetRef="ExclusiveGateway_1edqxlf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1avfxsz" sourceRef="ExclusiveGateway_1edqxlf" targetRef="PreProcessUpdateAAIVfModule_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_0363dz7" sourceRef="IntermediateCatchEvent_3" targetRef="ExclusiveGateway_0f54imv" /> + <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVnf" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0bi38s7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qm81ym</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="UpdateAAIGenericVNFTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DCVM_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1qm81ym</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_112los9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0zcfn2x" name="no" sourceRef="ExclusiveGateway_2" targetRef="IntermediateThrowEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0m382su" name="yes" sourceRef="ExclusiveGateway_2" targetRef="QueryVNF"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_sdncVersion" ) == '1707'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0g270u0" sourceRef="PreProcessSDNCVnfGetRequest" targetRef="CallSDNCAdapterVNFTopologyGET" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yrlvgb" sourceRef="CallSDNCAdapterVNFTopologyGET" targetRef="PostProcessSDNCVnfGetRequest" /> + <bpmn2:scriptTask id="PreProcessSDNCVnfGetRequest" name="PreProcess SDNC VNF Topology GET Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0d00zqi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g270u0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessSDNCGetRequest(execution, 'vnf')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterVNFTopologyGET" name="Call SDNC Adapter: VNF Topology GET" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_getSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFM_getVnfSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0g270u0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1yrlvgb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCVnfGetRequest" name="PostProcess SDNC VNF Toplogy GET request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yrlvgb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_170kw7h</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("DCVFM_getVnfSDNCAdapterResponse") + +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0d00zqi" sourceRef="QueryVNF" targetRef="PreProcessSDNCVnfGetRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_170kw7h" sourceRef="PostProcessSDNCVnfGetRequest" targetRef="IntermediateThrowEvent_3" /> + <bpmn2:callActivity id="QueryVNF" name="Query VNF" calledElement="GenericGetVnf"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_vnfId" target="GENGV_vnfId" /> + <camunda:in source="DCVFM_vnfTypeToQuery" target="GENGV_type" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="GENGV_vnf" target="DCVFM_vnfQueryResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0m382su</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0d00zqi</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1f53tby" sourceRef="Task_0kuj2a1" targetRef="IntermediateThrowEvent_1" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ffvqla" name="Is vf_module_name specified?" default="SequenceFlow_0270n5c"> + <bpmn2:incoming>SequenceFlow_1y1ttqe</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0lilmm3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0270n5c</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05og7iw</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0270n5c" name="yes" sourceRef="ExclusiveGateway_0ffvqla" targetRef="IntermediateThrowEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_05og7iw" name="no" sourceRef="ExclusiveGateway_0ffvqla" targetRef="Task_0kuj2a1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_vfModuleName") == null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="Task_0kuj2a1" name="Generate VF Module Name" calledElement="GenerateVfModuleName"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_vnfId" target="vnfId" /> + <camunda:in source="DCVFM_vnfName" target="vnfName" /> + <camunda:in source="DCVFM_vfModuleLabel" target="vfModuleLabel" /> + <camunda:in source="DCVFM_pesonaModelId" target="personaModelId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="vfModuleName" target="DCVFM_vfModuleName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_05og7iw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f53tby</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:subProcess id="SubProcess_0ltzufk" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_18lzc5m"> + <bpmn2:outgoing>SequenceFlow_02lc25j</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_0wsdptv"> + <bpmn2:incoming>SequenceFlow_0z2rczk</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1pgo10r</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:callActivity id="CallDoCreateVfModuleRollback" name="Call DoCreateVfModuleRollback" calledElement="DoCreateVfModuleRollback"> + <bpmn2:extensionElements> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="DCVFM_aLaCarte" target="aLaCarte" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1i1q78e</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0112l2c</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04bd5in</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1i1q78e</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0112l2c</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0z2rczk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.postProcessRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_02lc25j" sourceRef="StartEvent_18lzc5m" targetRef="ExclusiveGateway_039bib8" /> + <bpmn2:sequenceFlow id="SequenceFlow_0z2rczk" sourceRef="PostProcessRollback" targetRef="EndEvent_0wsdptv" /> + <bpmn2:sequenceFlow id="SequenceFlow_1i1q78e" sourceRef="PreProcessRollback" targetRef="CallDoCreateVfModuleRollback" /> + <bpmn2:sequenceFlow id="SequenceFlow_0112l2c" sourceRef="CallDoCreateVfModuleRollback" targetRef="PostProcessRollback" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_039bib8" name="Disable Rollback?" default="SequenceFlow_04bd5in"> + <bpmn2:incoming>SequenceFlow_02lc25j</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04bd5in</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1nh7m8d</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_04bd5in" name="no" sourceRef="ExclusiveGateway_039bib8" targetRef="PreProcessRollback" /> + <bpmn2:sequenceFlow id="SequenceFlow_1nh7m8d" name="yes" sourceRef="ExclusiveGateway_039bib8" targetRef="Task_1fm09pi"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="Task_1fm09pi" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1nh7m8d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pgo10r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.processBPMNException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1pgo10r" sourceRef="Task_1fm09pi" targetRef="EndEvent_0wsdptv" /> + </bpmn2:subProcess> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0jw7ymg" name="Is 2 Phased Design?" default="SequenceFlow_006rnym"> + <bpmn2:incoming>SequenceFlow_0cc17yk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17cp3tn</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_006rnym</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="ExclusiveGateway_5" targetRef="PrepareCreateAAIVfModuleVolumeGroupRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_19933zh" name="Is aLaCarte?" default="SequenceFlow_1y1ttqe"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1y1ttqe</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1y8q87e</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1y1ttqe" name="no" sourceRef="ExclusiveGateway_19933zh" targetRef="ExclusiveGateway_0ffvqla" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02fd6gx" name="Is already PendingActivation or Assigned?" default="SequenceFlow_0lilmm3"> + <bpmn2:incoming>SequenceFlow_1sf1091</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0lilmm3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_15i583d</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0lilmm3" name="no" sourceRef="ExclusiveGateway_02fd6gx" targetRef="ExclusiveGateway_0ffvqla" /> + <bpmn2:sequenceFlow id="SequenceFlow_1y8q87e" name="yes" sourceRef="ExclusiveGateway_19933zh" targetRef="Task_14n44kb"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_aLaCarte") == true]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1sf1091" sourceRef="Task_14n44kb" targetRef="ExclusiveGateway_02fd6gx" /> + <bpmn2:sequenceFlow id="SequenceFlow_17cp3tn" name="yes" sourceRef="ExclusiveGateway_0jw7ymg" targetRef="Task_0kqh1of"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_twoPhaseDesign") == true]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_0pd6bbj"> + <bpmn2:incoming>SequenceFlow_00bh7m7</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_15i583d" name="yes" sourceRef="ExclusiveGateway_02fd6gx" targetRef="ExclusiveGateway_1f6x9ii"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_orchestrationStatus") == "PendingActivation" || execution.getVariable("DCVFM_orchestrationStatus") == "Assigned"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0gsliyw" name="Is aLaCarte?" default="SequenceFlow_1iyt5i4"> + <bpmn2:incoming>SequenceFlow_1nh92s8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16mgvsd</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1iyt5i4</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_16mgvsd" name="yes" sourceRef="ExclusiveGateway_0gsliyw" targetRef="Task_08tnqe1"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_aLaCarte") == true]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1nh92s8" sourceRef="PostProcessSDNCAssignRequest" targetRef="ExclusiveGateway_0gsliyw" /> + <bpmn2:sequenceFlow id="SequenceFlow_0cc17yk" sourceRef="Task_08tnqe1" targetRef="ExclusiveGateway_0jw7ymg" /> + <bpmn2:sequenceFlow id="SequenceFlow_1iyt5i4" name="no" sourceRef="ExclusiveGateway_0gsliyw" targetRef="Task_19zw1li" /> + <bpmn2:sequenceFlow id="SequenceFlow_006rnym" name="no" sourceRef="ExclusiveGateway_0jw7ymg" targetRef="Task_19zw1li" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ynd0iy" sourceRef="Task_0kqh1of" targetRef="Task_08z2aai" /> + <bpmn2:sequenceFlow id="SequenceFlow_00bh7m7" sourceRef="Task_16p51r4" targetRef="EndEvent_0pd6bbj" /> + <bpmn2:sequenceFlow id="SequenceFlow_1mnipp8" sourceRef="Task_08z2aai" targetRef="Task_16p51r4" /> + <bpmn2:callActivity id="Task_08z2aai" name="Update AAI VF Module PendingActivation" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="DCVFM_updateAAIVfModuleResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ynd0iy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1mnipp8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_0kqh1of" name="PrepareUpdateAAIVfModulePendingActivation" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17cp3tn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ynd0iy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessUpdateAAIVfModuleRequestStatus(execution, 'PendingActivation')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_08tnqe1" name="Query Catalog DB" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16mgvsd</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cc17yk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.queryCatalogDB(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_14n44kb" name="Query AAI for Orchestration Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1y8q87e</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1sf1091</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.queryAAIVfModuleForStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_16p51r4" name="Set Success Indicator 1st Phase" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1mnipp8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00bh7m7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.setSuccessIndicator(execution, true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1f6x9ii" name="Is volume_group_id specified for stage 2?" default="SequenceFlow_0tfrcnc"> + <bpmn2:incoming>SequenceFlow_15i583d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0tfrcnc</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0oadvvx</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0tfrcnc" name="no" sourceRef="ExclusiveGateway_1f6x9ii" targetRef="ExclusiveGateway_09r5rvt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0oadvvx" name="yes" sourceRef="ExclusiveGateway_1f6x9ii" targetRef="Task_0dx8gpp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09r5rvt"> + <bpmn2:incoming>SequenceFlow_0tfrcnc</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0c6p4aa</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qzw172</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1qzw172" sourceRef="ExclusiveGateway_09r5rvt" targetRef="ExclusiveGateway_04msdir" /> + <bpmn2:sequenceFlow id="SequenceFlow_03batve" sourceRef="Task_0dx8gpp" targetRef="Task_0e8s9xm" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c6p4aa" sourceRef="Task_0e8s9xm" targetRef="ExclusiveGateway_09r5rvt" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_04msdir" name="Is Base VF Module for stage 2?" default="SequenceFlow_0p3cspl"> + <bpmn2:incoming>SequenceFlow_1qzw172</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xed5sn</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0p3cspl</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0xed5sn" name="yes" sourceRef="ExclusiveGateway_04msdir" targetRef="ExclusiveGateway_1biy4yg"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_isBaseVfModule") == "true"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0p3cspl" name="no" sourceRef="ExclusiveGateway_04msdir" targetRef="Task_0cdjxcd" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1biy4yg"> + <bpmn2:incoming>SequenceFlow_0xed5sn</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1k7xbcu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0p61zug</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0p61zug" sourceRef="ExclusiveGateway_1biy4yg" targetRef="PreProcessSDNCGetRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_1k7xbcu" sourceRef="Task_0cdjxcd" targetRef="ExclusiveGateway_1biy4yg" /> + <bpmn2:scriptTask id="Task_0dx8gpp" name="Query Cloud Region For Stage 2" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0oadvvx</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03batve</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +return doCreateVfModule.queryCloudRegion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_0e8s9xm" name="Confirm Volume Group Tenant" calledElement="ConfirmVolumeGroupTenant"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DCVFM_tenantId" target="tenantId" /> + <camunda:in source="DCVFM_cloudRegionForVolume" target="aicCloudRegion" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DCVFM_volumeGroupStackId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_03batve</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c6p4aa</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_0cdjxcd" name="Query AAI Vf Module for Stage 2" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0p3cspl</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1k7xbcu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_19zw1li" name="PrepareUpdateAAIVfModuleAssign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_006rnym</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1iyt5i4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0thm33s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModule = new DoCreateVfModule() +doCreateVfModule.preProcessUpdateAAIVfModuleRequestStatus(execution, 'Assigned')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_01b1fio" name="Update AAI VF Module Assigned" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DCVFM_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="WorkflowResponse" target="DCVFM_updateAAIVfModuleResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0thm33s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0aegg0r</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0thm33s" sourceRef="Task_19zw1li" targetRef="Task_01b1fio" /> + <bpmn2:sequenceFlow id="SequenceFlow_0aegg0r" sourceRef="Task_01b1fio" targetRef="PreProcessSDNCGetRequest" /> + </bpmn2:process> + <bpmn2:message id="Message_1" name="DoCreateVfModuleRequest" /> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModule"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1"> + <dc:Bounds x="38" y="153" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="44" y="189" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124"> + <di:waypoint xsi:type="dc:Point" x="74" y="171" /> + <di:waypoint xsi:type="dc:Point" x="147" y="171" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="99" y="171" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest"> + <dc:Bounds x="147" y="131" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_24" bpmnElement="IntermediateCatchEvent_1"> + <dc:Bounds x="36" y="376" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="0" y="417" width="114" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_22" bpmnElement="IntermediateThrowEvent_1"> + <dc:Bounds x="828" y="153" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="869" y="173" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="CallSDNCAdapterVDModuleTopologyAssign"> + <dc:Bounds x="266" y="672" width="121" height="94" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_158" bpmnElement="CallSDNCAdapterVFModuleTopologyGET"> + <dc:Bounds x="254" y="1029" width="133" height="97" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_90" bpmnElement="IsVolumeGroupIdSpecified" isMarkerVisible="true"> + <dc:Bounds x="144" y="368" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="89" y="347" width="178" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="ConfirmVolumeGroupTenant"> + <dc:Bounds x="209" y="528" width="118" height="89" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_91" bpmnElement="ExclusiveGateway_4" isMarkerVisible="true"> + <dc:Bounds x="559" y="368" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="423" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ExclusiveGateway_91"> + <di:waypoint xsi:type="dc:Point" x="194" y="393" /> + <di:waypoint xsi:type="dc:Point" x="559" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="393" width="20" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="CallVNFAdapterVFModuleCreate"> + <dc:Bounds x="746" y="1031" width="121" height="97" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="UpdateAAIVfModule_1"> + <dc:Bounds x="717" y="1211" width="117" height="97" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="CallSDNCAdapterVFModuleTopologyActivate"> + <dc:Bounds x="1039" y="1209" width="119" height="99" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_92" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true"> + <dc:Bounds x="1384" y="1234" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1381" y="1206" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_176" bpmnElement="CreateAAIVfModuleVolumeGroup"> + <dc:Bounds x="1688" y="1204" width="121" height="112" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_93" bpmnElement="ExclusiveGateway_6" isMarkerVisible="true"> + <dc:Bounds x="1813" y="1072" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1838" y="1127" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_176" targetElement="_BPMNShape_ExclusiveGateway_93"> + <di:waypoint xsi:type="dc:Point" x="1808" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="1838" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="1838" y="1162" /> + <di:waypoint xsi:type="dc:Point" x="1838" y="1122" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1834" y="1260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ExclusiveGateway_92" targetElement="_BPMNShape_ExclusiveGateway_93"> + <di:waypoint xsi:type="dc:Point" x="1409" y="1234" /> + <di:waypoint xsi:type="dc:Point" x="1409" y="1097" /> + <di:waypoint xsi:type="dc:Point" x="1813" y="1097" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="1143.6746987951808" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_IntermediateCatchEvent_24" targetElement="_BPMNShape_ExclusiveGateway_90"> + <di:waypoint xsi:type="dc:Point" x="72" y="394" /> + <di:waypoint xsi:type="dc:Point" x="120" y="394" /> + <di:waypoint xsi:type="dc:Point" x="120" y="393" /> + <di:waypoint xsi:type="dc:Point" x="144" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="117" y="394" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_101" bpmnElement="IsVolumeGroupNameSpecified" isMarkerVisible="true"> + <dc:Bounds x="360" y="547" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="309" y="496" width="200" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_ExclusiveGateway_101"> + <di:waypoint xsi:type="dc:Point" x="327" y="572" /> + <di:waypoint xsi:type="dc:Point" x="360" y="572" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="338" y="572" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_Task_3" bpmnElement="ConfirmVolumeName"> + <dc:Bounds x="453" y="528" width="109" height="89" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ExclusiveGateway_101" targetElement="_BPMNShape_Task_3"> + <di:waypoint xsi:type="dc:Point" x="410" y="572" /> + <di:waypoint xsi:type="dc:Point" x="453" y="572" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="410" y="576" width="27" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_101" targetElement="_BPMNShape_ExclusiveGateway_91"> + <di:waypoint xsi:type="dc:Point" x="385" y="547" /> + <di:waypoint xsi:type="dc:Point" x="385" y="393" /> + <di:waypoint xsi:type="dc:Point" x="559" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="392" y="450" width="20" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_Task_3" targetElement="_BPMNShape_ExclusiveGateway_91"> + <di:waypoint xsi:type="dc:Point" x="561" y="572" /> + <di:waypoint xsi:type="dc:Point" x="584" y="572" /> + <di:waypoint xsi:type="dc:Point" x="584" y="418" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="492" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_IntermediateThrowEvent_22"> + <di:waypoint xsi:type="dc:Point" x="247" y="171" /> + <di:waypoint xsi:type="dc:Point" x="302" y="171" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="275" y="156" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_91" targetElement="_BPMNShape_ScriptTask_156"> + <di:waypoint xsi:type="dc:Point" x="609" y="393" /> + <di:waypoint xsi:type="dc:Point" x="628" y="393" /> + <di:waypoint xsi:type="dc:Point" x="628" y="394" /> + <di:waypoint xsi:type="dc:Point" x="696" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="636" y="394" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_178" bpmnElement="PreProcessSDNCAssignRequest"> + <dc:Bounds x="109" y="674" width="121" height="94" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_179" bpmnElement="PostProcessSDNCAssignRequest"> + <dc:Bounds x="435" y="674" width="121" height="94" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_44" bpmnElement="IntermediateThrowEvent_3"> + <dc:Bounds x="2193" y="376" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2181" y="417" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_29" bpmnElement="IntermediateCatchEvent_2"> + <dc:Bounds x="24" y="706" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="13" y="747" width="58" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_IntermediateCatchEvent_29" targetElement="_BPMNShape_ScriptTask_178"> + <di:waypoint xsi:type="dc:Point" x="60" y="724" /> + <di:waypoint xsi:type="dc:Point" x="81" y="724" /> + <di:waypoint xsi:type="dc:Point" x="81" y="721" /> + <di:waypoint xsi:type="dc:Point" x="109" y="721" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="78" y="722" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_178" targetElement="_BPMNShape_ScriptTask_157"> + <di:waypoint xsi:type="dc:Point" x="229" y="721" /> + <di:waypoint xsi:type="dc:Point" x="248" y="721" /> + <di:waypoint xsi:type="dc:Point" x="248" y="719" /> + <di:waypoint xsi:type="dc:Point" x="266" y="719" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ScriptTask_179"> + <di:waypoint xsi:type="dc:Point" x="386" y="719" /> + <di:waypoint xsi:type="dc:Point" x="411" y="719" /> + <di:waypoint xsi:type="dc:Point" x="411" y="721" /> + <di:waypoint xsi:type="dc:Point" x="435" y="721" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_213" bpmnElement="PreProcessSDNCGetRequest"> + <dc:Bounds x="98" y="1031" width="121" height="94" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_214" bpmnElement="PostProcessSDNCGetRequest"> + <dc:Bounds x="434" y="1031" width="121" height="94" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_213" targetElement="_BPMNShape_ScriptTask_158"> + <di:waypoint xsi:type="dc:Point" x="218" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="236" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="236" y="1077" /> + <di:waypoint xsi:type="dc:Point" x="254" y="1077" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="251" y="1068" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_158" targetElement="_BPMNShape_ScriptTask_214"> + <di:waypoint xsi:type="dc:Point" x="386" y="1077" /> + <di:waypoint xsi:type="dc:Point" x="409" y="1077" /> + <di:waypoint xsi:type="dc:Point" x="409" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="434" y="1078" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="410" y="1078" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_Task_2" bpmnElement="PreProcessUpdateAAIVfModule_1"> + <dc:Bounds x="558" y="1211" width="118" height="97" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_Task_33" bpmnElement="PreProcessSDNCActivateRequest"> + <dc:Bounds x="884" y="1210" width="118" height="98" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_Task_4" bpmnElement="PostProcessSDNCActivateRequest"> + <dc:Bounds x="1201" y="1211" width="121" height="95" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_Task_2" targetElement="_BPMNShape_ScriptTask_174"> + <di:waypoint xsi:type="dc:Point" x="676" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="717" y="1259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="697" y="1234" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_174" targetElement="_BPMNShape_Task_33"> + <di:waypoint xsi:type="dc:Point" x="833" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="884" y="1259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="859" y="1234" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_Task_33" targetElement="_BPMNShape_ScriptTask_175"> + <di:waypoint xsi:type="dc:Point" x="1002" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="1020" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="1020" y="1258" /> + <di:waypoint xsi:type="dc:Point" x="1039" y="1258" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1035" y="1249" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_175" targetElement="_BPMNShape_Task_4"> + <di:waypoint xsi:type="dc:Point" x="1157" y="1258" /> + <di:waypoint xsi:type="dc:Point" x="1201" y="1258" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1179" y="1233" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_Task_4" targetElement="_BPMNShape_ExclusiveGateway_92"> + <di:waypoint xsi:type="dc:Point" x="1321" y="1258" /> + <di:waypoint xsi:type="dc:Point" x="1353" y="1258" /> + <di:waypoint xsi:type="dc:Point" x="1353" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="1384" y="1259" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1368" y="1249" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_175" bpmnElement="EndEvent_1"> + <dc:Bounds x="2107" y="1079" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2125" y="1120" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ExclusiveGateway_93" targetElement="_BPMNShape_ScriptTask_218"> + <di:waypoint xsi:type="dc:Point" x="1863" y="1097" /> + <di:waypoint xsi:type="dc:Point" x="1929" y="1096" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1896" y="1082" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_45" bpmnElement="IntermediateThrowEvent_2"> + <dc:Bounds x="1281" y="1060" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1257" y="1101" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_30" bpmnElement="IntermediateCatchEvent_3"> + <dc:Bounds x="-27" y="1241" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-35" y="1282" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_Task_7" bpmnElement="PrepareCreateAAIVfModuleVolumeGroupRequest"> + <dc:Bounds x="1502" y="1204" width="121" height="112" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_Task_7" targetElement="_BPMNShape_ScriptTask_176"> + <di:waypoint xsi:type="dc:Point" x="1623" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="1688" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1656" y="1245" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_Task_25" bpmnElement="PreProcessVNFAdapterRequest"> + <dc:Bounds x="583" y="1031" width="121" height="96" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_Task_35" bpmnElement="PostProcessVNFAdapterRequest"> + <dc:Bounds x="907" y="1033" width="116" height="92" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_ScriptTask_214" targetElement="_BPMNShape_Task_25"> + <di:waypoint xsi:type="dc:Point" x="554" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="569" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="569" y="1079" /> + <di:waypoint xsi:type="dc:Point" x="583" y="1079" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="1069" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_Task_25" targetElement="_BPMNShape_ScriptTask_173"> + <di:waypoint xsi:type="dc:Point" x="703" y="1079" /> + <di:waypoint xsi:type="dc:Point" x="746" y="1079" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="725" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_Task_35"> + <di:waypoint xsi:type="dc:Point" x="866" y="1079" /> + <di:waypoint xsi:type="dc:Point" x="907" y="1079" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="887" y="1054" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="QueryAAIVfModule"> + <dc:Bounds x="1224" y="516" width="125" height="92" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_211" bpmnElement="IsBaseVfModule" isMarkerVisible="true"> + <dc:Bounds x="1128" y="368" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1092" y="336" width="124" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_212" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="1408" y="368" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1395" y="329" width="75" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_36" sourceElement="_BPMNShape_ExclusiveGateway_211" targetElement="_BPMNShape_ScriptTask_215"> + <di:waypoint xsi:type="dc:Point" x="1153" y="418" /> + <di:waypoint xsi:type="dc:Point" x="1153" y="562" /> + <di:waypoint xsi:type="dc:Point" x="1224" y="562" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1122" y="450" width="20" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_39" bpmnElement="SequenceFlow_39" sourceElement="_BPMNShape_ExclusiveGateway_211" targetElement="_BPMNShape_ExclusiveGateway_212"> + <di:waypoint xsi:type="dc:Point" x="1178" y="393" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1285" y="393" width="27" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_216" bpmnElement="PostProcessCreateAAIVfModule"> + <dc:Bounds x="897" y="348" width="125" height="92" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_216" targetElement="_BPMNShape_ExclusiveGateway_211"> + <di:waypoint xsi:type="dc:Point" x="1021" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1075" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1075" y="393" /> + <di:waypoint xsi:type="dc:Point" x="1128" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1072" y="394" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_37" bpmnElement="SequenceFlow_37" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ExclusiveGateway_212"> + <di:waypoint xsi:type="dc:Point" x="1348" y="562" /> + <di:waypoint xsi:type="dc:Point" x="1378" y="562" /> + <di:waypoint xsi:type="dc:Point" x="1378" y="393" /> + <di:waypoint xsi:type="dc:Point" x="1408" y="393" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1393" y="468" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_218" bpmnElement="ScriptTask_setSuccess"> + <dc:Bounds x="1929" y="1049" width="128" height="95" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_218" targetElement="_BPMNShape_EndEvent_175"> + <di:waypoint xsi:type="dc:Point" x="2057" y="1097" /> + <di:waypoint xsi:type="dc:Point" x="2107" y="1096" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2082" y="1082" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_254" bpmnElement="QueryCloudRegion"> + <dc:Bounds x="101" y="440" width="134" height="81" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_40" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ScriptTask_254"> + <di:waypoint xsi:type="dc:Point" x="169" y="418" /> + <di:waypoint xsi:type="dc:Point" x="169" y="429" /> + <di:waypoint xsi:type="dc:Point" x="168" y="429" /> + <di:waypoint xsi:type="dc:Point" x="168" y="440" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="180" y="417" width="27" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_43" bpmnElement="SequenceFlow_43" sourceElement="_BPMNShape_ScriptTask_254" targetElement="_BPMNShape_ScriptTask_172"> + <di:waypoint xsi:type="dc:Point" x="168" y="520" /> + <di:waypoint xsi:type="dc:Point" x="168" y="524" /> + <di:waypoint xsi:type="dc:Point" x="168" y="581" /> + <di:waypoint xsi:type="dc:Point" x="208" y="581" /> + <di:waypoint xsi:type="dc:Point" x="209" y="581" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="165" y="574" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="CreateAAIVfModule"> + <dc:Bounds x="696" y="348" width="121" height="92" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_216"> + <di:waypoint xsi:type="dc:Point" x="816" y="394" /> + <di:waypoint xsi:type="dc:Point" x="897" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="857" y="369" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_183x8vk_di" bpmnElement="ExclusiveGateway_183x8vk" isMarkerVisible="true"> + <dc:Bounds x="1076" y="1055" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1056" y="1105" width="89" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ushk1d_di" bpmnElement="SequenceFlow_1ushk1d"> + <di:waypoint xsi:type="dc:Point" x="1023" y="1079" /> + <di:waypoint xsi:type="dc:Point" x="1076" y="1080" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1050" y="1065" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ery1pk_di" bpmnElement="SequenceFlow_0ery1pk"> + <di:waypoint xsi:type="dc:Point" x="1101" y="1055" /> + <di:waypoint xsi:type="dc:Point" x="1101" y="979" /> + <di:waypoint xsi:type="dc:Point" x="1147" y="979" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1054" y="1267" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xfanpi_di" bpmnElement="SequenceFlow_0xfanpi"> + <di:waypoint xsi:type="dc:Point" x="1126" y="1080" /> + <di:waypoint xsi:type="dc:Point" x="1281" y="1078" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1198" y="1054" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0abffyj_di" bpmnElement="SequenceFlow_0abffyj"> + <di:waypoint xsi:type="dc:Point" x="1247" y="979" /> + <di:waypoint xsi:type="dc:Point" x="1299" y="979" /> + <di:waypoint xsi:type="dc:Point" x="1299" y="1060" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1273" y="964" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1dv7amn_di" bpmnElement="CreateNetworkPoliciesInAAI"> + <dc:Bounds x="1147" y="939" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0f54imv_di" bpmnElement="ExclusiveGateway_0f54imv" isMarkerVisible="true"> + <dc:Bounds x="64" y="1235" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="51" y="1200" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1edqxlf_di" bpmnElement="ExclusiveGateway_1edqxlf" isMarkerVisible="true"> + <dc:Bounds x="432" y="1235" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="457" y="1285" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bi38s7_di" bpmnElement="SequenceFlow_0bi38s7"> + <di:waypoint xsi:type="dc:Point" x="89" y="1285" /> + <di:waypoint xsi:type="dc:Point" x="89" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="142" y="1438" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="95" y="1362" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qm81ym_di" bpmnElement="SequenceFlow_1qm81ym"> + <di:waypoint xsi:type="dc:Point" x="242" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="278" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="278" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="314" y="1438" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="293" y="1438" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_112los9_di" bpmnElement="SequenceFlow_112los9"> + <di:waypoint xsi:type="dc:Point" x="414" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="457" y="1438" /> + <di:waypoint xsi:type="dc:Point" x="457" y="1285" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="436" y="1423" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1k5uku2_di" bpmnElement="SequenceFlow_1k5uku2"> + <di:waypoint xsi:type="dc:Point" x="114" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="432" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="267" y="1245" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1avfxsz_di" bpmnElement="SequenceFlow_1avfxsz"> + <di:waypoint xsi:type="dc:Point" x="482" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="520" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="520" y="1260" /> + <di:waypoint xsi:type="dc:Point" x="558" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="535" y="1260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0363dz7_di" bpmnElement="SequenceFlow_0363dz7"> + <di:waypoint xsi:type="dc:Point" x="9" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="64" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="37" y="1235" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0o3bcyq_di" bpmnElement="PreProcessUpdateAAIGenericVnf"> + <dc:Bounds x="142" y="1399" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0j45ic9_di" bpmnElement="UpdateAAIGenericVNFTask"> + <dc:Bounds x="314" y="1398" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zcfn2x_di" bpmnElement="SequenceFlow_0zcfn2x"> + <di:waypoint xsi:type="dc:Point" x="1458" y="393" /> + <di:waypoint xsi:type="dc:Point" x="2193" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1822" y="368.5010168687388" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0m382su_di" bpmnElement="SequenceFlow_0m382su"> + <di:waypoint xsi:type="dc:Point" x="1433" y="418" /> + <di:waypoint xsi:type="dc:Point" x="1433" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1513" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1439" y="459.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0g270u0_di" bpmnElement="SequenceFlow_0g270u0"> + <di:waypoint xsi:type="dc:Point" x="1766" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1816" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1791" y="506" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yrlvgb_di" bpmnElement="SequenceFlow_1yrlvgb"> + <di:waypoint xsi:type="dc:Point" x="1916" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1969" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1943" y="506" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1j22oyj_di" bpmnElement="PreProcessSDNCVnfGetRequest"> + <dc:Bounds x="1666" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_10t4tix_di" bpmnElement="CallSDNCAdapterVNFTopologyGET"> + <dc:Bounds x="1816" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_09wgk9p_di" bpmnElement="PostProcessSDNCVnfGetRequest"> + <dc:Bounds x="1969" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0d00zqi_di" bpmnElement="SequenceFlow_0d00zqi"> + <di:waypoint xsi:type="dc:Point" x="1613" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1666" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1640" y="506" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_170kw7h_di" bpmnElement="SequenceFlow_170kw7h"> + <di:waypoint xsi:type="dc:Point" x="2069" y="521" /> + <di:waypoint xsi:type="dc:Point" x="2131" y="521" /> + <di:waypoint xsi:type="dc:Point" x="2131" y="394" /> + <di:waypoint xsi:type="dc:Point" x="2193" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2146" y="447.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0xev9kl_di" bpmnElement="QueryVNF"> + <dc:Bounds x="1513" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f53tby_di" bpmnElement="SequenceFlow_1f53tby"> + <di:waypoint xsi:type="dc:Point" x="776" y="282" /> + <di:waypoint xsi:type="dc:Point" x="846" y="282" /> + <di:waypoint xsi:type="dc:Point" x="846" y="189" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="811" y="267" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ffvqla_di" bpmnElement="ExclusiveGateway_0ffvqla" isMarkerVisible="true"> + <dc:Bounds x="592" y="146" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="574" y="98" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0270n5c_di" bpmnElement="SequenceFlow_0270n5c"> + <di:waypoint xsi:type="dc:Point" x="642" y="171" /> + <di:waypoint xsi:type="dc:Point" x="828" y="171" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="699" y="145" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05og7iw_di" bpmnElement="SequenceFlow_05og7iw"> + <di:waypoint xsi:type="dc:Point" x="617" y="196" /> + <di:waypoint xsi:type="dc:Point" x="617" y="282" /> + <di:waypoint xsi:type="dc:Point" x="676" y="282" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="239" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_14nvmgk_di" bpmnElement="Task_0kuj2a1"> + <dc:Bounds x="676" y="242" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0ltzufk_di" bpmnElement="SubProcess_0ltzufk" isExpanded="true"> + <dc:Bounds x="-52" y="1578" width="1047" height="338" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_18lzc5m_di" bpmnElement="StartEvent_18lzc5m"> + <dc:Bounds x="91" y="1682" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="109" y="1723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0wsdptv_di" bpmnElement="EndEvent_0wsdptv"> + <dc:Bounds x="859" y="1682" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="877" y="1723" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ehr5kq_di" bpmnElement="CallDoCreateVfModuleRollback"> + <dc:Bounds x="507" y="1660" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0upatdd_di" bpmnElement="PreProcessRollback"> + <dc:Bounds x="327" y="1660" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0o1zc29_di" bpmnElement="PostProcessRollback"> + <dc:Bounds x="692" y="1660" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_02lc25j_di" bpmnElement="SequenceFlow_02lc25j"> + <di:waypoint xsi:type="dc:Point" x="127" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="194" y="1700" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="161" y="1685" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0z2rczk_di" bpmnElement="SequenceFlow_0z2rczk"> + <di:waypoint xsi:type="dc:Point" x="792" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="824" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="824" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="859" y="1700" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="839" y="1700" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1i1q78e_di" bpmnElement="SequenceFlow_1i1q78e"> + <di:waypoint xsi:type="dc:Point" x="427" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="507" y="1700" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="467" y="1685" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0112l2c_di" bpmnElement="SequenceFlow_0112l2c"> + <di:waypoint xsi:type="dc:Point" x="607" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="692" y="1700" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="650" y="1685" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_039bib8_di" bpmnElement="ExclusiveGateway_039bib8" isMarkerVisible="true"> + <dc:Bounds x="194" y="1675" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="175" y="1647" width="87" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04bd5in_di" bpmnElement="SequenceFlow_04bd5in"> + <di:waypoint xsi:type="dc:Point" x="244" y="1700" /> + <di:waypoint xsi:type="dc:Point" x="327" y="1700" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="280" y="1685" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nh7m8d_di" bpmnElement="SequenceFlow_1nh7m8d"> + <di:waypoint xsi:type="dc:Point" x="219" y="1725" /> + <di:waypoint xsi:type="dc:Point" x="219" y="1824" /> + <di:waypoint xsi:type="dc:Point" x="507" y="1824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="225" y="1775" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_05v20n0_di" bpmnElement="Task_1fm09pi"> + <dc:Bounds x="507" y="1784" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pgo10r_di" bpmnElement="SequenceFlow_1pgo10r"> + <di:waypoint xsi:type="dc:Point" x="607" y="1824" /> + <di:waypoint xsi:type="dc:Point" x="877" y="1824" /> + <di:waypoint xsi:type="dc:Point" x="877" y="1718" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="742" y="1809" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0jw7ymg_di" bpmnElement="ExclusiveGateway_0jw7ymg" isMarkerVisible="true"> + <dc:Bounds x="803" y="696" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="797" y="653" width="61" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_92" targetElement="_BPMNShape_Task_7"> + <di:waypoint xsi:type="dc:Point" x="1434" y="1259" /> + <di:waypoint xsi:type="dc:Point" x="1502" y="1260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1454" y="1264.6906474820144" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_19933zh_di" bpmnElement="ExclusiveGateway_19933zh" isMarkerVisible="true"> + <dc:Bounds x="302" y="146" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="295" y="196" width="63" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1y1ttqe_di" bpmnElement="SequenceFlow_1y1ttqe"> + <di:waypoint xsi:type="dc:Point" x="352" y="171" /> + <di:waypoint xsi:type="dc:Point" x="592" y="171" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="379" y="147" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02fd6gx_di" bpmnElement="ExclusiveGateway_02fd6gx" isMarkerVisible="true"> + <dc:Bounds x="447" y="-1" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="-48" width="89" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lilmm3_di" bpmnElement="SequenceFlow_0lilmm3"> + <di:waypoint xsi:type="dc:Point" x="472" y="49" /> + <di:waypoint xsi:type="dc:Point" x="472" y="171" /> + <di:waypoint xsi:type="dc:Point" x="592" y="171" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="482" y="100" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1y8q87e_di" bpmnElement="SequenceFlow_1y8q87e"> + <di:waypoint xsi:type="dc:Point" x="327" y="146" /> + <di:waypoint xsi:type="dc:Point" x="327" y="64" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="95" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sf1091_di" bpmnElement="SequenceFlow_1sf1091"> + <di:waypoint xsi:type="dc:Point" x="377" y="24" /> + <di:waypoint xsi:type="dc:Point" x="447" y="24" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="412" y="9" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17cp3tn_di" bpmnElement="SequenceFlow_17cp3tn"> + <di:waypoint xsi:type="dc:Point" x="853" y="721" /> + <di:waypoint xsi:type="dc:Point" x="901" y="720" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="866" y="694.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0b33fd2_di" bpmnElement="EndEvent_0pd6bbj"> + <dc:Bounds x="1367" y="701" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1385" y="737" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15i583d_di" bpmnElement="SequenceFlow_15i583d"> + <di:waypoint xsi:type="dc:Point" x="497" y="24" /> + <di:waypoint xsi:type="dc:Point" x="559" y="24" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="513" y="3.588067006526856" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0gsliyw_di" bpmnElement="ExclusiveGateway_0gsliyw" isMarkerVisible="true"> + <dc:Bounds x="592" y="694" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="656" width="63" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16mgvsd_di" bpmnElement="SequenceFlow_16mgvsd"> + <di:waypoint xsi:type="dc:Point" x="642" y="719" /> + <di:waypoint xsi:type="dc:Point" x="668" y="719" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="641" y="696" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nh92s8_di" bpmnElement="SequenceFlow_1nh92s8"> + <di:waypoint xsi:type="dc:Point" x="556" y="720" /> + <di:waypoint xsi:type="dc:Point" x="592" y="719" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="574" y="694.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cc17yk_di" bpmnElement="SequenceFlow_0cc17yk"> + <di:waypoint xsi:type="dc:Point" x="768" y="720" /> + <di:waypoint xsi:type="dc:Point" x="803" y="721" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="786" y="705.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1iyt5i4_di" bpmnElement="SequenceFlow_1iyt5i4"> + <di:waypoint xsi:type="dc:Point" x="617" y="744" /> + <di:waypoint xsi:type="dc:Point" x="617" y="799" /> + <di:waypoint xsi:type="dc:Point" x="98" y="799" /> + <di:waypoint xsi:type="dc:Point" x="98" y="881" /> + <di:waypoint xsi:type="dc:Point" x="119" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="466" y="776.3184256922661" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_006rnym_di" bpmnElement="SequenceFlow_006rnym"> + <di:waypoint xsi:type="dc:Point" x="828" y="746" /> + <di:waypoint xsi:type="dc:Point" x="828" y="815" /> + <di:waypoint xsi:type="dc:Point" x="169" y="815" /> + <di:waypoint xsi:type="dc:Point" x="169" y="841" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="807" y="762.4025974025974" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ynd0iy_di" bpmnElement="SequenceFlow_0ynd0iy"> + <di:waypoint xsi:type="dc:Point" x="1001" y="719" /> + <di:waypoint xsi:type="dc:Point" x="1057" y="719" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1029" y="704" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00bh7m7_di" bpmnElement="SequenceFlow_00bh7m7"> + <di:waypoint xsi:type="dc:Point" x="1312" y="719" /> + <di:waypoint xsi:type="dc:Point" x="1367" y="719" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1340" y="704" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mnipp8_di" bpmnElement="SequenceFlow_1mnipp8"> + <di:waypoint xsi:type="dc:Point" x="1157" y="719" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="719" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1185" y="704" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1bvhxkk_di" bpmnElement="Task_08z2aai"> + <dc:Bounds x="1057" y="679" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_05mwaoo_di" bpmnElement="Task_0kqh1of"> + <dc:Bounds x="901" y="679" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_059xue9_di" bpmnElement="Task_08tnqe1"> + <dc:Bounds x="668" y="679" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1k3dub4_di" bpmnElement="Task_14n44kb"> + <dc:Bounds x="277" y="-16" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0okxyur_di" bpmnElement="Task_16p51r4"> + <dc:Bounds x="1212" y="679" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1f6x9ii_di" bpmnElement="ExclusiveGateway_1f6x9ii" isMarkerVisible="true"> + <dc:Bounds x="559" y="-1" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="539" y="49" width="89" height="48" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0tfrcnc_di" bpmnElement="SequenceFlow_0tfrcnc"> + <di:waypoint xsi:type="dc:Point" x="609" y="24" /> + <di:waypoint xsi:type="dc:Point" x="946" y="24" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="772" y="9" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0oadvvx_di" bpmnElement="SequenceFlow_0oadvvx"> + <di:waypoint xsi:type="dc:Point" x="584" y="-1" /> + <di:waypoint xsi:type="dc:Point" x="584" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="616" y="-63" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="590" y="-42" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_09r5rvt_di" bpmnElement="ExclusiveGateway_09r5rvt" isMarkerVisible="true"> + <dc:Bounds x="946" y="-1" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="971" y="49" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qzw172_di" bpmnElement="SequenceFlow_1qzw172"> + <di:waypoint xsi:type="dc:Point" x="996" y="24" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="24" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1035" y="9" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03batve_di" bpmnElement="SequenceFlow_03batve"> + <di:waypoint xsi:type="dc:Point" x="716" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="796" y="-63" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="756" y="-78" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c6p4aa_di" bpmnElement="SequenceFlow_0c6p4aa"> + <di:waypoint xsi:type="dc:Point" x="896" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="971" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="971" y="-1" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="934" y="-78" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_04msdir_di" bpmnElement="ExclusiveGateway_04msdir" isMarkerVisible="true"> + <dc:Bounds x="1074" y="-1" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1057" y="49" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xed5sn_di" bpmnElement="SequenceFlow_0xed5sn"> + <di:waypoint xsi:type="dc:Point" x="1124" y="24" /> + <di:waypoint xsi:type="dc:Point" x="1338" y="24" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1222" y="9" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p3cspl_di" bpmnElement="SequenceFlow_0p3cspl"> + <di:waypoint xsi:type="dc:Point" x="1099" y="-1" /> + <di:waypoint xsi:type="dc:Point" x="1099" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="1190" y="-63" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1108" y="-41.26315789473686" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1biy4yg_di" bpmnElement="ExclusiveGateway_1biy4yg" isMarkerVisible="true"> + <dc:Bounds x="1338" y="-1" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1363" y="49" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0p61zug_di" bpmnElement="SequenceFlow_0p61zug"> + <di:waypoint xsi:type="dc:Point" x="1388" y="24" /> + <di:waypoint xsi:type="dc:Point" x="1436" y="24" /> + <di:waypoint xsi:type="dc:Point" x="1436" y="-170" /> + <di:waypoint xsi:type="dc:Point" x="-60" y="-170" /> + <di:waypoint xsi:type="dc:Point" x="-60" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="98" y="1078" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="688" y="-185" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1k7xbcu_di" bpmnElement="SequenceFlow_1k7xbcu"> + <di:waypoint xsi:type="dc:Point" x="1290" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="1363" y="-63" /> + <di:waypoint xsi:type="dc:Point" x="1363" y="-1" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1327" y="-78" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0ti2a86_di" bpmnElement="Task_0dx8gpp"> + <dc:Bounds x="616" y="-103" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1r5f381_di" bpmnElement="Task_0e8s9xm"> + <dc:Bounds x="796" y="-103" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0fajmo7_di" bpmnElement="Task_0cdjxcd"> + <dc:Bounds x="1190" y="-103" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_065935d_di" bpmnElement="Task_19zw1li"> + <dc:Bounds x="119" y="841" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_11w102e_di" bpmnElement="Task_01b1fio"> + <dc:Bounds x="285" y="841" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0thm33s_di" bpmnElement="SequenceFlow_0thm33s"> + <di:waypoint xsi:type="dc:Point" x="219" y="881" /> + <di:waypoint xsi:type="dc:Point" x="285" y="881" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="252" y="856" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0aegg0r_di" bpmnElement="SequenceFlow_0aegg0r"> + <di:waypoint xsi:type="dc:Point" x="385" y="881" /> + <di:waypoint xsi:type="dc:Point" x="438" y="881" /> + <di:waypoint xsi:type="dc:Point" x="438" y="953" /> + <di:waypoint xsi:type="dc:Point" x="159" y="953" /> + <di:waypoint xsi:type="dc:Point" x="159" y="1031" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="453" y="917" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn new file mode 100644 index 0000000000..2508b31f01 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn @@ -0,0 +1,978 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVfModuleRollback" name="DoCreateVfModuleRollback" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Rollback PrepareUpdateAAIVfModule?" default="SequenceFlow_9"> + <bpmn2:incoming>SequenceFlow_11er1t8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="PrepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="PUAAIVfMod_heatStackId" target="DCVFMR_heatStackId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="yes" sourceRef="ExclusiveGateway_1" targetRef="InvokePrepareUpdateAAIVfModule"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFMR_rollbackPrepareUpdateVfModule") == "true" && !(execution.getVariable('aLaCarte') == true && execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="InvokePrepareUpdateAAIVfModule" targetRef="ExclusiveGateway_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="no" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_15"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1p0v6yk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.prepVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" /> + <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="vnfAdapterRestV1Response" target="DoDVfMod_DoCreateVfModuleRollbackResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08aruzz</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="yes" sourceRef="ExclusiveGateway_2" targetRef="PrepareSDNCDeactivateRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="no" sourceRef="ExclusiveGateway_2" targetRef="ExclusiveGateway_1938vz9" /> + <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.prepUpdateAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="UpdateAAIVfModulePrep" targetRef="InvokeUpdateAAIVfModule" /> + <bpmn2:callActivity id="InvokeUpdateAAIVfModule" name="Invoke UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="InvokeUpdateAAIVfModule" targetRef="ExclusiveGateway_4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="Rollback Update AAI Vf Module?" default="SequenceFlow_17"> + <bpmn2:incoming>SequenceFlow_1gcfdej</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="yes" sourceRef="ExclusiveGateway_3" targetRef="UpdateAAIVfModulePrep"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackUpdateAAIVfModule") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="no" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_4" name="Rollback SDNC Request?" default="SequenceFlow_20"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_1h87hhh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" || execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="no" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_5" /> + <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rpg6ac</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.prepSDNCAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="InvokeSDNCAdapterV1_2" /> + <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke SDNCAdapterV1" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="sdncAdapterResponse" target="DCVFMR_DoCreateVfModuleRollbackResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_5" name="Delete AAI VF Modlue?" default="SequenceFlow_21"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_12otwa4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="ExclusiveGateway_5" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="yes" sourceRef="ExclusiveGateway_5" targetRef="DeleteAAIVfModulePrep"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateAAIVfModule") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="InvokeDeleteAAIVfModule" name="Invoke DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="InvokeDeleteAAIVfModule" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:endEvent id="EndEvent_9"> + <bpmn2:incoming>SequenceFlow_0ggp8wz</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1h8ve60</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.prepDeleteAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="DeleteAAIVfModulePrep" targetRef="InvokeDeleteAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="InvokeSDNCAdapterV1_2" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Validate SDNC Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.sdncValidateResponse(execution, DCVFMR_DoCreateVfModuleRollbackResponse)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_1" targetRef="ExclusiveGateway_5" /> + <bpmn2:subProcess id="SubProcess_1" name="Rollback Error Handling" triggeredByEvent="true"> + <bpmn2:startEvent id="CatchExceptions" name="Catch Exceptions"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" /> + <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_02fx6z6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event') +dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_02fx6z6" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" /> + <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_02fx6z6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.setFailedRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:subProcess> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_86" /> + </bpmn2:boundaryEvent> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_2" /> + <bpmn2:scriptTask id="InitializeVariables" name="Initialize Variables" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="InitializeVariables" targetRef="ExclusiveGateway_1yozzae" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0a0hroy" name="Rollback Update AAI Generic VNF?" default="SequenceFlow_185bo77"> + <bpmn2:incoming>SequenceFlow_0djpj3r</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0n58kg1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_185bo77</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_111l1he</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="Task_08csf14" name="Delete Network Policies from AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0unumxv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0djpj3r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.deleteNetworkPoliciesFromAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_18r7u02" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_111l1he</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ca4brn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="Task_01ajtiy" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMR_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ca4brn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19r2uus</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0djpj3r" sourceRef="Task_08csf14" targetRef="ExclusiveGateway_0a0hroy" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0uvarlv" name="Rollback VNF Adapter Create?" default="SequenceFlow_03i4czf"> + <bpmn2:incoming>SequenceFlow_185bo77</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19r2uus</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1p0v6yk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_03i4czf</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_185bo77" name="no" sourceRef="ExclusiveGateway_0a0hroy" targetRef="ExclusiveGateway_0uvarlv" /> + <bpmn2:sequenceFlow id="SequenceFlow_111l1he" name="yes" sourceRef="ExclusiveGateway_0a0hroy" targetRef="Task_18r7u02"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackUpdateVnfAAI") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0ca4brn" sourceRef="Task_18r7u02" targetRef="Task_01ajtiy" /> + <bpmn2:sequenceFlow id="SequenceFlow_19r2uus" sourceRef="Task_01ajtiy" targetRef="ExclusiveGateway_0uvarlv" /> + <bpmn2:sequenceFlow id="SequenceFlow_1p0v6yk" name="yes " sourceRef="ExclusiveGateway_0uvarlv" targetRef="VNFAdapterPrep"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackVnfAdapterCreate") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03i4czf" name="no" sourceRef="ExclusiveGateway_0uvarlv" targetRef="ExclusiveGateway_0ahc44p" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1yozzae" name="Skip Rollback?" default="SequenceFlow_11er1t8"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11er1t8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ggp8wz</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_11er1t8" name="no" sourceRef="ExclusiveGateway_1yozzae" targetRef="ExclusiveGateway_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ggp8wz" name="yes" sourceRef="ExclusiveGateway_1yozzae" targetRef="EndEvent_9"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1938vz9" name="Rollback Network Policies Creation?" default="SequenceFlow_0n58kg1"> + <bpmn2:incoming>SequenceFlow_06rm0hg</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0n58kg1</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0unumxv</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="PrepareSDNCDeactivateRequest" name="Prepare SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ugalf8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCDeactivate" name="Call SDNC Adapter Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFMR_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ugalf8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0n78x37</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivateRequest" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0n78x37</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06rm0hg</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +String response = execution.getVariable("DCVFMR_deactivateSDNCAdapterResponse") +dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0ugalf8" sourceRef="PrepareSDNCDeactivateRequest" targetRef="CallSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n78x37" sourceRef="CallSDNCDeactivate" targetRef="PostProcessSDNCDeactivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_06rm0hg" sourceRef="PostProcessSDNCDeactivateRequest" targetRef="ExclusiveGateway_1938vz9" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n58kg1" name="no" sourceRef="ExclusiveGateway_1938vz9" targetRef="ExclusiveGateway_0a0hroy" /> + <bpmn2:sequenceFlow id="SequenceFlow_0unumxv" name="yes" sourceRef="ExclusiveGateway_1938vz9" targetRef="Task_08csf14"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1iufuuu" sourceRef="PrepareSDNCUnassignRequest" targetRef="CallSDNCAdapterUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_1l4n37b" sourceRef="CallSDNCAdapterUnassign" targetRef="PostProcessSDNCUnassignRequest" /> + <bpmn2:scriptTask id="PrepareSDNCUnassignRequest" name="Prepare SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16ghmax</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1iufuuu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterUnassign" name="Call SDNC Adapter Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVFMR_unassignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1iufuuu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1l4n37b</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassignRequest" name="PostProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1l4n37b</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12otwa4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +String response = execution.getVariable("DCVFMR_unassignSDNCAdapterResponse") +dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1h87hhh" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_1rpg6ac"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rpg6ac</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16ghmax</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1rpg6ac" name="no" sourceRef="ExclusiveGateway_1h87hhh" targetRef="SDNCAdapterPrep2" /> + <bpmn2:sequenceFlow id="SequenceFlow_16ghmax" name="yes" sourceRef="ExclusiveGateway_1h87hhh" targetRef="PrepareSDNCUnassignRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_12otwa4" sourceRef="PostProcessSDNCUnassignRequest" targetRef="ExclusiveGateway_5" /> + <bpmn2:sequenceFlow id="SequenceFlow_1h8ve60" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_9" /> + <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_17it51d</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1h8ve60</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ahc44p" name="Set AAI Status to Assigned?" default="SequenceFlow_1gcfdej"> + <bpmn2:incoming>SequenceFlow_03i4czf</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_08aruzz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1gcfdej</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_17ne2iz</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1gcfdej" name="no" sourceRef="ExclusiveGateway_0ahc44p" targetRef="ExclusiveGateway_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_17ne2iz" name="yes" sourceRef="ExclusiveGateway_0ahc44p" targetRef="Task_1sqxedz"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable('aLaCarte') == true && execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_17it51d" sourceRef="Task_0k9gnp2" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:sequenceFlow id="SequenceFlow_0fvuowt" sourceRef="Task_1sqxedz" targetRef="Task_0k9gnp2" /> + <bpmn2:callActivity id="Task_0k9gnp2" name="Invoke UpdateAAIVfModule to Assigned" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0fvuowt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17it51d</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_1sqxedz" name="UpdateAAIVfModule To Assigned Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_17ne2iz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0fvuowt</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.prepUpdateAAIVfModuleToAssigned(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_08aruzz" sourceRef="InvokeVNFAdapterRestV1" targetRef="ExclusiveGateway_0ahc44p" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1"> + <dc:Bounds x="13" y="100" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="31" y="141" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables"> + <dc:Bounds x="115" y="78" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22"> + <di:waypoint xsi:type="dc:Point" x="49" y="118" /> + <di:waypoint xsi:type="dc:Point" x="115" y="118" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="82" y="103" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="InvokePrepareUpdateAAIVfModule"> + <dc:Bounds x="725" y="23" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep"> + <dc:Bounds x="104" y="763" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1"> + <dc:Bounds x="262" y="763" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_CallActivity_13"> + <di:waypoint xsi:type="dc:Point" x="204" y="803" /> + <di:waypoint xsi:type="dc:Point" x="262" y="803" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="225" y="803" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep"> + <dc:Bounds x="732" y="758" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_14" bpmnElement="InvokeUpdateAAIVfModule"> + <dc:Bounds x="912" y="758" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2"> + <dc:Bounds x="187" y="995" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="InvokeSDNCAdapterV1_2"> + <dc:Bounds x="327" y="995" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="DeleteAAIVfModulePrep"> + <dc:Bounds x="704" y="998" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_16" bpmnElement="InvokeDeleteAAIVfModule"> + <dc:Bounds x="860" y="998" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15"> + <di:waypoint xsi:type="dc:Point" x="287" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="327" y="1035" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="307" y="1035" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_CallActivity_16"> + <di:waypoint xsi:type="dc:Point" x="804" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="860" y="1038" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="820" y="1038" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9"> + <dc:Bounds x="1159" y="1105" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1177" y="1146" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_CallActivity_16" targetElement="_BPMNShape_EndEvent_169"> + <di:waypoint xsi:type="dc:Point" x="960" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1083" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1019" y="1023" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> + <dc:Bounds x="538" y="93" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="519" y="152" width="88" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ExclusiveGateway_223"> + <di:waypoint xsi:type="dc:Point" x="215" y="118" /> + <di:waypoint xsi:type="dc:Point" x="278" y="118" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="247" y="103" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_224" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="912" y="92" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="897" y="152" width="79" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_223"> + <di:waypoint xsi:type="dc:Point" x="563" y="93" /> + <di:waypoint xsi:type="dc:Point" x="563" y="63" /> + <di:waypoint xsi:type="dc:Point" x="725" y="63" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="39.419820324530114" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ExclusiveGateway_224"> + <di:waypoint xsi:type="dc:Point" x="825" y="63" /> + <di:waypoint xsi:type="dc:Point" x="862" y="63" /> + <di:waypoint xsi:type="dc:Point" x="937" y="63" /> + <di:waypoint xsi:type="dc:Point" x="937" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="888" y="63" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ExclusiveGateway_224"> + <di:waypoint xsi:type="dc:Point" x="588" y="118" /> + <di:waypoint xsi:type="dc:Point" x="912" y="117" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="743" y="117.50867542935495" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ScriptTask_170"> + <di:waypoint xsi:type="dc:Point" x="937" y="142" /> + <di:waypoint xsi:type="dc:Point" x="937" y="229" /> + <di:waypoint xsi:type="dc:Point" x="29" y="229" /> + <di:waypoint xsi:type="dc:Point" x="29" y="321" /> + <di:waypoint xsi:type="dc:Point" x="203" y="321" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="235" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_225" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> + <dc:Bounds x="594" y="837" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="578" y="892" width="83" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ScriptTask_171"> + <di:waypoint xsi:type="dc:Point" x="644" y="862" /> + <di:waypoint xsi:type="dc:Point" x="665" y="862" /> + <di:waypoint xsi:type="dc:Point" x="665" y="798" /> + <di:waypoint xsi:type="dc:Point" x="732" y="798" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="803" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_CallActivity_14"> + <di:waypoint xsi:type="dc:Point" x="832" y="798" /> + <di:waypoint xsi:type="dc:Point" x="912" y="798" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="798" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_226" bpmnElement="ExclusiveGateway_4" isMarkerVisible="true"> + <dc:Bounds x="1092" y="837" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1078" y="892" width="79" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ExclusiveGateway_225"> + <di:waypoint xsi:type="dc:Point" x="962" y="117" /> + <di:waypoint xsi:type="dc:Point" x="1025" y="117" /> + <di:waypoint xsi:type="dc:Point" x="1025" y="212" /> + <di:waypoint xsi:type="dc:Point" x="19" y="212" /> + <di:waypoint xsi:type="dc:Point" x="19" y="382" /> + <di:waypoint xsi:type="dc:Point" x="922" y="382" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="187" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ExclusiveGateway_226"> + <di:waypoint xsi:type="dc:Point" x="644" y="862" /> + <di:waypoint xsi:type="dc:Point" x="1092" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="855" y="862" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_CallActivity_14" targetElement="_BPMNShape_ExclusiveGateway_226"> + <di:waypoint xsi:type="dc:Point" x="1012" y="798" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="798" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="837" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1090" y="798" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ScriptTask_172"> + <di:waypoint xsi:type="dc:Point" x="1117" y="887" /> + <di:waypoint xsi:type="dc:Point" x="1117" y="958" /> + <di:waypoint xsi:type="dc:Point" x="34" y="958" /> + <di:waypoint xsi:type="dc:Point" x="34" y="1103" /> + <di:waypoint xsi:type="dc:Point" x="56" y="1103" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="262" y="958" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_227" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true"> + <dc:Bounds x="589" y="1098" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="578" y="1153" width="71" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ExclusiveGateway_227"> + <di:waypoint xsi:type="dc:Point" x="1092" y="862" /> + <di:waypoint xsi:type="dc:Point" x="1029" y="862" /> + <di:waypoint xsi:type="dc:Point" x="1029" y="942" /> + <di:waypoint xsi:type="dc:Point" x="25" y="942" /> + <di:waypoint xsi:type="dc:Point" x="25" y="1246" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1246" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1148" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="976" y="912" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_EndEvent_169"> + <di:waypoint xsi:type="dc:Point" x="639" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="1028" y="1123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="811" y="1123" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_ScriptTask_173"> + <di:waypoint xsi:type="dc:Point" x="639" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1067" /> + <di:waypoint xsi:type="dc:Point" x="664" y="1038" /> + <di:waypoint xsi:type="dc:Point" x="704" y="1038" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="679" y="1044" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_255" bpmnElement="ScriptTask_1"> + <dc:Bounds x="461" y="995" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_255"> + <di:waypoint xsi:type="dc:Point" x="427" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="461" y="1035" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="446" y="1035" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_255" targetElement="_BPMNShape_ExclusiveGateway_227"> + <di:waypoint xsi:type="dc:Point" x="561" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="614" y="1098" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614" y="1040" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="27" y="1464" width="699" height="159" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions"> + <dc:Bounds x="47" y="1515" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="53" y="1560" width="86" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException"> + <dc:Bounds x="391" y="1493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1"> + <dc:Bounds x="565" y="1515" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="583" y="1551" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="708" y="1514" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="726" y="1550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2"> + <dc:Bounds x="880" y="1514" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="1555" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189"> + <di:waypoint xsi:type="dc:Point" x="744" y="1532" /> + <di:waypoint xsi:type="dc:Point" x="818" y="1532" /> + <di:waypoint xsi:type="dc:Point" x="818" y="1532" /> + <di:waypoint xsi:type="dc:Point" x="880" y="1532" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="833" y="1532" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0a0hroy_di" bpmnElement="ExclusiveGateway_0a0hroy" isMarkerVisible="true"> + <dc:Bounds x="413" y="588" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="638" width="84" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0mnb4d7_di" bpmnElement="Task_08csf14"> + <dc:Bounds x="212" y="507" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1shi2a6_di" bpmnElement="Task_18r7u02"> + <dc:Bounds x="552" y="507" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0zvct4i_di" bpmnElement="Task_01ajtiy"> + <dc:Bounds x="747" y="507" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0djpj3r_di" bpmnElement="SequenceFlow_0djpj3r"> + <di:waypoint xsi:type="dc:Point" x="312" y="547" /> + <di:waypoint xsi:type="dc:Point" x="438" y="547" /> + <di:waypoint xsi:type="dc:Point" x="438" y="589" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="375" y="532" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0uvarlv_di" bpmnElement="ExclusiveGateway_0uvarlv" isMarkerVisible="true"> + <dc:Bounds x="921" y="588" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="907" y="638" width="78" height="26" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_185bo77_di" bpmnElement="SequenceFlow_185bo77"> + <di:waypoint xsi:type="dc:Point" x="463" y="613" /> + <di:waypoint xsi:type="dc:Point" x="692" y="613" /> + <di:waypoint xsi:type="dc:Point" x="692" y="613" /> + <di:waypoint xsi:type="dc:Point" x="921" y="613" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701" y="613" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_111l1he_di" bpmnElement="SequenceFlow_111l1he"> + <di:waypoint xsi:type="dc:Point" x="463" y="613" /> + <di:waypoint xsi:type="dc:Point" x="493" y="613" /> + <di:waypoint xsi:type="dc:Point" x="493" y="547" /> + <di:waypoint xsi:type="dc:Point" x="552" y="547" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="553" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ca4brn_di" bpmnElement="SequenceFlow_0ca4brn"> + <di:waypoint xsi:type="dc:Point" x="652" y="547" /> + <di:waypoint xsi:type="dc:Point" x="693" y="547" /> + <di:waypoint xsi:type="dc:Point" x="693" y="547" /> + <di:waypoint xsi:type="dc:Point" x="747" y="547" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="708" y="547" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19r2uus_di" bpmnElement="SequenceFlow_19r2uus"> + <di:waypoint xsi:type="dc:Point" x="847" y="547" /> + <di:waypoint xsi:type="dc:Point" x="946" y="547" /> + <di:waypoint xsi:type="dc:Point" x="946" y="588" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="897" y="532" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1p0v6yk_di" bpmnElement="SequenceFlow_1p0v6yk"> + <di:waypoint xsi:type="dc:Point" x="946" y="638" /> + <di:waypoint xsi:type="dc:Point" x="946" y="724" /> + <di:waypoint xsi:type="dc:Point" x="47" y="724" /> + <di:waypoint xsi:type="dc:Point" x="47" y="803" /> + <di:waypoint xsi:type="dc:Point" x="104" y="803" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="507" y="732" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03i4czf_di" bpmnElement="SequenceFlow_03i4czf"> + <di:waypoint xsi:type="dc:Point" x="971" y="613" /> + <di:waypoint xsi:type="dc:Point" x="1036" y="613" /> + <di:waypoint xsi:type="dc:Point" x="1036" y="709" /> + <di:waypoint xsi:type="dc:Point" x="30" y="709" /> + <di:waypoint xsi:type="dc:Point" x="30" y="862" /> + <di:waypoint xsi:type="dc:Point" x="466" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="683" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1yozzae_di" bpmnElement="ExclusiveGateway_1yozzae" isMarkerVisible="true"> + <dc:Bounds x="278" y="93" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="267" y="143" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11er1t8_di" bpmnElement="SequenceFlow_11er1t8"> + <di:waypoint xsi:type="dc:Point" x="328" y="118" /> + <di:waypoint xsi:type="dc:Point" x="538" y="118" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="357" y="91.50148837900852" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ggp8wz_di" bpmnElement="SequenceFlow_0ggp8wz"> + <di:waypoint xsi:type="dc:Point" x="303" y="93" /> + <di:waypoint xsi:type="dc:Point" x="303" y="-11" /> + <di:waypoint xsi:type="dc:Point" x="1158" y="-11" /> + <di:waypoint xsi:type="dc:Point" x="1177" y="1105" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="723" y="-26" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188"> + <di:waypoint xsi:type="dc:Point" x="491" y="1533" /> + <di:waypoint xsi:type="dc:Point" x="565" y="1533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="528" y="1518" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281"> + <di:waypoint xsi:type="dc:Point" x="83" y="1533" /> + <di:waypoint xsi:type="dc:Point" x="198" y="1533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="141" y="1518" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1938vz9_di" bpmnElement="ExclusiveGateway_1938vz9" isMarkerVisible="true"> + <dc:Bounds x="921.561377245509" y="357" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="407" width="90" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_17dmaj7_di" bpmnElement="PrepareSDNCDeactivateRequest"> + <dc:Bounds x="204" y="281" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0ouj5y6_di" bpmnElement="CallSDNCDeactivate"> + <dc:Bounds x="401" y="280" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fmh02z_di" bpmnElement="PostProcessSDNCDeactivateRequest"> + <dc:Bounds x="613" y="280" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ugalf8_di" bpmnElement="SequenceFlow_0ugalf8"> + <di:waypoint xsi:type="dc:Point" x="304" y="321" /> + <di:waypoint xsi:type="dc:Point" x="401" y="320" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="353" y="295.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n78x37_di" bpmnElement="SequenceFlow_0n78x37"> + <di:waypoint xsi:type="dc:Point" x="501" y="320" /> + <di:waypoint xsi:type="dc:Point" x="613" y="320" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="557" y="295" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06rm0hg_di" bpmnElement="SequenceFlow_06rm0hg"> + <di:waypoint xsi:type="dc:Point" x="713" y="320" /> + <di:waypoint xsi:type="dc:Point" x="947" y="320" /> + <di:waypoint xsi:type="dc:Point" x="947" y="357" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="830" y="305" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n58kg1_di" bpmnElement="SequenceFlow_0n58kg1"> + <di:waypoint xsi:type="dc:Point" x="972" y="382" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="382" /> + <di:waypoint xsi:type="dc:Point" x="1033" y="466" /> + <di:waypoint xsi:type="dc:Point" x="14" y="466" /> + <di:waypoint xsi:type="dc:Point" x="14" y="613" /> + <di:waypoint xsi:type="dc:Point" x="413" y="613" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="444" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0unumxv_di" bpmnElement="SequenceFlow_0unumxv"> + <di:waypoint xsi:type="dc:Point" x="947" y="407" /> + <di:waypoint xsi:type="dc:Point" x="947" y="482" /> + <di:waypoint xsi:type="dc:Point" x="32" y="482" /> + <di:waypoint xsi:type="dc:Point" x="32" y="547" /> + <di:waypoint xsi:type="dc:Point" x="211" y="547" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="506" y="493" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1iufuuu_di" bpmnElement="SequenceFlow_1iufuuu"> + <di:waypoint xsi:type="dc:Point" x="287" y="1177" /> + <di:waypoint xsi:type="dc:Point" x="328" y="1177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="308" y="1162" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1l4n37b_di" bpmnElement="SequenceFlow_1l4n37b"> + <di:waypoint xsi:type="dc:Point" x="428" y="1177" /> + <di:waypoint xsi:type="dc:Point" x="469" y="1176" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="1161.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0qvylv2_di" bpmnElement="PrepareSDNCUnassignRequest"> + <dc:Bounds x="187" y="1138" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1stidyk_di" bpmnElement="CallSDNCAdapterUnassign"> + <dc:Bounds x="328" y="1137" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ub9z2k_di" bpmnElement="PostProcessSDNCUnassignRequest"> + <dc:Bounds x="469" y="1136" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1h87hhh_di" bpmnElement="ExclusiveGateway_1h87hhh" isMarkerVisible="true"> + <dc:Bounds x="55.989141164856846" y="1077.9259624876604" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="41" y="1127.9259624876604" width="79" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rpg6ac_di" bpmnElement="SequenceFlow_1rpg6ac"> + <di:waypoint xsi:type="dc:Point" x="81" y="1078" /> + <di:waypoint xsi:type="dc:Point" x="81" y="1035" /> + <di:waypoint xsi:type="dc:Point" x="187" y="1035" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="100" y="1010.5" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_16ghmax_di" bpmnElement="SequenceFlow_16ghmax"> + <di:waypoint xsi:type="dc:Point" x="81" y="1128" /> + <di:waypoint xsi:type="dc:Point" x="81" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="187" y="1178" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="92" y="1182" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12otwa4_di" bpmnElement="SequenceFlow_12otwa4"> + <di:waypoint xsi:type="dc:Point" x="569" y="1176" /> + <di:waypoint xsi:type="dc:Point" x="579" y="1176" /> + <di:waypoint xsi:type="dc:Point" x="579" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="589" y="1123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="594" y="1139.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h8ve60_di" bpmnElement="SequenceFlow_1h8ve60"> + <di:waypoint xsi:type="dc:Point" x="1128" y="1123" /> + <di:waypoint xsi:type="dc:Point" x="1159" y="1123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1144" y="1108" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0lrbhgj_di" bpmnElement="SetSuccessfulRollbackStatus"> + <dc:Bounds x="1028" y="1083" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_02fx6z6_di" bpmnElement="SequenceFlow_02fx6z6"> + <di:waypoint xsi:type="dc:Point" x="298" y="1533" /> + <di:waypoint xsi:type="dc:Point" x="391" y="1533" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="345" y="1518" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0cd144f_di" bpmnElement="SetFailedRollbackStatus"> + <dc:Bounds x="198" y="1493" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0ahc44p_di" bpmnElement="ExclusiveGateway_0ahc44p" isMarkerVisible="true"> + <dc:Bounds x="465.5588822355289" y="837" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="500" y="805" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gcfdej_di" bpmnElement="SequenceFlow_1gcfdej"> + <di:waypoint xsi:type="dc:Point" x="516" y="862" /> + <di:waypoint xsi:type="dc:Point" x="594" y="862" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="551" y="837.0195010054398" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17ne2iz_di" bpmnElement="SequenceFlow_17ne2iz"> + <di:waypoint xsi:type="dc:Point" x="491" y="887" /> + <di:waypoint xsi:type="dc:Point" x="491" y="931" /> + <di:waypoint xsi:type="dc:Point" x="-38" y="931" /> + <di:waypoint xsi:type="dc:Point" x="-38" y="1347" /> + <di:waypoint xsi:type="dc:Point" x="104" y="1347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="459" y="884.8446601941747" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17it51d_di" bpmnElement="SequenceFlow_17it51d"> + <di:waypoint xsi:type="dc:Point" x="362" y="1347" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1347" /> + <di:waypoint xsi:type="dc:Point" x="1078" y="1163" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="720" y="1332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fvuowt_di" bpmnElement="SequenceFlow_0fvuowt"> + <di:waypoint xsi:type="dc:Point" x="204" y="1347" /> + <di:waypoint xsi:type="dc:Point" x="262" y="1347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="233" y="1332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0i5a02m_di" bpmnElement="Task_0k9gnp2"> + <dc:Bounds x="262" y="1307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_008e45v_di" bpmnElement="Task_1sqxedz"> + <dc:Bounds x="104" y="1308" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08aruzz_di" bpmnElement="SequenceFlow_08aruzz"> + <di:waypoint xsi:type="dc:Point" x="362" y="803" /> + <di:waypoint xsi:type="dc:Point" x="491" y="803" /> + <di:waypoint xsi:type="dc:Point" x="491" y="837" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="778" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn new file mode 100644 index 0000000000..a762b7ecd7 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn @@ -0,0 +1,247 @@ +<?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="1.4.0"> + <bpmn:process id="DoCreateVfModuleVolumeRollback" name="DoCreateVfModuleVolumeRollback" isExecutable="true"> + <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1j0eixl"> + <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0jxh015"> + <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" /> + <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" /> + </bpmn:subProcess> + <bpmn:startEvent id="StartEvent_0128tti" name="Fault Start"> + <bpmn:outgoing>SequenceFlow_0qreiaa</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:exclusiveGateway id="ExclusiveGateway_128ycfs" name="Is RollBack On?" default="SequenceFlow_1wberw3"> + <bpmn:incoming>SequenceFlow_1xah9es</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11y7faf</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1wberw3</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_03qps8q" name="Is Vnf Ok?" default="SequenceFlow_10dawse"> + <bpmn:incoming>SequenceFlow_11y7faf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0h7k68j</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_10dawse</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:callActivity id="CallActivity_03pmk7v" name="Call VNF Adapter Rollback" calledElement="vnfAdapterRestV1"> + <bpmn:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="DCVFMODVOLRBK_rollbackVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:out source="workflowException" target="workflowException" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0h7k68j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0bv04qn</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_0h7k68j" sourceRef="ExclusiveGateway_03qps8q" targetRef="CallActivity_03pmk7v"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded") == "true"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:scriptTask id="ScriptTask_1numqm0" name="Delete Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0bv04qn</bpmn:incoming> + <bpmn:incoming>SequenceFlow_17k6oyz</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_13nb3n0</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0bv04qn" sourceRef="CallActivity_03pmk7v" targetRef="ScriptTask_1numqm0" /> + <bpmn:sequenceFlow id="SequenceFlow_10dawse" sourceRef="ExclusiveGateway_03qps8q" targetRef="ExclusiveGateway_1dzejtx" /> + <bpmn:sequenceFlow id="SequenceFlow_13nb3n0" sourceRef="ScriptTask_1numqm0" targetRef="EndEvent_11duf9p" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1dzejtx" name="Is AAI Ok?" default="SequenceFlow_1do0853"> + <bpmn:incoming>SequenceFlow_10dawse</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17k6oyz</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1do0853</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_17k6oyz" sourceRef="ExclusiveGateway_1dzejtx" targetRef="ScriptTask_1numqm0"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isAAIRollbackNeeded" ) == "true"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1do0853" sourceRef="ExclusiveGateway_1dzejtx" targetRef="EndEvent_1ddbl39" /> + <bpmn:endEvent id="EndEvent_1ddbl39"> + <bpmn:incoming>SequenceFlow_1do0853</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1wberw3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_11duf9p"> + <bpmn:incoming>SequenceFlow_13nb3n0</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_11y7faf" sourceRef="ExclusiveGateway_128ycfs" targetRef="ExclusiveGateway_03qps8q"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_backoutOnFailure") != "false"}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:scriptTask id="ScriptTask_0uhy9lc" name="Pre process" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0qreiaa</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xah9es</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback() +doCreateVfModuleVolumeRollback.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1wberw3" sourceRef="ExclusiveGateway_128ycfs" targetRef="EndEvent_1ddbl39" /> + <bpmn:sequenceFlow id="SequenceFlow_0qreiaa" sourceRef="StartEvent_0128tti" targetRef="ScriptTask_0uhy9lc" /> + <bpmn:sequenceFlow id="SequenceFlow_1xah9es" sourceRef="ScriptTask_0uhy9lc" targetRef="ExclusiveGateway_128ycfs" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeRollback"> + <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true"> + <dc:Bounds x="293" y="165" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk"> + <dc:Bounds x="441" y="220" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl"> + <dc:Bounds x="326" y="242" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="344" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015"> + <dc:Bounds x="602" y="242" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="620" y="283" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v"> + <di:waypoint xsi:type="dc:Point" x="362" y="260" /> + <di:waypoint xsi:type="dc:Point" x="441" y="260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="404" y="260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3"> + <di:waypoint xsi:type="dc:Point" x="541" y="260" /> + <di:waypoint xsi:type="dc:Point" x="602" y="260" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="576" y="260" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0128tti_di" bpmnElement="StartEvent_0128tti"> + <dc:Bounds x="173" y="-93" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="167" y="-52" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_128ycfs_di" bpmnElement="ExclusiveGateway_128ycfs" isMarkerVisible="true"> + <dc:Bounds x="465" y="-100" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="450" y="-50" width="79" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_03qps8q_di" bpmnElement="ExclusiveGateway_03qps8q" isMarkerVisible="true"> + <dc:Bounds x="607" y="-100" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="-50" width="52" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_03pmk7v_di" bpmnElement="CallActivity_03pmk7v"> + <dc:Bounds x="786" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0h7k68j_di" bpmnElement="SequenceFlow_0h7k68j"> + <di:waypoint xsi:type="dc:Point" x="657" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="786" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1numqm0_di" bpmnElement="ScriptTask_1numqm0"> + <dc:Bounds x="998" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bv04qn_di" bpmnElement="SequenceFlow_0bv04qn"> + <di:waypoint xsi:type="dc:Point" x="886" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="937" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="937" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="998" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="952" y="-75" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_10dawse_di" bpmnElement="SequenceFlow_10dawse"> + <di:waypoint xsi:type="dc:Point" x="632" y="-50" /> + <di:waypoint xsi:type="dc:Point" x="632" y="40" /> + <di:waypoint xsi:type="dc:Point" x="811" y="40" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="-5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_13nb3n0_di" bpmnElement="SequenceFlow_13nb3n0"> + <di:waypoint xsi:type="dc:Point" x="1098" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1125" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1dzejtx_di" bpmnElement="ExclusiveGateway_1dzejtx" isMarkerVisible="true"> + <dc:Bounds x="811" y="15" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="65" width="53" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17k6oyz_di" bpmnElement="SequenceFlow_17k6oyz"> + <di:waypoint xsi:type="dc:Point" x="861" y="40" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="40" /> + <di:waypoint xsi:type="dc:Point" x="1048" y="-35" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="955" y="25" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1do0853_di" bpmnElement="SequenceFlow_1do0853"> + <di:waypoint xsi:type="dc:Point" x="836" y="65" /> + <di:waypoint xsi:type="dc:Point" x="836" y="99" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="851" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0le8wga_di" bpmnElement="EndEvent_1ddbl39"> + <dc:Bounds x="818" y="99" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="836" y="135" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1iibjyo_di" bpmnElement="EndEvent_11duf9p"> + <dc:Bounds x="1151" y="-93" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1169" y="-57" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11y7faf_di" bpmnElement="SequenceFlow_11y7faf"> + <di:waypoint xsi:type="dc:Point" x="515" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="607" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="561" y="-90" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0uhy9lc_di" bpmnElement="ScriptTask_0uhy9lc"> + <dc:Bounds x="288" y="-115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wberw3_di" bpmnElement="SequenceFlow_1wberw3"> + <di:waypoint xsi:type="dc:Point" x="490" y="-50" /> + <di:waypoint xsi:type="dc:Point" x="490" y="117" /> + <di:waypoint xsi:type="dc:Point" x="818" y="117" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="505" y="23.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qreiaa_di" bpmnElement="SequenceFlow_0qreiaa"> + <di:waypoint xsi:type="dc:Point" x="209" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="288" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="249" y="-100" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xah9es_di" bpmnElement="SequenceFlow_1xah9es"> + <di:waypoint xsi:type="dc:Point" x="388" y="-75" /> + <di:waypoint xsi:type="dc:Point" x="465" y="-75" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="-100" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn new file mode 100644 index 0000000000..ac48776c95 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn @@ -0,0 +1,362 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_FhrCQG2BEeaNdqnn65BT4A" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVfModuleVolumeV2" name="DoCreateVfModuleVolumeV2" isExecutable="true"> + <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wi1cf9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_callRestAaiCloudRegion" name="Call REST AAI Cloud Region" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1dpt7ul</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_callRestAaiCloudRegion" targetRef="ScriptTask_callRestAaiQueryGenericVnf" /> + <bpmn2:scriptTask id="ScriptTask_createVolGrpExistsException" name="Build Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_volGrpName404No</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('buildWorkflowException', execution, 2500, "Volume group name already exists in the system.", isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_createVolGrpExistsException" targetRef="EndEvent_6" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_aaiReturnCode404" name="AAI Return Code is 404?" default="SequenceFlow_volGrpName404No"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_volGrpName404Yes</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_volGrpName404No</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404Yes" name="Yes" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_callRestAaiCreateVolumeGrp"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{DCVFMODVOLV2_AaiReturnCode == '404'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404No" name="No" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_createVolGrpExistsException" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryGenericVnf" name="Call REST AAI Query Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_callRestAaiQueryGenericVnf" targetRef="ScriptTask_callRestAaiQueryVolGrpName" /> + <bpmn2:boundaryEvent id="BoundaryEvent_catchAaiError" name="" attachedToRef="ScriptTask_callRestAaiQueryVolGrpName"> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="BoundaryEvent_catchAaiError" targetRef="ExclusiveGateway_aaiReturnCode404" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryVolGrpName" name="Call REST AAI Query Volume Grp Name" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestAaiQueryVolGrpName" targetRef="ExclusiveGateway_aaiReturnCode404" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiCreateVolumeGrp" name="Call REST AAI Create Volume Group" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_volGrpName404Yes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTCreateAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_callRestAaiCreateVolumeGrp" targetRef="ScriptTask_prepareVnfAdapterCreate" /> + <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="DCVFMODVOLV2_createVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="vnfAdapterRestV1Response" target="DCVFMODVOLV2_createVnfAResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_vnfAdapterStatusCode" target="DCVFMODVOLV2_createVnfAReturnCode" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qwurc5</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_callRestAaiRequeryVolGrpNm" name="Call REST AAI Requery Volume Group Name" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1gbt2n5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="ScriptTask_callRestAaiRequeryVolGrpNm" targetRef="ScriptTask_callRestAaiVolumeGrp" /> + <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="EndEvent_1" /> + <bpmn2:scriptTask id="ScriptTask_callRestAaiVolumeGrp" name="Call REST AAI Update Volume Group" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('callRESTUpdateCreatedVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_callRestAaiVolumeGrp" targetRef="ScriptTask_prepareDbInfraRequest" /> + <bpmn2:endEvent id="EndEvent_1" name="End"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_prepareVnfAdapterCreate" name="Prepare VNF Adapter Create Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('prepareVnfAdapterCreateRequest', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_prepareVnfAdapterCreate" targetRef="CallActivity_callVnfAdapterCreate" /> + <bpmn2:startEvent id="StartEvent_doCreateVfModuleVolume" name="Start"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_doCreateVfModuleVolume" targetRef="ScriptTask_preProcessRequest" /> + <bpmn2:endEvent id="EndEvent_6" name="End"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="Task_07psich" name="Validate VNF Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qwurc5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1gbt2n5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('validateVnfResponse', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1qwurc5" sourceRef="CallActivity_callVnfAdapterCreate" targetRef="Task_07psich" /> + <bpmn2:sequenceFlow id="SequenceFlow_1gbt2n5" sourceRef="Task_07psich" targetRef="ScriptTask_callRestAaiRequeryVolGrpNm" /> + <bpmn2:callActivity id="Task_1u766ge" name="Call Generic Get Service instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1wi1cf9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vmbvy8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="Task_0qbm5cz" name="Validate Get Service Instance Call" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1vmbvy8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1dpt7ul</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2() +doCreateVfModuleVolumeV2.executeMethod('validateGetServiceInstanceCall', execution, isDebugLogEnabled)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1wi1cf9" sourceRef="ScriptTask_preProcessRequest" targetRef="Task_1u766ge" /> + <bpmn2:sequenceFlow id="SequenceFlow_1vmbvy8" sourceRef="Task_1u766ge" targetRef="Task_0qbm5cz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1dpt7ul" sourceRef="Task_0qbm5cz" targetRef="ScriptTask_callRestAaiCloudRegion" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_65" bpmnElement="StartEvent_doCreateVfModuleVolume"> + <dc:Bounds x="270" y="128" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="276" y="169" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="ScriptTask_preProcessRequest"> + <dc:Bounds x="369" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_287" bpmnElement="ScriptTask_callRestAaiCloudRegion"> + <dc:Bounds x="768" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_288" bpmnElement="ScriptTask_callRestAaiQueryVolGrpName"> + <dc:Bounds x="1045" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_247" bpmnElement="ExclusiveGateway_aaiReturnCode404" isMarkerVisible="true"> + <dc:Bounds x="1242" y="121" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1224" y="176" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_289" bpmnElement="ScriptTask_callRestAaiCreateVolumeGrp"> + <dc:Bounds x="256" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_290" bpmnElement="ScriptTask_prepareVnfAdapterCreate"> + <dc:Bounds x="420" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_32" bpmnElement="CallActivity_callVnfAdapterCreate"> + <dc:Bounds x="576" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_292" bpmnElement="ScriptTask_callRestAaiRequeryVolGrpNm"> + <dc:Bounds x="857" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="ScriptTask_callRestAaiVolumeGrp"> + <dc:Bounds x="995" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_294" bpmnElement="ScriptTask_prepareDbInfraRequest"> + <dc:Bounds x="1142" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_226" bpmnElement="EndEvent_1"> + <dc:Bounds x="1283" y="328" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1292" y="369" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_65" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="306" y="146" /> + <di:waypoint xsi:type="dc:Point" x="369" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="338" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_volGrpName404Yes" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_289"> + <di:waypoint xsi:type="dc:Point" x="1267" y="171" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="232" /> + <di:waypoint xsi:type="dc:Point" x="811" y="232" /> + <di:waypoint xsi:type="dc:Point" x="306" y="232" /> + <di:waypoint xsi:type="dc:Point" x="306" y="307" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="232" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_289" targetElement="_BPMNShape_ScriptTask_290"> + <di:waypoint xsi:type="dc:Point" x="356" y="347" /> + <di:waypoint xsi:type="dc:Point" x="420" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_290" targetElement="_BPMNShape_CallActivity_32"> + <di:waypoint xsi:type="dc:Point" x="520" y="347" /> + <di:waypoint xsi:type="dc:Point" x="576" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="548" y="455" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_287" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="868" y="146" /> + <di:waypoint xsi:type="dc:Point" x="911" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="132" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_296" bpmnElement="ScriptTask_createVolGrpExistsException"> + <dc:Bounds x="1355" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_296" targetElement="_BPMNShape_EndEvent_241"> + <di:waypoint xsi:type="dc:Point" x="1455" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1493" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1474" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_BoundaryEvent_62" targetElement="_BPMNShape_ExclusiveGateway_247"> + <di:waypoint xsi:type="dc:Point" x="1145" y="88" /> + <di:waypoint xsi:type="dc:Point" x="1145" y="59" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="59" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1206" y="44" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_volGrpName404No" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_296"> + <di:waypoint xsi:type="dc:Point" x="1292" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1355" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1320" y="146" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ScriptTask_292" targetElement="_BPMNShape_ScriptTask_293"> + <di:waypoint xsi:type="dc:Point" x="957" y="347" /> + <di:waypoint xsi:type="dc:Point" x="995" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="976" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_ScriptTask_294"> + <di:waypoint xsi:type="dc:Point" x="1095" y="347" /> + <di:waypoint xsi:type="dc:Point" x="1142" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1119" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_294" targetElement="_BPMNShape_EndEvent_226"> + <di:waypoint xsi:type="dc:Point" x="1242" y="347" /> + <di:waypoint xsi:type="dc:Point" x="1283" y="346" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1263" y="332" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="ScriptTask_callRestAaiQueryGenericVnf"> + <dc:Bounds x="911" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_311" targetElement="_BPMNShape_ScriptTask_288"> + <di:waypoint xsi:type="dc:Point" x="1011" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1028" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_62" bpmnElement="BoundaryEvent_catchAaiError"> + <dc:Bounds x="1127" y="88" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1145" y="129" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_288" targetElement="_BPMNShape_ExclusiveGateway_247"> + <di:waypoint xsi:type="dc:Point" x="1145" y="146" /> + <di:waypoint xsi:type="dc:Point" x="1242" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1194" y="131" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_241" bpmnElement="EndEvent_6"> + <dc:Bounds x="1493" y="128" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1502" y="169" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00lua86_di" bpmnElement="Task_07psich"> + <dc:Bounds x="716" y="307" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qwurc5_di" bpmnElement="SequenceFlow_1qwurc5"> + <di:waypoint xsi:type="dc:Point" x="676" y="347" /> + <di:waypoint xsi:type="dc:Point" x="716" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="696" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1gbt2n5_di" bpmnElement="SequenceFlow_1gbt2n5"> + <di:waypoint xsi:type="dc:Point" x="816" y="347" /> + <di:waypoint xsi:type="dc:Point" x="857" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="837" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1u596hd_di" bpmnElement="Task_1u766ge"> + <dc:Bounds x="506" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1n9cmka_di" bpmnElement="Task_0qbm5cz"> + <dc:Bounds x="640" y="106" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wi1cf9_di" bpmnElement="SequenceFlow_1wi1cf9"> + <di:waypoint xsi:type="dc:Point" x="469" y="146" /> + <di:waypoint xsi:type="dc:Point" x="506" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="488" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vmbvy8_di" bpmnElement="SequenceFlow_1vmbvy8"> + <di:waypoint xsi:type="dc:Point" x="606" y="146" /> + <di:waypoint xsi:type="dc:Point" x="640" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="623" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dpt7ul_di" bpmnElement="SequenceFlow_1dpt7ul"> + <di:waypoint xsi:type="dc:Point" x="740" y="146" /> + <di:waypoint xsi:type="dc:Point" x="768" y="146" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="754" y="121" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn new file mode 100644 index 0000000000..dacce53963 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn @@ -0,0 +1,635 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVnf" name="DoCreateVnf" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="callGetService" /> + <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>notFound</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:callActivity id="callGetService" name="Get Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="GENGS_serviceInstance" target="CRTVI_serviceInstance" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + <camunda:in source="DoCVNF_serviceInstanceName" target="GENGS_serviceInstanceName" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="callGetService" targetRef="serviceInstanceFound" /> + <bpmn2:exclusiveGateway id="serviceInstanceFound" name="Service Instance Found?" default="notFound"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>notFound</bpmn2:outgoing> + <bpmn2:outgoing>found</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="serviceInstanceFound" targetRef="buildWorkflowException" /> + <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="serviceInstanceFound" targetRef="ExclusiveGateway_0j73e7c"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGS_FoundIndicator" ) == true && execution.getVariable("GENGS_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="vnfExist" name="Vnf Already Exist?" default="vnfExistYes"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>vnfExistYes</bpmn2:outgoing> + <bpmn2:outgoing>vnfExistNo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="vnfExistYes" name="Yes" sourceRef="vnfExist" targetRef="vnfExistWorkflowException" /> + <bpmn2:sequenceFlow id="vnfExistNo" name="No" sourceRef="vnfExist" targetRef="prepareCreateGenericVnf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGV_FoundIndicator" ) == false && execution.getVariable("GENGV_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="callGetVnf" name="Get Generic Vnf" calledElement="GenericGetVnf"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_vnfName" target="GENGV_vnfName" /> + <camunda:in source="DoCVNF_type" target="GENGV_type" /> + <camunda:out source="GENGV_vnf" target="CRTVI_genericVnf" /> + <camunda:out source="GENGV_FoundIndicator" target="GENGV_FoundIndicator" /> + <camunda:out source="GENGV_SuccessIndicator" target="GENGV_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>VnfNameSpecified1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="callGetVnf" targetRef="vnfExist" /> + <bpmn2:scriptTask id="vnfExistWorkflowException" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>vnfExistYes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildWorkflowException(execution, 5000, "Generic Vnf Already Exist.")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="vnfExistWorkflowException" targetRef="EndEvent_2" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="prepareCreateGenericVnf" name=" AAI Create (generic vnf) " scriptFormat="groovy"> + <bpmn2:incoming>vnfExistNo</bpmn2:incoming> + <bpmn2:incoming>VnfNameNotSpecified1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.createGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareCreateGenericVnf" targetRef="postProcessCreateGenericVnf" /> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="processJavaError" targetRef="EndEvent_4" /> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_2"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_2" targetRef="processJavaError" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SdncInteractionNotEnabled</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0bj7c4s</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="preProcessSDNCAssignRequest" targetRef="callSDNCAdapterVNFTopologyAssign" /> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="callSDNCAdapterVNFTopologyAssign" targetRef="postProcessSDNCAssignRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="preProcessSDNCActivateRequest" targetRef="callSDNCAdapterVNFTopologyActivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="callSDNCAdapterVNFTopologyActivate" targetRef="postProcessSDNCActivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCActivateRequest" targetRef="Task_053tb0h" /> + <bpmn2:scriptTask id="preProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SdncInteractionEnabled</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.preProcessSDNCAssignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterVNFTopologyAssign" name="Call SDNC Adapter VNF Topology Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_assignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DoCVNF_assignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCAssignRequest" name="PostProcess SDNC Assign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0lnh79j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse") + +def createVnfInfra = new DoCreateVnf() +createVnfInfra.validateSDNCResponse(execution, response, "assign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="preProcessSDNCActivateRequest" name="PreProcess SDNC Activate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1q1poly</bpmn2:incoming> + <bpmn2:incoming>VnfNameSpecified2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.preProcessSDNCActivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterVNFTopologyActivate" name="Call SDNC Adapter VNF Topology Activate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_activateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-reqeuest-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DoCVNF_activateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCActivateRequest" name="PostProcess SDNC Activate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse") + +def createVnfInfra = new DoCreateVnf() +createVnfInfra.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_045rm8i" name="Is SDNC Interaction Enabled?" default="SdncInteractionNotEnabled"> + <bpmn2:incoming>SequenceFlow_1gc18ih</bpmn2:incoming> + <bpmn2:outgoing>SdncInteractionEnabled</bpmn2:outgoing> + <bpmn2:outgoing>SdncInteractionNotEnabled</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SdncInteractionEnabled" name="Yes" sourceRef="ExclusiveGateway_045rm8i" targetRef="preProcessSDNCAssignRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SdncInteractionNotEnabled" name="No" sourceRef="ExclusiveGateway_045rm8i" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_1gc18ih" sourceRef="postProcessCreateGenericVnf" targetRef="ExclusiveGateway_045rm8i" /> + <bpmn2:scriptTask id="postProcessCreateGenericVnf" name="PostProcess Create Generic Vnf" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1gc18ih</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.postProcessCreateGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0j73e7c" name="Vnf-name specified?" default="VnfNameSpecified1"> + <bpmn2:incoming>found</bpmn2:incoming> + <bpmn2:outgoing>VnfNameNotSpecified1</bpmn2:outgoing> + <bpmn2:outgoing>VnfNameSpecified1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="VnfNameNotSpecified1" name="No" sourceRef="ExclusiveGateway_0j73e7c" targetRef="prepareCreateGenericVnf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_vnfName" ) == null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="VnfNameSpecified1" name="Yes" sourceRef="ExclusiveGateway_0j73e7c" targetRef="callGetVnf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1h9jdgr" sourceRef="PreProcessSDNCGetRequest" targetRef="CallSDNCAdapterVNFTopologyGet" /> + <bpmn2:sequenceFlow id="SequenceFlow_14xac2y" sourceRef="CallSDNCAdapterVNFTopologyGet" targetRef="PostProcessSDNCGetRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_1q1poly" sourceRef="PostProcessSDNCGetRequest" targetRef="preProcessSDNCActivateRequest" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0qnhlm1" name="Vnf-name specified?" default="VnfNameSpecified2"> + <bpmn2:incoming>SequenceFlow_0lnh79j</bpmn2:incoming> + <bpmn2:outgoing>VnfNameNotSpecified2</bpmn2:outgoing> + <bpmn2:outgoing>VnfNameSpecified2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0lnh79j" sourceRef="postProcessSDNCAssignRequest" targetRef="ExclusiveGateway_0qnhlm1" /> + <bpmn2:sequenceFlow id="VnfNameNotSpecified2" name="No" sourceRef="ExclusiveGateway_0qnhlm1" targetRef="PreProcessSDNCGetRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_vnfName" ) == null}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="VnfNameSpecified2" name="Yes" sourceRef="ExclusiveGateway_0qnhlm1" targetRef="preProcessSDNCActivateRequest" /> + <bpmn2:scriptTask id="PreProcessSDNCGetRequest" name="PreProcess SDNC Get Request" scriptFormat="groovy"> + <bpmn2:incoming>VnfNameNotSpecified2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1h9jdgr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoCreateVnf createVnf = new DoCreateVnf() +createVnf.preProcessSDNCGetRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallSDNCAdapterVNFTopologyGet" name="Call SDNC Adapter VNF Topology Get" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_getSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DoCVNF_getSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1h9jdgr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14xac2y</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCGetRequest" name="PostProcess SDNC Get Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14xac2y</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q1poly</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("DoCVNF_getSDNCAdapterResponse") + +def createVnfInfra = new DoCreateVnf() +createVnfInfra.validateSDNCResponse(execution, response, "get")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0bj7c4s" sourceRef="UpdateAAIOrchestrationStatus" targetRef="EndEvent_3" /> + <bpmn2:callActivity id="UpdateAAIOrchestrationStatus" name="Update AAI Orchestration Status to Active" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DoCVNF_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0nhsdmj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bj7c4s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0nhsdmj" sourceRef="Task_053tb0h" targetRef="UpdateAAIOrchestrationStatus" /> + <bpmn2:scriptTask id="Task_053tb0h" name="Prepare Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0nhsdmj</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnf = new DoCreateVnf() +doCreateVnf.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnf"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="96" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="114" y="263" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="216" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="132" y="240" /> + <di:waypoint xsi:type="dc:Point" x="216" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="165" y="240" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="316" y="240" /> + <di:waypoint xsi:type="dc:Point" x="406" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="361" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="callGetService"> + <dc:Bounds x="406" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="serviceInstanceFound" isMarkerVisible="true"> + <dc:Bounds x="552" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="267" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229"> + <di:waypoint xsi:type="dc:Point" x="506" y="240" /> + <di:waypoint xsi:type="dc:Point" x="552" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="529" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException"> + <dc:Bounds x="720" y="115" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293"> + <di:waypoint xsi:type="dc:Point" x="577" y="215" /> + <di:waypoint xsi:type="dc:Point" x="577" y="155" /> + <di:waypoint xsi:type="dc:Point" x="720" y="155" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="580" y="174.4237288135593" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1"> + <dc:Bounds x="876" y="137" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="894" y="178" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225"> + <di:waypoint xsi:type="dc:Point" x="820" y="155" /> + <di:waypoint xsi:type="dc:Point" x="876" y="155" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="846" y="155" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_CallActivity_60"> + <di:waypoint xsi:type="dc:Point" x="602" y="240" /> + <di:waypoint xsi:type="dc:Point" x="646" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614" y="216.01288698145387" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_60" bpmnElement="callGetVnf"> + <dc:Bounds x="720" y="288" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_232" bpmnElement="vnfExist" isMarkerVisible="true"> + <dc:Bounds x="854" y="302" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="332" width="114" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_CallActivity_60" targetElement="_BPMNShape_ExclusiveGateway_232"> + <di:waypoint xsi:type="dc:Point" x="820" y="328" /> + <di:waypoint xsi:type="dc:Point" x="854" y="327" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="804" y="330" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="vnfExistWorkflowException"> + <dc:Bounds x="926" y="367" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="prepareCreateGenericVnf"> + <dc:Bounds x="959" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="vnfExistYes" sourceElement="_BPMNShape_ExclusiveGateway_232" targetElement="_BPMNShape_ScriptTask_299"> + <di:waypoint xsi:type="dc:Point" x="879" y="352" /> + <di:waypoint xsi:type="dc:Point" x="879" y="407" /> + <di:waypoint xsi:type="dc:Point" x="926" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="880" y="367" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="vnfExistNo" sourceElement="_BPMNShape_ExclusiveGateway_232" targetElement="_BPMNShape_ScriptTask_300"> + <di:waypoint xsi:type="dc:Point" x="879" y="302" /> + <di:waypoint xsi:type="dc:Point" x="879" y="240" /> + <di:waypoint xsi:type="dc:Point" x="959" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="884" y="254" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_227" bpmnElement="EndEvent_2"> + <dc:Bounds x="1092" y="389" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1110" y="430" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_299" targetElement="_BPMNShape_EndEvent_227"> + <di:waypoint xsi:type="dc:Point" x="1026" y="407" /> + <di:waypoint xsi:type="dc:Point" x="1092" y="407" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="407" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1765" y="537" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1783" y="578" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300" targetElement="ScriptTask_0y55cyz_di"> + <di:waypoint xsi:type="dc:Point" x="1059" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1146" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1057.5" y="225" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="109" y="668" width="313" height="169" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_76" bpmnElement="StartEvent_2"> + <dc:Bounds x="133" y="735" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="776" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="processJavaError"> + <dc:Bounds x="216" y="713" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_4"> + <dc:Bounds x="361" y="735" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="379" y="776" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_76" targetElement="_BPMNShape_ScriptTask_308"> + <di:waypoint xsi:type="dc:Point" x="169" y="753" /> + <di:waypoint xsi:type="dc:Point" x="216" y="753" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="190" y="753" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_EndEvent_234"> + <di:waypoint xsi:type="dc:Point" x="316" y="753" /> + <di:waypoint xsi:type="dc:Point" x="361" y="753" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="336" y="753" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm"> + <di:waypoint xsi:type="dc:Point" x="306" y="555" /> + <di:waypoint xsi:type="dc:Point" x="346" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="326" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="446" y="555" /> + <di:waypoint xsi:type="dc:Point" x="493" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="470" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp"> + <di:waypoint xsi:type="dc:Point" x="1100" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1156" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1128" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="1256" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1304" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1280" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq"> + <di:waypoint xsi:type="dc:Point" x="1404" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1445" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1425" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="preProcessSDNCAssignRequest"> + <dc:Bounds x="206" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="callSDNCAdapterVNFTopologyAssign"> + <dc:Bounds x="346" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="postProcessSDNCAssignRequest"> + <dc:Bounds x="493" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="preProcessSDNCActivateRequest"> + <dc:Bounds x="1000" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="callSDNCAdapterVNFTopologyActivate"> + <dc:Bounds x="1156" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCActivateRequest"> + <dc:Bounds x="1304" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_045rm8i_di" bpmnElement="ExclusiveGateway_045rm8i" isMarkerVisible="true"> + <dc:Bounds x="1758" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1756" y="163" width="54" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ttqcwx_di" bpmnElement="SdncInteractionEnabled"> + <di:waypoint xsi:type="dc:Point" x="1783" y="265" /> + <di:waypoint xsi:type="dc:Point" x="1783" y="475" /> + <di:waypoint xsi:type="dc:Point" x="106" y="475" /> + <di:waypoint xsi:type="dc:Point" x="106" y="555" /> + <di:waypoint xsi:type="dc:Point" x="206" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="460" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ay5l4b_di" bpmnElement="SdncInteractionNotEnabled"> + <di:waypoint xsi:type="dc:Point" x="1783" y="265" /> + <di:waypoint xsi:type="dc:Point" x="1783" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1783" y="401" /> + <di:waypoint xsi:type="dc:Point" x="1783" y="537" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1812" y="431.09791911764705" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1gc18ih_di" bpmnElement="SequenceFlow_1gc18ih"> + <di:waypoint xsi:type="dc:Point" x="1246" y="240" /> + <di:waypoint xsi:type="dc:Point" x="1758" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1457" y="225" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0y55cyz_di" bpmnElement="postProcessCreateGenericVnf"> + <dc:Bounds x="1146" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0j73e7c_di" bpmnElement="ExclusiveGateway_0j73e7c" isMarkerVisible="true"> + <dc:Bounds x="646" y="215" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="653" y="184" width="51" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k2oavy_di" bpmnElement="VnfNameNotSpecified1"> + <di:waypoint xsi:type="dc:Point" x="696" y="240" /> + <di:waypoint xsi:type="dc:Point" x="959" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="821.0502092050209" y="215" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pwgmrg_di" bpmnElement="VnfNameSpecified1"> + <di:waypoint xsi:type="dc:Point" x="671" y="265" /> + <di:waypoint xsi:type="dc:Point" x="671" y="328" /> + <di:waypoint xsi:type="dc:Point" x="720" y="328" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="286.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h9jdgr_di" bpmnElement="SequenceFlow_1h9jdgr"> + <di:waypoint xsi:type="dc:Point" x="777" y="693" /> + <di:waypoint xsi:type="dc:Point" x="799" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="788" y="678" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14xac2y_di" bpmnElement="SequenceFlow_14xac2y"> + <di:waypoint xsi:type="dc:Point" x="899" y="693" /> + <di:waypoint xsi:type="dc:Point" x="926" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="913" y="678" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q1poly_di" bpmnElement="SequenceFlow_1q1poly"> + <di:waypoint xsi:type="dc:Point" x="1026" y="693" /> + <di:waypoint xsi:type="dc:Point" x="1050" y="693" /> + <di:waypoint xsi:type="dc:Point" x="1050" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1038" y="678" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0qnhlm1_di" bpmnElement="ExclusiveGateway_0qnhlm1" isMarkerVisible="true"> + <dc:Bounds x="625" y="530" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="495" width="51" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lnh79j_di" bpmnElement="SequenceFlow_0lnh79j"> + <di:waypoint xsi:type="dc:Point" x="593" y="555" /> + <di:waypoint xsi:type="dc:Point" x="625" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="609" y="530" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mh1y3w_di" bpmnElement="VnfNameNotSpecified2"> + <di:waypoint xsi:type="dc:Point" x="650" y="580" /> + <di:waypoint xsi:type="dc:Point" x="650" y="693" /> + <di:waypoint xsi:type="dc:Point" x="677" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="622" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_175qbtt_di" bpmnElement="VnfNameSpecified2"> + <di:waypoint xsi:type="dc:Point" x="675" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1000" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="829" y="530" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1cpb0sg_di" bpmnElement="PreProcessSDNCGetRequest"> + <dc:Bounds x="677" y="653" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0h8tpji_di" bpmnElement="CallSDNCAdapterVNFTopologyGet"> + <dc:Bounds x="799" y="653" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1orism0_di" bpmnElement="PostProcessSDNCGetRequest"> + <dc:Bounds x="926" y="653" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bj7c4s_di" bpmnElement="SequenceFlow_0bj7c4s"> + <di:waypoint xsi:type="dc:Point" x="1700" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1765" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1733" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0a4a9lx_di" bpmnElement="UpdateAAIOrchestrationStatus"> + <dc:Bounds x="1600" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nhsdmj_di" bpmnElement="SequenceFlow_0nhsdmj"> + <di:waypoint xsi:type="dc:Point" x="1545" y="555" /> + <di:waypoint xsi:type="dc:Point" x="1600" y="555" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1573" y="540" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0aonzix_di" bpmnElement="Task_053tb0h"> + <dc:Bounds x="1445" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn new file mode 100644 index 0000000000..d817f5703b --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn @@ -0,0 +1,527 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0"> + <bpmn:process id="DoCreateVnfAndModules" name="DoCreateVnfAndModules" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_0o4vuzt</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="PreProcessRequest" name="PreProcess Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0o4vuzt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xd3ri5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CreateBaseVfModule" name="Create Base VF Module" calledElement="DoCreateVfModule"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="baseVfModuleName" target="vfModuleName" /> + <camunda:in source="vfModuleType" target="vfModuleType" /> + <camunda:in source="volumeGroupId" target="volumeGroupId" /> + <camunda:in source="volumeGroupName" target="volumeGroupName" /> + <camunda:in source="baseVfModuleId" target="vfModuleId" /> + <camunda:in source="baseVfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:out source="vfModuleId" target="createdVfModuleId" /> + <camunda:out source="vfModuleOutputParams" target="createdVfModuleOutputParams" /> + <camunda:out source="rollbackData" target="DCVAM_baseRollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="false" target="usePreload" /> + <camunda:in source="aLaCarte" target="aLaCarte" /> + <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1hf7k7q</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ixcnb6</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_0o4vuzt" sourceRef="StartEvent_1" targetRef="PreProcessRequest" /> + <bpmn:sequenceFlow id="SequenceFlow_1xd3ri5" sourceRef="PreProcessRequest" targetRef="QueryCatalogDB" /> + <bpmn:callActivity id="CreateAddOnVfModule" name="Create Add-On VF Module" calledElement="DoCreateVfModule"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="addOnVfModuleName" target="vfModuleName" /> + <camunda:in source="vfModuleType" target="vfModuleType" /> + <camunda:in source="addOnVfModuleId" target="vfModuleId" /> + <camunda:in source="volumeGroupId" target="volumeGroupId" /> + <camunda:in source="volumeGroupName" target="volumeGroupName" /> + <camunda:in source="addOnVfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:out source="vfModuleId" target="createdVfModuleId" /> + <camunda:out source="vfModuleOutputParameters" target="createdVfModuleOutputParameters" /> + <camunda:out source="rollbackData" target="DCVAM_addOnRollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="false" target="usePreload" /> + <camunda:in source="aLaCarte" target="aLaCarte" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1lh21yl</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1llbx0k</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_1lfmdks" name="Validate Create Add-On VF Module Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1llbx0k</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1mguf2m</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.validateAddOnModule(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_0v6povc"> + <bpmn:incoming>SequenceFlow_132bohl</bpmn:incoming> + <bpmn:terminateEventDefinition /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1llbx0k" sourceRef="CreateAddOnVfModule" targetRef="Task_1lfmdks" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1vyqr5o" name="Are there more add-on modules?" default="SequenceFlow_132bohl"> + <bpmn:extensionElements> + <camunda:properties> + <camunda:property /> + </camunda:properties> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1a6wyuu</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0j52dxv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_132bohl</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0jz6bqn</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_132bohl" name="No" sourceRef="ExclusiveGateway_1vyqr5o" targetRef="EndEvent_0v6povc" /> + <bpmn:callActivity id="CreateVNF" name="Create VNF" calledElement="DoCreateVnf"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vnfInputParameters" target="vnfInputParameters" /> + <camunda:in source="productFamilyId" target="productFamilyId" /> + <camunda:out source="vnfId" target="vnfId" /> + <camunda:out source="vnfOutputParams" target="vnfOutputParams" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="vnfName" target="vnfName" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" /> + <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_19ohb1a</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07u8e3l</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="PreProcessAddOnModule" name="PreProcess Add-On Module" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0jz6bqn</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_12x4dvf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.preProcessAddOnModule(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="QueryCatalogDB" name="Query Catalog DB for VF Modules" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1xd3ri5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_19ohb1a</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_1hx9s0y" name="Less than initialCount?" default="SequenceFlow_1vrogpr"> + <bpmn:incoming>SequenceFlow_1mguf2m</bpmn:incoming> + <bpmn:incoming>SequenceFlow_12x4dvf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0kld3qt</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1vrogpr</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0jz6bqn" name="yes" sourceRef="ExclusiveGateway_1vyqr5o" targetRef="PreProcessAddOnModule"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("addOnModulesDeployed") < execution.getVariable("addOnModulesToDeploy")}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0kld3qt" name="yes" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="GenerateAddOnModuleName"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("instancesOfThisModuleDeployed") < execution.getVariable("initialCount")}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1mguf2m" sourceRef="Task_1lfmdks" targetRef="ExclusiveGateway_1hx9s0y" /> + <bpmn:sequenceFlow id="SequenceFlow_1vrogpr" name="no" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="PostProcessAddOnModule" /> + <bpmn:sequenceFlow id="SequenceFlow_1hf7k7q" sourceRef="GenerateBaseModuleName" targetRef="CreateBaseVfModule" /> + <bpmn:callActivity id="GenerateBaseModuleName" name="Generate Base Module Name" calledElement="GenerateVfModuleName"> + <bpmn:extensionElements> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="baseVfModuleLabel" target="vfModuleLabel" /> + <camunda:in source="basePersonaModelId" target="personaModelId" /> + <camunda:out source="vfModuleName" target="baseVfModuleName" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_07u8e3l</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1hf7k7q</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:callActivity id="GenerateAddOnModuleName" name="Generate Add-On Module Name" calledElement="GenerateVfModuleName"> + <bpmn:extensionElements> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="addOnVfModuleLabel" target="vfModuleLabel" /> + <camunda:in source="addOnPersonaModelId" target="personaModelId" /> + <camunda:out source="vfModuleName" target="addOnVfModuleName" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0kld3qt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lh21yl</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1lh21yl" sourceRef="GenerateAddOnModuleName" targetRef="CreateAddOnVfModule" /> + <bpmn:sequenceFlow id="SequenceFlow_12x4dvf" sourceRef="PreProcessAddOnModule" targetRef="ExclusiveGateway_1hx9s0y" /> + <bpmn:sequenceFlow id="SequenceFlow_1ixcnb6" sourceRef="CreateBaseVfModule" targetRef="Task_054rz9i" /> + <bpmn:sequenceFlow id="SequenceFlow_1a6wyuu" sourceRef="Task_054rz9i" targetRef="ExclusiveGateway_1vyqr5o" /> + <bpmn:scriptTask id="Task_054rz9i" name="Validate Create Base VF Module Response" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ixcnb6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1a6wyuu</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.validateBaseModule(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_0u7tbb2" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn:endEvent id="EndEvent_16s0a3q"> + <bpmn:incoming>SequenceFlow_1h74w1v</bpmn:incoming> + </bpmn:endEvent> + <bpmn:callActivity id="CallActivity_0gtajjm" name="Call DoCreateVnfAndModulesRollback" calledElement="DoCreateVnfAndModulesRollback"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_03v8mmc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yu0im2</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1l0rxnh</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_03v8mmc</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvam = new DoCreateVnfAndModules() +dcvam.preProcessRollback(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0yu0im2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1h74w1v</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvam = new DoCreateVnfAndModules() +dcvam.postProcessRollback(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1l0rxnh" sourceRef="StartEvent_1nbwxby" targetRef="PreProcessRollback" /> + <bpmn:sequenceFlow id="SequenceFlow_1h74w1v" sourceRef="PostProcessRollback" targetRef="EndEvent_16s0a3q" /> + <bpmn:sequenceFlow id="SequenceFlow_03v8mmc" sourceRef="PreProcessRollback" targetRef="CallActivity_0gtajjm" /> + <bpmn:sequenceFlow id="SequenceFlow_0yu0im2" sourceRef="CallActivity_0gtajjm" targetRef="PostProcessRollback" /> + <bpmn:startEvent id="StartEvent_1nbwxby"> + <bpmn:outgoing>SequenceFlow_1l0rxnh</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:startEvent> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_19ohb1a" sourceRef="QueryCatalogDB" targetRef="CreateVNF" /> + <bpmn:sequenceFlow id="SequenceFlow_07u8e3l" sourceRef="CreateVNF" targetRef="GenerateBaseModuleName" /> + <bpmn:sequenceFlow id="SequenceFlow_0j52dxv" sourceRef="PostProcessAddOnModule" targetRef="ExclusiveGateway_1vyqr5o" /> + <bpmn:scriptTask id="PostProcessAddOnModule" name="PostProcess Add-On Module" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1vrogpr</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0j52dxv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.postProcessAddOnModule(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1t407j7" sourceRef="Task_1mrb29r" targetRef="Task_0qrf3e8" /> + <bpmn:sequenceFlow id="SequenceFlow_0baw1tl" sourceRef="Task_0qrf3e8" targetRef="GenerateBaseModuleName" /> + <bpmn:scriptTask id="Task_1mrb29r" name="Create Platform" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_07u8e3l</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t407j7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.createPlatform(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0qrf3e8" name="Create Line-of-Business" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1t407j7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0baw1tl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doCreateVnfAndModules = new DoCreateVnfAndModules() +doCreateVnfAndModules.createLineOfBusiness(execution)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:process> + <bpmn:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModules"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="152" y="147" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="170" y="183" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1tco8kw_di" bpmnElement="PreProcessRequest"> + <dc:Bounds x="256" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1sztzw8_di" bpmnElement="CreateBaseVfModule"> + <dc:Bounds x="1239" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0o4vuzt_di" bpmnElement="SequenceFlow_0o4vuzt"> + <di:waypoint xsi:type="dc:Point" x="188" y="165" /> + <di:waypoint xsi:type="dc:Point" x="256" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="222" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1xd3ri5_di" bpmnElement="SequenceFlow_1xd3ri5"> + <di:waypoint xsi:type="dc:Point" x="356" y="165" /> + <di:waypoint xsi:type="dc:Point" x="418" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="387" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0auiwq0_di" bpmnElement="CreateAddOnVfModule"> + <dc:Bounds x="2100" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1eeaxqn_di" bpmnElement="Task_1lfmdks"> + <dc:Bounds x="2239" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1h41bs7_di" bpmnElement="EndEvent_0v6povc"> + <dc:Bounds x="2362" y="147" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2380" y="183" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1llbx0k_di" bpmnElement="SequenceFlow_1llbx0k"> + <di:waypoint xsi:type="dc:Point" x="2200" y="97" /> + <di:waypoint xsi:type="dc:Point" x="2239" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2220" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1vyqr5o_di" bpmnElement="ExclusiveGateway_1vyqr5o" isMarkerVisible="true"> + <dc:Bounds x="1517" y="140" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1498" y="190" width="90" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_132bohl_di" bpmnElement="SequenceFlow_132bohl"> + <di:waypoint xsi:type="dc:Point" x="1542" y="140" /> + <di:waypoint xsi:type="dc:Point" x="1542" y="36" /> + <di:waypoint xsi:type="dc:Point" x="2380" y="36" /> + <di:waypoint xsi:type="dc:Point" x="2380" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1962" y="21" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0zr4ioh_di" bpmnElement="CreateVNF"> + <dc:Bounds x="574" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0tknqn1_di" bpmnElement="PreProcessAddOnModule"> + <dc:Bounds x="1651" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1u6qcio_di" bpmnElement="QueryCatalogDB"> + <dc:Bounds x="418" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1hx9s0y_di" bpmnElement="ExclusiveGateway_1hx9s0y" isMarkerVisible="true"> + <dc:Bounds x="1844" y="140" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1837" y="190" width="63" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jz6bqn_di" bpmnElement="SequenceFlow_0jz6bqn"> + <di:waypoint xsi:type="dc:Point" x="1567" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1609" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1609" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1649" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1571" y="147" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kld3qt_di" bpmnElement="SequenceFlow_0kld3qt"> + <di:waypoint xsi:type="dc:Point" x="1869" y="140" /> + <di:waypoint xsi:type="dc:Point" x="1869" y="89" /> + <di:waypoint xsi:type="dc:Point" x="1952" y="89" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1886" y="96" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mguf2m_di" bpmnElement="SequenceFlow_1mguf2m"> + <di:waypoint xsi:type="dc:Point" x="2289" y="137" /> + <di:waypoint xsi:type="dc:Point" x="2289" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1894" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2304" y="151" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vrogpr_di" bpmnElement="SequenceFlow_1vrogpr"> + <di:waypoint xsi:type="dc:Point" x="1869" y="190" /> + <di:waypoint xsi:type="dc:Point" x="1869" y="221" /> + <di:waypoint xsi:type="dc:Point" x="1869" y="221" /> + <di:waypoint xsi:type="dc:Point" x="1869" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1751" y="301" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1878" y="247" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hf7k7q_di" bpmnElement="SequenceFlow_1hf7k7q"> + <di:waypoint xsi:type="dc:Point" x="1191" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1239" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1215" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0rz8zl9_di" bpmnElement="GenerateBaseModuleName"> + <dc:Bounds x="1091" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0otq8mo_di" bpmnElement="GenerateAddOnModuleName"> + <dc:Bounds x="1952" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lh21yl_di" bpmnElement="SequenceFlow_1lh21yl"> + <di:waypoint xsi:type="dc:Point" x="2052" y="97" /> + <di:waypoint xsi:type="dc:Point" x="2100" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2076" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12x4dvf_di" bpmnElement="SequenceFlow_12x4dvf"> + <di:waypoint xsi:type="dc:Point" x="1751" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1844" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1798" y="140" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ixcnb6_di" bpmnElement="SequenceFlow_1ixcnb6"> + <di:waypoint xsi:type="dc:Point" x="1339" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1381" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1360" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1a6wyuu_di" bpmnElement="SequenceFlow_1a6wyuu"> + <di:waypoint xsi:type="dc:Point" x="1481" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1517" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1499" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1obevnp_di" bpmnElement="Task_054rz9i"> + <dc:Bounds x="1381" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_0u7tbb2_di" bpmnElement="SubProcess_0u7tbb2" isExpanded="true"> + <dc:Bounds x="113" y="382" width="783" height="195" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_16s0a3q_di" bpmnElement="EndEvent_16s0a3q"> + <dc:Bounds x="843" y="460" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861" y="501" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0gtajjm_di" bpmnElement="CallActivity_0gtajjm"> + <dc:Bounds x="508" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_12g5tld_di" bpmnElement="PreProcessRollback"> + <dc:Bounds x="345" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1nk6apr_di" bpmnElement="PostProcessRollback"> + <dc:Bounds x="676" y="438" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1l0rxnh_di" bpmnElement="SequenceFlow_1l0rxnh"> + <di:waypoint xsi:type="dc:Point" x="246" y="478" /> + <di:waypoint xsi:type="dc:Point" x="345" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="296" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h74w1v_di" bpmnElement="SequenceFlow_1h74w1v"> + <di:waypoint xsi:type="dc:Point" x="776" y="478" /> + <di:waypoint xsi:type="dc:Point" x="808" y="478" /> + <di:waypoint xsi:type="dc:Point" x="808" y="478" /> + <di:waypoint xsi:type="dc:Point" x="843" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="823" y="478" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03v8mmc_di" bpmnElement="SequenceFlow_03v8mmc"> + <di:waypoint xsi:type="dc:Point" x="445" y="478" /> + <di:waypoint xsi:type="dc:Point" x="508" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="477" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yu0im2_di" bpmnElement="SequenceFlow_0yu0im2"> + <di:waypoint xsi:type="dc:Point" x="608" y="478" /> + <di:waypoint xsi:type="dc:Point" x="676" y="478" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="642" y="463" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_00jdkur_di" bpmnElement="StartEvent_1nbwxby"> + <dc:Bounds x="210" y="460" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="228" y="501" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_19ohb1a_di" bpmnElement="SequenceFlow_19ohb1a"> + <di:waypoint xsi:type="dc:Point" x="518" y="165" /> + <di:waypoint xsi:type="dc:Point" x="574" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="546" y="140" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07u8e3l_di" bpmnElement="SequenceFlow_07u8e3l"> + <di:waypoint xsi:type="dc:Point" x="674" y="165" /> + <di:waypoint xsi:type="dc:Point" x="742" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="708" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j52dxv_di" bpmnElement="SequenceFlow_0j52dxv"> + <di:waypoint xsi:type="dc:Point" x="1651" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1543" y="301" /> + <di:waypoint xsi:type="dc:Point" x="1542" y="190" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1597" y="286" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0srhar8_di" bpmnElement="PostProcessAddOnModule"> + <dc:Bounds x="1651" y="262" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1t407j7_di" bpmnElement="SequenceFlow_1t407j7"> + <di:waypoint xsi:type="dc:Point" x="842" y="165" /> + <di:waypoint xsi:type="dc:Point" x="916" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="879" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0baw1tl_di" bpmnElement="SequenceFlow_0baw1tl"> + <di:waypoint xsi:type="dc:Point" x="1016" y="165" /> + <di:waypoint xsi:type="dc:Point" x="1091" y="165" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1054" y="150" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0i9vj5o_di" bpmnElement="Task_1mrb29r"> + <dc:Bounds x="742" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0stghuy_di" bpmnElement="Task_0qrf3e8"> + <dc:Bounds x="916" y="125" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn new file mode 100644 index 0000000000..a900a4e241 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn @@ -0,0 +1,541 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoCreateVnfAndModulesRollback" name="DoCreateVnfAndModulesRollback" isExecutable="true"> + <bpmn2:subProcess id="SubProcess_1" name="Rollback Error Handling" triggeredByEvent="true"> + <bpmn2:startEvent id="CatchExceptions" name="Catch Exceptions"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" /> + <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1wch84s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvfmr = new DoCreateVfModuleRollback() +dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event') +dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_1wch84s" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" /> + <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wch84s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.setFailedRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:subProcess> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_86" /> + </bpmn2:boundaryEvent> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_2" /> + <bpmn2:startEvent id="StartEvent_1gai4qr"> + <bpmn2:outgoing>SequenceFlow_1537b7m</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_12v8g91" name="Are there VF Modules to roll back?" default="SequenceFlow_1r6wyy6"> + <bpmn2:incoming>SequenceFlow_1srw52v</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0zjzorm</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_19xaddm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1r6wyy6</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0v85t87</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09ajxqr" name="Delete VNF?" default="SequenceFlow_1yas9ol"> + <bpmn2:incoming>SequenceFlow_1g6psjt</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_152tazp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kr0r4a</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1yas9ol</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:endEvent id="EndEvent_1seag7u"> + <bpmn2:incoming>SequenceFlow_0mk9lrj</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_03cc9y6</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1537b7m" sourceRef="StartEvent_1gai4qr" targetRef="PreProcessRequest" /> + <bpmn2:scriptTask id="PreProcessRequest" name="PreProcess Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1537b7m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bmsi5h</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr = new DoCreateVnfAndModulesRollback() +dcvamr.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0bmsi5h" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_01o1lkn" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ycq005" sourceRef="Task_1sbxjc8" targetRef="RollbackCreateVFModule" /> + <bpmn2:scriptTask id="Task_1sbxjc8" name="Prepare Rollback Create VF Module Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0v85t87</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ycq005</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr = new DoCreateVnfAndModulesRollback() +dcvamr.preProcessCreateVfModuleRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="RollbackCreateVFModule" name="Rollback Create VF Module " calledElement="DoCreateVfModuleRollback"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_RollbackData" target="rollbackData" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source=""true"" target="isVidRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="disableRollback" target="disableRollback" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="rolledBack" target="DCVM_rolledBack" /> + <camunda:out source="rollbackError" target="rollbackError" /> + <camunda:in source="DCVAMR_aLaCarte" target="aLaCarte" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1ycq005</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_181hb2a</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1r6wyy6" name="no" sourceRef="ExclusiveGateway_12v8g91" targetRef="ExclusiveGateway_07kr3gt" /> + <bpmn2:sequenceFlow id="SequenceFlow_0v85t87" name="yes" sourceRef="ExclusiveGateway_12v8g91" targetRef="Task_1sbxjc8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_numOfModulesToDelete") > 0}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1kr0r4a" name="yes" sourceRef="ExclusiveGateway_09ajxqr" targetRef="Task_0p8fmrm"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackVnfCreate") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_04yd2yr" sourceRef="Task_0p8fmrm" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yas9ol" name="no" sourceRef="ExclusiveGateway_09ajxqr" targetRef="SetSuccessfulRollbackStatus" /> + <bpmn2:callActivity id="Task_0p8fmrm" name="Delete VNF" calledElement="DoDeleteVnf"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1kr0r4a</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04yd2yr</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_181hb2a" sourceRef="RollbackCreateVFModule" targetRef="Task_0kf9oby" /> + <bpmn2:scriptTask id="Task_0kf9oby" name="PostProcess Rollback Create VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_181hb2a</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1srw52v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr = new DoCreateVnfAndModulesRollback() +dcvamr.postProcessCreateVfModuleRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1srw52v" sourceRef="Task_0kf9oby" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:scriptTask id="PreProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SDNCDeactivateYes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0nysmc9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_1ug98j4" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1hc04x2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19xaddm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr = new DoDeleteVnfAndModules() +String response = execution.getVariable("DCVAMR_deactivateSDNCAdapterResponse") +dcvamr.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVAMR_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0nysmc9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1hc04x2</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0nysmc9" sourceRef="PreProcessSDNCDeactivateRequest" targetRef="SDNCAdapterTopologyDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_1hc04x2" sourceRef="SDNCAdapterTopologyDeactivate" targetRef="ScriptTask_1ug98j4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1sr014x" name="Send SDNC Deactivate?" default="SequenceFlow_0zjzorm"> + <bpmn2:incoming>SequenceFlow_1rezswi</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zjzorm</bpmn2:outgoing> + <bpmn2:outgoing>SDNCDeactivateYes</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0zjzorm" name="no" sourceRef="ExclusiveGateway_1sr014x" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:sequenceFlow id="SDNCDeactivateYes" name="yes" sourceRef="ExclusiveGateway_1sr014x" targetRef="PreProcessSDNCDeactivateRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCActivate") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_19xaddm" sourceRef="ScriptTask_1ug98j4" targetRef="ExclusiveGateway_12v8g91" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_07kr3gt" name="Send SDNC Unassign?" default="SequenceFlow_1g6psjt"> + <bpmn2:incoming>SequenceFlow_1r6wyy6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1g6psjt</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_01am36p</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1g6psjt" name="no" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ExclusiveGateway_09ajxqr" /> + <bpmn2:scriptTask id="ScriptTask_1ma7nvr" name="PreProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_01am36p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a5ecvu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_018fqnd" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DCVAMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DCVAMR_unassignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0a5ecvu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ilok6u</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0b3jyb7" name="PostProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ilok6u</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_152tazp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr = new DoDeleteVnfAndModules() +String response = execution.getVariable("DCVAMR_unassignSDNCAdapterResponse") +dcvamr.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0a5ecvu" sourceRef="ScriptTask_1ma7nvr" targetRef="CallActivity_018fqnd" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ilok6u" sourceRef="CallActivity_018fqnd" targetRef="ScriptTask_0b3jyb7" /> + <bpmn2:sequenceFlow id="SequenceFlow_152tazp" sourceRef="ScriptTask_0b3jyb7" targetRef="ExclusiveGateway_09ajxqr" /> + <bpmn2:sequenceFlow id="SequenceFlow_01am36p" name="yes" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ScriptTask_1ma7nvr"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCAssign") == "true"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_01o1lkn" name="Skip rollback?" default="SequenceFlow_1rezswi"> + <bpmn2:incoming>SequenceFlow_0bmsi5h</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rezswi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0mk9lrj</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1rezswi" name="no" sourceRef="ExclusiveGateway_01o1lkn" targetRef="ExclusiveGateway_1sr014x" /> + <bpmn2:sequenceFlow id="SequenceFlow_0mk9lrj" name="yes" sourceRef="ExclusiveGateway_01o1lkn" targetRef="EndEvent_1seag7u"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_03cc9y6" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_1seag7u" /> + <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yas9ol</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_04yd2yr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_03cc9y6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcvamr= new DoCreateVnfAndModulesRollback() +dcvamr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModulesRollback"> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="16" y="1012" width="621" height="152" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions"> + <dc:Bounds x="36" y="1063" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="42" y="1108" width="85" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException"> + <dc:Bounds x="361" y="1041" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1"> + <dc:Bounds x="537" y="1063" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="555" y="1099" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="619" y="1059" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="637" y="1095" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2"> + <dc:Bounds x="710" y="1058" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="728" y="1099" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281"> + <di:waypoint xsi:type="dc:Point" x="72" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="161" y="1081" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="117" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188"> + <di:waypoint xsi:type="dc:Point" x="461" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="537" y="1081" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189"> + <di:waypoint xsi:type="dc:Point" x="655" y="1077" /> + <di:waypoint xsi:type="dc:Point" x="710" y="1076" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="683" y="1061.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_1gai4qr_di" bpmnElement="StartEvent_1gai4qr"> + <dc:Bounds x="-91" y="655" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-73" y="691" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_12v8g91_di" bpmnElement="ExclusiveGateway_12v8g91" isMarkerVisible="true"> + <dc:Bounds x="806" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="753" y="619" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_09ajxqr_di" bpmnElement="ExclusiveGateway_09ajxqr" isMarkerVisible="true"> + <dc:Bounds x="1291" y="799" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1241" y="786" width="62" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1seag7u_di" bpmnElement="EndEvent_1seag7u"> + <dc:Bounds x="1678" y="806" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2135" y="827" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1537b7m_di" bpmnElement="SequenceFlow_1537b7m"> + <di:waypoint xsi:type="dc:Point" x="-55" y="673" /> + <di:waypoint xsi:type="dc:Point" x="-3" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-29" y="658" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0fckboe_di" bpmnElement="PreProcessRequest"> + <dc:Bounds x="-3" y="633" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bmsi5h_di" bpmnElement="SequenceFlow_0bmsi5h"> + <di:waypoint xsi:type="dc:Point" x="97" y="673" /> + <di:waypoint xsi:type="dc:Point" x="124" y="673" /> + <di:waypoint xsi:type="dc:Point" x="124" y="673" /> + <di:waypoint xsi:type="dc:Point" x="150" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="139" y="673" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ycq005_di" bpmnElement="SequenceFlow_1ycq005"> + <di:waypoint xsi:type="dc:Point" x="983" y="494" /> + <di:waypoint xsi:type="dc:Point" x="1016" y="495" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1000" y="480" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1sc2oye_di" bpmnElement="Task_1sbxjc8"> + <dc:Bounds x="883" y="455" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1lj1iud_di" bpmnElement="RollbackCreateVFModule"> + <dc:Bounds x="1016" y="455" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1r6wyy6_di" bpmnElement="SequenceFlow_1r6wyy6"> + <di:waypoint xsi:type="dc:Point" x="831" y="698" /> + <di:waypoint xsi:type="dc:Point" x="831" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="838" y="759.6519350414114" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0v85t87_di" bpmnElement="SequenceFlow_0v85t87"> + <di:waypoint xsi:type="dc:Point" x="831" y="648" /> + <di:waypoint xsi:type="dc:Point" x="831" y="495" /> + <di:waypoint xsi:type="dc:Point" x="883" y="495" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="837" y="572.1521739130435" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kr0r4a_di" bpmnElement="SequenceFlow_1kr0r4a"> + <di:waypoint xsi:type="dc:Point" x="1316" y="799" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1390" y="733" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1322" y="765.8928772635815" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04yd2yr_di" bpmnElement="SequenceFlow_04yd2yr"> + <di:waypoint xsi:type="dc:Point" x="1490" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1592" y="733" /> + <di:waypoint xsi:type="dc:Point" x="1592" y="784" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1541" y="718" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yas9ol_di" bpmnElement="SequenceFlow_1yas9ol"> + <di:waypoint xsi:type="dc:Point" x="1341" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1542" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1503" y="807" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_01fs058_di" bpmnElement="Task_0p8fmrm"> + <dc:Bounds x="1390" y="693" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_181hb2a_di" bpmnElement="SequenceFlow_181hb2a"> + <di:waypoint xsi:type="dc:Point" x="1116" y="495" /> + <di:waypoint xsi:type="dc:Point" x="1155" y="495" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1136" y="480" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_196e1px_di" bpmnElement="Task_0kf9oby"> + <dc:Bounds x="1155" y="455" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1srw52v_di" bpmnElement="SequenceFlow_1srw52v"> + <di:waypoint xsi:type="dc:Point" x="1205" y="535" /> + <di:waypoint xsi:type="dc:Point" x="1205" y="673" /> + <di:waypoint xsi:type="dc:Point" x="856" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1220" y="604" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12w53bf_di" bpmnElement="PreProcessSDNCDeactivateRequest"> + <dc:Bounds x="323" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ug98j4_di" bpmnElement="ScriptTask_1ug98j4"> + <dc:Bounds x="617" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1gvc90m_di" bpmnElement="SDNCAdapterTopologyDeactivate"> + <dc:Bounds x="473" y="795" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nysmc9_di" bpmnElement="SequenceFlow_0nysmc9"> + <di:waypoint xsi:type="dc:Point" x="423" y="835" /> + <di:waypoint xsi:type="dc:Point" x="473" y="835" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="820" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hc04x2_di" bpmnElement="SequenceFlow_1hc04x2"> + <di:waypoint xsi:type="dc:Point" x="573" y="835" /> + <di:waypoint xsi:type="dc:Point" x="617" y="835" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="595" y="820" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1sr014x_di" bpmnElement="ExclusiveGateway_1sr014x" isMarkerVisible="true"> + <dc:Bounds x="277" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="271" y="608" width="62" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zjzorm_di" bpmnElement="SequenceFlow_0zjzorm"> + <di:waypoint xsi:type="dc:Point" x="327" y="673" /> + <di:waypoint xsi:type="dc:Point" x="806" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="561" y="658" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tgi77m_di" bpmnElement="SDNCDeactivateYes"> + <di:waypoint xsi:type="dc:Point" x="302" y="698" /> + <di:waypoint xsi:type="dc:Point" x="302" y="835" /> + <di:waypoint xsi:type="dc:Point" x="323" y="835" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="308" y="756.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19xaddm_di" bpmnElement="SequenceFlow_19xaddm"> + <di:waypoint xsi:type="dc:Point" x="717" y="835" /> + <di:waypoint xsi:type="dc:Point" x="781" y="835" /> + <di:waypoint xsi:type="dc:Point" x="781" y="673" /> + <di:waypoint xsi:type="dc:Point" x="806" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="796" y="754" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_07kr3gt_di" bpmnElement="ExclusiveGateway_07kr3gt" isMarkerVisible="true"> + <dc:Bounds x="806" y="799" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="841" y="858" width="62" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1g6psjt_di" bpmnElement="SequenceFlow_1g6psjt"> + <di:waypoint xsi:type="dc:Point" x="856" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1074" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1291" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1083" y="824" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ma7nvr_di" bpmnElement="ScriptTask_1ma7nvr"> + <dc:Bounds x="873" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_018fqnd_di" bpmnElement="CallActivity_018fqnd"> + <dc:Bounds x="1034" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0b3jyb7_di" bpmnElement="ScriptTask_0b3jyb7"> + <dc:Bounds x="1195" y="905" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a5ecvu_di" bpmnElement="SequenceFlow_0a5ecvu"> + <di:waypoint xsi:type="dc:Point" x="973" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1004" y="930" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ilok6u_di" bpmnElement="SequenceFlow_1ilok6u"> + <di:waypoint xsi:type="dc:Point" x="1134" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1195" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1165" y="930" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_152tazp_di" bpmnElement="SequenceFlow_152tazp"> + <di:waypoint xsi:type="dc:Point" x="1295" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1316" y="849" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1306" y="920" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01am36p_di" bpmnElement="SequenceFlow_01am36p"> + <di:waypoint xsi:type="dc:Point" x="831" y="849" /> + <di:waypoint xsi:type="dc:Point" x="831" y="945" /> + <di:waypoint xsi:type="dc:Point" x="873" y="945" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="838" y="897" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_01o1lkn_di" bpmnElement="ExclusiveGateway_01o1lkn" isMarkerVisible="true"> + <dc:Bounds x="150" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="136" y="614" width="68" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rezswi_di" bpmnElement="SequenceFlow_1rezswi"> + <di:waypoint xsi:type="dc:Point" x="200" y="673" /> + <di:waypoint xsi:type="dc:Point" x="239" y="673" /> + <di:waypoint xsi:type="dc:Point" x="239" y="673" /> + <di:waypoint xsi:type="dc:Point" x="277" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="214" y="648" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mk9lrj_di" bpmnElement="SequenceFlow_0mk9lrj"> + <di:waypoint xsi:type="dc:Point" x="175" y="698" /> + <di:waypoint xsi:type="dc:Point" x="175" y="991" /> + <di:waypoint xsi:type="dc:Point" x="1696" y="1002" /> + <di:waypoint xsi:type="dc:Point" x="1696" y="842" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="147" y="775" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_03cc9y6_di" bpmnElement="SequenceFlow_03cc9y6"> + <di:waypoint xsi:type="dc:Point" x="1642" y="824" /> + <di:waypoint xsi:type="dc:Point" x="1678" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1660" y="809" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1a3lghn_di" bpmnElement="SetSuccessfulRollbackStatus"> + <dc:Bounds x="1542" y="784" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wch84s_di" bpmnElement="SequenceFlow_1wch84s"> + <di:waypoint xsi:type="dc:Point" x="261" y="1081" /> + <di:waypoint xsi:type="dc:Point" x="361" y="1081" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="311" y="1066" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1od8f5n_di" bpmnElement="SetFailedRollbackStatus"> + <dc:Bounds x="161" y="1041" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn new file mode 100644 index 0000000000..73c21090ea --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn @@ -0,0 +1,470 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoCustomDeleteE2EServiceInstanceV3" name="All Resources Deleted" isExecutable="true"> + <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1uqzt26"> + <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0vi0sv6</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_01erufg" name=" AAI Delete (svc instance) " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0oj2anh</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1ev7z6q</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.deleteServiceInstance(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0sf5lpt"> + <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_06utmg4"> + <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" /> + <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" /> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" /> + <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" /> + <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="EndEvent_1uqzt26" /> + <bpmn:sequenceFlow id="SequenceFlow_0vi0sv6" sourceRef="ScriptTask_1rtnsh8" targetRef="ScriptTask_146jt8v" /> + <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For WAN" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ubor5z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dza4q4</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1dza4q4" sourceRef="ScriptTask_0z30dax" targetRef="CallActivity_Del_SDNC_cust" /> + <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_0z1x3sg" targetRef="Task_0963dho" /> + <bpmn:scriptTask id="Task_0z1x3sg" name="Prepare Resource Delele For NS" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1x3lehs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_0963dho" name="Call Network Service Delete for NS" calledElement="DoDeleteVFCNetworkServiceInstance"> + <bpmn:extensionElements> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceTemplateId" target="resourceTemplateId" /> + <camunda:in source="resourceInstanceId" target="resourceInstanceId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0phwem2</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1dza4q4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lxqjmp</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1icwpye</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ev7z6q</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:scriptTask id="ScriptTask_146jt8v" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0vi0sv6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ym9otf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_00tg69u" name="Init Resource Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_adapters_openecomp_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1ym9otf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1j08ko3</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1ym9otf" sourceRef="ScriptTask_146jt8v" targetRef="ServiceTask_00tg69u" /> + <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" /> + <bpmn:scriptTask id="ScriptTask_0o5bglz" name="Sequense Resources" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1j08ko3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_03c0zlq</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.sequenceResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1j08ko3" sourceRef="ServiceTask_00tg69u" targetRef="ScriptTask_0o5bglz" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_07toixi" name="Check Current Resource"> + <bpmn:incoming>SequenceFlow_1htjmkv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ubor5z</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1x3lehs</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_12q6a51" name="Get Current Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_03c0zlq</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0s1lswk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1htjmkv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.getCurrentResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_03c0zlq" sourceRef="ScriptTask_0o5bglz" targetRef="ScriptTask_12q6a51" /> + <bpmn:sequenceFlow id="SequenceFlow_1htjmkv" sourceRef="ScriptTask_12q6a51" targetRef="ExclusiveGateway_07toixi" /> + <bpmn:sequenceFlow id="SequenceFlow_1ubor5z" name="SDN-C" sourceRef="ExclusiveGateway_07toixi" targetRef="ScriptTask_0z30dax"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" ) == "SDN-C" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1x3lehs" name="VF-C" sourceRef="ExclusiveGateway_07toixi" targetRef="Task_0z1x3sg"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" ) == "VF-C" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:scriptTask id="ScriptTask_0w46sge" name="Parse Next Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1lxqjmp</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0phwem2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0l5r96s</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.parseNextResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1lxqjmp" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ScriptTask_0w46sge" /> + <bpmn:sequenceFlow id="SequenceFlow_0phwem2" sourceRef="Task_0963dho" targetRef="ScriptTask_0w46sge" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1hgjg3u" name="Is All Resource Deleted"> + <bpmn:incoming>SequenceFlow_0l5r96s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0talboa</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0s1lswk</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0l5r96s" sourceRef="ScriptTask_0w46sge" targetRef="ExclusiveGateway_1hgjg3u" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_16046vb" name="Is SDNC Service Contained"> + <bpmn:incoming>SequenceFlow_0talboa</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1icwpye</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0oj2anh</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1icwpye" name="yes" sourceRef="ExclusiveGateway_16046vb" targetRef="Task_0edkv0m"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1ev7z6q" sourceRef="Task_0edkv0m" targetRef="ScriptTask_01erufg" /> + <bpmn:sequenceFlow id="SequenceFlow_0oj2anh" name="no" sourceRef="ExclusiveGateway_16046vb" targetRef="ScriptTask_01erufg"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "false" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0talboa" name="yes" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ExclusiveGateway_16046vb"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0s1lswk" name="no" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ScriptTask_12q6a51"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" ) == "false" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCustomDeleteE2EServiceInstanceV3"> + <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r"> + <dc:Bounds x="-612" y="-35" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-618" y="6" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv"> + <dc:Bounds x="-519" y="-57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26"> + <dc:Bounds x="1388" y="790" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1316" y="831" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8"> + <dc:Bounds x="-193" y="-57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg"> + <dc:Bounds x="1356" y="513" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true"> + <dc:Bounds x="292" y="675" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9"> + <di:waypoint xsi:type="dc:Point" x="-576" y="-17" /> + <di:waypoint xsi:type="dc:Point" x="-519" y="-17" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-592.5" y="-38" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy"> + <di:waypoint xsi:type="dc:Point" x="-419" y="-17" /> + <di:waypoint xsi:type="dc:Point" x="-357" y="-17" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-433" y="-38" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl"> + <di:waypoint xsi:type="dc:Point" x="1406" y="593" /> + <di:waypoint xsi:type="dc:Point" x="1406" y="790" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1376" y="685.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0vi0sv6_di" bpmnElement="SequenceFlow_0vi0sv6"> + <di:waypoint xsi:type="dc:Point" x="-93" y="-17" /> + <di:waypoint xsi:type="dc:Point" x="-26" y="-17" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-104.5" y="-38" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt"> + <dc:Bounds x="360" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="288" y="783" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4"> + <dc:Bounds x="653" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="783" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr"> + <dc:Bounds x="464" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3"> + <di:waypoint xsi:type="dc:Point" x="396" y="760" /> + <di:waypoint xsi:type="dc:Point" x="464" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="340" y="745" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo"> + <di:waypoint xsi:type="dc:Point" x="564" y="760" /> + <di:waypoint xsi:type="dc:Point" x="653" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="520" y="745" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax"> + <dc:Bounds x="470" y="111" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dza4q4_di" bpmnElement="SequenceFlow_1dza4q4"> + <di:waypoint xsi:type="dc:Point" x="570" y="151" /> + <di:waypoint xsi:type="dc:Point" x="688" y="152" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="130.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx"> + <di:waypoint xsi:type="dc:Point" x="576" y="378" /> + <di:waypoint xsi:type="dc:Point" x="688" y="378" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="587" y="357" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_0z1x3sg"> + <dc:Bounds x="476" y="338" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_0963dho"> + <dc:Bounds x="688" y="338" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust"> + <dc:Bounds x="688" y="112" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m"> + <dc:Bounds x="1356" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_146jt8v_di" bpmnElement="ScriptTask_146jt8v"> + <dc:Bounds x="-26" y="-57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_00tg69u_di" bpmnElement="ServiceTask_00tg69u"> + <dc:Bounds x="-26" y="67" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ym9otf_di" bpmnElement="SequenceFlow_1ym9otf"> + <di:waypoint xsi:type="dc:Point" x="24" y="23" /> + <di:waypoint xsi:type="dc:Point" x="24" y="67" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-6" y="39" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z"> + <dc:Bounds x="-357" y="-57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu"> + <di:waypoint xsi:type="dc:Point" x="-257" y="-17" /> + <di:waypoint xsi:type="dc:Point" x="-193" y="-17" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-225" y="-38" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0o5bglz_di" bpmnElement="ScriptTask_0o5bglz"> + <dc:Bounds x="-26" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1j08ko3_di" bpmnElement="SequenceFlow_1j08ko3"> + <di:waypoint xsi:type="dc:Point" x="24" y="147" /> + <di:waypoint xsi:type="dc:Point" x="24" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="184" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_07toixi_di" bpmnElement="ExclusiveGateway_07toixi" isMarkerVisible="true"> + <dc:Bounds x="342.56962025316454" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332" y="302" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_12q6a51_di" bpmnElement="ScriptTask_12q6a51"> + <dc:Bounds x="159" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_03c0zlq_di" bpmnElement="SequenceFlow_03c0zlq"> + <di:waypoint xsi:type="dc:Point" x="24" y="313" /> + <di:waypoint xsi:type="dc:Point" x="24" y="494" /> + <di:waypoint xsi:type="dc:Point" x="159" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="397.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1htjmkv_di" bpmnElement="SequenceFlow_1htjmkv"> + <di:waypoint xsi:type="dc:Point" x="209" y="450" /> + <di:waypoint xsi:type="dc:Point" x="209" y="273" /> + <di:waypoint xsi:type="dc:Point" x="343" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="224" y="355.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ubor5z_di" bpmnElement="SequenceFlow_1ubor5z"> + <di:waypoint xsi:type="dc:Point" x="368" y="248" /> + <di:waypoint xsi:type="dc:Point" x="368" y="151" /> + <di:waypoint xsi:type="dc:Point" x="470" y="151" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="366" y="193.5" width="35" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x3lehs_di" bpmnElement="SequenceFlow_1x3lehs"> + <di:waypoint xsi:type="dc:Point" x="368" y="298" /> + <di:waypoint xsi:type="dc:Point" x="368" y="378" /> + <di:waypoint xsi:type="dc:Point" x="476" y="378" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="379" y="353" width="27" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0w46sge_di" bpmnElement="ScriptTask_0w46sge"> + <dc:Bounds x="865" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lxqjmp_di" bpmnElement="SequenceFlow_1lxqjmp"> + <di:waypoint xsi:type="dc:Point" x="788" y="152" /> + <di:waypoint xsi:type="dc:Point" x="827" y="152" /> + <di:waypoint xsi:type="dc:Point" x="827" y="273" /> + <di:waypoint xsi:type="dc:Point" x="865" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="206.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0phwem2_di" bpmnElement="SequenceFlow_0phwem2"> + <di:waypoint xsi:type="dc:Point" x="788" y="378" /> + <di:waypoint xsi:type="dc:Point" x="827" y="378" /> + <di:waypoint xsi:type="dc:Point" x="827" y="273" /> + <di:waypoint xsi:type="dc:Point" x="865" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="319.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1hgjg3u_di" bpmnElement="ExclusiveGateway_1hgjg3u" isMarkerVisible="true"> + <dc:Bounds x="1040.9252217997464" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1029" y="302" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0l5r96s_di" bpmnElement="SequenceFlow_0l5r96s"> + <di:waypoint xsi:type="dc:Point" x="965" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1041" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1003" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_16046vb_di" bpmnElement="ExclusiveGateway_16046vb" isMarkerVisible="true"> + <dc:Bounds x="1203.8174904942966" y="248.28010139416983" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1187" y="302" width="83" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1icwpye_di" bpmnElement="SequenceFlow_1icwpye"> + <di:waypoint xsi:type="dc:Point" x="1254" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1356" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1297" y="252" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ev7z6q_di" bpmnElement="SequenceFlow_1ev7z6q"> + <di:waypoint xsi:type="dc:Point" x="1406" y="313" /> + <di:waypoint xsi:type="dc:Point" x="1406" y="513" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1376" y="407" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0oj2anh_di" bpmnElement="SequenceFlow_0oj2anh"> + <di:waypoint xsi:type="dc:Point" x="1229" y="298" /> + <di:waypoint xsi:type="dc:Point" x="1229" y="553" /> + <di:waypoint xsi:type="dc:Point" x="1356" y="553" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1238" y="419.5" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0talboa_di" bpmnElement="SequenceFlow_0talboa"> + <di:waypoint xsi:type="dc:Point" x="1091" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1204" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1138" y="252" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0s1lswk_di" bpmnElement="SequenceFlow_0s1lswk"> + <di:waypoint xsi:type="dc:Point" x="1066" y="298" /> + <di:waypoint xsi:type="dc:Point" x="1066" y="490" /> + <di:waypoint xsi:type="dc:Point" x="259" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1075" y="388" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn new file mode 100644 index 0000000000..3e76f61224 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn @@ -0,0 +1,928 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoCustomDeleteE2EServiceInstanceV2" name="DoCustomDeleteE2EServiceInstanceV2" isExecutable="true"> + <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1uqzt26"> + <bpmn:incoming>SequenceFlow_06tonva</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_00a3ijv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_01erufg" name=" AAI Delete (svc instance) " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0t5f2dt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.deleteServiceInstance(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0sf5lpt"> + <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_06utmg4"> + <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" /> + <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" /> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" /> + <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" /> + <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="ScriptTask_1vlvb1r" /> + <bpmn:scriptTask id="ScriptTask_postProcessVFCDelete" name="Post Process VFC Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1931m8u</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17b01zs</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("vfcDeleteResponse") +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.postProcessVFCDelete(execution, response, "delete")]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1g0tsto" name="Post Process SDNC Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1w2n8dn</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_09z6zl7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For Overlay" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1jfyo1x</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t1mg6y</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = "underlay" +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preSDNCResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0rpu756" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ExclusiveGateway_0plkf6p" /> + <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_preProcessVFCResourceDelete" targetRef="Task_CallNetworkServiceDeleteforVFC" /> + <bpmn:sequenceFlow id="SequenceFlow_1931m8u" sourceRef="Task_CallNetworkServiceDeleteforVFC" targetRef="ScriptTask_postProcessVFCDelete" /> + <bpmn:scriptTask id="Task_preProcessVFCResourceDelete" name="Prepare Resource Delele For VFC" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1bx4es4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preProcessVFCResourceDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_CallNetworkServiceDeleteforVFC" name="Call Network Service Delete for VFC" calledElement="DoDeleteVFCNetworkServiceInstance"> + <bpmn:extensionElements> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceTemplateId" target="resourceTemplateId" /> + <camunda:in source="resourceInstanceId" target="resourceInstanceId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1931m8u</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_0a1q5fw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0rpu756</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1g4djgh" sourceRef="Task_1j1u666" targetRef="ExclusiveGateway_125wehq" /> + <bpmn:sequenceFlow id="SequenceFlow_0uc2beq" sourceRef="Task_0edkv0m" targetRef="ExclusiveGateway_1kavnc9" /> + <bpmn:scriptTask id="Task_14erap6" name="Prepare Resource Delele For Underlay" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1lv9vmb</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_16r9z75</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = "underlay" +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preSDNCResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="Task_1j1u666" name="Call Custom Delete SDNC Underlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_0m7ks9t</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1g4djgh</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_0akcnw7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0uc2beq</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1d5z35x" name="GoTo Delete SDNC Resource"> + <bpmn:incoming>SequenceFlow_1qzxy2i</bpmn:incoming> + <bpmn:linkEventDefinition name="DeleteSDNCResource" /> + </bpmn:intermediateThrowEvent> + <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_1h6kkwi" name="Start Delete SDNC Resource"> + <bpmn:outgoing>SequenceFlow_1jfyo1x</bpmn:outgoing> + <bpmn:linkEventDefinition name="DeleteSDNCResource" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1jfyo1x" sourceRef="IntermediateThrowEvent_1h6kkwi" targetRef="ScriptTask_0z30dax" /> + <bpmn:sequenceFlow id="SequenceFlow_09z6zl7" sourceRef="ScriptTask_1g0tsto" targetRef="IntermediateThrowEvent_01vy71e" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_01vy71e" name="GoTo Delete VFC Resource"> + <bpmn:incoming>SequenceFlow_09z6zl7</bpmn:incoming> + <bpmn:linkEventDefinition name="DeleteVFCResource" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_17b01zs" sourceRef="ScriptTask_postProcessVFCDelete" targetRef="ScriptTask_postProcessDecomposeNextResource" /> + <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0ow0ck5" name="Start Delete VFC Resource"> + <bpmn:outgoing>SequenceFlow_0homduu</bpmn:outgoing> + <bpmn:linkEventDefinition name="DeleteVFCResource" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_0homduu" sourceRef="IntermediateThrowEvent_0ow0ck5" targetRef="ExclusiveGateway_ServiceResourceIsFinish" /> + <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_03gc5du" name="Start Delete Service Instance"> + <bpmn:outgoing>SequenceFlow_0t5f2dt</bpmn:outgoing> + <bpmn:linkEventDefinition name="DeleteServiceInstance" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_0t5f2dt" sourceRef="IntermediateCatchEvent_03gc5du" targetRef="ScriptTask_01erufg" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_ServiceResourceIsFinish" name="Service Resource Finish?" default="SequenceFlow_0n7qeqt"> + <bpmn:incoming>SequenceFlow_0homduu</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0eoibq3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0n7qeqt</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_13c2v9z</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0n7qeqt" name="No" sourceRef="ExclusiveGateway_ServiceResourceIsFinish" targetRef="ScriptTask_preProcessDecomposeNextResource" /> + <bpmn:scriptTask id="ScriptTask_preProcessDecomposeNextResource" name="PreProcess Decompose Next Resouce" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0n7qeqt</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1a5ki3p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preProcessDecomposeNextResource(execution )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1a5ki3p" sourceRef="ScriptTask_preProcessDecomposeNextResource" targetRef="ScriptTask_0mjvi2p" /> + <bpmn:scriptTask id="ScriptTask_postProcessDecomposeNextResource" name="PostProcess Decompose Next Resouce" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_17b01zs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0gxv0wp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.postProcessDecomposeNextResource(execution )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0gxv0wp" sourceRef="ScriptTask_postProcessDecomposeNextResource" targetRef="ScriptTask_06sbvjm" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_01fw8bb" name="GoTo Delete Servcie Instance"> + <bpmn:incoming>SequenceFlow_13c2v9z</bpmn:incoming> + <bpmn:linkEventDefinition name="DeleteServiceInstance" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_13c2v9z" name="Yes" sourceRef="ExclusiveGateway_ServiceResourceIsFinish" targetRef="IntermediateThrowEvent_01fw8bb"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("DDELSI_resourceFinish") != null && execution.getVariable("DDELSI_resourceFinish") == true }]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_052agzc" name="Found Resource?" default="SequenceFlow_1fac57w"> + <bpmn:incoming>SequenceFlow_1t1mg6y</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0a1q5fw</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1fac57w</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1t1mg6y" sourceRef="ScriptTask_0z30dax" targetRef="ExclusiveGateway_052agzc" /> + <bpmn:sequenceFlow id="SequenceFlow_0a1q5fw" name="Yes" sourceRef="ExclusiveGateway_052agzc" targetRef="CallActivity_Del_SDNC_cust"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_0plkf6p"> + <bpmn:incoming>SequenceFlow_0rpu756</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1fac57w</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lv9vmb</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1lv9vmb" sourceRef="ExclusiveGateway_0plkf6p" targetRef="Task_14erap6" /> + <bpmn:sequenceFlow id="SequenceFlow_1fac57w" name="No" sourceRef="ExclusiveGateway_052agzc" targetRef="ExclusiveGateway_0plkf6p" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_0u98ylh" name="Found Resource?" default="SequenceFlow_00knko8"> + <bpmn:incoming>SequenceFlow_16r9z75</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0m7ks9t</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_00knko8</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_16r9z75" sourceRef="Task_14erap6" targetRef="ExclusiveGateway_0u98ylh" /> + <bpmn:sequenceFlow id="SequenceFlow_0m7ks9t" name="Yes" sourceRef="ExclusiveGateway_0u98ylh" targetRef="Task_1j1u666"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_125wehq" default="SequenceFlow_15pzf5n"> + <bpmn:incoming>SequenceFlow_1g4djgh</bpmn:incoming> + <bpmn:incoming>SequenceFlow_00knko8</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0akcnw7</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_15pzf5n</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0akcnw7" name="yes" sourceRef="ExclusiveGateway_125wehq" targetRef="Task_0edkv0m"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_00knko8" name="No" sourceRef="ExclusiveGateway_0u98ylh" targetRef="ExclusiveGateway_125wehq" /> + <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1t1fier" name="Start UpateOperStatus"> + <bpmn:outgoing>SequenceFlow_033eqeg</bpmn:outgoing> + <bpmn:linkEventDefinition name="UpateOperStatus" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_033eqeg" sourceRef="IntermediateCatchEvent_1t1fier" targetRef="ScriptTask_1ut5zs5" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1q64g27" name="GoTo UpateOperStatus"> + <bpmn:incoming>SequenceFlow_00a3ijv</bpmn:incoming> + <bpmn:linkEventDefinition name="UpateOperStatus" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_00a3ijv" sourceRef="ScriptTask_1rtnsh8" targetRef="IntermediateThrowEvent_1q64g27" /> + <bpmn:scriptTask id="ScriptTask_PrepareServiceResources" name="Prepare Service Resources" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_18wibmi</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11405m9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.prepareServiceDeleteResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_11405m9" sourceRef="ScriptTask_PrepareServiceResources" targetRef="ScriptTask_0w4scer" /> + <bpmn:scriptTask id="ScriptTask_1ut5zs5" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_033eqeg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1sm5x5e</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_0kl5qtj" name="Update Service Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1sm5x5e</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18wibmi</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1sm5x5e" sourceRef="ScriptTask_1ut5zs5" targetRef="ServiceTask_0kl5qtj" /> + <bpmn:sequenceFlow id="SequenceFlow_18wibmi" sourceRef="ServiceTask_0kl5qtj" targetRef="ScriptTask_PrepareServiceResources" /> + <bpmn:scriptTask id="ScriptTask_1vlvb1r" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0l4qcge</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("progress", "100") +execution.setVariable("operationStatus", "End") +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_0lint2e" name="Update Service Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0l4qcge</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_06tonva</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_0l4qcge" sourceRef="ScriptTask_1vlvb1r" targetRef="ServiceTask_0lint2e" /> + <bpmn:sequenceFlow id="SequenceFlow_06tonva" sourceRef="ServiceTask_0lint2e" targetRef="EndEvent_1uqzt26" /> + <bpmn:scriptTask id="ScriptTask_06sbvjm" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0gxv0wp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1i96ytk</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1i96ytk" sourceRef="ScriptTask_06sbvjm" targetRef="ServiceTask_0bia9bb" /> + <bpmn:serviceTask id="ServiceTask_0bia9bb" name="Update Service Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1i96ytk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0eoibq3</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_0eoibq3" sourceRef="ServiceTask_0bia9bb" targetRef="ExclusiveGateway_ServiceResourceIsFinish" /> + <bpmn:scriptTask id="ScriptTask_0mjvi2p" name="Prepare Update Service Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1a5ki3p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1oo4g4h</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1oo4g4h" sourceRef="ScriptTask_0mjvi2p" targetRef="ServiceTask_0vk2b9b" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1kavnc9"> + <bpmn:incoming>SequenceFlow_0uc2beq</bpmn:incoming> + <bpmn:incoming>SequenceFlow_15pzf5n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1w2n8dn</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1w2n8dn" sourceRef="ExclusiveGateway_1kavnc9" targetRef="ScriptTask_1g0tsto" /> + <bpmn:sequenceFlow id="SequenceFlow_15pzf5n" sourceRef="ExclusiveGateway_125wehq" targetRef="ExclusiveGateway_1kavnc9" /> + <bpmn:serviceTask id="ServiceTask_0vk2b9b" name="Update Service Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1oo4g4h</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1bx4es4</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1bx4es4" sourceRef="ServiceTask_0vk2b9b" targetRef="Task_preProcessVFCResourceDelete" /> + <bpmn:scriptTask id="ScriptTask_0w4scer" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_11405m9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_15d5odq</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstanceV2() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_15d5odq" sourceRef="ScriptTask_0w4scer" targetRef="ServiceTask_1mg7vnx" /> + <bpmn:serviceTask id="ServiceTask_1mg7vnx" name="Init Resource Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_15d5odq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1qzxy2i</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1qzxy2i" sourceRef="ServiceTask_1mg7vnx" targetRef="IntermediateThrowEvent_1d5z35x" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCustomDeleteE2EServiceInstanceV2"> + <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r"> + <dc:Bounds x="75" y="110" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="69" y="151" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv"> + <dc:Bounds x="311" y="88" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26"> + <dc:Bounds x="1127" y="1238" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1055" y="1279" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8"> + <dc:Bounds x="1055" y="88" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg"> + <dc:Bounds x="286" y="1216" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true"> + <dc:Bounds x="192" y="1439" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9"> + <di:waypoint xsi:type="dc:Point" x="111" y="128" /> + <di:waypoint xsi:type="dc:Point" x="311" y="128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="166" y="107" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy"> + <di:waypoint xsi:type="dc:Point" x="411" y="128" /> + <di:waypoint xsi:type="dc:Point" x="461" y="128" /> + <di:waypoint xsi:type="dc:Point" x="667" y="128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="391" y="107" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl"> + <di:waypoint xsi:type="dc:Point" x="386" y="1256" /> + <di:waypoint xsi:type="dc:Point" x="533" y="1256" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="414.5" y="1235" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt"> + <dc:Bounds x="260" y="1506" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="188" y="1547" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4"> + <dc:Bounds x="553" y="1506" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="481" y="1547" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr"> + <dc:Bounds x="364" y="1484" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3"> + <di:waypoint xsi:type="dc:Point" x="296" y="1524" /> + <di:waypoint xsi:type="dc:Point" x="364" y="1524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="240" y="1509" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo"> + <di:waypoint xsi:type="dc:Point" x="464" y="1524" /> + <di:waypoint xsi:type="dc:Point" x="553" y="1524" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="420" y="1509" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0mdub03_di" bpmnElement="ScriptTask_postProcessVFCDelete"> + <dc:Bounds x="1046" y="1107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1g0tsto_di" bpmnElement="ScriptTask_1g0tsto"> + <dc:Bounds x="1045" y="775" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax"> + <dc:Bounds x="311" y="577" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0rpu756_di" bpmnElement="SequenceFlow_0rpu756"> + <di:waypoint xsi:type="dc:Point" x="411" y="823" /> + <di:waypoint xsi:type="dc:Point" x="530" y="823" /> + <di:waypoint xsi:type="dc:Point" x="530" y="743" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="802" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx"> + <di:waypoint xsi:type="dc:Point" x="931" y="980" /> + <di:waypoint xsi:type="dc:Point" x="1046" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="943.5" y="959" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1931m8u_di" bpmnElement="SequenceFlow_1931m8u"> + <di:waypoint xsi:type="dc:Point" x="1096" y="1020" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="1107" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1066" y="1058" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_preProcessVFCResourceDelete"> + <dc:Bounds x="831" y="940" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_CallNetworkServiceDeleteforVFC"> + <dc:Bounds x="1046" y="940" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust"> + <dc:Bounds x="311" y="784" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1g4djgh_di" bpmnElement="SequenceFlow_1g4djgh"> + <di:waypoint xsi:type="dc:Point" x="757" y="815" /> + <di:waypoint xsi:type="dc:Point" x="913" y="815" /> + <di:waypoint xsi:type="dc:Point" x="913" y="743" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="790" y="794" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0uc2beq_di" bpmnElement="SequenceFlow_0uc2beq"> + <di:waypoint xsi:type="dc:Point" x="1095" y="657" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1050.5" y="654" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1e5z0wu_di" bpmnElement="Task_14erap6"> + <dc:Bounds x="657" y="577" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0f0965f_di" bpmnElement="Task_1j1u666"> + <dc:Bounds x="657" y="775" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m"> + <dc:Bounds x="1055" y="577" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z"> + <dc:Bounds x="667" y="88" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu"> + <di:waypoint xsi:type="dc:Point" x="767" y="128" /> + <di:waypoint xsi:type="dc:Point" x="1055" y="128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="866" y="107" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1gbu8tc_di" bpmnElement="IntermediateThrowEvent_1d5z35x"> + <dc:Bounds x="1294" y="376" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1275" y="416" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0a6c9bw_di" bpmnElement="IntermediateThrowEvent_1h6kkwi"> + <dc:Bounds x="71" y="599" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="52" y="639" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jfyo1x_di" bpmnElement="SequenceFlow_1jfyo1x"> + <di:waypoint xsi:type="dc:Point" x="107" y="617" /> + <di:waypoint xsi:type="dc:Point" x="209" y="617" /> + <di:waypoint xsi:type="dc:Point" x="209" y="617" /> + <di:waypoint xsi:type="dc:Point" x="311" y="617" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="179" y="611" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_09z6zl7_di" bpmnElement="SequenceFlow_09z6zl7"> + <di:waypoint xsi:type="dc:Point" x="1145" y="815" /> + <di:waypoint xsi:type="dc:Point" x="1294" y="815" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1175" y="794" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_01qtcpf_di" bpmnElement="IntermediateThrowEvent_01vy71e"> + <dc:Bounds x="1294" y="797" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1271" y="837" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_17b01zs_di" bpmnElement="SequenceFlow_17b01zs"> + <di:waypoint xsi:type="dc:Point" x="1046" y="1147" /> + <di:waypoint xsi:type="dc:Point" x="895" y="1147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="925.5" y="1126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_197wgz2_di" bpmnElement="IntermediateThrowEvent_0ow0ck5"> + <dc:Bounds x="71" y="905" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="49" y="945" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0homduu_di" bpmnElement="SequenceFlow_0homduu"> + <di:waypoint xsi:type="dc:Point" x="107" y="923" /> + <di:waypoint xsi:type="dc:Point" x="204" y="923" /> + <di:waypoint xsi:type="dc:Point" x="204" y="955" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="111" y="902" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_03gc5du_di" bpmnElement="IntermediateCatchEvent_03gc5du"> + <dc:Bounds x="57" y="1238" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="36" y="1278" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0t5f2dt_di" bpmnElement="SequenceFlow_0t5f2dt"> + <di:waypoint xsi:type="dc:Point" x="93" y="1256" /> + <di:waypoint xsi:type="dc:Point" x="286" y="1256" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="144.5" y="1235" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_18ardb3_di" bpmnElement="ExclusiveGateway_ServiceResourceIsFinish" isMarkerVisible="true"> + <dc:Bounds x="179" y="955" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="196" y="911" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0n7qeqt_di" bpmnElement="SequenceFlow_0n7qeqt"> + <di:waypoint xsi:type="dc:Point" x="229" y="980" /> + <di:waypoint xsi:type="dc:Point" x="311" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="263" y="959" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01wud4g_di" bpmnElement="ScriptTask_preProcessDecomposeNextResource"> + <dc:Bounds x="311" y="940" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1a5ki3p_di" bpmnElement="SequenceFlow_1a5ki3p"> + <di:waypoint xsi:type="dc:Point" x="411" y="980" /> + <di:waypoint xsi:type="dc:Point" x="470" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="395.5" y="959" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_06p63xt_di" bpmnElement="ScriptTask_postProcessDecomposeNextResource"> + <dc:Bounds x="795" y="1107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gxv0wp_di" bpmnElement="SequenceFlow_0gxv0wp"> + <di:waypoint xsi:type="dc:Point" x="795" y="1147" /> + <di:waypoint xsi:type="dc:Point" x="612" y="1147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="658.5" y="1126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_01fw8bb_di" bpmnElement="IntermediateThrowEvent_01fw8bb"> + <dc:Bounds x="186" y="1061" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="166" y="1101" width="82" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13c2v9z_di" bpmnElement="SequenceFlow_13c2v9z"> + <di:waypoint xsi:type="dc:Point" x="204" y="1005" /> + <di:waypoint xsi:type="dc:Point" x="204" y="1061" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="219" y="1014" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_052agzc_di" bpmnElement="ExclusiveGateway_052agzc" isMarkerVisible="true"> + <dc:Bounds x="336" y="693" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="253" y="691" width="88" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1t1mg6y_di" bpmnElement="SequenceFlow_1t1mg6y"> + <di:waypoint xsi:type="dc:Point" x="361" y="657" /> + <di:waypoint xsi:type="dc:Point" x="361" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="331" y="669" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a1q5fw_di" bpmnElement="SequenceFlow_0a1q5fw"> + <di:waypoint xsi:type="dc:Point" x="361" y="743" /> + <di:waypoint xsi:type="dc:Point" x="361" y="784" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="367" y="758" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0plkf6p_di" bpmnElement="ExclusiveGateway_0plkf6p" isMarkerVisible="true"> + <dc:Bounds x="505" y="693" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="485" y="747" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lv9vmb_di" bpmnElement="SequenceFlow_1lv9vmb"> + <di:waypoint xsi:type="dc:Point" x="530" y="693" /> + <di:waypoint xsi:type="dc:Point" x="530" y="618" /> + <di:waypoint xsi:type="dc:Point" x="657" y="618" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="500" y="650" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fac57w_di" bpmnElement="SequenceFlow_1fac57w"> + <di:waypoint xsi:type="dc:Point" x="386" y="718" /> + <di:waypoint xsi:type="dc:Point" x="505" y="718" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="439" y="697" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0u98ylh_di" bpmnElement="ExclusiveGateway_0u98ylh" isMarkerVisible="true"> + <dc:Bounds x="682" y="693" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="612" y="687" width="88" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_16r9z75_di" bpmnElement="SequenceFlow_16r9z75"> + <di:waypoint xsi:type="dc:Point" x="707" y="657" /> + <di:waypoint xsi:type="dc:Point" x="707" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="677" y="669" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0m7ks9t_di" bpmnElement="SequenceFlow_0m7ks9t"> + <di:waypoint xsi:type="dc:Point" x="707" y="743" /> + <di:waypoint xsi:type="dc:Point" x="707" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="713" y="753" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_125wehq_di" bpmnElement="ExclusiveGateway_125wehq" isMarkerVisible="true"> + <dc:Bounds x="888" y="693" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="868" y="747" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0akcnw7_di" bpmnElement="SequenceFlow_0akcnw7"> + <di:waypoint xsi:type="dc:Point" x="913" y="693" /> + <di:waypoint xsi:type="dc:Point" x="913" y="617" /> + <di:waypoint xsi:type="dc:Point" x="1055" y="617" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="919" y="649" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00knko8_di" bpmnElement="SequenceFlow_00knko8"> + <di:waypoint xsi:type="dc:Point" x="732" y="718" /> + <di:waypoint xsi:type="dc:Point" x="888" y="718" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="803" y="697" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1t1fier_di" bpmnElement="IntermediateCatchEvent_1t1fier"> + <dc:Bounds x="71" y="376" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="56" y="416" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_033eqeg_di" bpmnElement="SequenceFlow_033eqeg"> + <di:waypoint xsi:type="dc:Point" x="107" y="394" /> + <di:waypoint xsi:type="dc:Point" x="209" y="394" /> + <di:waypoint xsi:type="dc:Point" x="209" y="394" /> + <di:waypoint xsi:type="dc:Point" x="311" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="179" y="388" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1q64g27_di" bpmnElement="IntermediateThrowEvent_1q64g27"> + <dc:Bounds x="1294" y="110" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1274" y="150" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_00a3ijv_di" bpmnElement="SequenceFlow_00a3ijv"> + <di:waypoint xsi:type="dc:Point" x="1155" y="128" /> + <di:waypoint xsi:type="dc:Point" x="1294" y="128" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1179.5" y="107" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1fqk4c6_di" bpmnElement="ScriptTask_PrepareServiceResources"> + <dc:Bounds x="657" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11405m9_di" bpmnElement="SequenceFlow_11405m9"> + <di:waypoint xsi:type="dc:Point" x="757" y="394" /> + <di:waypoint xsi:type="dc:Point" x="810" y="394" /> + <di:waypoint xsi:type="dc:Point" x="810" y="394" /> + <di:waypoint xsi:type="dc:Point" x="863" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="780" y="388" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ut5zs5_di" bpmnElement="ScriptTask_1ut5zs5"> + <dc:Bounds x="311" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0kl5qtj_di" bpmnElement="ServiceTask_0kl5qtj"> + <dc:Bounds x="470" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1sm5x5e_di" bpmnElement="SequenceFlow_1sm5x5e"> + <di:waypoint xsi:type="dc:Point" x="411" y="394" /> + <di:waypoint xsi:type="dc:Point" x="470" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="395.5" y="373" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18wibmi_di" bpmnElement="SequenceFlow_18wibmi"> + <di:waypoint xsi:type="dc:Point" x="570" y="394" /> + <di:waypoint xsi:type="dc:Point" x="657" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="568.5" y="373" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1vlvb1r_di" bpmnElement="ScriptTask_1vlvb1r"> + <dc:Bounds x="533" y="1216" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0lint2e_di" bpmnElement="ServiceTask_0lint2e"> + <dc:Bounds x="795" y="1216" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0l4qcge_di" bpmnElement="SequenceFlow_0l4qcge"> + <di:waypoint xsi:type="dc:Point" x="633" y="1256" /> + <di:waypoint xsi:type="dc:Point" x="795" y="1256" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="669" y="1235" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06tonva_di" bpmnElement="SequenceFlow_06tonva"> + <di:waypoint xsi:type="dc:Point" x="895" y="1256" /> + <di:waypoint xsi:type="dc:Point" x="1127" y="1256" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="966" y="1235" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_06sbvjm_di" bpmnElement="ScriptTask_06sbvjm"> + <dc:Bounds x="512" y="1107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1i96ytk_di" bpmnElement="SequenceFlow_1i96ytk"> + <di:waypoint xsi:type="dc:Point" x="512" y="1147" /> + <di:waypoint xsi:type="dc:Point" x="411" y="1147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="461.5" y="1126" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0bia9bb_di" bpmnElement="ServiceTask_0bia9bb"> + <dc:Bounds x="311" y="1107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0eoibq3_di" bpmnElement="SequenceFlow_0eoibq3"> + <di:waypoint xsi:type="dc:Point" x="311" y="1147" /> + <di:waypoint xsi:type="dc:Point" x="106" y="1147" /> + <di:waypoint xsi:type="dc:Point" x="106" y="980" /> + <di:waypoint xsi:type="dc:Point" x="179" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="121" y="1057.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0mjvi2p_di" bpmnElement="ScriptTask_0mjvi2p"> + <dc:Bounds x="470" y="940" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1oo4g4h_di" bpmnElement="SequenceFlow_1oo4g4h"> + <di:waypoint xsi:type="dc:Point" x="570" y="980" /> + <di:waypoint xsi:type="dc:Point" x="638" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="604" y="959" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1kavnc9_di" bpmnElement="ExclusiveGateway_1kavnc9" isMarkerVisible="true"> + <dc:Bounds x="1071" y="693" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1051" y="747" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1w2n8dn_di" bpmnElement="SequenceFlow_1w2n8dn"> + <di:waypoint xsi:type="dc:Point" x="1096" y="743" /> + <di:waypoint xsi:type="dc:Point" x="1095" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1095.5" y="738" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15pzf5n_di" bpmnElement="SequenceFlow_15pzf5n"> + <di:waypoint xsi:type="dc:Point" x="938" y="718" /> + <di:waypoint xsi:type="dc:Point" x="1005" y="718" /> + <di:waypoint xsi:type="dc:Point" x="1005" y="718" /> + <di:waypoint xsi:type="dc:Point" x="1071" y="718" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="712" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0vk2b9b_di" bpmnElement="ServiceTask_0vk2b9b"> + <dc:Bounds x="638" y="940" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1bx4es4_di" bpmnElement="SequenceFlow_1bx4es4"> + <di:waypoint xsi:type="dc:Point" x="738" y="980" /> + <di:waypoint xsi:type="dc:Point" x="831" y="980" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784.5" y="959" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0w4scer_di" bpmnElement="ScriptTask_0w4scer"> + <dc:Bounds x="863" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_15d5odq_di" bpmnElement="SequenceFlow_15d5odq"> + <di:waypoint xsi:type="dc:Point" x="963" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1055" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="964" y="373" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1mg7vnx_di" bpmnElement="ServiceTask_1mg7vnx"> + <dc:Bounds x="1055" y="354" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qzxy2i_di" bpmnElement="SequenceFlow_1qzxy2i"> + <di:waypoint xsi:type="dc:Point" x="1155" y="394" /> + <di:waypoint xsi:type="dc:Point" x="1294" y="394" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1224.5" y="373" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn new file mode 100644 index 0000000000..b10d6b1b18 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn @@ -0,0 +1,422 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteAllottedResourceBRG" name="DoDeleteAllottedResourceBRG" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.getAaiAR(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" /> + <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" /> + <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeactivateResponse") + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>foundInSDNC</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.preProcessSDNCDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncUnassignResponse") + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.deleteAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing> + <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" /> + <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG() +ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" /> + <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" /> + <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceBRG"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="217" y="227" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235" y="268" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="336" y="203" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="253" y="245" /> + <di:waypoint xsi:type="dc:Point" x="336" y="245" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="295" y="230" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR"> + <dc:Bounds x="503" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1060" y="514" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1078" y="555" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm"> + <di:waypoint xsi:type="dc:Point" x="92" y="595" /> + <di:waypoint xsi:type="dc:Point" x="92" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="785" /> + <di:waypoint xsi:type="dc:Point" x="206" y="748" /> + <di:waypoint xsi:type="dc:Point" x="206" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="206" y="751.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp"> + <di:waypoint xsi:type="dc:Point" x="359" y="585" /> + <di:waypoint xsi:type="dc:Point" x="359" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="486" y="785" /> + <di:waypoint xsi:type="dc:Point" x="486" y="545" /> + <di:waypoint xsi:type="dc:Point" x="590" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="665" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate"> + <dc:Bounds x="42" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete"> + <dc:Bounds x="309" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign"> + <dc:Bounds x="590" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign"> + <dc:Bounds x="590" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign"> + <dc:Bounds x="590" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk"> + <di:waypoint xsi:type="dc:Point" x="640" y="585" /> + <di:waypoint xsi:type="dc:Point" x="640" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="640" y="704" /> + <di:waypoint xsi:type="dc:Point" x="640" y="754" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="729" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="690" y="794" /> + <di:waypoint xsi:type="dc:Point" x="782" y="794" /> + <di:waypoint xsi:type="dc:Point" x="782" y="532" /> + <di:waypoint xsi:type="dc:Point" x="874" y="532" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="797" y="663" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="107" y="897" width="521" height="191" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="204" y="970" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="222" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="481" y="970" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError"> + <dc:Bounds x="311" y="948" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="240" y="988" /> + <di:waypoint xsi:type="dc:Point" x="311" y="988" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="276" y="973" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="411" y="988" /> + <di:waypoint xsi:type="dc:Point" x="450" y="988" /> + <di:waypoint xsi:type="dc:Point" x="450" y="988" /> + <di:waypoint xsi:type="dc:Point" x="481" y="988" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="465" y="988" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR"> + <dc:Bounds x="874" y="492" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true"> + <dc:Bounds x="181" y="520" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="128" y="461" width="63" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-70" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-79" y="568" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-34" y="545" /> + <di:waypoint xsi:type="dc:Point" x="42" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="4" y="530" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete"> + <dc:Bounds x="667" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6"> + <dc:Bounds x="837" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="887" y="234" width="71" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f"> + <di:waypoint xsi:type="dc:Point" x="767" y="240" /> + <di:waypoint xsi:type="dc:Point" x="837" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="802" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j"> + <di:waypoint xsi:type="dc:Point" x="974" y="532" /> + <di:waypoint xsi:type="dc:Point" x="1060" y="532" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1017" y="517" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC"> + <di:waypoint xsi:type="dc:Point" x="231" y="545" /> + <di:waypoint xsi:type="dc:Point" x="309" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="530" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC"> + <di:waypoint xsi:type="dc:Point" x="206" y="520" /> + <di:waypoint xsi:type="dc:Point" x="206" y="421" /> + <di:waypoint xsi:type="dc:Point" x="924" y="421" /> + <di:waypoint xsi:type="dc:Point" x="924" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="558" y="406" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l"> + <di:waypoint xsi:type="dc:Point" x="436" y="243" /> + <di:waypoint xsi:type="dc:Point" x="503" y="243" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="470" y="228" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s"> + <di:waypoint xsi:type="dc:Point" x="603" y="240" /> + <di:waypoint xsi:type="dc:Point" x="667" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="635" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn new file mode 100644 index 0000000000..84895e225d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn @@ -0,0 +1,422 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteAllottedResourceTXC" name="DoDeleteAllottedResourceTXC" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" /> + <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.getAaiAR(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" /> + <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" /> + <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" /> + <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeactivateResponse") + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>foundInSDNC</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.preProcessSDNCDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +String response = execution.getVariable("sdncUnassignResponse") + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" /> + <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ibe7qx"> + <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1fgqhmi"> + <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" /> + <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming> + <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.deleteAaiAR(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC"> + <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming> + <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing> + <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks"> + <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" /> + <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.* + +DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC() +ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks"> + <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming> + <bpmn2:linkEventDefinition name="SDNCTasks" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" /> + <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" /> + <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceTXC"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1"> + <dc:Bounds x="217" y="227" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="235" y="268" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization"> + <dc:Bounds x="336" y="203" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="253" y="245" /> + <di:waypoint xsi:type="dc:Point" x="336" y="245" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="295" y="230" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR"> + <dc:Bounds x="503" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3"> + <dc:Bounds x="1060" y="514" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1078" y="555" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm"> + <di:waypoint xsi:type="dc:Point" x="92" y="595" /> + <di:waypoint xsi:type="dc:Point" x="92" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="609.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q"> + <di:waypoint xsi:type="dc:Point" x="92" y="710" /> + <di:waypoint xsi:type="dc:Point" x="92" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="727.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o"> + <di:waypoint xsi:type="dc:Point" x="142" y="785" /> + <di:waypoint xsi:type="dc:Point" x="205" y="785" /> + <di:waypoint xsi:type="dc:Point" x="206" y="748" /> + <di:waypoint xsi:type="dc:Point" x="206" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="206" y="751.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp"> + <di:waypoint xsi:type="dc:Point" x="359" y="585" /> + <di:waypoint xsi:type="dc:Point" x="359" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb"> + <di:waypoint xsi:type="dc:Point" x="359" y="707" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="725" /> + <di:waypoint xsi:type="dc:Point" x="359" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="374" y="725" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq"> + <di:waypoint xsi:type="dc:Point" x="409" y="785" /> + <di:waypoint xsi:type="dc:Point" x="486" y="785" /> + <di:waypoint xsi:type="dc:Point" x="486" y="545" /> + <di:waypoint xsi:type="dc:Point" x="590" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="501" y="665" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate"> + <dc:Bounds x="42" y="515" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate"> + <dc:Bounds x="42" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate"> + <dc:Bounds x="42" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete"> + <dc:Bounds x="309" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete"> + <dc:Bounds x="309" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete"> + <dc:Bounds x="309" y="745" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign"> + <dc:Bounds x="590" y="505" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign"> + <dc:Bounds x="590" y="624" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign"> + <dc:Bounds x="590" y="754" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk"> + <di:waypoint xsi:type="dc:Point" x="640" y="585" /> + <di:waypoint xsi:type="dc:Point" x="640" y="624" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="604.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq"> + <di:waypoint xsi:type="dc:Point" x="640" y="704" /> + <di:waypoint xsi:type="dc:Point" x="640" y="754" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="655" y="729" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43"> + <di:waypoint xsi:type="dc:Point" x="690" y="794" /> + <di:waypoint xsi:type="dc:Point" x="782" y="794" /> + <di:waypoint xsi:type="dc:Point" x="782" y="532" /> + <di:waypoint xsi:type="dc:Point" x="874" y="532" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="797" y="663" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true"> + <dc:Bounds x="107" y="897" width="521" height="191" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx"> + <dc:Bounds x="204" y="970" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="222" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi"> + <dc:Bounds x="481" y="970" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="499" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError"> + <dc:Bounds x="311" y="948" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs"> + <di:waypoint xsi:type="dc:Point" x="240" y="988" /> + <di:waypoint xsi:type="dc:Point" x="311" y="988" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="276" y="973" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v"> + <di:waypoint xsi:type="dc:Point" x="411" y="988" /> + <di:waypoint xsi:type="dc:Point" x="450" y="988" /> + <di:waypoint xsi:type="dc:Point" x="450" y="988" /> + <di:waypoint xsi:type="dc:Point" x="481" y="988" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="465" y="988" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR"> + <dc:Bounds x="874" y="492" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true"> + <dc:Bounds x="181" y="520" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="128" y="461" width="63" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8"> + <dc:Bounds x="-70" y="527" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-79" y="568" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9"> + <di:waypoint xsi:type="dc:Point" x="-34" y="545" /> + <di:waypoint xsi:type="dc:Point" x="42" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="4" y="530" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete"> + <dc:Bounds x="667" y="200" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6"> + <dc:Bounds x="837" y="222" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="887" y="234" width="71" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f"> + <di:waypoint xsi:type="dc:Point" x="767" y="240" /> + <di:waypoint xsi:type="dc:Point" x="837" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="802" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j"> + <di:waypoint xsi:type="dc:Point" x="974" y="532" /> + <di:waypoint xsi:type="dc:Point" x="1060" y="532" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1017" y="517" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC"> + <di:waypoint xsi:type="dc:Point" x="231" y="545" /> + <di:waypoint xsi:type="dc:Point" x="309" y="545" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="260" y="530" width="19" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC"> + <di:waypoint xsi:type="dc:Point" x="206" y="520" /> + <di:waypoint xsi:type="dc:Point" x="206" y="421" /> + <di:waypoint xsi:type="dc:Point" x="924" y="421" /> + <di:waypoint xsi:type="dc:Point" x="924" y="492" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="558" y="406" width="14" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l"> + <di:waypoint xsi:type="dc:Point" x="436" y="243" /> + <di:waypoint xsi:type="dc:Point" x="503" y="243" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="470" y="228" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s"> + <di:waypoint xsi:type="dc:Point" x="603" y="240" /> + <di:waypoint xsi:type="dc:Point" x="667" y="240" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="635" y="225" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn new file mode 100644 index 0000000000..a975ebdee0 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn @@ -0,0 +1,378 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoDeleteE2EServiceInstance" name="All Resources Deleted" isExecutable="true"> + <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteE2EServiceInstance() +ddsi.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1uqzt26"> + <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0vi0sv6</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteE2EServiceInstance() +ddsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_01erufg" name=" AAI Delete (svc instance) " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1cevtpy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoCustomDeleteE2EServiceInstance() +ddsi.deleteServiceInstance(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0sf5lpt"> + <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_06utmg4"> + <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" /> + <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" /> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" /> + <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" /> + <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="EndEvent_1uqzt26" /> + <bpmn:scriptTask id="ScriptTask_146jt8v" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1961633</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ym9otf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteE2EServiceInstance() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_00tg69u" name="Init Resource Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_adapters_openecomp_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1ym9otf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1j08ko3</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1ym9otf" sourceRef="ScriptTask_146jt8v" targetRef="ServiceTask_00tg69u" /> + <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" /> + <bpmn:sequenceFlow id="SequenceFlow_1j08ko3" sourceRef="ServiceTask_00tg69u" targetRef="Task_1f5dlsv" /> + <bpmn:sequenceFlow id="SequenceFlow_0fo5vw5" sourceRef="Task_1ldvug1" targetRef="Task_0mhdfuu" /> + <bpmn:sequenceFlow id="SequenceFlow_0orw2f8" sourceRef="Task_0mhdfuu" targetRef="Task_1yx1n05" /> + <bpmn:sequenceFlow id="SequenceFlow_0ha8ix9" sourceRef="Task_1yx1n05" targetRef="IntermediateThrowEvent_0ve5ukt" /> + <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0ve5ukt" name="Go to Delete Resources"> + <bpmn:incoming>SequenceFlow_0ha8ix9</bpmn:incoming> + <bpmn:linkEventDefinition name="StartDeleteResource" /> + </bpmn:intermediateThrowEvent> + <bpmn:intermediateCatchEvent id="startDeleteResources" name="Start Delete Resources"> + <bpmn:outgoing>SequenceFlow_1961633</bpmn:outgoing> + <bpmn:linkEventDefinition name="StartDeleteResource" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1961633" sourceRef="startDeleteResources" targetRef="ScriptTask_146jt8v" /> + <bpmn:scriptTask id="Task_1ldvug1" name="Prepare Decompose Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1q2mqnm</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0fo5vw5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoDeleteE2EServiceInstance() +dcsi.prepareDecomposeService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_0mhdfuu" name="Call Decompose Service" calledElement="DecomposeService"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="requestParameters" target="requestParameters" /> + <camunda:out source="rollbackData" target="rollbackData" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0fo5vw5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0orw2f8</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_1yx1n05" name="Post Decompose Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0orw2f8</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0ha8ix9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi= new DoDeleteE2EServiceInstance() +dcsi.postDecomposeService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_1f5dlsv" name="Delete Resources" calledElement="DoDeleteResourcesV1"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="URN_mso_workflow_sdncadapter_callback" target="URN_mso_workflow_sdncadapter_callback" /> + <camunda:in source="serviceInputParams" target="serviceInputParams" /> + <camunda:in source="deleteResourceList" target="deleteResourceList" /> + <camunda:in source="resourceInstanceIDs" target="resourceInstanceIDs" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="serviceDecomposition" target="serviceDecomposition" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1j08ko3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1cevtpy</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1cevtpy" sourceRef="Task_1f5dlsv" targetRef="ScriptTask_01erufg" /> + <bpmn:intermediateCatchEvent id="DecomposeService" name="Decompose Service"> + <bpmn:outgoing>SequenceFlow_1q2mqnm</bpmn:outgoing> + <bpmn:linkEventDefinition name="DecomposeService" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1q2mqnm" sourceRef="DecomposeService" targetRef="Task_1ldvug1" /> + <bpmn:intermediateThrowEvent id="StartEvent_1qh5a34" name="Go to Decompse Service"> + <bpmn:incoming>SequenceFlow_0vi0sv6</bpmn:incoming> + <bpmn:linkEventDefinition name="DecomposeService" /> + </bpmn:intermediateThrowEvent> + <bpmn:sequenceFlow id="SequenceFlow_0vi0sv6" sourceRef="ScriptTask_1rtnsh8" targetRef="StartEvent_1qh5a34" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r"> + <dc:Bounds x="-537" y="-51" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-544" y="-10" width="52" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv"> + <dc:Bounds x="-449" y="-73" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26"> + <dc:Bounds x="543" y="472" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="471" y="513" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8"> + <dc:Bounds x="-109" y="-73" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg"> + <dc:Bounds x="254" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true"> + <dc:Bounds x="-166" y="672" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9"> + <di:waypoint xsi:type="dc:Point" x="-501" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-475" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-475" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-449" y="-33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-505" y="-39" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy"> + <di:waypoint xsi:type="dc:Point" x="-349" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-318" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-318" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-286" y="-33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-348" y="-39" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl"> + <di:waypoint xsi:type="dc:Point" x="354" y="490" /> + <di:waypoint xsi:type="dc:Point" x="543" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="403.5" y="469" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt"> + <dc:Bounds x="-98" y="739" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-170" y="780" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4"> + <dc:Bounds x="195" y="739" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="123" y="780" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr"> + <dc:Bounds x="6" y="717" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3"> + <di:waypoint xsi:type="dc:Point" x="-62" y="757" /> + <di:waypoint xsi:type="dc:Point" x="6" y="757" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-118" y="742" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo"> + <di:waypoint xsi:type="dc:Point" x="106" y="757" /> + <di:waypoint xsi:type="dc:Point" x="195" y="757" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="62" y="742" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_146jt8v_di" bpmnElement="ScriptTask_146jt8v"> + <dc:Bounds x="-422" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_00tg69u_di" bpmnElement="ServiceTask_00tg69u"> + <dc:Bounds x="-229" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ym9otf_di" bpmnElement="SequenceFlow_1ym9otf"> + <di:waypoint xsi:type="dc:Point" x="-322" y="490" /> + <di:waypoint xsi:type="dc:Point" x="-229" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-320.5" y="469" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z"> + <dc:Bounds x="-286" y="-73" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu"> + <di:waypoint xsi:type="dc:Point" x="-186" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-154" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-154" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="-109" y="-33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-184" y="-39" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1j08ko3_di" bpmnElement="SequenceFlow_1j08ko3"> + <di:waypoint xsi:type="dc:Point" x="-129" y="490" /> + <di:waypoint xsi:type="dc:Point" x="-1" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-110" y="469" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fo5vw5_di" bpmnElement="SequenceFlow_0fo5vw5"> + <di:waypoint xsi:type="dc:Point" x="-278" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-254" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-254" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-178" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-284" y="192" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0orw2f8_di" bpmnElement="SequenceFlow_0orw2f8"> + <di:waypoint xsi:type="dc:Point" x="-78" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-49" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-49" y="198" /> + <di:waypoint xsi:type="dc:Point" x="47" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-79" y="192" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ha8ix9_di" bpmnElement="SequenceFlow_0ha8ix9"> + <di:waypoint xsi:type="dc:Point" x="147" y="198" /> + <di:waypoint xsi:type="dc:Point" x="181" y="198" /> + <di:waypoint xsi:type="dc:Point" x="181" y="198" /> + <di:waypoint xsi:type="dc:Point" x="246" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="192" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_15myvzx_di" bpmnElement="IntermediateThrowEvent_0ve5ukt"> + <dc:Bounds x="246" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="233" y="220" width="64" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1jcfnjr_di" bpmnElement="startDeleteResources"> + <dc:Bounds x="-537" y="472" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-549" y="512" width="60" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1961633_di" bpmnElement="SequenceFlow_1961633"> + <di:waypoint xsi:type="dc:Point" x="-501" y="490" /> + <di:waypoint xsi:type="dc:Point" x="-422" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-461.5" y="469" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_079nac8_di" bpmnElement="Task_1ldvug1"> + <dc:Bounds x="-378" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_01b12fk_di" bpmnElement="Task_0mhdfuu"> + <dc:Bounds x="-178" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0msjtc4_di" bpmnElement="Task_1yx1n05"> + <dc:Bounds x="47" y="158" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_16sm2op_di" bpmnElement="Task_1f5dlsv"> + <dc:Bounds x="-1" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cevtpy_di" bpmnElement="SequenceFlow_1cevtpy"> + <di:waypoint xsi:type="dc:Point" x="99" y="490" /> + <di:waypoint xsi:type="dc:Point" x="254" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="131.5" y="469" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0s6bb2d_di" bpmnElement="DecomposeService"> + <dc:Bounds x="-537" y="180" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-550" y="220" width="61" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1q2mqnm_di" bpmnElement="SequenceFlow_1q2mqnm"> + <di:waypoint xsi:type="dc:Point" x="-501" y="198" /> + <di:waypoint xsi:type="dc:Point" x="-378" y="198" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-484" y="177" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1j1awcj_di" bpmnElement="StartEvent_1qh5a34"> + <dc:Bounds x="71" y="-51" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="46" y="-11" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vi0sv6_di" bpmnElement="SequenceFlow_0vi0sv6"> + <di:waypoint xsi:type="dc:Point" x="-9" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="14" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="14" y="-33" /> + <di:waypoint xsi:type="dc:Point" x="71" y="-33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-16" y="-39" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn new file mode 100644 index 0000000000..d6069d714e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn @@ -0,0 +1,933 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteNetworkInstance" name="DoDeleteNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="deleteNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="ScriptTask_01w2cd9" /> + <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Call REST Query In AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0msqfwu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def callRESTDeleteAAI = new DoDeleteNetworkInstance() +callRESTDeleteAAI.callRESTQueryAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callAAIQuery_scriptTask" targetRef="isRelationshipExists_ExclusiveGateway" /> + <bpmn2:callActivity id="callDeleteSDNCAdapter_CallActivity" name="Call SDNC Unassign Adapter V1 Sub-process" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DELNWKI_deleteSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKI_deleteSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_sdncReturnCode" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1pdp4d2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callDeleteSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" /> + <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1jnva78</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def validateSDNCResponse = new DoDeleteNetworkInstance() +validateSDNCResponse.validateSDNCResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoDeleteOk_ExclusiveGateway" /> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="validateSDNCResponse_ScriptTask"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_87" errorRef="Error_3" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="BoundaryEvent_1" targetRef="sndcError_EndEvent" /> + <bpmn2:exclusiveGateway id="isSdncTopoDeleteOk_ExclusiveGateway" name="Is SDNC Unassign Ok?" default="sdncTopoDeleteNo_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>sdncTopoDeleteNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>sdncTopoDeleteYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:incoming>sdncTopoDeleteNo_SequenceFlow</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_3" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="sdncTopoDeleteNo_SequenceFlow" name="No" sourceRef="isSdncTopoDeleteOk_ExclusiveGateway" targetRef="sndcError_EndEvent" /> + <bpmn2:sequenceFlow id="sdncTopoDeleteYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoDeleteOk_ExclusiveGateway" targetRef="ScriptTask_01xjfhu"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception" triggeredByEvent="true"> + <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_1a51h25</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_3" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_1yvnovn</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_00lgy9f" name="PostProcess Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1nl99y6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1yvnovn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.postProcessResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1a51h25" sourceRef="subProcessStart_StartEvent" targetRef="Task_0026x4v" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yvnovn" sourceRef="ScriptTask_00lgy9f" targetRef="EndEvent_2" /> + <bpmn2:scriptTask id="ScriptTask_0n4do0p" name="Prepare SDNC RPC Rollback Deactivate" scriptFormat="groovy"> + <bpmn2:outgoing>SequenceFlow_1wif0e5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.prepareRpcSDNCDeactivateRollback(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1gix2o6" name="Is Rollback On?"> + <bpmn2:incoming>SequenceFlow_021b0sz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0tiz0kk</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1suj1nc</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0tiz0kk" name="Yes" sourceRef="ExclusiveGateway_1gix2o6" targetRef="ExclusiveGateway_1x7o5bo"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_rollbackEnabled") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1suj1nc" name="No" sourceRef="ExclusiveGateway_1gix2o6" targetRef="ExclusiveGateway_01xin16" /> + <bpmn2:callActivity id="CallActivity_0lku52d" name="DoDelete NetworkInstanceRollback " calledElement="DoDeleteNetworkInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="workflowException" target="workflowException" /> + <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" /> + <camunda:out source="wasDeleted" target="wasDeleted" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_147vc14</bpmn2:incoming> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1x7o5bo" name="is SDNC Rollback Needed? " default="SequenceFlow_1raa09h"> + <bpmn2:incoming>SequenceFlow_0tiz0kk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0jb7rws</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1raa09h</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0jb7rws" name="Yes" sourceRef="ExclusiveGateway_1x7o5bo" targetRef="ExclusiveGateway_01xin16"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isSdncDeactivateRollbackNeeded") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:inclusiveGateway id="ExclusiveGateway_01xin16"> + <bpmn2:incoming>SequenceFlow_1suj1nc</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1raa09h</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0jb7rws</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1nl99y6</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1raa09h" sourceRef="ExclusiveGateway_1x7o5bo" targetRef="ExclusiveGateway_01xin16" /> + <bpmn2:sequenceFlow id="SequenceFlow_1nl99y6" sourceRef="ExclusiveGateway_01xin16" targetRef="ScriptTask_00lgy9f" /> + <bpmn2:scriptTask id="ScriptTask_0n4ya47" name="Prepare RollbackData" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1wif0e5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_147vc14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1wif0e5" sourceRef="ScriptTask_0n4do0p" targetRef="ScriptTask_0n4ya47" /> + <bpmn2:sequenceFlow id="SequenceFlow_147vc14" sourceRef="ScriptTask_0n4ya47" targetRef="CallActivity_0lku52d" /> + <bpmn2:sequenceFlow id="SequenceFlow_021b0sz" sourceRef="Task_0026x4v" targetRef="ExclusiveGateway_1gix2o6" /> + <bpmn2:scriptTask id="Task_0026x4v" name="Set Exception Flag" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1a51h25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_021b0sz</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.setExceptionFlag(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:textAnnotation id="TextAnnotation_0i06ryl"> <bpmn2:text>Rollback Not Needed for Delete.</bpmn2:text> +</bpmn2:textAnnotation> + <bpmn2:association id="Association_0gzsxad" sourceRef="CallActivity_0lku52d" targetRef="TextAnnotation_0i06ryl" /> + </bpmn2:subProcess> + <bpmn2:exclusiveGateway id="isAAIQueryOk_ExclusiveGateway_2" name="Is AAI Query Ok?" default="querySuccessNo_SequenceFlow"> + <bpmn2:incoming>isRelationshipExistNo_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>querySuccessYes_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>querySuccessNo_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="querySuccessYes_SequenceFlow" name="Yes" sourceRef="isAAIQueryOk_ExclusiveGateway_2" targetRef="isResponseEmpty_ExclusiveGateway_2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isAAIGood") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="querySuccessNo_SequenceFlow" name="No" sourceRef="isAAIQueryOk_ExclusiveGateway_2" targetRef="isReturnCode404_ExclusiveGateway" /> + <bpmn2:exclusiveGateway id="isReturnCode404_ExclusiveGateway" name="Is Return Code 404?" default="isReturnCode404_No_SequenceFlow"> + <bpmn2:incoming>querySuccessNo_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>isReturnCode404_No_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isReturnCode404_Yes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isReturnCode404_No_SequenceFlow" name="No" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="aai_Error_EndEvent" /> + <bpmn2:sequenceFlow id="isReturnCode404_Yes_SequenceFlow" name="Yes" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="silentSucces_InclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_aaiReturnCode" ) == "404"}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="aai_Error_EndEvent" name="AAI Error"> + <bpmn2:incoming>isReturnCode404_No_SequenceFlow</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_53" errorRef="Error_3" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="isResponseEmpty_ExclusiveGateway_2" name="Is Resp Empty?" default="isResponseEmptyNo_SequenceFlow"> + <bpmn2:incoming>querySuccessYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>isResponseEmptyNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isResponseEmptyYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isResponseEmptyNo_SequenceFlow" name="No" sourceRef="isResponseEmpty_ExclusiveGateway_2" targetRef="callRESTQueryCloudRegion_ScriptTask" /> + <bpmn2:sequenceFlow id="isResponseEmptyYes_SequenceFlow" name="Yes" sourceRef="isResponseEmpty_ExclusiveGateway_2" targetRef="silentSucces_InclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isSilentSuccess") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:inclusiveGateway id="silentSucces_InclusiveGateway" name="Joint"> + <bpmn2:incoming>isReturnCode404_Yes_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>isResponseEmptyYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>silentSuccess_SequenceFlow</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="silentSuccess_SequenceFlow" name="Silent Success" sourceRef="silentSucces_InclusiveGateway" targetRef="ScriptTask_0dtzzht" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_0f25bme</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy"> + <bpmn2:incoming>isResponseEmptyNo_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteNetMod = new DoDeleteNetworkInstance() +deleteNetMod.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" /> + <bpmn2:exclusiveGateway id="isRelationshipExists_ExclusiveGateway" name="Is Relationship Exists?" default="isRelationshipExistNo_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>isRelationshipExistNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isRelationshipExistYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isRelationshipExistNo_SequenceFlow" name="No" sourceRef="isRelationshipExists_ExclusiveGateway" targetRef="isAAIQueryOk_ExclusiveGateway_2" /> + <bpmn2:sequenceFlow id="isRelationshipExistYes_SequenceFlow" name="Yes" sourceRef="isRelationshipExists_ExclusiveGateway" targetRef="relationshipError_EndEvent"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isVfRelationshipExist") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="relationshipError_EndEvent" name="Relationship Error"> + <bpmn2:incoming>isRelationshipExistYes_SequenceFlow</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_89" errorRef="Error_3" /> + </bpmn2:endEvent> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_1pbgnr2</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare SDNC Topology Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0r3pvf8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pdp4d2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def prepareSDNCRequest = new DoDeleteNetworkInstance() +prepareSDNCRequest.prepareSDNCRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="validateDeletePONetwork_ScriptTask" name="Validate Delete PO Network" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def validateNetworkResponse = new DoDeleteNetworkInstance() +validateNetworkResponse.validateNetworkResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="validateDeletePONetwork_ScriptTask" targetRef="ExclusiveGateway_02t94x3" /> + <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Network Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def prepareNetworkRequest = new DoDeleteNetworkInstance() +prepareNetworkRequest.prepareNetworkRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="sendRequestToNewworkAdapater_ScriptTask" /> + <bpmn2:scriptTask id="sendRequestToNewworkAdapater_ScriptTask" name="Send Request to Network Adapter" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def prepareNetworkRequest = new DoDeleteNetworkInstance() +prepareNetworkRequest.sendRequestToVnfAdapter(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="sendRequestToNewworkAdapater_ScriptTask" targetRef="validateDeletePONetwork_ScriptTask" /> + <bpmn2:subProcess id="SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_91" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="unexpectedError_DeleteNetworkInfra_ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteNetMod = new DoDeleteNetworkInstance() +deleteNetMod.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="StartEvent_1" targetRef="unexpectedError_DeleteNetworkInfra_ScriptTask_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="unexpectedError_DeleteNetworkInfra_ScriptTask_1" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_01xjfhu" name="PostProcess Response" scriptFormat="groovy"> + <bpmn2:incoming>sdncTopoDeleteYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pbgnr2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.postProcessResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1pbgnr2" sourceRef="ScriptTask_01xjfhu" targetRef="EndEvent_3" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pdp4d2" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callDeleteSDNCAdapter_CallActivity" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_02t94x3" name="is not '1610' SNDC Call?" default="SequenceFlow_0r3pvf8"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0r3pvf8</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0kqnddy</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0r3pvf8" name="No" sourceRef="ExclusiveGateway_02t94x3" targetRef="prepareSDNCTopoRequest_ScriptTask" /> + <bpmn2:scriptTask id="ScriptTask_0iqzbz6" name="Prepare RSRC SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0f13b17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0zlbzad</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def prepareSDNCRequest = new DoDeleteNetworkInstance() +prepareSDNCRequest.prepareRpcSDNCRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_03wzdas" name="Call RSRC SDNC Unassign Adapter V1 " calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DELNWKI_deleteSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKI_deleteSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_sdncReturnCode" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0zlbzad</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jnva78</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1jnva78" sourceRef="CallActivity_03wzdas" targetRef="validateSDNCResponse_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_0zlbzad" sourceRef="ScriptTask_0iqzbz6" targetRef="CallActivity_03wzdas" /> + <bpmn2:sequenceFlow id="SequenceFlow_0kqnddy" name="Yes" sourceRef="ExclusiveGateway_02t94x3" targetRef="ScriptTask_1wf192s"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_01w2cd9" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0msqfwu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0msqfwu" sourceRef="ScriptTask_01w2cd9" targetRef="callAAIQuery_scriptTask" /> + <bpmn2:scriptTask id="ScriptTask_0dtzzht" name="PostProcess Response" scriptFormat="groovy"> + <bpmn2:incoming>silentSuccess_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0f25bme</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.postProcessResponse(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0f25bme" sourceRef="ScriptTask_0dtzzht" targetRef="EndEvent_1" /> + <bpmn2:callActivity id="CallActivity_0wyu1mx" name="Call RSRC SDNC Deactivate Adapter" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DELNWKI_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_deactivateSdncReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKI_deactivateSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1o088sy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1i3193l</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1wf192s" name="Prepare SDNC RSRC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0kqnddy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1o088sy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.prepareRpcSDNCDeactivate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1o088sy" sourceRef="ScriptTask_1wf192s" targetRef="CallActivity_0wyu1mx" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_024qvqd" default="SequenceFlow_1qyo7ot"> + <bpmn2:incoming>SequenceFlow_0n8sf23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qyo7ot</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0f13b17</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:scriptTask id="ScriptTask_00vwf2h" name="Validate Deactivate SDNC Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1i3193l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0n8sf23</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstance = new DoDeleteNetworkInstance() +DoDeleteNetworkInstance.validateRpcSDNCDeactivateResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:boundaryEvent id="BoundaryEvent_0un9yyu" name="" attachedToRef="ScriptTask_00vwf2h"> + <bpmn2:outgoing>SequenceFlow_08hus4u</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_3" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1i3193l" sourceRef="CallActivity_0wyu1mx" targetRef="ScriptTask_00vwf2h" /> + <bpmn2:sequenceFlow id="SequenceFlow_0n8sf23" sourceRef="ScriptTask_00vwf2h" targetRef="ExclusiveGateway_024qvqd" /> + <bpmn2:sequenceFlow id="SequenceFlow_08hus4u" sourceRef="BoundaryEvent_0un9yyu" targetRef="EndEvent_1l210ae" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qyo7ot" name="No" sourceRef="ExclusiveGateway_024qvqd" targetRef="EndEvent_1l210ae" /> + <bpmn2:sequenceFlow id="SequenceFlow_0f13b17" name="Yes" sourceRef="ExclusiveGateway_024qvqd" targetRef="ScriptTask_0iqzbz6"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_1l210ae"> + <bpmn2:incoming>SequenceFlow_08hus4u</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1qyo7ot</bpmn2:incoming> + <bpmn2:errorEventDefinition errorRef="Error_3" /> + </bpmn2:endEvent> + </bpmn2:process> + <bpmn2:error id="Error_3" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteNetwork_startEvent"> + <dc:Bounds x="444" y="185" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="437" y="226" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47"> + <di:waypoint xsi:type="dc:Point" x="480" y="203" /> + <di:waypoint xsi:type="dc:Point" x="597" y="204" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="539" y="188.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask"> + <dc:Bounds x="816" y="163" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_62" bpmnElement="isAAIQueryOk_ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="984" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="966" y="44" width="87" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_224"> + <di:waypoint xsi:type="dc:Point" x="866" y="163" /> + <di:waypoint xsi:type="dc:Point" x="865" y="122" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="862" y="135" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateDeletePONetwork_ScriptTask"> + <dc:Bounds x="1131" y="509" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="querySuccessYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_65"> + <di:waypoint xsi:type="dc:Point" x="1009" y="122" /> + <di:waypoint xsi:type="dc:Point" x="1009" y="177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1008" y="120" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="querySuccessNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_64"> + <di:waypoint xsi:type="dc:Point" x="1034" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1126" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1036" y="97" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_64" bpmnElement="isReturnCode404_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1126" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1115" y="41" width="77" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="isReturnCode404_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_EndEvent_118"> + <di:waypoint xsi:type="dc:Point" x="1176" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="98" /> + <di:waypoint xsi:type="dc:Point" x="1281" y="98" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1176" y="97" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="isReturnCode404_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_InclusiveGateway_2"> + <di:waypoint xsi:type="dc:Point" x="1151" y="122" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="177" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1152" y="120" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_65" bpmnElement="isResponseEmpty_ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="984" y="177" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1016" y="163" width="95" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="isResponseEmptyNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_65" targetElement="_BPMNShape_ScriptTask_250"> + <di:waypoint xsi:type="dc:Point" x="1009" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1010" y="269" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1016" y="227" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="isResponseEmptyYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_65" targetElement="_BPMNShape_InclusiveGateway_2"> + <di:waypoint xsi:type="dc:Point" x="1034" y="202" /> + <di:waypoint xsi:type="dc:Point" x="1126" y="202" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1034" y="202" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_118" bpmnElement="aai_Error_EndEvent"> + <dc:Bounds x="1281" y="80" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1270" y="121" width="59" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_66" bpmnElement="prepareNetworkRequest_ScriptTask"> + <dc:Bounds x="1131" y="269" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_66" targetElement="_BPMNShape_ScriptTask_242"> + <di:waypoint xsi:type="dc:Point" x="1181" y="349" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="387" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1196" y="368" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask"> + <dc:Bounds x="981" y="718" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_67"> + <di:waypoint xsi:type="dc:Point" x="1180" y="589" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="648" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1181" y="603.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true"> + <dc:Bounds x="-1" y="576" width="902" height="448" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent"> + <dc:Bounds x="49" y="896" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="43" y="938" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoDeleteOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1156" y="997" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1070" y="1010" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoDeleteNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1206" y="1022" /> + <di:waypoint xsi:type="dc:Point" x="1244" y="1022" /> + <di:waypoint xsi:type="dc:Point" x="1244" y="1022" /> + <di:waypoint xsi:type="dc:Point" x="1278" y="1022" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1206" y="1029.0213702128942" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoDeleteYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67"> + <di:waypoint xsi:type="dc:Point" x="1181" y="1047" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="1097" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1187" y="1053.3920491579422" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent"> + <dc:Bounds x="1278" y="1004" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1289" y="1047" width="59" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callDeleteSDNCAdapter_CallActivity"> + <dc:Bounds x="981" y="851" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131"> + <di:waypoint xsi:type="dc:Point" x="1081" y="891" /> + <di:waypoint xsi:type="dc:Point" x="1131" y="891" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1106" y="876" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_242" targetElement="_BPMNShape_ScriptTask_63"> + <di:waypoint xsi:type="dc:Point" x="1181" y="467" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="509" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1196" y="488" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_2" bpmnElement="silentSucces_InclusiveGateway"> + <dc:Bounds x="1126" y="177" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1136" y="227" width="33" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="silentSuccess_SequenceFlow" sourceElement="_BPMNShape_InclusiveGateway_2"> + <di:waypoint xsi:type="dc:Point" x="1176" y="202" /> + <di:waypoint xsi:type="dc:Point" x="1305" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1195" y="180.7648701031734" width="72" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask"> + <dc:Bounds x="1131" y="851" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67"> + <di:waypoint xsi:type="dc:Point" x="1180" y="931" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="997" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1181" y="949" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_242" bpmnElement="sendRequestToNewworkAdapater_ScriptTask"> + <dc:Bounds x="1131" y="387" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_179" bpmnElement="EndEvent_1"> + <dc:Bounds x="1458" y="185" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1476" y="226" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_180" bpmnElement="EndEvent_2"> + <dc:Bounds x="817" y="687" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="835" y="728" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_182" bpmnElement="EndEvent_3"> + <dc:Bounds x="1163" y="1228" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1181" y="1269" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_250" bpmnElement="callRESTQueryCloudRegion_ScriptTask"> + <dc:Bounds x="960" y="269" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_52" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ScriptTask_250" targetElement="_BPMNShape_ScriptTask_66"> + <di:waypoint xsi:type="dc:Point" x="1060" y="309" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="309" /> + <di:waypoint xsi:type="dc:Point" x="1096" y="309" /> + <di:waypoint xsi:type="dc:Point" x="1131" y="309" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1111" y="309" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_41" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="1213" y="913" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1231" y="949" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_BoundaryEvent_41" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1241" y="945" /> + <di:waypoint xsi:type="dc:Point" x="1286" y="1007" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1264" y="961" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_224" bpmnElement="isRelationshipExists_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="840" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="829" y="41" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="isRelationshipExistNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ExclusiveGateway_62"> + <di:waypoint xsi:type="dc:Point" x="890" y="97" /> + <di:waypoint xsi:type="dc:Point" x="984" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="97" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_216" bpmnElement="relationshipError_EndEvent"> + <dc:Bounds x="730" y="80" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="701" y="117" width="109" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_61" bpmnElement="isRelationshipExistYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_EndEvent_216"> + <di:waypoint xsi:type="dc:Point" x="840" y="97" /> + <di:waypoint xsi:type="dc:Point" x="800" y="97" /> + <di:waypoint xsi:type="dc:Point" x="800" y="98" /> + <di:waypoint xsi:type="dc:Point" x="766" y="98" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="816" y="97" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_29" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="0" y="369" width="326" height="175" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_73" bpmnElement="StartEvent_1"> + <dc:Bounds x="36" y="432" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="54" y="473" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_222" bpmnElement="EndEvent_4"> + <dc:Bounds x="240" y="432" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="258" y="473" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_272" bpmnElement="unexpectedError_DeleteNetworkInfra_ScriptTask_1"> + <dc:Bounds x="108" y="410" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_StartEvent_73" targetElement="_BPMNShape_ScriptTask_272"> + <di:waypoint xsi:type="dc:Point" x="72" y="450" /> + <di:waypoint xsi:type="dc:Point" x="108" y="450" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_272" targetElement="_BPMNShape_EndEvent_222"> + <di:waypoint xsi:type="dc:Point" x="208" y="450" /> + <di:waypoint xsi:type="dc:Point" x="240" y="450" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00lgy9f_di" bpmnElement="ScriptTask_00lgy9f"> + <dc:Bounds x="688" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1a51h25_di" bpmnElement="SequenceFlow_1a51h25"> + <di:waypoint xsi:type="dc:Point" x="85" y="914" /> + <di:waypoint xsi:type="dc:Point" x="124" y="914" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="105" y="899" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yvnovn_di" bpmnElement="SequenceFlow_1yvnovn"> + <di:waypoint xsi:type="dc:Point" x="788" y="705" /> + <di:waypoint xsi:type="dc:Point" x="817" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="803" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01xjfhu_di" bpmnElement="ScriptTask_01xjfhu"> + <dc:Bounds x="1131" y="1097" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1pbgnr2_di" bpmnElement="SequenceFlow_1pbgnr2"> + <di:waypoint xsi:type="dc:Point" x="1181" y="1177" /> + <di:waypoint xsi:type="dc:Point" x="1181" y="1228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1196" y="1202.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pdp4d2_di" bpmnElement="SequenceFlow_1pdp4d2"> + <di:waypoint xsi:type="dc:Point" x="1031" y="798" /> + <di:waypoint xsi:type="dc:Point" x="1031" y="851" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1046" y="824.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_02t94x3_di" bpmnElement="ExclusiveGateway_02t94x3" isMarkerVisible="true"> + <dc:Bounds x="1156" y="648" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1150" y="707" width="61" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0r3pvf8_di" bpmnElement="SequenceFlow_0r3pvf8"> + <di:waypoint xsi:type="dc:Point" x="1156" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1031" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1031" y="718" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="681" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0iqzbz6_di" bpmnElement="ScriptTask_0iqzbz6"> + <dc:Bounds x="1426" y="851" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_03wzdas_di" bpmnElement="CallActivity_03wzdas"> + <dc:Bounds x="1279" y="851" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jnva78_di" bpmnElement="SequenceFlow_1jnva78"> + <di:waypoint xsi:type="dc:Point" x="1279" y="891" /> + <di:waypoint xsi:type="dc:Point" x="1231" y="891" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1255" y="876" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0zlbzad_di" bpmnElement="SequenceFlow_0zlbzad"> + <di:waypoint xsi:type="dc:Point" x="1426" y="891" /> + <di:waypoint xsi:type="dc:Point" x="1379" y="891" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1403" y="876" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kqnddy_di" bpmnElement="SequenceFlow_0kqnddy"> + <di:waypoint xsi:type="dc:Point" x="1206" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1279" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1217" y="677.9562629793824" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_01w2cd9_di" bpmnElement="ScriptTask_01w2cd9"> + <dc:Bounds x="597" y="163" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0msqfwu_di" bpmnElement="SequenceFlow_0msqfwu"> + <di:waypoint xsi:type="dc:Point" x="697" y="203" /> + <di:waypoint xsi:type="dc:Point" x="816" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="757" y="188" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0dtzzht_di" bpmnElement="ScriptTask_0dtzzht"> + <dc:Bounds x="1305" y="163" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0f25bme_di" bpmnElement="SequenceFlow_0f25bme"> + <di:waypoint xsi:type="dc:Point" x="1405" y="203" /> + <di:waypoint xsi:type="dc:Point" x="1458" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1432" y="178" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0wyu1mx_di" bpmnElement="CallActivity_0wyu1mx"> + <dc:Bounds x="1426" y="633" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1wf192s_di" bpmnElement="ScriptTask_1wf192s"> + <dc:Bounds x="1279" y="633" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1o088sy_di" bpmnElement="SequenceFlow_1o088sy"> + <di:waypoint xsi:type="dc:Point" x="1379" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1403" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1403" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1426" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1418" y="673" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_024qvqd_di" bpmnElement="ExclusiveGateway_024qvqd" isMarkerVisible="true"> + <dc:Bounds x="1597" y="775" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1622" y="825" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00vwf2h_di" bpmnElement="ScriptTask_00vwf2h"> + <dc:Bounds x="1572" y="633" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_0un9yyu_di" bpmnElement="BoundaryEvent_0un9yyu"> + <dc:Bounds x="1654" y="695" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1672" y="731" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1i3193l_di" bpmnElement="SequenceFlow_1i3193l"> + <di:waypoint xsi:type="dc:Point" x="1526" y="673" /> + <di:waypoint xsi:type="dc:Point" x="1572" y="673" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1549" y="648" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0n8sf23_di" bpmnElement="SequenceFlow_0n8sf23"> + <di:waypoint xsi:type="dc:Point" x="1622" y="713" /> + <di:waypoint xsi:type="dc:Point" x="1622" y="775" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1637" y="734" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_08hus4u_di" bpmnElement="SequenceFlow_08hus4u"> + <di:waypoint xsi:type="dc:Point" x="1680" y="729" /> + <di:waypoint xsi:type="dc:Point" x="1710" y="784" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1695" y="741.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qyo7ot_di" bpmnElement="SequenceFlow_1qyo7ot"> + <di:waypoint xsi:type="dc:Point" x="1647" y="800" /> + <di:waypoint xsi:type="dc:Point" x="1700" y="800" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1651" y="808" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0f13b17_di" bpmnElement="SequenceFlow_0f13b17"> + <di:waypoint xsi:type="dc:Point" x="1622" y="825" /> + <di:waypoint xsi:type="dc:Point" x="1622" y="891" /> + <di:waypoint xsi:type="dc:Point" x="1526" y="891" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1629" y="824" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0p7ad9r_di" bpmnElement="EndEvent_1l210ae"> + <dc:Bounds x="1700" y="782" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1718" y="818" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0n4do0p_di" bpmnElement="ScriptTask_0n4do0p"> + <dc:Bounds x="245" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1gix2o6_di" bpmnElement="ExclusiveGateway_1gix2o6" isMarkerVisible="true"> + <dc:Bounds x="270" y="889" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="939" width="77" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0tiz0kk_di" bpmnElement="SequenceFlow_0tiz0kk"> + <di:waypoint xsi:type="dc:Point" x="295" y="889" /> + <di:waypoint xsi:type="dc:Point" x="295" y="869" /> + <di:waypoint xsi:type="dc:Point" x="295" y="869" /> + <di:waypoint xsi:type="dc:Point" x="295" y="849" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="299" y="858.4545454545455" width="19" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1suj1nc_di" bpmnElement="SequenceFlow_1suj1nc"> + <di:waypoint xsi:type="dc:Point" x="320" y="914" /> + <di:waypoint xsi:type="dc:Point" x="437" y="914" /> + <di:waypoint xsi:type="dc:Point" x="437" y="849" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="897" width="14" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0lku52d_di" bpmnElement="CallActivity_0lku52d"> + <dc:Bounds x="523" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1x7o5bo_di" bpmnElement="ExclusiveGateway_1x7o5bo" isMarkerVisible="true"> + <dc:Bounds x="270" y="799" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="173" y="812" width="87" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jb7rws_di" bpmnElement="SequenceFlow_0jb7rws"> + <di:waypoint xsi:type="dc:Point" x="295" y="799" /> + <di:waypoint xsi:type="dc:Point" x="295" y="772" /> + <di:waypoint xsi:type="dc:Point" x="437" y="772" /> + <di:waypoint xsi:type="dc:Point" x="437" y="799" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="312" y="776.0384854424079" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_17qke2s_di" bpmnElement="ExclusiveGateway_01xin16"> + <dc:Bounds x="412" y="799" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="437" y="849" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1raa09h_di" bpmnElement="SequenceFlow_1raa09h"> + <di:waypoint xsi:type="dc:Point" x="320" y="824" /> + <di:waypoint xsi:type="dc:Point" x="412" y="824" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="366" y="809" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1nl99y6_di" bpmnElement="SequenceFlow_1nl99y6"> + <di:waypoint xsi:type="dc:Point" x="462" y="824" /> + <di:waypoint xsi:type="dc:Point" x="738" y="824" /> + <di:waypoint xsi:type="dc:Point" x="738" y="745" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="600" y="809" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0n4ya47_di" bpmnElement="ScriptTask_0n4ya47"> + <dc:Bounds x="387" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wif0e5_di" bpmnElement="SequenceFlow_1wif0e5"> + <di:waypoint xsi:type="dc:Point" x="345" y="705" /> + <di:waypoint xsi:type="dc:Point" x="387" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="366" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_147vc14_di" bpmnElement="SequenceFlow_147vc14"> + <di:waypoint xsi:type="dc:Point" x="487" y="705" /> + <di:waypoint xsi:type="dc:Point" x="523" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="505" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_021b0sz_di" bpmnElement="SequenceFlow_021b0sz"> + <di:waypoint xsi:type="dc:Point" x="224" y="914" /> + <di:waypoint xsi:type="dc:Point" x="270" y="914" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="247" y="899" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gtl61j_di" bpmnElement="Task_0026x4v"> + <dc:Bounds x="124" y="874" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_0i06ryl_di" bpmnElement="TextAnnotation_0i06ryl"> + <dc:Bounds x="592" y="596" width="106" height="45" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0gzsxad_di" bpmnElement="Association_0gzsxad"> + <di:waypoint xsi:type="dc:Point" x="606" y="665" /> + <di:waypoint xsi:type="dc:Point" x="627" y="641" /> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn new file mode 100644 index 0000000000..7ec02addfa --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn @@ -0,0 +1,547 @@ +<?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="1.4.0"> + <bpmn:process id="DoDeleteNetworkInstanceRollback" name="DoDeleteNetworkInstanceRollback" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback() +DoDeleteNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" /> + <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0p5zgdb" /> + <bpmn:callActivity id="CallActivity_1x88fsq" name="Call RSRC SDNC Activate Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="DELNWKIR_rollbackDeactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackDeactivateSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackDeactivateSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1mxbdps</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07s5r14</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:exclusiveGateway id="ExclusiveGateway_0p5zgdb" name="is RSRC Deactivate Rollback?" default="SequenceFlow_1bb7zpp"> + <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1bb7zpp</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1mxbdps</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1xokvq6</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1xs882r</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ucaagl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback() +DoDeleteNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1bb7zpp" name="No" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="ExclusiveGateway_03d5sol" /> + <bpmn:sequenceFlow id="SequenceFlow_1mxbdps" name="Yes" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="CallActivity_1x88fsq"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackDeactivateSDNCRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_07s5r14" sourceRef="CallActivity_1x88fsq" targetRef="ExclusiveGateway_03d5sol" /> + <bpmn:endEvent id="EndEvent_1fvr7ad"> + <bpmn:incoming>SequenceFlow_1ucaagl</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1eyt8z2" sourceRef="ServiceTask_1vx8ti9" targetRef="ExclusiveGateway_03fn5ks" /> + <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback() +DoDeleteNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1j0eixl"> + <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_1" /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0jxh015"> + <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" /> + <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" /> + </bpmn:subProcess> + <bpmn:inclusiveGateway id="ExclusiveGateway_0798yby"> + <bpmn:incoming>SequenceFlow_1hcmrh9</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1pi168e</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xs882r</bpmn:outgoing> + </bpmn:inclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1xs882r" sourceRef="ExclusiveGateway_0798yby" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_03d5sol" name="is PO Network Rollback?" default="SequenceFlow_1yj3542"> + <bpmn:incoming>SequenceFlow_1bb7zpp</bpmn:incoming> + <bpmn:incoming>SequenceFlow_07s5r14</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yj3542</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_18e00sw</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1yj3542" name="No" sourceRef="ExclusiveGateway_03d5sol" targetRef="ExclusiveGateway_03fn5ks" /> + <bpmn:serviceTask id="ServiceTask_1vx8ti9" name="Call Rollback Network"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="payload">${DELNWKIR_rollbackNetworkRequest}</camunda:inputParameter> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)} +]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry> + <camunda:entry key="content-type">application/xml</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="DELNWKIR_rollbackNetworkResponse">${response}</camunda:outputParameter> + <camunda:outputParameter name="DELNWKIR_rollbackNetworkReturnCode">${statusCode}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_18e00sw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1eyt8z2</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_18e00sw" name="Yes" sourceRef="ExclusiveGateway_03d5sol" targetRef="ServiceTask_1vx8ti9"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_03fn5ks" name="is SDNC Rollback?" default="SequenceFlow_1xokvq6"> + <bpmn:incoming>SequenceFlow_1yj3542</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1eyt8z2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1xokvq6</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_172safw</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_1ga27si" name="is RSRC SDNC?" default="SequenceFlow_1wy1aba"> + <bpmn:incoming>SequenceFlow_172safw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wy1aba</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1yltkyg</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1xokvq6" name="No" sourceRef="ExclusiveGateway_03fn5ks" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:sequenceFlow id="SequenceFlow_172safw" name="Yes" sourceRef="ExclusiveGateway_03fn5ks" targetRef="ExclusiveGateway_1ga27si"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1wy1aba" name="No" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_00chyig" /> + <bpmn:sequenceFlow id="SequenceFlow_1yltkyg" name="Yes" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_1iuumxi"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1hcmrh9" sourceRef="Task_1iuumxi" targetRef="ExclusiveGateway_0798yby" /> + <bpmn:sequenceFlow id="SequenceFlow_1pi168e" sourceRef="Task_00chyig" targetRef="ExclusiveGateway_0798yby" /> + <bpmn:callActivity id="Task_1iuumxi" name="Call Assign RSRC SDNC Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="DELNWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1yltkyg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1hcmrh9</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:callActivity id="Task_00chyig" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="DELNWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1wy1aba</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1pi168e</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1ucaagl" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" /> + <bpmn:subProcess id="SubProcess_02vfqr7" triggeredByEvent="true"> + <bpmn:endEvent id="EndEvent_0m7hpuj"> + <bpmn:incoming>SequenceFlow_1s5yjuu</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0yr3vca" name="Catch Exception" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_01hh1wq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1s5yjuu</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("workflowException", execution.getVariable("WorkflowException")]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_001ol7f"> + <bpmn:outgoing>SequenceFlow_01hh1wq</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1s5yjuu" sourceRef="ScriptTask_0yr3vca" targetRef="EndEvent_0m7hpuj" /> + <bpmn:sequenceFlow id="SequenceFlow_01hh1wq" sourceRef="StartEvent_001ol7f" targetRef="ScriptTask_0yr3vca" /> + </bpmn:subProcess> + <bpmn:boundaryEvent id="BoundaryEvent_1mrkh9x" attachedToRef="CallActivity_1x88fsq"> + <bpmn:outgoing>SequenceFlow_0b0m3o7</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:boundaryEvent id="BoundaryEvent_16cracu" attachedToRef="ServiceTask_1vx8ti9"> + <bpmn:outgoing>SequenceFlow_141226w</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:sequenceFlow id="SequenceFlow_141226w" sourceRef="BoundaryEvent_16cracu" targetRef="EndEvent_00y9o8y" /> + <bpmn:sequenceFlow id="SequenceFlow_0b0m3o7" sourceRef="BoundaryEvent_1mrkh9x" targetRef="EndEvent_00y9o8y" /> + <bpmn:endEvent id="EndEvent_00y9o8y"> + <bpmn:incoming>SequenceFlow_141226w</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0b0m3o7</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:endEvent> + <bpmn:boundaryEvent id="BoundaryEvent_1gk4tem" attachedToRef="Task_1iuumxi"> + <bpmn:outgoing>SequenceFlow_1lr1613</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:boundaryEvent id="BoundaryEvent_1qaz277" attachedToRef="Task_00chyig"> + <bpmn:outgoing>SequenceFlow_0np0b8p</bpmn:outgoing> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:boundaryEvent> + <bpmn:endEvent id="EndEvent_1qfbudr"> + <bpmn:incoming>SequenceFlow_1lr1613</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0np0b8p</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_2" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1lr1613" sourceRef="BoundaryEvent_1gk4tem" targetRef="EndEvent_1qfbudr" /> + <bpmn:sequenceFlow id="SequenceFlow_0np0b8p" sourceRef="BoundaryEvent_1qaz277" targetRef="EndEvent_1qfbudr" /> + <bpmn:textAnnotation id="TextAnnotation_000ap15"> <bpmn:text><![CDATA[Include ONLY inputs/varrables:  +rollbackData, as Map +-rollbackDeactivateSDNCRequest +-rollbackNetworkRequest +WorkflowException +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" /> + <bpmn:textAnnotation id="TextAnnotation_0vwyo82"> <bpmn:text><![CDATA[set value for: +WorkflowException +rolledBack +wasDeleted +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" /> + </bpmn:process> + <bpmn:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteNetworkInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="214" y="240" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="232" y="276" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1"> + <dc:Bounds x="333" y="218" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg"> + <di:waypoint xsi:type="dc:Point" x="250" y="258" /> + <di:waypoint xsi:type="dc:Point" x="333" y="258" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="292" y="243" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2"> + <di:waypoint xsi:type="dc:Point" x="433" y="258" /> + <di:waypoint xsi:type="dc:Point" x="556" y="258" /> + <di:waypoint xsi:type="dc:Point" x="556" y="347" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="243" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1x88fsq_di" bpmnElement="CallActivity_1x88fsq"> + <dc:Bounds x="506" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0p5zgdb_di" bpmnElement="ExclusiveGateway_0p5zgdb" isMarkerVisible="true"> + <dc:Bounds x="531" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="451" y="360" width="55" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15"> + <dc:Bounds x="112" y="355" width="277" height="115" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal"> + <di:waypoint xsi:type="dc:Point" x="349" y="298" /> + <di:waypoint xsi:type="dc:Point" x="300" y="355" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu"> + <dc:Bounds x="1097" y="332" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82"> + <dc:Bounds x="1230" y="448" width="165" height="60" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b"> + <di:waypoint xsi:type="dc:Point" x="1195" y="404" /> + <di:waypoint xsi:type="dc:Point" x="1264" y="448" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bb7zpp_di" bpmnElement="SequenceFlow_1bb7zpp"> + <di:waypoint xsi:type="dc:Point" x="581" y="372" /> + <di:waypoint xsi:type="dc:Point" x="711" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="589" y="350.17259171746633" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1mxbdps_di" bpmnElement="SequenceFlow_1mxbdps"> + <di:waypoint xsi:type="dc:Point" x="556" y="397" /> + <di:waypoint xsi:type="dc:Point" x="556" y="481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="560" y="397.10731155015196" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07s5r14_di" bpmnElement="SequenceFlow_07s5r14"> + <di:waypoint xsi:type="dc:Point" x="606" y="521" /> + <di:waypoint xsi:type="dc:Point" x="639" y="521" /> + <di:waypoint xsi:type="dc:Point" x="639" y="372" /> + <di:waypoint xsi:type="dc:Point" x="711" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="654" y="446.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad"> + <dc:Bounds x="1253" y="252" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1271" y="288" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1eyt8z2_di" bpmnElement="SequenceFlow_1eyt8z2"> + <di:waypoint xsi:type="dc:Point" x="786" y="521" /> + <di:waypoint xsi:type="dc:Point" x="815" y="521" /> + <di:waypoint xsi:type="dc:Point" x="815" y="372" /> + <di:waypoint xsi:type="dc:Point" x="866" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="830" y="446.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true"> + <dc:Bounds x="-6" y="665" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk"> + <dc:Bounds x="142" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl"> + <dc:Bounds x="27" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="45" y="783" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015"> + <dc:Bounds x="303" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="321" y="783" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v"> + <di:waypoint xsi:type="dc:Point" x="63" y="760" /> + <di:waypoint xsi:type="dc:Point" x="142" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="105" y="760" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3"> + <di:waypoint xsi:type="dc:Point" x="242" y="760" /> + <di:waypoint xsi:type="dc:Point" x="303" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="277" y="760" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_04myanb_di" bpmnElement="ExclusiveGateway_0798yby"> + <dc:Bounds x="1122" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1147" y="546" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xs882r_di" bpmnElement="SequenceFlow_1xs882r"> + <di:waypoint xsi:type="dc:Point" x="1147" y="496" /> + <di:waypoint xsi:type="dc:Point" x="1147" y="412" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1162" y="454" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_03d5sol_di" bpmnElement="ExclusiveGateway_03d5sol" isMarkerVisible="true"> + <dc:Bounds x="711" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="699" y="312" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1yj3542_di" bpmnElement="SequenceFlow_1yj3542"> + <di:waypoint xsi:type="dc:Point" x="761" y="372" /> + <di:waypoint xsi:type="dc:Point" x="866" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="774" y="354" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1vx8ti9_di" bpmnElement="ServiceTask_1vx8ti9"> + <dc:Bounds x="686" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_18e00sw_di" bpmnElement="SequenceFlow_18e00sw"> + <di:waypoint xsi:type="dc:Point" x="736" y="397" /> + <di:waypoint xsi:type="dc:Point" x="736" y="481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="748" y="394" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_03fn5ks_di" bpmnElement="ExclusiveGateway_03fn5ks" isMarkerVisible="true"> + <dc:Bounds x="866" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="867" y="310" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1ga27si_di" bpmnElement="ExclusiveGateway_1ga27si" isMarkerVisible="true"> + <dc:Bounds x="866" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="456" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xokvq6_di" bpmnElement="SequenceFlow_1xokvq6"> + <di:waypoint xsi:type="dc:Point" x="916" y="372" /> + <di:waypoint xsi:type="dc:Point" x="1097" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="926" y="353" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_172safw_di" bpmnElement="SequenceFlow_172safw"> + <di:waypoint xsi:type="dc:Point" x="891" y="397" /> + <di:waypoint xsi:type="dc:Point" x="891" y="496" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="898" y="396.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wy1aba_di" bpmnElement="SequenceFlow_1wy1aba"> + <di:waypoint xsi:type="dc:Point" x="891" y="546" /> + <di:waypoint xsi:type="dc:Point" x="891" y="677" /> + <di:waypoint xsi:type="dc:Point" x="955" y="677" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="903" y="541.5" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yltkyg_di" bpmnElement="SequenceFlow_1yltkyg"> + <di:waypoint xsi:type="dc:Point" x="916" y="521" /> + <di:waypoint xsi:type="dc:Point" x="955" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="915" y="502" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1hcmrh9_di" bpmnElement="SequenceFlow_1hcmrh9"> + <di:waypoint xsi:type="dc:Point" x="1055" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1122" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1089" y="506" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pi168e_di" bpmnElement="SequenceFlow_1pi168e"> + <di:waypoint xsi:type="dc:Point" x="1055" y="677" /> + <di:waypoint xsi:type="dc:Point" x="1147" y="677" /> + <di:waypoint xsi:type="dc:Point" x="1147" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1101" y="662" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_12rk9t5_di" bpmnElement="Task_1iuumxi"> + <dc:Bounds x="955" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0l1dvlv_di" bpmnElement="Task_00chyig"> + <dc:Bounds x="955" y="637" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ucaagl_di" bpmnElement="SequenceFlow_1ucaagl"> + <di:waypoint xsi:type="dc:Point" x="1147" y="332" /> + <di:waypoint xsi:type="dc:Point" x="1147" y="270" /> + <di:waypoint xsi:type="dc:Point" x="1253" y="270" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1162" y="301" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_02vfqr7_di" bpmnElement="SubProcess_02vfqr7" isExpanded="true"> + <dc:Bounds x="-10" y="898" width="382" height="213" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0m7hpuj_di" bpmnElement="EndEvent_0m7hpuj"> + <dc:Bounds x="293" y="977" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="311" y="1013" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0yr3vca_di" bpmnElement="ScriptTask_0yr3vca"> + <dc:Bounds x="120" y="955" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_001ol7f_di" bpmnElement="StartEvent_001ol7f"> + <dc:Bounds x="20" y="977" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="38" y="1013" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s5yjuu_di" bpmnElement="SequenceFlow_1s5yjuu"> + <di:waypoint xsi:type="dc:Point" x="220" y="995" /> + <di:waypoint xsi:type="dc:Point" x="293" y="995" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="257" y="970" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01hh1wq_di" bpmnElement="SequenceFlow_01hh1wq"> + <di:waypoint xsi:type="dc:Point" x="56" y="995" /> + <di:waypoint xsi:type="dc:Point" x="120" y="995" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="88" y="980" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="BoundaryEvent_10qmjw0_di" bpmnElement="BoundaryEvent_1mrkh9x"> + <dc:Bounds x="588" y="543" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_1n1s1n0_di" bpmnElement="BoundaryEvent_16cracu"> + <dc:Bounds x="668" y="543" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="686" y="579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_141226w_di" bpmnElement="SequenceFlow_141226w"> + <di:waypoint xsi:type="dc:Point" x="677" y="577" /> + <di:waypoint xsi:type="dc:Point" x="655" y="613" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="666" y="580" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b0m3o7_di" bpmnElement="SequenceFlow_0b0m3o7"> + <di:waypoint xsi:type="dc:Point" x="615" y="576" /> + <di:waypoint xsi:type="dc:Point" x="637" y="614" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="626" y="580" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0yeci14_di" bpmnElement="EndEvent_00y9o8y"> + <dc:Bounds x="628" y="611" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="646" y="647" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_10psbey_di" bpmnElement="BoundaryEvent_1gk4tem"> + <dc:Bounds x="1037" y="543" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1055" y="579" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="BoundaryEvent_0wka4xd_di" bpmnElement="BoundaryEvent_1qaz277"> + <dc:Bounds x="1037" y="619" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1055" y="655" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0c33uj0_di" bpmnElement="EndEvent_1qfbudr"> + <dc:Bounds x="1089" y="587" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1107" y="623" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lr1613_di" bpmnElement="SequenceFlow_1lr1613"> + <di:waypoint xsi:type="dc:Point" x="1068" y="572" /> + <di:waypoint xsi:type="dc:Point" x="1094" y="594" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1081" y="568" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0np0b8p_di" bpmnElement="SequenceFlow_0np0b8p"> + <di:waypoint xsi:type="dc:Point" x="1070" y="628" /> + <di:waypoint xsi:type="dc:Point" x="1092" y="614" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1081" y="606" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.bpmn new file mode 100644 index 0000000000..7fbfe46cdb --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.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:di="http://www.omg.org/spec/DD/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" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoDeleteResources" name="All Resources Deleted" isExecutable="true"> + <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1uqzt26"> + <bpmn:incoming>SequenceFlow_1r5306k</bpmn:incoming> + </bpmn:endEvent> + <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0sf5lpt"> + <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_06utmg4"> + <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" /> + <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" /> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_14bl5a0" /> + <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For WAN" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ubor5z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dza4q4</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddsi = new DoDeleteResources() +ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1dza4q4" sourceRef="ScriptTask_0z30dax" targetRef="CallActivity_Del_SDNC_cust" /> + <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_0z1x3sg" targetRef="Task_0963dho" /> + <bpmn:scriptTask id="Task_0z1x3sg" name="Prepare Resource Delele For NS" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1x3lehs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddsi = new DoDeleteResources() +ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_0963dho" name="Call Network Service Delete for NS" calledElement="DoDeleteVFCNetworkServiceInstance"> + <bpmn:extensionElements> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceTemplateId" target="resourceTemplateId" /> + <camunda:in source="resourceInstanceId" target="resourceInstanceId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0phwem2</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1dza4q4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lxqjmp</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1icwpye</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yujjwx</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:scriptTask id="ScriptTask_0o5bglz" name="Sequense Resources" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xqdf1z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_03c0zlq</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.sequenceResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_07toixi" name="Check Current Resource" default="SequenceFlow_1x3lehs"> + <bpmn:incoming>SequenceFlow_1htjmkv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ubor5z</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1x3lehs</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_12q6a51" name="Get Current Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_03c0zlq</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0s1lswk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1htjmkv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.getCurrentResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_03c0zlq" sourceRef="ScriptTask_0o5bglz" targetRef="ScriptTask_12q6a51" /> + <bpmn:sequenceFlow id="SequenceFlow_1htjmkv" sourceRef="ScriptTask_12q6a51" targetRef="ExclusiveGateway_07toixi" /> + <bpmn:sequenceFlow id="SequenceFlow_1ubor5z" name="SDN-C" sourceRef="ExclusiveGateway_07toixi" targetRef="ScriptTask_0z30dax"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" ) == "SDN-C" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1x3lehs" name="VF-C" sourceRef="ExclusiveGateway_07toixi" targetRef="Task_0z1x3sg" /> + <bpmn:scriptTask id="ScriptTask_0w46sge" name="Parse Next Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1lxqjmp</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0phwem2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0l5r96s</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.parseNextResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1lxqjmp" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ScriptTask_0w46sge" /> + <bpmn:sequenceFlow id="SequenceFlow_0phwem2" sourceRef="Task_0963dho" targetRef="ScriptTask_0w46sge" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1hgjg3u" name="Is All Resource Deleted" default="SequenceFlow_0s1lswk"> + <bpmn:incoming>SequenceFlow_0l5r96s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0talboa</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0s1lswk</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0l5r96s" sourceRef="ScriptTask_0w46sge" targetRef="ExclusiveGateway_1hgjg3u" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_16046vb" name="Is SDNC Service Contained" default="SequenceFlow_12avhgx"> + <bpmn:incoming>SequenceFlow_0talboa</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1icwpye</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_12avhgx</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1icwpye" name="yes" sourceRef="ExclusiveGateway_16046vb" targetRef="Task_0edkv0m"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0talboa" name="yes" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ExclusiveGateway_16046vb"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0s1lswk" name="no" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ScriptTask_12q6a51" /> + <bpmn:sequenceFlow id="SequenceFlow_1yujjwx" sourceRef="Task_0edkv0m" targetRef="ScriptTask_14pmqni" /> + <bpmn:scriptTask id="ScriptTask_14pmqni" name="Post Config Service Instance Creation" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1yujjwx</bpmn:incoming> + <bpmn:incoming>SequenceFlow_12avhgx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1r5306k</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoCreateResources() +csi.postConfigRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1r5306k" sourceRef="ScriptTask_14pmqni" targetRef="EndEvent_1uqzt26" /> + <bpmn:scriptTask id="ScriptTask_0ib77as" name="GET Current NS " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_042d7oc</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1t2hfv0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t8hf8m</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.getCurrentNS(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_0kf50as" name="GET NS Info from AAI" calledElement="GenericGetService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1t8hf8m</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0p5gr4z</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="ScriptTask_1lqjyj9" name="Post Process GET NS Info from AAI" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0p5gr4z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_131imj8</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1t8hf8m" sourceRef="ScriptTask_0ib77as" targetRef="CallActivity_0kf50as" /> + <bpmn:sequenceFlow id="SequenceFlow_0p5gr4z" sourceRef="CallActivity_0kf50as" targetRef="ScriptTask_1lqjyj9" /> + <bpmn:sequenceFlow id="SequenceFlow_1n85wxv" sourceRef="ScriptTask_197fr01" targetRef="ExclusiveGateway_1lt9ijz" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1lt9ijz" name="Is All Resource Info OK" default="SequenceFlow_042d7oc"> + <bpmn:extensionElements> + <camunda:properties> + <camunda:property /> + </camunda:properties> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1n85wxv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xqdf1z</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_042d7oc</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0xqdf1z" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0o5bglz"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allNsFinished" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_042d7oc" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0ib77as" /> + <bpmn:scriptTask id="ScriptTask_14bl5a0" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1t2hfv0</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1t2hfv0" sourceRef="ScriptTask_14bl5a0" targetRef="ScriptTask_0ib77as" /> + <bpmn:scriptTask id="ScriptTask_197fr01" name="Parse Next NS" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_131imj8</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1n85wxv</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteResources() +ddsi.parseNextNS(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_131imj8" sourceRef="ScriptTask_1lqjyj9" targetRef="ScriptTask_197fr01" /> + <bpmn:sequenceFlow id="SequenceFlow_12avhgx" name="no" sourceRef="ExclusiveGateway_16046vb" targetRef="ScriptTask_14pmqni" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResources"> + <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r"> + <dc:Bounds x="-214" y="-319" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-220" y="-278" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26"> + <dc:Bounds x="1388" y="725" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1316" y="766" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true"> + <dc:Bounds x="292" y="675" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9"> + <di:waypoint xsi:type="dc:Point" x="-196" y="-283" /> + <di:waypoint xsi:type="dc:Point" x="-196" y="-220" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-226" y="-257.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt"> + <dc:Bounds x="360" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="288" y="783" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4"> + <dc:Bounds x="653" y="742" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="581" y="783" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr"> + <dc:Bounds x="464" y="720" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3"> + <di:waypoint xsi:type="dc:Point" x="396" y="760" /> + <di:waypoint xsi:type="dc:Point" x="464" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="340" y="745" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo"> + <di:waypoint xsi:type="dc:Point" x="564" y="760" /> + <di:waypoint xsi:type="dc:Point" x="653" y="760" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="520" y="745" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax"> + <dc:Bounds x="470" y="111" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dza4q4_di" bpmnElement="SequenceFlow_1dza4q4"> + <di:waypoint xsi:type="dc:Point" x="570" y="151" /> + <di:waypoint xsi:type="dc:Point" x="688" y="152" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="130.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx"> + <di:waypoint xsi:type="dc:Point" x="576" y="378" /> + <di:waypoint xsi:type="dc:Point" x="688" y="378" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="587" y="357" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_0z1x3sg"> + <dc:Bounds x="476" y="338" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_0963dho"> + <dc:Bounds x="688" y="338" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust"> + <dc:Bounds x="688" y="112" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m"> + <dc:Bounds x="1356" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0o5bglz_di" bpmnElement="ScriptTask_0o5bglz"> + <dc:Bounds x="-26" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_07toixi_di" bpmnElement="ExclusiveGateway_07toixi" isMarkerVisible="true"> + <dc:Bounds x="342.56962025316454" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="404" y="261" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_12q6a51_di" bpmnElement="ScriptTask_12q6a51"> + <dc:Bounds x="159" y="450" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_03c0zlq_di" bpmnElement="SequenceFlow_03c0zlq"> + <di:waypoint xsi:type="dc:Point" x="24" y="313" /> + <di:waypoint xsi:type="dc:Point" x="24" y="494" /> + <di:waypoint xsi:type="dc:Point" x="159" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="397.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1htjmkv_di" bpmnElement="SequenceFlow_1htjmkv"> + <di:waypoint xsi:type="dc:Point" x="209" y="450" /> + <di:waypoint xsi:type="dc:Point" x="209" y="273" /> + <di:waypoint xsi:type="dc:Point" x="343" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="224" y="355.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ubor5z_di" bpmnElement="SequenceFlow_1ubor5z"> + <di:waypoint xsi:type="dc:Point" x="368" y="248" /> + <di:waypoint xsi:type="dc:Point" x="368" y="151" /> + <di:waypoint xsi:type="dc:Point" x="470" y="151" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="381" y="161" width="37" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x3lehs_di" bpmnElement="SequenceFlow_1x3lehs"> + <di:waypoint xsi:type="dc:Point" x="368" y="298" /> + <di:waypoint xsi:type="dc:Point" x="368" y="378" /> + <di:waypoint xsi:type="dc:Point" x="476" y="378" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="379" y="353" width="28" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0w46sge_di" bpmnElement="ScriptTask_0w46sge"> + <dc:Bounds x="865" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lxqjmp_di" bpmnElement="SequenceFlow_1lxqjmp"> + <di:waypoint xsi:type="dc:Point" x="788" y="152" /> + <di:waypoint xsi:type="dc:Point" x="827" y="152" /> + <di:waypoint xsi:type="dc:Point" x="827" y="273" /> + <di:waypoint xsi:type="dc:Point" x="865" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="206.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0phwem2_di" bpmnElement="SequenceFlow_0phwem2"> + <di:waypoint xsi:type="dc:Point" x="788" y="378" /> + <di:waypoint xsi:type="dc:Point" x="827" y="378" /> + <di:waypoint xsi:type="dc:Point" x="827" y="273" /> + <di:waypoint xsi:type="dc:Point" x="865" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="842" y="319.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1hgjg3u_di" bpmnElement="ExclusiveGateway_1hgjg3u" isMarkerVisible="true"> + <dc:Bounds x="1040.9252217997464" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1028" y="215" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0l5r96s_di" bpmnElement="SequenceFlow_0l5r96s"> + <di:waypoint xsi:type="dc:Point" x="965" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1041" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1003" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_16046vb_di" bpmnElement="ExclusiveGateway_16046vb" isMarkerVisible="true"> + <dc:Bounds x="1203.8174904942966" y="248.28010139416983" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1187" y="214" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1icwpye_di" bpmnElement="SequenceFlow_1icwpye"> + <di:waypoint xsi:type="dc:Point" x="1254" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1356" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1297" y="252" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0talboa_di" bpmnElement="SequenceFlow_0talboa"> + <di:waypoint xsi:type="dc:Point" x="1091" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1204" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1138" y="252" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0s1lswk_di" bpmnElement="SequenceFlow_0s1lswk"> + <di:waypoint xsi:type="dc:Point" x="1066" y="298" /> + <di:waypoint xsi:type="dc:Point" x="1066" y="490" /> + <di:waypoint xsi:type="dc:Point" x="259" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="388" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yujjwx_di" bpmnElement="SequenceFlow_1yujjwx"> + <di:waypoint xsi:type="dc:Point" x="1406" y="313" /> + <di:waypoint xsi:type="dc:Point" x="1406" y="523" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1421" y="412" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_14pmqni_di" bpmnElement="ScriptTask_14pmqni"> + <dc:Bounds x="1356" y="523" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1r5306k_di" bpmnElement="SequenceFlow_1r5306k"> + <di:waypoint xsi:type="dc:Point" x="1406" y="603" /> + <di:waypoint xsi:type="dc:Point" x="1406" y="725" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1421" y="658" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0ib77as_di" bpmnElement="ScriptTask_0ib77as"> + <dc:Bounds x="-246" y="-84" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0kf50as_di" bpmnElement="CallActivity_0kf50as"> + <dc:Bounds x="-84" y="-84" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1lqjyj9_di" bpmnElement="ScriptTask_1lqjyj9"> + <dc:Bounds x="80" y="-84" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1t8hf8m_di" bpmnElement="SequenceFlow_1t8hf8m"> + <di:waypoint xsi:type="dc:Point" x="-146" y="-44" /> + <di:waypoint xsi:type="dc:Point" x="-84" y="-44" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-160" y="-65" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0p5gr4z_di" bpmnElement="SequenceFlow_0p5gr4z"> + <di:waypoint xsi:type="dc:Point" x="16" y="-44" /> + <di:waypoint xsi:type="dc:Point" x="80" y="-44" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="3" y="-65" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1n85wxv_di" bpmnElement="SequenceFlow_1n85wxv"> + <di:waypoint xsi:type="dc:Point" x="290" y="-4" /> + <di:waypoint xsi:type="dc:Point" x="290" y="106" /> + <di:waypoint xsi:type="dc:Point" x="49" y="106" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="305" y="45" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1lt9ijz_di" bpmnElement="ExclusiveGateway_1lt9ijz" isMarkerVisible="true"> + <dc:Bounds x="-1" y="81" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-13" y="135" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xqdf1z_di" bpmnElement="SequenceFlow_0xqdf1z"> + <di:waypoint xsi:type="dc:Point" x="24" y="131" /> + <di:waypoint xsi:type="dc:Point" x="24" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="39" y="176" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_042d7oc_di" bpmnElement="SequenceFlow_042d7oc"> + <di:waypoint xsi:type="dc:Point" x="-1" y="106" /> + <di:waypoint xsi:type="dc:Point" x="-196" y="106" /> + <di:waypoint xsi:type="dc:Point" x="-196" y="-4" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-98.5" y="85" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_14bl5a0_di" bpmnElement="ScriptTask_14bl5a0"> + <dc:Bounds x="-246" y="-220" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1t2hfv0_di" bpmnElement="SequenceFlow_1t2hfv0"> + <di:waypoint xsi:type="dc:Point" x="-196" y="-140" /> + <di:waypoint xsi:type="dc:Point" x="-196" y="-84" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-181" y="-118" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_197fr01_di" bpmnElement="ScriptTask_197fr01"> + <dc:Bounds x="240" y="-84" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_131imj8_di" bpmnElement="SequenceFlow_131imj8"> + <di:waypoint xsi:type="dc:Point" x="180" y="-44" /> + <di:waypoint xsi:type="dc:Point" x="240" y="-44" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="210" y="-65" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12avhgx_di" bpmnElement="SequenceFlow_12avhgx"> + <di:waypoint xsi:type="dc:Point" x="1229" y="298" /> + <di:waypoint xsi:type="dc:Point" x="1229" y="563" /> + <di:waypoint xsi:type="dc:Point" x="1356" y="563" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1237" y="425" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn new file mode 100644 index 0000000000..fe5e93cbec --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn @@ -0,0 +1,455 @@ +<?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="1.10.0"> + <bpmn:process id="DoDeleteResourcesV1" name="DoDeleteResourcesV1" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Start Resource Delete"> + <bpmn:outgoing>SequenceFlow_0stqur4</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_0ngvt9d" name="Prepare Delete Resource Recipe" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1oil1t3</bpmn:incoming> + <bpmn:incoming>SequenceFlow_13nyd1j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1qm7owo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddrs = new DoDeleteResourcesV1() +ddrs.preResourceDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_15zy0jf" name="Execute Delete Resource Recipe" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_098gain</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ly5jrs</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddr = new DoDeleteResourcesV1() +ddr.executeResourceDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1gf78zz" name="Parse Next Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ly5jrs</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0djplpd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0i1gez5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddr = new DoDeleteResourcesV1() +ddr.parseNextResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0rtr0n7" name="Is All Resource Deleted"> + <bpmn:incoming>SequenceFlow_0i1gez5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1oil1t3</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1d5mzit</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0stqur4" sourceRef="StartEvent_1" targetRef="Task_1ue68b0" /> + <bpmn:sequenceFlow id="SequenceFlow_1qm7owo" sourceRef="ScriptTask_0ngvt9d" targetRef="ExclusiveGateway_0khn1my" /> + <bpmn:sequenceFlow id="SequenceFlow_1ly5jrs" sourceRef="ScriptTask_15zy0jf" targetRef="ScriptTask_1gf78zz" /> + <bpmn:sequenceFlow id="SequenceFlow_0i1gez5" sourceRef="ScriptTask_1gf78zz" targetRef="ExclusiveGateway_0rtr0n7" /> + <bpmn:sequenceFlow id="SequenceFlow_1oil1t3" name="No" sourceRef="ExclusiveGateway_0rtr0n7" targetRef="ScriptTask_0ngvt9d"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" ) == "false" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:subProcess id="SubProcess_0sbt4ns" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_1cjikl5"> + <bpmn:outgoing>SequenceFlow_0rkycoj</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0gh3mcj"> + <bpmn:incoming>SequenceFlow_117fiux</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0plexin" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0rkycoj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_117fiux</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0rkycoj" name="" sourceRef="StartEvent_1cjikl5" targetRef="ScriptTask_0plexin" /> + <bpmn:sequenceFlow id="SequenceFlow_117fiux" name="" sourceRef="ScriptTask_0plexin" targetRef="EndEvent_0gh3mcj" /> + </bpmn:subProcess> + <bpmn:exclusiveGateway id="ExclusiveGateway_1x63i6w" name="Is SDNC Service Contained"> + <bpmn:incoming>SequenceFlow_1yrkxjm</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1s1nnmj</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0lk19rm</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1yrkxjm" sourceRef="StartEvent_1eo3c2a" targetRef="ExclusiveGateway_1x63i6w" /> + <bpmn:endEvent id="EndEvent_17bzayo" name="End Resource Deletion"> + <bpmn:incoming>SequenceFlow_0o21fg8</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1s1nnmj" name="yes" sourceRef="ExclusiveGateway_1x63i6w" targetRef="prepareSDNCServiceTopologyDelete"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0lk19rm" name="no" sourceRef="ExclusiveGateway_1x63i6w" targetRef="ExclusiveGateway_1jybr0n"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "false" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1d5mzit" sourceRef="ExclusiveGateway_0rtr0n7" targetRef="EndEvent_17h3h92" /> + <bpmn:intermediateThrowEvent id="EndEvent_17h3h92" name="Go To Delete SDNC Service Topology"> + <bpmn:incoming>SequenceFlow_1d5mzit</bpmn:incoming> + <bpmn:linkEventDefinition name="DeleteSDNCServiceTopology" /> + </bpmn:intermediateThrowEvent> + <bpmn:intermediateCatchEvent id="StartEvent_1eo3c2a" name="Delete SDNC Service Topology"> + <bpmn:outgoing>SequenceFlow_1yrkxjm</bpmn:outgoing> + <bpmn:linkEventDefinition name="DeleteSDNCServiceTopology" /> + </bpmn:intermediateCatchEvent> + <bpmn:exclusiveGateway id="ExclusiveGateway_1jybr0n"> + <bpmn:incoming>SequenceFlow_0lk19rm</bpmn:incoming> + <bpmn:incoming>SequenceFlow_14fx6hv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0o21fg8</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0o21fg8" sourceRef="ExclusiveGateway_1jybr0n" targetRef="EndEvent_17bzayo" /> + <bpmn:scriptTask id="ScriptTask_12460xo" name="Sequense Resources" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_14dezx8</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_13nyd1j</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddrs = new DoDeleteResourcesV1() +ddrs.sequenceResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_13nyd1j" sourceRef="ScriptTask_12460xo" targetRef="ScriptTask_0ngvt9d" /> + <bpmn:sequenceFlow id="SequenceFlow_14dezx8" sourceRef="Task_1ue68b0" targetRef="ScriptTask_12460xo" /> + <bpmn:scriptTask id="Task_1ue68b0" name="Preprocess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0stqur4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14dezx8</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddrs = new DoDeleteResourcesV1() +ddrs.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0khn1my" name="Is The Resource Instance Exists"> + <bpmn:incoming>SequenceFlow_1qm7owo</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_098gain</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_19ccmqv</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_098gain" name="yes" sourceRef="ExclusiveGateway_0khn1my" targetRef="ScriptTask_15zy0jf"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("resourceInstanceId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:serviceTask id="ServiceTask_1bw1mjh" name="update progress update"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_11bgbsh</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0djplpd</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:scriptTask id="ScriptTask_0shhhxr" name="Prepare progress finished for the resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_19ccmqv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11bgbsh</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteResourcesV1() +dcsi.prepareFinishedProgressForResource(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_11bgbsh" sourceRef="ScriptTask_0shhhxr" targetRef="ServiceTask_1bw1mjh" /> + <bpmn:sequenceFlow id="SequenceFlow_19ccmqv" name="no" sourceRef="ExclusiveGateway_0khn1my" targetRef="ScriptTask_0shhhxr" /> + <bpmn:sequenceFlow id="SequenceFlow_0djplpd" sourceRef="ServiceTask_1bw1mjh" targetRef="ScriptTask_1gf78zz" /> + <bpmn:sequenceFlow id="SequenceFlow_11h5pba" sourceRef="prepareSDNCServiceTopologyDelete" targetRef="CallActivity_1ueonyc" /> + <bpmn:scriptTask id="prepareSDNCServiceTopologyDelete" name="Prepare SDNC service Topology Deactivate" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1s1nnmj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11h5pba</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddr = new DoDeleteResourcesV1() +ddr.prepareSDNCServiceDeactivateRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="CallActivity_1ueonyc" name="Call SDNC RSRC Adapter V1 " calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_11h5pba</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0gqlayv</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_0gqlayv" sourceRef="CallActivity_1ueonyc" targetRef="ScriptTask_0k6kwv7" /> + <bpmn:callActivity id="CallActivity_0zuhttc" name="Call SDNC RSRC Adapter V1 " calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" /> + <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0etaubw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14fx6hv</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_14fx6hv" sourceRef="CallActivity_0zuhttc" targetRef="ExclusiveGateway_1jybr0n" /> + <bpmn:scriptTask id="ScriptTask_0k6kwv7" name="Prepare SDNC service Topology Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0gqlayv</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0etaubw</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddr = new DoDeleteResourcesV1() +ddr.prepareSDNCServiceDeleteRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0etaubw" sourceRef="ScriptTask_0k6kwv7" targetRef="CallActivity_0zuhttc" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResourcesV1"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="-70" y="255" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-89" y="291" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ngvt9d_di" bpmnElement="ScriptTask_0ngvt9d"> + <dc:Bounds x="392" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_15zy0jf_di" bpmnElement="ScriptTask_15zy0jf"> + <dc:Bounds x="665" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1gf78zz_di" bpmnElement="ScriptTask_1gf78zz"> + <dc:Bounds x="865" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0rtr0n7_di" bpmnElement="ExclusiveGateway_0rtr0n7" isMarkerVisible="true"> + <dc:Bounds x="1011" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="999" y="302" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0stqur4_di" bpmnElement="SequenceFlow_0stqur4"> + <di:waypoint xsi:type="dc:Point" x="-34" y="273" /> + <di:waypoint xsi:type="dc:Point" x="38" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qm7owo_di" bpmnElement="SequenceFlow_1qm7owo"> + <di:waypoint xsi:type="dc:Point" x="492" y="273" /> + <di:waypoint xsi:type="dc:Point" x="550" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="476" y="252" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ly5jrs_di" bpmnElement="SequenceFlow_1ly5jrs"> + <di:waypoint xsi:type="dc:Point" x="765" y="273" /> + <di:waypoint xsi:type="dc:Point" x="865" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="770" y="252" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0i1gez5_di" bpmnElement="SequenceFlow_0i1gez5"> + <di:waypoint xsi:type="dc:Point" x="965" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1011" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="943" y="252" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1oil1t3_di" bpmnElement="SequenceFlow_1oil1t3"> + <di:waypoint xsi:type="dc:Point" x="1036" y="298" /> + <di:waypoint xsi:type="dc:Point" x="1036" y="418" /> + <di:waypoint xsi:type="dc:Point" x="442" y="418" /> + <di:waypoint xsi:type="dc:Point" x="442" y="313" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="731" y="397" width="16" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0sbt4ns_di" bpmnElement="SubProcess_0sbt4ns" isExpanded="true"> + <dc:Bounds x="453" y="815" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1cjikl5_di" bpmnElement="StartEvent_1cjikl5"> + <dc:Bounds x="523" y="884" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="925" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0gh3mcj_di" bpmnElement="EndEvent_0gh3mcj"> + <dc:Bounds x="816" y="884" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="699" y="925" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0plexin_di" bpmnElement="ScriptTask_0plexin"> + <dc:Bounds x="627" y="862" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0rkycoj_di" bpmnElement="SequenceFlow_0rkycoj"> + <di:waypoint xsi:type="dc:Point" x="559" y="902" /> + <di:waypoint xsi:type="dc:Point" x="627" y="902" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="458" y="887" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_117fiux_di" bpmnElement="SequenceFlow_117fiux"> + <di:waypoint xsi:type="dc:Point" x="727" y="902" /> + <di:waypoint xsi:type="dc:Point" x="816" y="902" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639.5" y="887" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1x63i6w_di" bpmnElement="ExclusiveGateway_1x63i6w" isMarkerVisible="true"> + <dc:Bounds x="396" y="581" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="379" y="635" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1yrkxjm_di" bpmnElement="SequenceFlow_1yrkxjm"> + <di:waypoint xsi:type="dc:Point" x="269" y="606" /> + <di:waypoint xsi:type="dc:Point" x="396" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="332.5" y="585" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_17bzayo_di" bpmnElement="EndEvent_17bzayo"> + <dc:Bounds x="1194" y="588" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1181" y="628" width="68" height="28" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s1nnmj_di" bpmnElement="SequenceFlow_1s1nnmj"> + <di:waypoint xsi:type="dc:Point" x="446" y="606" /> + <di:waypoint xsi:type="dc:Point" x="509" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="468.8987341772152" y="585" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0lk19rm_di" bpmnElement="SequenceFlow_0lk19rm"> + <di:waypoint xsi:type="dc:Point" x="421" y="631" /> + <di:waypoint xsi:type="dc:Point" x="421" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1130" y="721" /> + <di:waypoint xsi:type="dc:Point" x="1130" y="631" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="770.322505800464" y="700" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1d5mzit_di" bpmnElement="SequenceFlow_1d5mzit"> + <di:waypoint xsi:type="dc:Point" x="1061" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1150" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1105.5" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_122grb2_di" bpmnElement="EndEvent_17h3h92"> + <dc:Bounds x="1150" y="255" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="295" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_11q62m0_di" bpmnElement="StartEvent_1eo3c2a"> + <dc:Bounds x="233" y="588" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="209" y="628" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1jybr0n_di" bpmnElement="ExclusiveGateway_1jybr0n" isMarkerVisible="true"> + <dc:Bounds x="1105" y="581" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1086" y="635" width="90" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0o21fg8_di" bpmnElement="SequenceFlow_0o21fg8"> + <di:waypoint xsi:type="dc:Point" x="1155" y="606" /> + <di:waypoint xsi:type="dc:Point" x="1194" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1129.5" y="585" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12460xo_di" bpmnElement="ScriptTask_12460xo"> + <dc:Bounds x="219" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13nyd1j_di" bpmnElement="SequenceFlow_13nyd1j"> + <di:waypoint xsi:type="dc:Point" x="319" y="273" /> + <di:waypoint xsi:type="dc:Point" x="392" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="355.5" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14dezx8_di" bpmnElement="SequenceFlow_14dezx8"> + <di:waypoint xsi:type="dc:Point" x="138" y="273" /> + <di:waypoint xsi:type="dc:Point" x="219" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="178.5" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1tdnal8_di" bpmnElement="Task_1ue68b0"> + <dc:Bounds x="38" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0khn1my_di" bpmnElement="ExclusiveGateway_0khn1my" isMarkerVisible="true"> + <dc:Bounds x="550" y="248" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="301" width="79" height="28" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_098gain_di" bpmnElement="SequenceFlow_098gain"> + <di:waypoint xsi:type="dc:Point" x="600" y="273" /> + <di:waypoint xsi:type="dc:Point" x="665" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="251" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1bw1mjh_di" bpmnElement="ServiceTask_1bw1mjh"> + <dc:Bounds x="865" y="112" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0shhhxr_di" bpmnElement="ScriptTask_0shhhxr"> + <dc:Bounds x="665" y="112" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_11bgbsh_di" bpmnElement="SequenceFlow_11bgbsh"> + <di:waypoint xsi:type="dc:Point" x="765" y="152" /> + <di:waypoint xsi:type="dc:Point" x="865" y="152" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="815" y="130" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ccmqv_di" bpmnElement="SequenceFlow_19ccmqv"> + <di:waypoint xsi:type="dc:Point" x="575" y="248" /> + <di:waypoint xsi:type="dc:Point" x="575" y="152" /> + <di:waypoint xsi:type="dc:Point" x="665" y="152" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="584" y="193" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0djplpd_di" bpmnElement="SequenceFlow_0djplpd"> + <di:waypoint xsi:type="dc:Point" x="915" y="192" /> + <di:waypoint xsi:type="dc:Point" x="915" y="213" /> + <di:waypoint xsi:type="dc:Point" x="915" y="213" /> + <di:waypoint xsi:type="dc:Point" x="915" y="233" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="930" y="206" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11h5pba_di" bpmnElement="SequenceFlow_11h5pba"> + <di:waypoint xsi:type="dc:Point" x="609" y="606" /> + <di:waypoint xsi:type="dc:Point" x="654" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="586.5" y="585" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0va5zgp_di" bpmnElement="prepareSDNCServiceTopologyDelete"> + <dc:Bounds x="509" y="566" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1ueonyc_di" bpmnElement="CallActivity_1ueonyc"> + <dc:Bounds x="654" y="566" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0gqlayv_di" bpmnElement="SequenceFlow_0gqlayv"> + <di:waypoint xsi:type="dc:Point" x="754" y="606" /> + <di:waypoint xsi:type="dc:Point" x="789" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="771.5" y="584" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0zuhttc_di" bpmnElement="CallActivity_0zuhttc"> + <dc:Bounds x="936" y="566" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_14fx6hv_di" bpmnElement="SequenceFlow_14fx6hv"> + <di:waypoint xsi:type="dc:Point" x="1036" y="606" /> + <di:waypoint xsi:type="dc:Point" x="1105" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1070.5" y="584" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0k6kwv7_di" bpmnElement="ScriptTask_0k6kwv7"> + <dc:Bounds x="789" y="566" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0etaubw_di" bpmnElement="SequenceFlow_0etaubw"> + <di:waypoint xsi:type="dc:Point" x="889" y="606" /> + <di:waypoint xsi:type="dc:Point" x="936" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="912.5" y="584" width="0" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn new file mode 100644 index 0000000000..fae66a7381 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteServiceInstance" name="DoDeleteServiceInstance" isExecutable="true"> + <bpmn2:startEvent id="deleteSI_startEven" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_0jfgn05</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0jfgn05</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1jqc16k</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteServiceInstance() +ddsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_1wyvxwi</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0k28xib" sourceRef="CallActivity_0ak0ezb" targetRef="ScriptTask_1uxr0cx" /> + <bpmn2:callActivity id="CallActivity_0ak0ezb" name="Call SDNC Service Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0yohjl7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1w8ao21</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("sdncDeactivateResponse") +def ddsi = new DoDeleteServiceInstance() +ddsi.postProcessSDNCDelete(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0jfgn05" sourceRef="deleteSI_startEven" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="ScriptTask_0xxwbdq" name="PreProcess SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1dwch0k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ju26o1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteServiceInstance() +ddsi.preProcessSDNCDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0590oev" name="SI found in AAI" default="SequenceFlow_05jfuko"> + <bpmn2:incoming>SequenceFlow_1up0j5r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1hcfvcj</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_05jfuko</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1hcfvcj" name="yes" sourceRef="ExclusiveGateway_0590oev" targetRef="ExclusiveGateway_1mrh7us"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGS_FoundIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:endEvent id="EndEvent_0ronxsz"> + <bpmn2:incoming>SequenceFlow_05jfuko</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_05jfuko" name="no" sourceRef="ExclusiveGateway_0590oev" targetRef="EndEvent_0ronxsz" /> + <bpmn2:sequenceFlow id="SequenceFlow_1w8ao21" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_1c5wru8" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1mrh7us" name="need to invoke SDNC" default="SequenceFlow_1dwch0k"> + <bpmn2:incoming>SequenceFlow_1hcfvcj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0riudmc</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1dwch0k</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0riudmc" name="no" sourceRef="ExclusiveGateway_1mrh7us" targetRef="ScriptTask_1ybdq3e"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("sendToSDNC" ) == false }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1dwch0k" name="yes" sourceRef="ExclusiveGateway_1mrh7us" targetRef="ScriptTask_0xxwbdq" /> + <bpmn2:callActivity id="CallActivity_1s8pf0x" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1jqc16k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1grea1r</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1jqc16k" sourceRef="preProcessRequest_ScriptTask" targetRef="CallActivity_1s8pf0x" /> + <bpmn2:scriptTask id="ScriptTask_02da0lj" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1grea1r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1up0j5r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteServiceInstance() +ddsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1grea1r" sourceRef="CallActivity_1s8pf0x" targetRef="ScriptTask_02da0lj" /> + <bpmn2:sequenceFlow id="SequenceFlow_1up0j5r" sourceRef="ScriptTask_02da0lj" targetRef="ExclusiveGateway_0590oev" /> + <bpmn2:scriptTask id="ScriptTask_1ybdq3e" name=" AAI Delete (svc instance) " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0riudmc</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0znbzxu</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wyvxwi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteServiceInstance() +ddsi.deleteServiceInstance(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1wyvxwi" sourceRef="ScriptTask_1ybdq3e" targetRef="EndEvent_3" /> + <bpmn2:subProcess id="SubProcess_1jggn82" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1antv0y"> + <bpmn2:outgoing>SequenceFlow_0u33vy6</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_03iywf6"> + <bpmn2:incoming>SequenceFlow_0hevfee</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1va95un" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0u33vy6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0hevfee</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0u33vy6" name="" sourceRef="StartEvent_1antv0y" targetRef="ScriptTask_1va95un" /> + <bpmn2:sequenceFlow id="SequenceFlow_0hevfee" name="" sourceRef="ScriptTask_1va95un" targetRef="EndEvent_03iywf6" /> + </bpmn2:subProcess> + <bpmn2:callActivity id="CallActivity_1c5wru8" name="Call SDNC Service Topology Delete" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="msoRequestId" target="mso-request-id" /> + <camunda:in source="serviceInstanceId" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1w8ao21</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1swzrij</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14x55db</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0lc115e" name="Post Process SDNC Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14x55db</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0znbzxu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* + +String response = execution.getVariable("sdncDeleteResponse") +def ddsi = new DoDeleteServiceInstance() +ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14x55db" sourceRef="CallActivity_1c5wru8" targetRef="ScriptTask_0lc115e" /> + <bpmn2:sequenceFlow id="SequenceFlow_0znbzxu" sourceRef="ScriptTask_0lc115e" targetRef="ScriptTask_1ybdq3e" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1xbefi3" name="skipDeactivate for TRANSPORT" default="SequenceFlow_0yohjl7"> + <bpmn2:incoming>SequenceFlow_1ju26o1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yohjl7</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1swzrij</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1ju26o1" sourceRef="ScriptTask_0xxwbdq" targetRef="ExclusiveGateway_1xbefi3" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yohjl7" name="no" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_0ak0ezb" /> + <bpmn2:sequenceFlow id="SequenceFlow_1swzrij" name="yes" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_1c5wru8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("skipDeactivate" ) == true }]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteSI_startEven"> + <dc:Bounds x="-334" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-340" y="120" width="49" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="-265" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="1277" y="201" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1250" y="242" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib"> + <di:waypoint xsi:type="dc:Point" x="713" y="97" /> + <di:waypoint xsi:type="dc:Point" x="776" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="745" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb"> + <dc:Bounds x="613" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx"> + <dc:Bounds x="776" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0jfgn05_di" bpmnElement="SequenceFlow_0jfgn05"> + <di:waypoint xsi:type="dc:Point" x="-298" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-265" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-281" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0xxwbdq_di" bpmnElement="ScriptTask_0xxwbdq"> + <dc:Bounds x="354" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0590oev_di" bpmnElement="ExclusiveGateway_0590oev" isMarkerVisible="true"> + <dc:Bounds x="150" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="138" y="51" width="74" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1hcfvcj_di" bpmnElement="SequenceFlow_1hcfvcj"> + <di:waypoint xsi:type="dc:Point" x="200" y="97" /> + <di:waypoint xsi:type="dc:Point" x="236" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="222" y="99" width="18" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0ronxsz_di" bpmnElement="EndEvent_0ronxsz"> + <dc:Bounds x="157" y="221" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="175" y="262" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05jfuko_di" bpmnElement="SequenceFlow_05jfuko"> + <di:waypoint xsi:type="dc:Point" x="175" y="122" /> + <di:waypoint xsi:type="dc:Point" x="175" y="221" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="156" y="137.69226916562667" width="12" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1w8ao21_di" bpmnElement="SequenceFlow_1w8ao21"> + <di:waypoint xsi:type="dc:Point" x="876" y="97" /> + <di:waypoint xsi:type="dc:Point" x="917" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="897" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1mrh7us_di" bpmnElement="ExclusiveGateway_1mrh7us" isMarkerVisible="true"> + <dc:Bounds x="236" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="228" y="126" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0riudmc_di" bpmnElement="SequenceFlow_0riudmc"> + <di:waypoint xsi:type="dc:Point" x="261" y="72" /> + <di:waypoint xsi:type="dc:Point" x="261" y="-20" /> + <di:waypoint xsi:type="dc:Point" x="1295" y="-20" /> + <di:waypoint xsi:type="dc:Point" x="1295" y="57" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="777.7386478304746" y="-35.00000000000001" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1dwch0k_di" bpmnElement="SequenceFlow_1dwch0k"> + <di:waypoint xsi:type="dc:Point" x="286" y="97" /> + <di:waypoint xsi:type="dc:Point" x="310" y="97" /> + <di:waypoint xsi:type="dc:Point" x="353" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="306" y="101" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1s8pf0x_di" bpmnElement="CallActivity_1s8pf0x"> + <dc:Bounds x="-121" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1jqc16k_di" bpmnElement="SequenceFlow_1jqc16k"> + <di:waypoint xsi:type="dc:Point" x="-165" y="97" /> + <di:waypoint xsi:type="dc:Point" x="-121" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-143" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_02da0lj_di" bpmnElement="ScriptTask_02da0lj"> + <dc:Bounds x="20" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1grea1r_di" bpmnElement="SequenceFlow_1grea1r"> + <di:waypoint xsi:type="dc:Point" x="-21" y="97" /> + <di:waypoint xsi:type="dc:Point" x="20" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="0" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1up0j5r_di" bpmnElement="SequenceFlow_1up0j5r"> + <di:waypoint xsi:type="dc:Point" x="120" y="97" /> + <di:waypoint xsi:type="dc:Point" x="150" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="135" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ybdq3e_di" bpmnElement="ScriptTask_1ybdq3e"> + <dc:Bounds x="1245" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wyvxwi_di" bpmnElement="SequenceFlow_1wyvxwi"> + <di:waypoint xsi:type="dc:Point" x="1295" y="137" /> + <di:waypoint xsi:type="dc:Point" x="1295" y="201" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1265" y="169" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1jggn82_di" bpmnElement="SubProcess_1jggn82" isExpanded="true"> + <dc:Bounds x="266" y="409" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1antv0y_di" bpmnElement="StartEvent_1antv0y"> + <dc:Bounds x="334" y="475" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="352" y="516" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_03iywf6_di" bpmnElement="EndEvent_03iywf6"> + <dc:Bounds x="627" y="475" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="645" y="516" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1va95un_di" bpmnElement="ScriptTask_1va95un"> + <dc:Bounds x="438" y="453" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0u33vy6_di" bpmnElement="SequenceFlow_0u33vy6"> + <di:waypoint xsi:type="dc:Point" x="370" y="493" /> + <di:waypoint xsi:type="dc:Point" x="438" y="493" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="404" y="478" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hevfee_di" bpmnElement="SequenceFlow_0hevfee"> + <di:waypoint xsi:type="dc:Point" x="538" y="493" /> + <di:waypoint xsi:type="dc:Point" x="627" y="493" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="583" y="478" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1c5wru8_di" bpmnElement="CallActivity_1c5wru8"> + <dc:Bounds x="917" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lc115e_di" bpmnElement="ScriptTask_0lc115e"> + <dc:Bounds x="1058" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_14x55db_di" bpmnElement="SequenceFlow_14x55db"> + <di:waypoint xsi:type="dc:Point" x="1017" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1038" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0znbzxu_di" bpmnElement="SequenceFlow_0znbzxu"> + <di:waypoint xsi:type="dc:Point" x="1158" y="97" /> + <di:waypoint xsi:type="dc:Point" x="1245" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1156.5" y="82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1xbefi3_di" bpmnElement="ExclusiveGateway_1xbefi3" isMarkerVisible="true"> + <dc:Bounds x="508" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="495" y="126" width="84" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ju26o1_di" bpmnElement="SequenceFlow_1ju26o1"> + <di:waypoint xsi:type="dc:Point" x="454" y="97" /> + <di:waypoint xsi:type="dc:Point" x="508" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="481" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yohjl7_di" bpmnElement="SequenceFlow_0yohjl7"> + <di:waypoint xsi:type="dc:Point" x="558" y="97" /> + <di:waypoint xsi:type="dc:Point" x="613" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="580" y="72" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1swzrij_di" bpmnElement="SequenceFlow_1swzrij"> + <di:waypoint xsi:type="dc:Point" x="533" y="72" /> + <di:waypoint xsi:type="dc:Point" x="533" y="26" /> + <di:waypoint xsi:type="dc:Point" x="967" y="26" /> + <di:waypoint xsi:type="dc:Point" x="967" y="57" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="741" y="11" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn new file mode 100644 index 0000000000..e6ad16b4d1 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3"> + <bpmn:process id="DoDeleteVFCNetworkServiceInstance" name="DoDeleteVFCNetworkServiceInstance" isExecutable="true"> + <bpmn:startEvent id="deleteNS_StartEvent" name="deleteNS_StartEvent"> + <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="deleteNS_StartEvent" targetRef="PreprocessIncomingRequest_task" /> + <bpmn:scriptTask id="Task_09nzhwk" name="Delete Network Service" scriptFormat="groovy"> + <bpmn:incoming>terminateFinished_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1sjop71</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.deleteNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_150q0fo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="terminate_NSTask" name="terminate Network Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1h1c24p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.terminateNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Delete NS Success?"> + <bpmn:incoming>SequenceFlow_1sjop71</bpmn:incoming> + <bpmn:outgoing>deleteNSFailed_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>deleteNSSuccess_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="deleteNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="deleteNSFailed_EndEvent"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) != "finished")}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="terminate NS Success?"> + <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming> + <bpmn:outgoing>terminateFailed_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>terminateSuccess_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="terminate_NSTask" targetRef="ExclusiveGateway_1is7zys" /> + <bpmn:sequenceFlow id="terminateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) == null || execution.getVariable("jobId" ) == "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="terminateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" ) != null && execution.getVariable("jobId" ) != "" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="terminate Finished?"> + <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming> + <bpmn:outgoing>terminateFinished_SequenceFlow</bpmn:outgoing> + <bpmn:outgoing>terminateProcessing_SequenceFlow</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="terminateFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="Task_09nzhwk"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" ) == "100" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="terminateProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" ) != "100" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSDelete_Task" targetRef="EndEvent_1x6k78c" /> + <bpmn:endEvent id="deleteNSFailed_EndEvent" name="deleteNSFailed"> + <bpmn:incoming>deleteNSFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1gkvvpn"> + <bpmn:incoming>terminateFailed_SequenceFlow</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_1x6k78c"> + <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy"> + <bpmn:incoming>terminateSuccess_SequenceFlow</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.queryNSProgress(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="finishNSDelete_Task" name="Finish NS Delete"> + <bpmn:incoming>deleteNSSuccess_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoCreateVFCNetworkServiceInstance() +dcsi.finishNSDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" /> + <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy"> + <bpmn:incoming>terminateProcessing_SequenceFlow</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.timeDelay(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" /> + <bpmn:sequenceFlow id="SequenceFlow_150q0fo" sourceRef="PreprocessIncomingRequest_task" targetRef="deleteNSRelationship" /> + <bpmn:sequenceFlow id="SequenceFlow_1sjop71" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" /> + <bpmn:sequenceFlow id="deleteNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="finishNSDelete_Task"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) == "finished")}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1h1c24p" sourceRef="deleteNSRelationship" targetRef="terminate_NSTask" /> + <bpmn:scriptTask id="deleteNSRelationship" name="Delete NS Relationship " scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_150q0fo</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1h1c24p</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoDeleteVFCNetworkServiceInstance() +dcsi.deleteNSRelationship(execution)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVFCNetworkServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="deleteNS_StartEvent"> + <dc:Bounds x="175" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="147" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint xsi:type="dc:Point" x="211" y="129" /> + <di:waypoint xsi:type="dc:Point" x="321" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="221" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk"> + <dc:Bounds x="722" y="555" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="321" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="terminate_NSTask"> + <dc:Bounds x="744" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true"> + <dc:Bounds x="517" y="570" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="519" y="624" width="52" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="deleteNSFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="542" y="570" /> + <di:waypoint xsi:type="dc:Point" x="542" y="446" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="551" y="474.11353711790395" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true"> + <dc:Bounds x="1034" y="105" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1032" y="159" width="65" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t"> + <di:waypoint xsi:type="dc:Point" x="844" y="129" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="130" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="894" y="108.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="terminateFailed_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="105" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="33" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1068" y="63" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="terminateSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1059" y="155" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="271" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1066" y="207" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true"> + <dc:Bounds x="1034" y="570" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1040" y="624" width="47" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="terminateFinished_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1034" y="595" /> + <di:waypoint xsi:type="dc:Point" x="822" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="574" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="terminateProcessing_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="1084" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="595" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="486" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1131" y="607" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g"> + <di:waypoint xsi:type="dc:Point" x="321" y="595" /> + <di:waypoint xsi:type="dc:Point" x="256" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="243.5" y="574" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="deleteNSFailed_EndEvent"> + <dc:Bounds x="524" y="410" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="460" y="450" width="75" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn"> + <dc:Bounds x="1041" y="-3" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1014" y="37" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="220" y="577" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="148" y="617" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task"> + <dc:Bounds x="1009" y="271" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSDelete_Task"> + <dc:Bounds x="321" y="555" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p"> + <di:waypoint xsi:type="dc:Point" x="1059" y="351" /> + <di:waypoint xsi:type="dc:Point" x="1059" y="570" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1074" y="454.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task"> + <dc:Bounds x="1162" y="406" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj"> + <di:waypoint xsi:type="dc:Point" x="1212" y="406" /> + <di:waypoint xsi:type="dc:Point" x="1212" y="311" /> + <di:waypoint xsi:type="dc:Point" x="1109" y="311" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1227" y="352.5" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_150q0fo_di" bpmnElement="SequenceFlow_150q0fo"> + <di:waypoint xsi:type="dc:Point" x="421" y="129" /> + <di:waypoint xsi:type="dc:Point" x="523" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sjop71_di" bpmnElement="SequenceFlow_1sjop71"> + <di:waypoint xsi:type="dc:Point" x="722" y="595" /> + <di:waypoint xsi:type="dc:Point" x="567" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="644.5" y="574" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_18n2g9j_di" bpmnElement="deleteNSSuccess_SequenceFlow"> + <di:waypoint xsi:type="dc:Point" x="517" y="595" /> + <di:waypoint xsi:type="dc:Point" x="421" y="595" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="460" y="574" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1h1c24p_di" bpmnElement="SequenceFlow_1h1c24p"> + <di:waypoint xsi:type="dc:Point" x="623" y="129" /> + <di:waypoint xsi:type="dc:Point" x="744" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="683.5" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_11l4g48_di" bpmnElement="deleteNSRelationship"> + <dc:Bounds x="523" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn new file mode 100644 index 0000000000..848796c0b6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn @@ -0,0 +1,433 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteVfModule" name="DoDeleteVfModule" isExecutable="true"> + <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0fp1wqz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="UpdateAAIVfModulePrep" targetRef="InvokeUpdateAAIVfModule" /> + <bpmn2:callActivity id="InvokeUpdateAAIVfModule" name="Invoke
UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_31</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="InvokeUpdateAAIVfModule" targetRef="SDNCAdapterPrep2" /> + <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke
PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="PrepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="PUAAIVfMod_heatStackId" target="DoDVfMod_heatStackId" /> + <camunda:out source="PUAAIVfMod_outVfModule" target="vfModuleFromAAI" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_029ioyr</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14xn858</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" /> + <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke
SDNCAdapterV1" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="sdncAdapterResponse" target="DoDVfMod_doDeleteVfModuleResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="InvokeSDNCAdapterV1_2" targetRef="validateSDNCResponse" /> + <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14xn858</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.prepVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.prepSDNCAdapterRequest(execution, "delete")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="InvokeSDNCAdapterV1_2" /> + <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke
VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="vnfAdapterRestV1Response" target="DoDVfMod_doDeleteVfModuleResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xruki1</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_9"> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:callActivity id="InvokeDeleteAAIVfModule" name="Invoke
DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="InvokeDeleteAAIVfModule" targetRef="EndEvent_9" /> + <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.prepDeleteAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="DeleteAAIVfModulePrep" targetRef="InvokeDeleteAAIVfModule" /> + <bpmn2:scriptTask id="validateSDNCResponse" name="Validate SDNC Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.sdncValidateResponse(execution, DoDVfMod_doDeleteVfModuleResponse)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="validateSDNCResponse" targetRef="DeleteAAIVfModulePrep" /> + <bpmn2:scriptTask id="InitializeVariables" name="Initialize Variables" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="InitializeVariables" targetRef="PrepareUpdateAAIVfModulePrep" /> + <bpmn2:scriptTask id="PrepareUpdateAAIVfModulePrep" name="PrepareUpdateAAIVfModule Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_42</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_42" name="" sourceRef="PrepareUpdateAAIVfModulePrep" targetRef="Task_0h2lui6" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + <bpmn2:messageEventDefinition id="_MessageEventDefinition_6" messageRef="Message_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" /> + <bpmn2:scriptTask id="DeleteNetworkPoliciesFromAAI" name="Delete Network Policies from AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0coa90m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08g02ch</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.deleteNetworkPoliciesFromAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessVNFAdapterRequest" name="PostProcess VNFAdapter Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1xruki1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0coa90m</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.postProcessVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0coa90m" sourceRef="PostProcessVNFAdapterRequest" targetRef="DeleteNetworkPoliciesFromAAI" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1drlnlk" name="need to update VNF in AAI?" default="SequenceFlow_0ep3hjm"> + <bpmn2:incoming>SequenceFlow_08g02ch</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1yehsyc</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0ep3hjm</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_08g02ch" sourceRef="DeleteNetworkPoliciesFromAAI" targetRef="ExclusiveGateway_1drlnlk" /> + <bpmn2:sequenceFlow id="SequenceFlow_1yehsyc" name="yes" sourceRef="ExclusiveGateway_1drlnlk" targetRef="PreProcessUpdateAAIGenericVnf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DoDVfMod_oamManagementV4Address") != null || execution.getVariable("DoDVfMod_oamManagementV6Address") != null]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1a7lzhz" sourceRef="PreProcessUpdateAAIGenericVnf" targetRef="UpdateAAIGenericVnfTask" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0lsru7z"> + <bpmn2:incoming>SequenceFlow_0ep3hjm</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_14l7olw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0fp1wqz</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ep3hjm" name="no" sourceRef="ExclusiveGateway_1drlnlk" targetRef="ExclusiveGateway_0lsru7z" /> + <bpmn2:sequenceFlow id="SequenceFlow_14l7olw" sourceRef="UpdateAAIGenericVnfTask" targetRef="ExclusiveGateway_0lsru7z" /> + <bpmn2:sequenceFlow id="SequenceFlow_0fp1wqz" sourceRef="ExclusiveGateway_0lsru7z" targetRef="UpdateAAIVfModulePrep" /> + <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVnf" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1yehsyc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1a7lzhz</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doDeleteVfModule = new DoDeleteVfModule() +doDeleteVfModule.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="UpdateAAIGenericVnfTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DoDVfMod_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1a7lzhz</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14l7olw</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_029ioyr" sourceRef="Task_0h2lui6" targetRef="InvokePrepareUpdateAAIVfModule" /> + <bpmn2:scriptTask id="Task_0h2lui6" name="Query AAI for Orchestration Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_42</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_029ioyr</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dvm = new DoDeleteVfModule() +dvm.queryAAIVfModuleForStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1xruki1" sourceRef="InvokeVNFAdapterRestV1" targetRef="PostProcessVNFAdapterRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_14xn858" sourceRef="InvokePrepareUpdateAAIVfModule" targetRef="VNFAdapterPrep" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:message id="Message_1" name="DoDeleteVfModuleRequest" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModule"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1"> + <dc:Bounds x="34" y="57" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="52" y="98" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables"> + <dc:Bounds x="144" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22"> + <di:waypoint xsi:type="dc:Point" x="70" y="75" /> + <di:waypoint xsi:type="dc:Point" x="144" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="104" y="0" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="InvokePrepareUpdateAAIVfModule"> + <dc:Bounds x="647" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_168" bpmnElement="PrepareUpdateAAIVfModulePrep"> + <dc:Bounds x="315" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ScriptTask_168"> + <di:waypoint xsi:type="dc:Point" x="244" y="76" /> + <di:waypoint xsi:type="dc:Point" x="315" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="269" y="0" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep"> + <dc:Bounds x="193" y="206" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1"> + <dc:Bounds x="404" y="206" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep"> + <dc:Bounds x="844" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_14" bpmnElement="InvokeUpdateAAIVfModule"> + <dc:Bounds x="995" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_CallActivity_14"> + <di:waypoint xsi:type="dc:Point" x="944" y="425" /> + <di:waypoint xsi:type="dc:Point" x="995" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="970" y="410" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2"> + <dc:Bounds x="140" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="InvokeSDNCAdapterV1_2"> + <dc:Bounds x="272" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="DeleteAAIVfModulePrep"> + <dc:Bounds x="547" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_16" bpmnElement="InvokeDeleteAAIVfModule"> + <dc:Bounds x="690" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_CallActivity_14" targetElement="_BPMNShape_ScriptTask_172"> + <di:waypoint xsi:type="dc:Point" x="1045" y="465" /> + <di:waypoint xsi:type="dc:Point" x="1045" y="603" /> + <di:waypoint xsi:type="dc:Point" x="70" y="603" /> + <di:waypoint xsi:type="dc:Point" x="70" y="705" /> + <di:waypoint xsi:type="dc:Point" x="140" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="558" y="588" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15"> + <di:waypoint xsi:type="dc:Point" x="240" y="705" /> + <di:waypoint xsi:type="dc:Point" x="256" y="705" /> + <di:waypoint xsi:type="dc:Point" x="256" y="706" /> + <di:waypoint xsi:type="dc:Point" x="272" y="706" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="268" y="558" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="372" y="705" /> + <di:waypoint xsi:type="dc:Point" x="404" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="705" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_CallActivity_16"> + <di:waypoint xsi:type="dc:Point" x="647" y="705" /> + <di:waypoint xsi:type="dc:Point" x="690" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="669" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9"> + <dc:Bounds x="836" y="687" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="854" y="728" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_CallActivity_16" targetElement="_BPMNShape_EndEvent_169"> + <di:waypoint xsi:type="dc:Point" x="790" y="705" /> + <di:waypoint xsi:type="dc:Point" x="836" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="813" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_42" sourceElement="_BPMNShape_ScriptTask_168" targetElement="_BPMNShape_ScriptTask_160"> + <di:waypoint xsi:type="dc:Point" x="415" y="76" /> + <di:waypoint xsi:type="dc:Point" x="483" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="449" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ScriptTask_170"> + <di:waypoint xsi:type="dc:Point" x="293" y="246" /> + <di:waypoint xsi:type="dc:Point" x="404" y="246" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="231" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="validateSDNCResponse"> + <dc:Bounds x="404" y="665" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_251" targetElement="_BPMNShape_ScriptTask_173"> + <di:waypoint xsi:type="dc:Point" x="504" y="705" /> + <di:waypoint xsi:type="dc:Point" x="547" y="705" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="526" y="690" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0la8haz_di" bpmnElement="DeleteNetworkPoliciesFromAAI"> + <dc:Bounds x="202" y="385" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lewl6b_di" bpmnElement="PostProcessVNFAdapterRequest"> + <dc:Bounds x="620" y="206" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0coa90m_di" bpmnElement="SequenceFlow_0coa90m"> + <di:waypoint xsi:type="dc:Point" x="720" y="246" /> + <di:waypoint xsi:type="dc:Point" x="923" y="246" /> + <di:waypoint xsi:type="dc:Point" x="923" y="333" /> + <di:waypoint xsi:type="dc:Point" x="76" y="333" /> + <di:waypoint xsi:type="dc:Point" x="76" y="425" /> + <di:waypoint xsi:type="dc:Point" x="202" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="500" y="318" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1drlnlk_di" bpmnElement="ExclusiveGateway_1drlnlk" isMarkerVisible="true"> + <dc:Bounds x="415" y="400" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="402" y="362" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08g02ch_di" bpmnElement="SequenceFlow_08g02ch"> + <di:waypoint xsi:type="dc:Point" x="302" y="425" /> + <di:waypoint xsi:type="dc:Point" x="415" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="359" y="410" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yehsyc_di" bpmnElement="SequenceFlow_1yehsyc"> + <di:waypoint xsi:type="dc:Point" x="440" y="450" /> + <di:waypoint xsi:type="dc:Point" x="440" y="517" /> + <di:waypoint xsi:type="dc:Point" x="477" y="517" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="473" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1a7lzhz_di" bpmnElement="SequenceFlow_1a7lzhz"> + <di:waypoint xsi:type="dc:Point" x="577" y="517" /> + <di:waypoint xsi:type="dc:Point" x="624" y="517" /> + <di:waypoint xsi:type="dc:Point" x="624" y="517" /> + <di:waypoint xsi:type="dc:Point" x="654" y="517" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="639" y="517" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0lsru7z_di" bpmnElement="ExclusiveGateway_0lsru7z" isMarkerVisible="true"> + <dc:Bounds x="759" y="400" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784" y="450" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ep3hjm_di" bpmnElement="SequenceFlow_0ep3hjm"> + <di:waypoint xsi:type="dc:Point" x="465" y="425" /> + <di:waypoint xsi:type="dc:Point" x="759" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="606" y="400" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14l7olw_di" bpmnElement="SequenceFlow_14l7olw"> + <di:waypoint xsi:type="dc:Point" x="754" y="517" /> + <di:waypoint xsi:type="dc:Point" x="784" y="517" /> + <di:waypoint xsi:type="dc:Point" x="784" y="450" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="769" y="502" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fp1wqz_di" bpmnElement="SequenceFlow_0fp1wqz"> + <di:waypoint xsi:type="dc:Point" x="809" y="425" /> + <di:waypoint xsi:type="dc:Point" x="844" y="425" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="827" y="400" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_18y0guc_di" bpmnElement="PreProcessUpdateAAIGenericVnf"> + <dc:Bounds x="477" y="477" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0kbqf50_di" bpmnElement="UpdateAAIGenericVnfTask"> + <dc:Bounds x="654" y="477" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_029ioyr_di" bpmnElement="SequenceFlow_029ioyr"> + <di:waypoint xsi:type="dc:Point" x="583" y="76" /> + <di:waypoint xsi:type="dc:Point" x="647" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="615" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_15vzlxw_di" bpmnElement="Task_0h2lui6"> + <dc:Bounds x="483" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xruki1_di" bpmnElement="SequenceFlow_1xruki1"> + <di:waypoint xsi:type="dc:Point" x="504" y="246" /> + <di:waypoint xsi:type="dc:Point" x="620" y="246" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="562" y="231" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14xn858_di" bpmnElement="SequenceFlow_14xn858"> + <di:waypoint xsi:type="dc:Point" x="747" y="76" /> + <di:waypoint xsi:type="dc:Point" x="914" y="76" /> + <di:waypoint xsi:type="dc:Point" x="914" y="154" /> + <di:waypoint xsi:type="dc:Point" x="71" y="154" /> + <di:waypoint xsi:type="dc:Point" x="71" y="246" /> + <di:waypoint xsi:type="dc:Point" x="193" y="246" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="493" y="139" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn new file mode 100644 index 0000000000..b7a1373fe9 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn @@ -0,0 +1,396 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteVfModuleFromVnf" name="DoDeleteVfModuleFromVnf" isExecutable="true"> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" /> + <bpmn2:callActivity id="callSDNCAdapterTopologyUnassign" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DDVMFV_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="sdncAdapterResponse" target="DoDVfMod_doDeleteVfModuleResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="callSDNCAdapterTopologyUnassign" targetRef="validateSDNCResponse" /> + <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0kx9e3s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.prepVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ltm4jt</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="callSDNCAdapterTopologyUnassign" /> + <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke
VNFAdapterRestV1" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="vnfAdapterRestV1Response" target="DDVMFV_doDeleteVfModuleResponse" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0hia88a</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:endEvent id="EndEvent_9"> + <bpmn2:incoming>SequenceFlow_1eemrjp</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="validateSDNCResponse" name="PostProcess SDNC Adapter Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +String response = execution.getVariable("DDVMFV_deactivateSDNCAdapterResponse") +ddvmfv.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="validateSDNCResponse" targetRef="DeleteAAIVfModulePrep" /> + <bpmn2:scriptTask id="InitializeVariables" name="Initialize Variables" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qbjihn</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" /> + <bpmn2:scriptTask id="DeleteNetworkPoliciesFromAAI" name="Delete Network Policies from AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0coa90m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ltm4jt</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.deleteNetworkPoliciesFromAAI(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessVNFAdapterRequest" name="PostProcess VNFAdapter Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0hia88a</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0coa90m</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.postProcessVNFAdapterRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0coa90m" sourceRef="PostProcessVNFAdapterRequest" targetRef="DeleteNetworkPoliciesFromAAI" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0y4td40" sourceRef="preProcessSDNCDeactivateRequest" targetRef="callSDNCAdapterTopologyDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_12q2r4i" sourceRef="callSDNCAdapterTopologyDeactivate" targetRef="postProcessSDNCDeactivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_0hia88a" sourceRef="InvokeVNFAdapterRestV1" targetRef="PostProcessVNFAdapterRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_0kx9e3s" sourceRef="postProcessSDNCDeactivateRequest" targetRef="VNFAdapterPrep" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ltm4jt" sourceRef="DeleteNetworkPoliciesFromAAI" targetRef="SDNCAdapterPrep2" /> + <bpmn2:scriptTask id="preProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1igsfgk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0y4td40</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DDVMFV_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DDVMFV_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0y4td40</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12q2r4i</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCDeactivateRequest" name="PostProcess SDNC Adapter Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12q2r4i</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0kx9e3s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +String response = execution.getVariable("DDVMFV_deactivateSDNCAdapterResponse") +ddvmfv.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0qbjihn" sourceRef="InitializeVariables" targetRef="QueryAAIForVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_1c2lvlc" sourceRef="QueryAAIForVfModule" targetRef="ValidateVfModule" /> + <bpmn2:scriptTask id="QueryAAIForVfModule" name="Query AAI for VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0qbjihn</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1c2lvlc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.queryAAIForVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1igsfgk" sourceRef="ValidateVfModule" targetRef="preProcessSDNCDeactivateRequest" /> + <bpmn2:scriptTask id="ValidateVfModule" name="Validate VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1c2lvlc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1igsfgk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.validateVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="SubProcess_1r8unf9" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1ebrix6"> + <bpmn2:outgoing>SequenceFlow_095634c</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_15yfom3" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_0yb2lmo"> + <bpmn2:incoming>SequenceFlow_0yvjvhu</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1ypch9x" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_095634c</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yvjvhu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_095634c" name="" sourceRef="StartEvent_1ebrix6" targetRef="ScriptTask_1ypch9x" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yvjvhu" name="" sourceRef="ScriptTask_1ypch9x" targetRef="EndEvent_0yb2lmo" /> + </bpmn2:subProcess> + <bpmn2:callActivity id="DeleteAAIVfModule" name="Invoke
DeleteAAIVfModule" calledElement="DeleteAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_092kvy3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1eemrjp</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule
Prep" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_092kvy3</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvmfv = new DoDeleteVfModuleFromVnf() +ddvmfv.prepDeleteAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_092kvy3" name="" sourceRef="DeleteAAIVfModulePrep" targetRef="DeleteAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_1eemrjp" sourceRef="DeleteAAIVfModule" targetRef="EndEvent_9" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:message id="Message_1" name="DoDeleteVfModuleRequest" /> + <bpmn2:error id="Error_15yfom3" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModuleFromVnf"> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables"> + <dc:Bounds x="144" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" targetElement="_BPMNShape_ScriptTask_22"> + <di:waypoint xsi:type="dc:Point" x="70" y="75" /> + <di:waypoint xsi:type="dc:Point" x="144" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="107" y="60.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep"> + <dc:Bounds x="125" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1"> + <dc:Bounds x="281" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2"> + <dc:Bounds x="129" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="callSDNCAdapterTopologyUnassign"> + <dc:Bounds x="281" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15"> + <di:waypoint xsi:type="dc:Point" x="229" y="527" /> + <di:waypoint xsi:type="dc:Point" x="281" y="528" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="255" y="512.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="381" y="527" /> + <di:waypoint xsi:type="dc:Point" x="425" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="403" y="512" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9"> + <dc:Bounds x="873" y="509" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="550" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" targetElement="_BPMNShape_ScriptTask_170"> + <di:waypoint xsi:type="dc:Point" x="225" y="370" /> + <di:waypoint xsi:type="dc:Point" x="281" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="253" y="355" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="validateSDNCResponse"> + <dc:Bounds x="425" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_251"> + <di:waypoint xsi:type="dc:Point" x="525" y="527" /> + <di:waypoint xsi:type="dc:Point" x="548" y="527" /> + <di:waypoint xsi:type="dc:Point" x="548" y="527" /> + <di:waypoint xsi:type="dc:Point" x="570" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="563" y="527" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0la8haz_di" bpmnElement="DeleteNetworkPoliciesFromAAI"> + <dc:Bounds x="581" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lewl6b_di" bpmnElement="PostProcessVNFAdapterRequest"> + <dc:Bounds x="430" y="330" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0coa90m_di" bpmnElement="SequenceFlow_0coa90m"> + <di:waypoint xsi:type="dc:Point" x="530" y="370" /> + <di:waypoint xsi:type="dc:Point" x="581" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="556" y="355" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="StartEvent_1mifg2p_di" bpmnElement="StartEvent_1"> + <dc:Bounds x="34" y="57" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="52" y="98" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0y4td40_di" bpmnElement="SequenceFlow_0y4td40"> + <di:waypoint xsi:type="dc:Point" x="268" y="219" /> + <di:waypoint xsi:type="dc:Point" x="288" y="219" /> + <di:waypoint xsi:type="dc:Point" x="288" y="219" /> + <di:waypoint xsi:type="dc:Point" x="316" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="303" y="219" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12q2r4i_di" bpmnElement="SequenceFlow_12q2r4i"> + <di:waypoint xsi:type="dc:Point" x="416" y="219" /> + <di:waypoint xsi:type="dc:Point" x="464" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="440" y="204" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0hia88a_di" bpmnElement="SequenceFlow_0hia88a"> + <di:waypoint xsi:type="dc:Point" x="381" y="370" /> + <di:waypoint xsi:type="dc:Point" x="430" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="406" y="345" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kx9e3s_di" bpmnElement="SequenceFlow_0kx9e3s"> + <di:waypoint xsi:type="dc:Point" x="564" y="219" /> + <di:waypoint xsi:type="dc:Point" x="763" y="219" /> + <di:waypoint xsi:type="dc:Point" x="763" y="293" /> + <di:waypoint xsi:type="dc:Point" x="39" y="293" /> + <di:waypoint xsi:type="dc:Point" x="39" y="370" /> + <di:waypoint xsi:type="dc:Point" x="125" y="370" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="401" y="278" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ltm4jt_di" bpmnElement="SequenceFlow_0ltm4jt"> + <di:waypoint xsi:type="dc:Point" x="681" y="370" /> + <di:waypoint xsi:type="dc:Point" x="759" y="370" /> + <di:waypoint xsi:type="dc:Point" x="759" y="442" /> + <di:waypoint xsi:type="dc:Point" x="51" y="442" /> + <di:waypoint xsi:type="dc:Point" x="51" y="527" /> + <di:waypoint xsi:type="dc:Point" x="129" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="405" y="427" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1boza4q_di" bpmnElement="preProcessSDNCDeactivateRequest"> + <dc:Bounds x="168" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0xpc0da_di" bpmnElement="callSDNCAdapterTopologyDeactivate"> + <dc:Bounds x="316" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1kkyngh_di" bpmnElement="postProcessSDNCDeactivateRequest"> + <dc:Bounds x="464" y="179" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qbjihn_di" bpmnElement="SequenceFlow_0qbjihn"> + <di:waypoint xsi:type="dc:Point" x="244" y="76" /> + <di:waypoint xsi:type="dc:Point" x="316" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="280" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1c2lvlc_di" bpmnElement="SequenceFlow_1c2lvlc"> + <di:waypoint xsi:type="dc:Point" x="416" y="76" /> + <di:waypoint xsi:type="dc:Point" x="473" y="76" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="445" y="61" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gf22c0_di" bpmnElement="QueryAAIForVfModule"> + <dc:Bounds x="316" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1igsfgk_di" bpmnElement="SequenceFlow_1igsfgk"> + <di:waypoint xsi:type="dc:Point" x="573" y="76" /> + <di:waypoint xsi:type="dc:Point" x="760" y="76" /> + <di:waypoint xsi:type="dc:Point" x="760" y="145" /> + <di:waypoint xsi:type="dc:Point" x="34" y="145" /> + <di:waypoint xsi:type="dc:Point" x="34" y="218" /> + <di:waypoint xsi:type="dc:Point" x="168" y="219" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="130" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1jgeknl_di" bpmnElement="ValidateVfModule"> + <dc:Bounds x="473" y="36" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1r8unf9_di" bpmnElement="SubProcess_1r8unf9" isExpanded="true"> + <dc:Bounds x="43" y="622" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1ebrix6_di" bpmnElement="StartEvent_1ebrix6"> + <dc:Bounds x="111" y="689" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="129" y="730" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0yb2lmo_di" bpmnElement="EndEvent_0yb2lmo"> + <dc:Bounds x="404" y="689" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="422" y="730" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ypch9x_di" bpmnElement="ScriptTask_1ypch9x"> + <dc:Bounds x="215" y="667" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_095634c_di" bpmnElement="SequenceFlow_095634c"> + <di:waypoint xsi:type="dc:Point" x="147" y="707" /> + <di:waypoint xsi:type="dc:Point" x="215" y="707" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="181" y="692" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yvjvhu_di" bpmnElement="SequenceFlow_0yvjvhu"> + <di:waypoint xsi:type="dc:Point" x="315" y="707" /> + <di:waypoint xsi:type="dc:Point" x="404" y="707" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="360" y="692" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_10td9ns_di" bpmnElement="DeleteAAIVfModule"> + <dc:Bounds x="713" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1rcw5x3_di" bpmnElement="DeleteAAIVfModulePrep"> + <dc:Bounds x="570" y="487" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_092kvy3_di" bpmnElement="SequenceFlow_092kvy3"> + <di:waypoint xsi:type="dc:Point" x="670" y="527" /> + <di:waypoint xsi:type="dc:Point" x="713" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="692" y="512" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1eemrjp_di" bpmnElement="SequenceFlow_1eemrjp"> + <di:waypoint xsi:type="dc:Point" x="813" y="527" /> + <di:waypoint xsi:type="dc:Point" x="873" y="527" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="843" y="502" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn new file mode 100644 index 0000000000..4409f2a0dc --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn @@ -0,0 +1,208 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0"> + <bpmn:process id="DoDeleteVfModuleVolumeV2" name="DoDeleteVfModuleVolumeV2" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="Start"> + <bpmn:outgoing>SequenceFlow_1gvfdp4</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_06u1lr0" name="Call REST AAI Query Cloud Region" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1vy2ojp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1dlcqmc</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def delVfModuleVol = new DoDeleteVfModuleVolumeV2() +delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_1woqfjw" name="Call REST AAI Query for Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1dlcqmc</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1kjccf1</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('callRESTQueryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0yjx0p2" name="Prepare VNF Adapter Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1kjccf1</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1tgngf7</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_14fsstq" name="Call REST VNF Adapter Delete" calledElement="vnfAdapterRestV1"> + <bpmn:extensionElements> + <camunda:in source="DDVMV_deleteVnfARequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in variables="all" /> + <camunda:out source="vnfAdapterRestV1Response" target="DDVMV_deleteVnfAResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1tgngf7</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1x3luyj</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_17q1roq" name="Call REST AAI Delete Volume Group" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0cy0y9t</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_13c3cv2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_0fw1gkf" name="Stop"> + <bpmn:incoming>SequenceFlow_1sgtwr2</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1dlcqmc" sourceRef="Task_06u1lr0" targetRef="Task_1woqfjw" /> + <bpmn:sequenceFlow id="SequenceFlow_1kjccf1" sourceRef="Task_1woqfjw" targetRef="Task_0yjx0p2" /> + <bpmn:sequenceFlow id="SequenceFlow_1tgngf7" sourceRef="Task_0yjx0p2" targetRef="Task_14fsstq" /> + <bpmn:scriptTask id="Task_1i432ud" name="Pre Process Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1gvfdp4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1vy2ojp</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1gvfdp4" sourceRef="StartEvent_1" targetRef="Task_1i432ud" /> + <bpmn:sequenceFlow id="SequenceFlow_1vy2ojp" sourceRef="Task_1i432ud" targetRef="Task_06u1lr0" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_0o3lxtf" name="VNF Adapter REST call success?"> + <bpmn:incoming>SequenceFlow_1x3luyj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0cy0y9t</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1rgd8dg</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1x3luyj" sourceRef="Task_14fsstq" targetRef="ExclusiveGateway_0o3lxtf" /> + <bpmn:sequenceFlow id="SequenceFlow_0cy0y9t" name="Yes" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="Task_17q1roq"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_00cohim" name="throw MSOException"> + <bpmn:incoming>SequenceFlow_1rgd8dg</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_0fa7ks7" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1rgd8dg" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="EndEvent_00cohim" /> + <bpmn:scriptTask id="Task_018w43g" name="Post Process" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_13c3cv2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1sgtwr2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def deleteVfMod = new DoDeleteVfModuleVolumeV2() +deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_13c3cv2" sourceRef="Task_17q1roq" targetRef="Task_018w43g" /> + <bpmn:sequenceFlow id="SequenceFlow_1sgtwr2" sourceRef="Task_018w43g" targetRef="EndEvent_0fw1gkf" /> + </bpmn:process> + <bpmn:error id="Error_0fa7ks7" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModuleVolumeV2"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="173" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="179" y="138" width="23" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1qojxu5_di" bpmnElement="Task_06u1lr0"> + <dc:Bounds x="407" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1mht6f6_di" bpmnElement="Task_1woqfjw"> + <dc:Bounds x="564" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_02ujn8y_di" bpmnElement="Task_0yjx0p2"> + <dc:Bounds x="713" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0bf87en_di" bpmnElement="Task_14fsstq"> + <dc:Bounds x="865" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_07kmkio_di" bpmnElement="Task_17q1roq"> + <dc:Bounds x="1151" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0fw1gkf_di" bpmnElement="EndEvent_0fw1gkf"> + <dc:Bounds x="1463" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1470" y="138" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1dlcqmc_di" bpmnElement="SequenceFlow_1dlcqmc"> + <di:waypoint xsi:type="dc:Point" x="507" y="120" /> + <di:waypoint xsi:type="dc:Point" x="564" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1kjccf1_di" bpmnElement="SequenceFlow_1kjccf1"> + <di:waypoint xsi:type="dc:Point" x="664" y="120" /> + <di:waypoint xsi:type="dc:Point" x="713" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1tgngf7_di" bpmnElement="SequenceFlow_1tgngf7"> + <di:waypoint xsi:type="dc:Point" x="813" y="120" /> + <di:waypoint xsi:type="dc:Point" x="865" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="839" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0wjwf8w_di" bpmnElement="Task_1i432ud"> + <dc:Bounds x="247" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1gvfdp4_di" bpmnElement="SequenceFlow_1gvfdp4"> + <di:waypoint xsi:type="dc:Point" x="209" y="120" /> + <di:waypoint xsi:type="dc:Point" x="247" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="228" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vy2ojp_di" bpmnElement="SequenceFlow_1vy2ojp"> + <di:waypoint xsi:type="dc:Point" x="347" y="120" /> + <di:waypoint xsi:type="dc:Point" x="407" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="377" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0o3lxtf_di" bpmnElement="ExclusiveGateway_0o3lxtf" isMarkerVisible="true"> + <dc:Bounds x="1028" y="95" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1020" y="145" width="66" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1x3luyj_di" bpmnElement="SequenceFlow_1x3luyj"> + <di:waypoint xsi:type="dc:Point" x="965" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1028" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="997" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0cy0y9t_di" bpmnElement="SequenceFlow_0cy0y9t"> + <di:waypoint xsi:type="dc:Point" x="1078" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1151" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1106" y="95" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0zln0ww_di" bpmnElement="EndEvent_00cohim"> + <dc:Bounds x="1035" y="274" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1016" y="310" width="73" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rgd8dg_di" bpmnElement="SequenceFlow_1rgd8dg"> + <di:waypoint xsi:type="dc:Point" x="1053" y="145" /> + <di:waypoint xsi:type="dc:Point" x="1053" y="274" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1068" y="199.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ilduoy_di" bpmnElement="Task_018w43g"> + <dc:Bounds x="1298" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13c3cv2_di" bpmnElement="SequenceFlow_13c3cv2"> + <di:waypoint xsi:type="dc:Point" x="1251" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1298" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1275" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1sgtwr2_di" bpmnElement="SequenceFlow_1sgtwr2"> + <di:waypoint xsi:type="dc:Point" x="1398" y="120" /> + <di:waypoint xsi:type="dc:Point" x="1463" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1431" y="95" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn new file mode 100644 index 0000000000..d9596f0d14 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn @@ -0,0 +1,303 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteVnf" name="DoDeleteVnf" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" /> + <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoDeleteVnf deleteVnf = new DoDeleteVnf() +deleteVnf.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="intialization" targetRef="callGetVnf" /> + <bpmn2:callActivity id="callGetVnf" name="Get Generic Vnf" calledElement="GenericGetVnf"> + <bpmn2:extensionElements> + <camunda:out source="GENGV_vnf" target="DoDVNF_genericVnf" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGV_SuccessIndicator" target="GENGV_SuccessIndicator" /> + <camunda:out source="GENGV_FoundIndicator" target="GENGV_FoundIndicator" /> + <camunda:in source="DoDVNF_type" target="GENGV_type" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="DoDVNF_vnfId" target="GENGV_vnfId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callGetVnf" targetRef="vnfFoundCheck" /> + <bpmn2:exclusiveGateway id="vnfFoundCheck" name="Vnf Found?" default="notFound"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>vnfFound</bpmn2:outgoing> + <bpmn2:outgoing>notFound</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="vnfFound" name="Yes" sourceRef="vnfFoundCheck" targetRef="processResponse"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGV_FoundIndicator") == true && execution.getVariable("GENGV_SuccessIndicator") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="vnfFoundCheck" targetRef="IntermediateThrowEvent_1" /> + <bpmn2:scriptTask id="processResponse" name="Process Response" scriptFormat="groovy"> + <bpmn2:incoming>vnfFound</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoDeleteVnf deleteVnf = new DoDeleteVnf() +deleteVnf.processGetVnfResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="processResponse" targetRef="vnfInUseCheck" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="Skip Delete"> + <bpmn2:incoming>notFound</bpmn2:incoming> + <bpmn2:linkEventDefinition id="LinkEventDefinition_1" name="Skip Delete" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:exclusiveGateway id="vnfInUseCheck" name="Vnf In Use?" default="notInUse"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:outgoing>inUse</bpmn2:outgoing> + <bpmn2:outgoing>notInUse</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="inUse" name="Yes" sourceRef="vnfInUseCheck" targetRef="createWorkflowExceptionInUse"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoDVNF_vnfInUse") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="notInUse" name="No" sourceRef="vnfInUseCheck" targetRef="deleteVnf" /> + <bpmn2:scriptTask id="createWorkflowExceptionInUse" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>inUse</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Can't Delete Generic Vnf. Generic Vnf is still in use.")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="createWorkflowExceptionInUse" targetRef="EndEvent_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_93" errorRef="Error_1" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="deleteVnf" targetRef="ExclusiveGateway_2" /> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" /> + <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_2" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="Skip Delete"> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:linkEventDefinition id="LinkEventDefinition_2" name="Skip Delete" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="IntermediateCatchEvent_1" targetRef="ExclusiveGateway_2" /> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" /> + </bpmn2:endEvent> + <bpmn2:scriptTask id="deleteVnf" name=" AAI Delete (generic vnf) " scriptFormat="groovy"> + <bpmn2:incoming>notInUse</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoDeleteVnf delete = new DoDeleteVnf() +delete.deleteVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVnf"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1"> + <dc:Bounds x="215" y="209" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="233" y="250" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization"> + <dc:Bounds x="322" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="251" y="227" /> + <di:waypoint xsi:type="dc:Point" x="322" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="287" y="212.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="422" y="228" /> + <di:waypoint xsi:type="dc:Point" x="504" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="463" y="213" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_314" bpmnElement="processResponse"> + <dc:Bounds x="704" y="291" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_63" bpmnElement="callGetVnf"> + <dc:Bounds x="504" y="188" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_236" bpmnElement="vnfInUseCheck" isMarkerVisible="true"> + <dc:Bounds x="840" y="305" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890" y="335" width="73" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_314" targetElement="_BPMNShape_ExclusiveGateway_236"> + <di:waypoint xsi:type="dc:Point" x="804" y="331" /> + <di:waypoint xsi:type="dc:Point" x="840" y="330" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="799" y="325" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_63" targetElement="_BPMNShape_ExclusiveGateway_237"> + <di:waypoint xsi:type="dc:Point" x="604" y="228" /> + <di:waypoint xsi:type="dc:Point" x="634" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="630" y="227" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_315" bpmnElement="createWorkflowExceptionInUse"> + <dc:Bounds x="912" y="196" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="inUse" sourceElement="_BPMNShape_ExclusiveGateway_236" targetElement="_BPMNShape_ScriptTask_315"> + <di:waypoint xsi:type="dc:Point" x="865" y="305" /> + <di:waypoint xsi:type="dc:Point" x="865" y="236" /> + <di:waypoint xsi:type="dc:Point" x="912" y="236" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="867" y="258" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="notInUse" sourceElement="_BPMNShape_ExclusiveGateway_236" targetElement="ScriptTask_1ps8v06_di"> + <di:waypoint xsi:type="dc:Point" x="865" y="355" /> + <di:waypoint xsi:type="dc:Point" x="865" y="424" /> + <di:waypoint xsi:type="dc:Point" x="912" y="424" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="874" y="384" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_236" bpmnElement="EndEvent_1"> + <dc:Bounds x="1100" y="218" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1118" y="259" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_315" targetElement="_BPMNShape_EndEvent_236"> + <di:waypoint xsi:type="dc:Point" x="1012" y="236" /> + <di:waypoint xsi:type="dc:Point" x="1100" y="236" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1062" y="236" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_237" bpmnElement="vnfFoundCheck" isMarkerVisible="true"> + <dc:Bounds x="634" y="202" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="672" y="240" width="72" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="vnfFound" sourceElement="_BPMNShape_ExclusiveGateway_237" targetElement="_BPMNShape_ScriptTask_314"> + <di:waypoint xsi:type="dc:Point" x="659" y="252" /> + <di:waypoint xsi:type="dc:Point" x="659" y="331" /> + <di:waypoint xsi:type="dc:Point" x="704" y="331" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="659" y="288" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_2" bpmnElement="IntermediateThrowEvent_1"> + <dc:Bounds x="740" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="722" y="143" width="73" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_237" targetElement="_BPMNShape_IntermediateThrowEvent_2"> + <di:waypoint xsi:type="dc:Point" x="659" y="202" /> + <di:waypoint xsi:type="dc:Point" x="659" y="120" /> + <di:waypoint xsi:type="dc:Point" x="740" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="662" y="144" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2"> + <dc:Bounds x="1174" y="405" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1192" y="446" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_238" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="1062" y="398" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1087" y="453" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="ScriptTask_1ps8v06_di" targetElement="_BPMNShape_ExclusiveGateway_238"> + <di:waypoint xsi:type="dc:Point" x="1012" y="424" /> + <di:waypoint xsi:type="dc:Point" x="1062" y="423" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="992" y="405.5" width="90" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_238"> + <di:waypoint xsi:type="dc:Point" x="1111" y="422" /> + <di:waypoint xsi:type="dc:Point" x="1174" y="423" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1143" y="407.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_2" bpmnElement="IntermediateCatchEvent_1"> + <dc:Bounds x="1069" y="492" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1051" y="533" width="73" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_IntermediateCatchEvent_2" targetElement="_BPMNShape_ExclusiveGateway_238"> + <di:waypoint xsi:type="dc:Point" x="1087" y="492" /> + <di:waypoint xsi:type="dc:Point" x="1087" y="448" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1084" y="462" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="379" y="614" width="312" height="157" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3"> + <dc:Bounds x="408" y="675" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="426" y="716" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> + <dc:Bounds x="624" y="675" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="642" y="716" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException"> + <dc:Bounds x="486" y="653" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319"> + <di:waypoint xsi:type="dc:Point" x="444" y="693" /> + <di:waypoint xsi:type="dc:Point" x="486" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="465" y="693" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239"> + <di:waypoint xsi:type="dc:Point" x="586" y="693" /> + <di:waypoint xsi:type="dc:Point" x="624" y="693" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="605" y="693" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1ps8v06_di" bpmnElement="deleteVnf"> + <dc:Bounds x="912" y="384" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn new file mode 100644 index 0000000000..4d6d0006e3 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn @@ -0,0 +1,490 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoDeleteVnfAndModules" name="DoDeleteVnfAndModules" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" /> + <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08nd69s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoDeleteVnfAndModules deleteVnfAndModules = new DoDeleteVnfAndModules() +deleteVnfAndModules.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" /> + <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_1uqlr6b</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1amun4k" name="Are there VF modules to delete?" default="SequenceFlow_1936oc0"> + <bpmn2:incoming>SequenceFlow_0t4yszi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1tt31qu</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1fccvli</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qrkdn3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1936oc0</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="DeleteVNF" name="Delete VNF" calledElement="DoDeleteVnf"> + <bpmn2:extensionElements> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="vnfId" target="vnfId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_05ujwz8</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1x25m7t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uqlr6b</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_08nd69s" sourceRef="intialization" targetRef="QueryVnf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qrkdn3" name="yes" sourceRef="ExclusiveGateway_1amun4k" targetRef="PrepareModuleList"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DDVAM_nextModule") < execution.getVariable("DDVAM_moduleCount")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="DeleteVFModule" name="Delete VF Module" calledElement="DoDeleteVfModule"> + <bpmn2:extensionElements> + <camunda:in source="requestId" target="requestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="DDVAM_vfModuleId" target="vfModuleId" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="DDVAM_vfModuleName" target="vfModuleName" /> + <camunda:in source="DDVAM_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="cloudConfiguration" target="cloudConfiguration" /> + <camunda:in source="DDVAM_sdncVersion" target="sdncVersion" /> + <camunda:in source="DDVAM_isVidRequest" target="isVidRequest" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="retainResources" target="retainResources" /> + <camunda:in source="aLaCarte" target="aLaCarte" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1xujrk5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1p4ycii</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0189gqf" name="Is SDNC Interaction Enabled?" default="SequenceFlow_05ujwz8"> + <bpmn2:incoming>SequenceFlow_1936oc0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_05ujwz8</bpmn2:outgoing> + <bpmn2:outgoing>SDNCInteractionEnabled2</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1p4ycii" sourceRef="DeleteVFModule" targetRef="PostProcessDeleteVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t4yszi" sourceRef="PostProcessDeleteVfModule" targetRef="ExclusiveGateway_1amun4k" /> + <bpmn2:sequenceFlow id="SequenceFlow_1936oc0" name="no" sourceRef="ExclusiveGateway_1amun4k" targetRef="ExclusiveGateway_0189gqf" /> + <bpmn2:sequenceFlow id="SequenceFlow_05ujwz8" name="no" sourceRef="ExclusiveGateway_0189gqf" targetRef="DeleteVNF" /> + <bpmn2:sequenceFlow id="SequenceFlow_1uqlr6b" sourceRef="DeleteVNF" targetRef="EndEvent_2" /> + <bpmn2:scriptTask id="QueryVnf" name="Query VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08nd69s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0lu7b1v</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +ddvam.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PrepareModuleList" name="Prepare Next Module To Delete" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qrkdn3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qoor0l</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +ddvam.prepareNextModuleToDelete(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0lu7b1v" sourceRef="QueryVnf" targetRef="ExclusiveGateway_027lai5" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qoor0l" sourceRef="PrepareModuleList" targetRef="ExclusiveGateway_0b36mti" /> + <bpmn2:scriptTask id="PostProcessDeleteVfModule" name="PostProcess Delete VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1p4ycii</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0xl033m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t4yszi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +int nextModule = execution.getVariable("DDVAM_nextModule") + execution.setVariable("DDVAM_nextModule", nextModule + 1)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_027lai5" name="Is SDNC Interaction Enabled?" default="SequenceFlow_1tt31qu"> + <bpmn2:incoming>SequenceFlow_0lu7b1v</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1tt31qu</bpmn2:outgoing> + <bpmn2:outgoing>SDNCInteractionEnabled1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1tt31qu" name="no" sourceRef="ExclusiveGateway_027lai5" targetRef="ExclusiveGateway_1amun4k" /> + <bpmn2:sequenceFlow id="SDNCInteractionEnabled1" name="yes" sourceRef="ExclusiveGateway_027lai5" targetRef="preProcessSDNCDeactivateRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0fhhsyo" sourceRef="preProcessSDNCDeactivateRequest" targetRef="callSDNCAdapterTopologyDeactivate" /> + <bpmn2:sequenceFlow id="SequenceFlow_0qdn8k4" sourceRef="callSDNCAdapterTopologyDeactivate" targetRef="postProcessSDNCDeactivateRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_1fccvli" sourceRef="postProcessSDNCDeactivateRequest" targetRef="ExclusiveGateway_1amun4k" /> + <bpmn2:scriptTask id="preProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SDNCInteractionEnabled1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0fhhsyo</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +ddvam.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="postProcessSDNCDeactivateRequest" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0qdn8k4</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1fccvli</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +String response = execution.getVariable("DDVAM_deactivateSDNCAdapterResponse") +ddvam.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DDVAM_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DDVAM_deactivateSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0fhhsyo</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qdn8k4</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SDNCInteractionEnabled2" name="yes" sourceRef="ExclusiveGateway_0189gqf" targetRef="preProcessSDNCUnassignRequest"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_001uxa1" sourceRef="preProcessSDNCUnassignRequest" targetRef="callSDNCAdapterTopologyUnassign" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x29mht" sourceRef="callSDNCAdapterTopologyUnassign" targetRef="postProcessSDNCUnassignRequest" /> + <bpmn2:sequenceFlow id="SequenceFlow_1x25m7t" sourceRef="postProcessSDNCUnassignRequest" targetRef="DeleteVNF" /> + <bpmn2:scriptTask id="preProcessSDNCUnassignRequest" name="PreProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SDNCInteractionEnabled2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_001uxa1</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +ddvam.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="callSDNCAdapterTopologyUnassign" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DDVAM_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DDVAM_unassignSDNCAdapterResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_001uxa1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1x29mht</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="postProcessSDNCUnassignRequest" name="PostProcess SDNC Unassign Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1x29mht</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1x25m7t</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddvam = new DoDeleteVnfAndModules() +String response = execution.getVariable("DDVAM_unassignSDNCAdapterResponse") +ddvam.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0b36mti" name="Is SDNC Interaction Enabled?" default="SequenceFlow_1xujrk5"> + <bpmn2:incoming>SequenceFlow_1qoor0l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1xujrk5</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1laeenc</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:callActivity id="DoDeleteVfModuleFromVnf" name="Deiete VF Module From VNF" calledElement="DoDeleteVfModuleFromVnf"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="DDVAM_sdncVersion" target="sdncVersion" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DDVAM_vfModuleId" target="vfModuleId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1laeenc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0xl033m</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1xujrk5" name="no" sourceRef="ExclusiveGateway_0b36mti" targetRef="DeleteVFModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_1laeenc" name="yes" sourceRef="ExclusiveGateway_0b36mti" targetRef="DoDeleteVfModuleFromVnf"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_0xl033m" sourceRef="DoDeleteVfModuleFromVnf" targetRef="PostProcessDeleteVfModule" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVnfAndModules"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1"> + <dc:Bounds x="238" y="209" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="250" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization"> + <dc:Bounds x="344" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="274" y="227" /> + <di:waypoint xsi:type="dc:Point" x="344" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="309" y="212.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2"> + <dc:Bounds x="1983" y="372" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="2001" y="413" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="229" y="616" width="431" height="157" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3"> + <dc:Bounds x="377" y="677" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="395" y="718" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> + <dc:Bounds x="593" y="677" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="611" y="718" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException"> + <dc:Bounds x="447" y="655" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319"> + <di:waypoint xsi:type="dc:Point" x="413" y="695" /> + <di:waypoint xsi:type="dc:Point" x="447" y="695" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="430" y="680" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239"> + <di:waypoint xsi:type="dc:Point" x="547" y="695" /> + <di:waypoint xsi:type="dc:Point" x="593" y="695" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="570" y="680" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1amun4k_di" bpmnElement="ExclusiveGateway_1amun4k" isMarkerVisible="true"> + <dc:Bounds x="1271" y="200" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1263" y="250" width="65" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0laaqvh_di" bpmnElement="DeleteVNF"> + <dc:Bounds x="1812" y="350" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08nd69s_di" bpmnElement="SequenceFlow_08nd69s"> + <di:waypoint xsi:type="dc:Point" x="444" y="227" /> + <di:waypoint xsi:type="dc:Point" x="512" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="478" y="212" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qrkdn3_di" bpmnElement="SequenceFlow_1qrkdn3"> + <di:waypoint xsi:type="dc:Point" x="1296" y="200" /> + <di:waypoint xsi:type="dc:Point" x="1296" y="102" /> + <di:waypoint xsi:type="dc:Point" x="1368" y="102" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1302" y="154" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qmp9y5_di" bpmnElement="DeleteVFModule"> + <dc:Bounds x="1648" y="-9" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0189gqf_di" bpmnElement="ExclusiveGateway_0189gqf" isMarkerVisible="true"> + <dc:Bounds x="1271" y="365" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1302" y="319" width="54" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1p4ycii_di" bpmnElement="SequenceFlow_1p4ycii"> + <di:waypoint xsi:type="dc:Point" x="1748" y="31" /> + <di:waypoint xsi:type="dc:Point" x="1904" y="31" /> + <di:waypoint xsi:type="dc:Point" x="1904" y="62" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1826" y="16" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t4yszi_di" bpmnElement="SequenceFlow_0t4yszi"> + <di:waypoint xsi:type="dc:Point" x="1904" y="142" /> + <di:waypoint xsi:type="dc:Point" x="1904" y="225" /> + <di:waypoint xsi:type="dc:Point" x="1321" y="225" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1919" y="183.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1936oc0_di" bpmnElement="SequenceFlow_1936oc0"> + <di:waypoint xsi:type="dc:Point" x="1296" y="250" /> + <di:waypoint xsi:type="dc:Point" x="1296" y="365" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1270" y="305.40625" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05ujwz8_di" bpmnElement="SequenceFlow_05ujwz8"> + <di:waypoint xsi:type="dc:Point" x="1321" y="390" /> + <di:waypoint xsi:type="dc:Point" x="1812" y="390" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1361" y="362" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1uqlr6b_di" bpmnElement="SequenceFlow_1uqlr6b"> + <di:waypoint xsi:type="dc:Point" x="1912" y="390" /> + <di:waypoint xsi:type="dc:Point" x="1983" y="390" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1948" y="375" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12xsp2f_di" bpmnElement="QueryVnf"> + <dc:Bounds x="512" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01c9qas_di" bpmnElement="PrepareModuleList"> + <dc:Bounds x="1368" y="62" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0lu7b1v_di" bpmnElement="SequenceFlow_0lu7b1v"> + <di:waypoint xsi:type="dc:Point" x="612" y="227" /> + <di:waypoint xsi:type="dc:Point" x="701" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="657" y="212" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qoor0l_di" bpmnElement="SequenceFlow_1qoor0l"> + <di:waypoint xsi:type="dc:Point" x="1468" y="102" /> + <di:waypoint xsi:type="dc:Point" x="1525" y="102" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1497" y="87" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_11i0rnd_di" bpmnElement="PostProcessDeleteVfModule"> + <dc:Bounds x="1854" y="62" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_027lai5_di" bpmnElement="ExclusiveGateway_027lai5" isMarkerVisible="true"> + <dc:Bounds x="701" y="202" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="699" y="145" width="54" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1tt31qu_di" bpmnElement="SequenceFlow_1tt31qu"> + <di:waypoint xsi:type="dc:Point" x="751" y="227" /> + <di:waypoint xsi:type="dc:Point" x="1271" y="225" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1005" y="201" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04lnhgt_di" bpmnElement="SDNCInteractionEnabled1"> + <di:waypoint xsi:type="dc:Point" x="726" y="252" /> + <di:waypoint xsi:type="dc:Point" x="726" y="337" /> + <di:waypoint xsi:type="dc:Point" x="776" y="337" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="694" y="280.5" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0fhhsyo_di" bpmnElement="SequenceFlow_0fhhsyo"> + <di:waypoint xsi:type="dc:Point" x="876" y="337" /> + <di:waypoint xsi:type="dc:Point" x="926" y="337" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="901" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0qdn8k4_di" bpmnElement="SequenceFlow_0qdn8k4"> + <di:waypoint xsi:type="dc:Point" x="1026" y="337" /> + <di:waypoint xsi:type="dc:Point" x="1070" y="337" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1048" y="322" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fccvli_di" bpmnElement="SequenceFlow_1fccvli"> + <di:waypoint xsi:type="dc:Point" x="1170" y="337" /> + <di:waypoint xsi:type="dc:Point" x="1225" y="337" /> + <di:waypoint xsi:type="dc:Point" x="1225" y="225" /> + <di:waypoint xsi:type="dc:Point" x="1271" y="225" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1240" y="281" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1cj4pgd_di" bpmnElement="preProcessSDNCDeactivateRequest"> + <dc:Bounds x="776" y="297" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1nug5hb_di" bpmnElement="postProcessSDNCDeactivateRequest"> + <dc:Bounds x="1070" y="297" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0sl24xf_di" bpmnElement="callSDNCAdapterTopologyDeactivate"> + <dc:Bounds x="926" y="297" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ftrgor_di" bpmnElement="SDNCInteractionEnabled2"> + <di:waypoint xsi:type="dc:Point" x="1296" y="415" /> + <di:waypoint xsi:type="dc:Point" x="1296" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1356" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1266" y="445.36046511627904" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_001uxa1_di" bpmnElement="SequenceFlow_001uxa1"> + <di:waypoint xsi:type="dc:Point" x="1456" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1517" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1487" y="486" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x29mht_di" bpmnElement="SequenceFlow_1x29mht"> + <di:waypoint xsi:type="dc:Point" x="1617" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1678" y="501" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1648" y="486" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1x25m7t_di" bpmnElement="SequenceFlow_1x25m7t"> + <di:waypoint xsi:type="dc:Point" x="1778" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1862" y="501" /> + <di:waypoint xsi:type="dc:Point" x="1862" y="430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1820" y="486" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_167oslm_di" bpmnElement="preProcessSDNCUnassignRequest"> + <dc:Bounds x="1356" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0cv258c_di" bpmnElement="callSDNCAdapterTopologyUnassign"> + <dc:Bounds x="1517" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1gb4lqf_di" bpmnElement="postProcessSDNCUnassignRequest"> + <dc:Bounds x="1678" y="461" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0b36mti_di" bpmnElement="ExclusiveGateway_0b36mti" isMarkerVisible="true"> + <dc:Bounds x="1525" y="77" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1581" y="84" width="54" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1y4alqc_di" bpmnElement="DoDeleteVfModuleFromVnf"> + <dc:Bounds x="1648" y="121" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1xujrk5_di" bpmnElement="SequenceFlow_1xujrk5"> + <di:waypoint xsi:type="dc:Point" x="1550" y="77" /> + <di:waypoint xsi:type="dc:Point" x="1550" y="31" /> + <di:waypoint xsi:type="dc:Point" x="1648" y="31" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1524" y="42" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1laeenc_di" bpmnElement="SequenceFlow_1laeenc"> + <di:waypoint xsi:type="dc:Point" x="1550" y="127" /> + <di:waypoint xsi:type="dc:Point" x="1550" y="161" /> + <di:waypoint xsi:type="dc:Point" x="1648" y="161" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1523" y="135" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0xl033m_di" bpmnElement="SequenceFlow_0xl033m"> + <di:waypoint xsi:type="dc:Point" x="1748" y="161" /> + <di:waypoint xsi:type="dc:Point" x="1828" y="161" /> + <di:waypoint xsi:type="dc:Point" x="1828" y="102" /> + <di:waypoint xsi:type="dc:Point" x="1854" y="102" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1843" y="131.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn new file mode 100644 index 0000000000..fa8a2213b0 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn @@ -0,0 +1,187 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoScaleE2EServiceInstance" name="DoScaleE2EServiceInstance" isExecutable="true"> + <bpmn:startEvent id="StartEvent_08ndnk6" name="Start Flow"> + <bpmn:outgoing>SequenceFlow_1fhno84</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="ScriptTask_16yrgke" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1fhno84</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_194bhkx</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoScaleE2EServiceInstance() +ddsi.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1f5ursk"> + <bpmn:incoming>SequenceFlow_1yee730</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0vmzliy" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_194bhkx</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0b5p6gy</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoScaleE2EServiceInstance() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:serviceTask id="ServiceTask_17d588b" name="Init Resource Oper Status"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0b5p6gy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0nqrq1k</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:callActivity id="CallActivity_1jkl1i3" name="Call Network Service Scale" calledElement="DoScaleVFCServiceInstance"> + <bpmn:extensionElements> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resouceTemplateUUID" target="resouceTemplateUUID" /> + <camunda:in source="resouceInstanceId" target="resouceInstanceId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="nsScaleParams" target="nsScaleParams" /> + <camunda:in source="bpmnRequest" target="bpmnRequest" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="nodeTemplateUUID" target="nodeTemplateUUID" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="requestDescription" target="requestDescription" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0nqrq1k</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1yee730</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1fhno84" sourceRef="StartEvent_08ndnk6" targetRef="ScriptTask_16yrgke" /> + <bpmn:sequenceFlow id="SequenceFlow_194bhkx" sourceRef="ScriptTask_16yrgke" targetRef="ScriptTask_0vmzliy" /> + <bpmn:sequenceFlow id="SequenceFlow_1yee730" sourceRef="CallActivity_1jkl1i3" targetRef="EndEvent_1f5ursk" /> + <bpmn:sequenceFlow id="SequenceFlow_0nqrq1k" sourceRef="ServiceTask_17d588b" targetRef="CallActivity_1jkl1i3" /> + <bpmn:sequenceFlow id="SequenceFlow_0b5p6gy" sourceRef="ScriptTask_0vmzliy" targetRef="ServiceTask_17d588b" /> + <bpmn:subProcess id="SubProcess_19qmltk" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_0581c7y"> + <bpmn:outgoing>SequenceFlow_0yyws1p</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0k146bt"> + <bpmn:incoming>SequenceFlow_0i814ke</bpmn:incoming> + </bpmn:endEvent> + <bpmn:scriptTask id="ScriptTask_0l79kxj" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0yyws1p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0i814ke</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0yyws1p" name="" sourceRef="StartEvent_0581c7y" targetRef="ScriptTask_0l79kxj" /> + <bpmn:sequenceFlow id="SequenceFlow_0i814ke" name="" sourceRef="ScriptTask_0l79kxj" targetRef="EndEvent_0k146bt" /> + </bpmn:subProcess> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoScaleE2EServiceInstance"> + <bpmndi:BPMNShape id="StartEvent_08ndnk6_di" bpmnElement="StartEvent_08ndnk6"> + <dc:Bounds x="96" y="129" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="170" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_16yrgke_di" bpmnElement="ScriptTask_16yrgke"> + <dc:Bounds x="189" y="107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1f5ursk_di" bpmnElement="EndEvent_1f5ursk"> + <dc:Bounds x="1016" y="279" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="899" y="320" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0vmzliy_di" bpmnElement="ScriptTask_0vmzliy"> + <dc:Bounds x="436" y="107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_17d588b_di" bpmnElement="ServiceTask_17d588b"> + <dc:Bounds x="695" y="107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1jkl1i3_di" bpmnElement="CallActivity_1jkl1i3"> + <dc:Bounds x="984" y="107" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fhno84_di" bpmnElement="SequenceFlow_1fhno84"> + <di:waypoint xsi:type="dc:Point" x="132" y="147" /> + <di:waypoint xsi:type="dc:Point" x="189" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="72" y="126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_194bhkx_di" bpmnElement="SequenceFlow_194bhkx"> + <di:waypoint xsi:type="dc:Point" x="289" y="147" /> + <di:waypoint xsi:type="dc:Point" x="436" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="317.5" y="126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1yee730_di" bpmnElement="SequenceFlow_1yee730"> + <di:waypoint xsi:type="dc:Point" x="1033" y="187" /> + <di:waypoint xsi:type="dc:Point" x="1034" y="279" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="988.5" y="212" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0nqrq1k_di" bpmnElement="SequenceFlow_0nqrq1k"> + <di:waypoint xsi:type="dc:Point" x="795" y="147" /> + <di:waypoint xsi:type="dc:Point" x="984" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="844.5" y="126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b5p6gy_di" bpmnElement="SequenceFlow_0b5p6gy"> + <di:waypoint xsi:type="dc:Point" x="536" y="147" /> + <di:waypoint xsi:type="dc:Point" x="695" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="570.5" y="126" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_19qmltk_di" bpmnElement="SubProcess_19qmltk" isExpanded="true"> + <dc:Bounds x="132" y="351" width="467" height="193" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0581c7y_di" bpmnElement="StartEvent_0581c7y"> + <dc:Bounds x="201" y="419" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="84" y="460" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0k146bt_di" bpmnElement="EndEvent_0k146bt"> + <dc:Bounds x="494" y="419" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="377" y="460" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0l79kxj_di" bpmnElement="ScriptTask_0l79kxj"> + <dc:Bounds x="305" y="397" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0yyws1p_di" bpmnElement="SequenceFlow_0yyws1p"> + <di:waypoint xsi:type="dc:Point" x="237" y="437" /> + <di:waypoint xsi:type="dc:Point" x="305" y="437" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="136" y="422" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0i814ke_di" bpmnElement="SequenceFlow_0i814ke"> + <di:waypoint xsi:type="dc:Point" x="405" y="437" /> + <di:waypoint xsi:type="dc:Point" x="494" y="437" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="317" y="422" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn new file mode 100644 index 0000000000..f8b1ba5bee --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0"> + <bpmn:process id="DoScaleVFCServiceInstance" name="DoScaleVFCServiceInstance" isExecutable="true"> + <bpmn:startEvent id="scaleNS_StartEvent" name="scaleNS_StartEvent"> + <bpmn:outgoing>SequenceFlow_00w1ntj</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="PreprocessIncomingRequest" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_00w1ntj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0izumqq</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoScaleVFCNetworkServiceInstance() +dcsi.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_0ia872k" name="Scale Network Service" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0izumqq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0hzy01n</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoScaleVFCNetworkServiceInstance() +dcsi.scaleNetworkService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_00w1ntj" sourceRef="scaleNS_StartEvent" targetRef="PreprocessIncomingRequest_task" /> + <bpmn:sequenceFlow id="SequenceFlow_0izumqq" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0ia872k" /> + <bpmn:endEvent id="EndEvent_1r0dxhy"> + <bpmn:incoming>SequenceFlow_18hdal9</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_18hdal9" sourceRef="finishNSScale_Task" targetRef="EndEvent_1r0dxhy" /> + <bpmn:scriptTask id="finishNSScale_Task" name="Finish NS Scale" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0hzy01n</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_18hdal9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoScaleVFCNetworkServiceInstance() +dcsi.finishNSScale(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0hzy01n" sourceRef="Task_0ia872k" targetRef="finishNSScale_Task" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoScaleVFCServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="scaleNS_StartEvent"> + <dc:Bounds x="-33" y="182" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-56" y="218" width="83" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0fxwmkv_di" bpmnElement="PreprocessIncomingRequest_task"> + <dc:Bounds x="117" y="160" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_14ppugf_di" bpmnElement="Task_0ia872k"> + <dc:Bounds x="739" y="160" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_00w1ntj_di" bpmnElement="SequenceFlow_00w1ntj"> + <di:waypoint xsi:type="dc:Point" x="3" y="200" /> + <di:waypoint xsi:type="dc:Point" x="117" y="200" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="15" y="179" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0izumqq_di" bpmnElement="SequenceFlow_0izumqq"> + <di:waypoint xsi:type="dc:Point" x="217" y="200" /> + <di:waypoint xsi:type="dc:Point" x="739" y="200" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="433" y="179" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1r0dxhy_di" bpmnElement="EndEvent_1r0dxhy"> + <dc:Bounds x="771" y="676" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744" y="716" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_18hdal9_di" bpmnElement="SequenceFlow_18hdal9"> + <di:waypoint xsi:type="dc:Point" x="789" y="451" /> + <di:waypoint xsi:type="dc:Point" x="789" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="759" y="557.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1elwlqc_di" bpmnElement="finishNSScale_Task"> + <dc:Bounds x="739" y="371" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0hzy01n_di" bpmnElement="SequenceFlow_0hzy01n"> + <di:waypoint xsi:type="dc:Point" x="789" y="240" /> + <di:waypoint xsi:type="dc:Point" x="789" y="371" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="759" y="299.5" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn new file mode 100644 index 0000000000..ad79d471af --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn @@ -0,0 +1,293 @@ +<?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="1.6.0"> + <bpmn:process id="DoUnderlayVpnOperation" name="DoUnderlayVpnOperation" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_0trm4dk</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:exclusiveGateway id="ExclusiveGateway_0vvnd7x" name="is response ok?" default="SequenceFlow_083crve"> + <bpmn:incoming>SequenceFlow_1vncx6p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1amfirn</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_083crve</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_14p1b2x"> + <bpmn:incoming>SequenceFlow_10j9lbs</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_0urwhzh"> + <bpmn:incoming>SequenceFlow_083crve</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0al8gdl</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_1ajtcbe" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0trm4dk" sourceRef="StartEvent_1" targetRef="Task_0p43ddw" /> + <bpmn:sequenceFlow id="SequenceFlow_1amfirn" name="ok" sourceRef="ExclusiveGateway_0vvnd7x" targetRef="ServiceTask_1uy6bdu"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_083crve" name="error" sourceRef="ExclusiveGateway_0vvnd7x" targetRef="EndEvent_0urwhzh" /> + <bpmn:serviceTask id="Task_0brg0a4" name="call sdnc network operation" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_0h35z1p</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_07bp14s</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:serviceTask id="Task_0p43ddw" name="call SdncUnderlayVpnPreprocessTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncUnderlayVpnPreprocessTask"> + <bpmn:incoming>SequenceFlow_0trm4dk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_199ig0b</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0qsgg4i" name="Is create?" default="SequenceFlow_0h35z1p"> + <bpmn:incoming>SequenceFlow_199ig0b</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1rj6k5t</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0h35z1p</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_199ig0b" sourceRef="Task_0p43ddw" targetRef="ExclusiveGateway_0qsgg4i" /> + <bpmn:serviceTask id="Task_0rfvkh0" name="call SdncServiceTopologyOperationTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1rj6k5t</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1vncx6p</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_1rj6k5t" name="yes" sourceRef="ExclusiveGateway_0qsgg4i" targetRef="Task_0rfvkh0"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("resourceOperType")=='create'}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0h35z1p" name="no" sourceRef="ExclusiveGateway_0qsgg4i" targetRef="Task_0brg0a4" /> + <bpmn:sequenceFlow id="SequenceFlow_1vncx6p" sourceRef="Task_0rfvkh0" targetRef="ExclusiveGateway_0vvnd7x" /> + <bpmn:serviceTask id="ServiceTask_1uy6bdu" name="call sdnc network operation" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1amfirn</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0bsmh51</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:sequenceFlow id="SequenceFlow_0bsmh51" sourceRef="ServiceTask_1uy6bdu" targetRef="ExclusiveGateway_09xxhiu" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_09xxhiu" name="is response ok?" default="SequenceFlow_0al8gdl"> + <bpmn:incoming>SequenceFlow_0bsmh51</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_10j9lbs</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0al8gdl</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_10j9lbs" name="ok" sourceRef="ExclusiveGateway_09xxhiu" targetRef="EndEvent_14p1b2x"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:exclusiveGateway id="ExclusiveGateway_1opobct" name="is response ok?" default="SequenceFlow_19glon5"> + <bpmn:incoming>SequenceFlow_07bp14s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1oz5grh</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_19glon5</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:serviceTask id="ServiceTask_0dixxe6" name="call SdncServiceTopologyOperationTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1oz5grh</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_06e7qr6</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_1x7erbs" name="is response ok?" default="SequenceFlow_1q83qn9"> + <bpmn:incoming>SequenceFlow_06e7qr6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0koi1ia</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1q83qn9</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:endEvent id="EndEvent_1tt5u77"> + <bpmn:incoming>SequenceFlow_0koi1ia</bpmn:incoming> + </bpmn:endEvent> + <bpmn:endEvent id="EndEvent_0ggbe9w"> + <bpmn:incoming>SequenceFlow_19glon5</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1q83qn9</bpmn:incoming> + <bpmn:errorEventDefinition errorRef="Error_1ajtcbe" /> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0al8gdl" name="error" sourceRef="ExclusiveGateway_09xxhiu" targetRef="EndEvent_0urwhzh" /> + <bpmn:sequenceFlow id="SequenceFlow_07bp14s" sourceRef="Task_0brg0a4" targetRef="ExclusiveGateway_1opobct" /> + <bpmn:sequenceFlow id="SequenceFlow_1oz5grh" name="ok" sourceRef="ExclusiveGateway_1opobct" targetRef="ServiceTask_0dixxe6"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_06e7qr6" sourceRef="ServiceTask_0dixxe6" targetRef="ExclusiveGateway_1x7erbs" /> + <bpmn:sequenceFlow id="SequenceFlow_0koi1ia" name="ok" sourceRef="ExclusiveGateway_1x7erbs" targetRef="EndEvent_1tt5u77"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_19glon5" name="error" sourceRef="ExclusiveGateway_1opobct" targetRef="EndEvent_0ggbe9w" /> + <bpmn:sequenceFlow id="SequenceFlow_1q83qn9" name="error" sourceRef="ExclusiveGateway_1x7erbs" targetRef="EndEvent_0ggbe9w" /> + </bpmn:process> + <bpmn:error id="Error_1ajtcbe" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUnderlayVpnOperation"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="-38" y="193" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-65" y="229" width="90" height="20" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0vvnd7x_di" bpmnElement="ExclusiveGateway_0vvnd7x" isMarkerVisible="true"> + <dc:Bounds x="593" y="26" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="578" y="80" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_14p1b2x_di" bpmnElement="EndEvent_14p1b2x"> + <dc:Bounds x="1058" y="33" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1031" y="73" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0d0rf7s_di" bpmnElement="EndEvent_0urwhzh"> + <dc:Bounds x="1058" y="-150" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1031" y="-110" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0trm4dk_di" bpmnElement="SequenceFlow_0trm4dk"> + <di:waypoint xsi:type="dc:Point" x="-2" y="211" /> + <di:waypoint xsi:type="dc:Point" x="100" y="211" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="4" y="190" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1amfirn_di" bpmnElement="SequenceFlow_1amfirn"> + <di:waypoint xsi:type="dc:Point" x="643" y="51" /> + <di:waypoint xsi:type="dc:Point" x="743" y="51" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="686.5" y="30.000000000000014" width="13" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_083crve_di" bpmnElement="SequenceFlow_083crve"> + <di:waypoint xsi:type="dc:Point" x="618" y="26" /> + <di:waypoint xsi:type="dc:Point" x="618" y="-132" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="-132" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="628.1578947368421" y="-151.89147286821705" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_035xqek_di" bpmnElement="Task_0brg0a4"> + <dc:Bounds x="392" y="379" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0bjsvlv_di" bpmnElement="Task_0p43ddw"> + <dc:Bounds x="100" y="171" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0qsgg4i_di" bpmnElement="ExclusiveGateway_0qsgg4i" isMarkerVisible="true"> + <dc:Bounds x="247.99837398373984" y="186" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="250" y="240" width="51" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_199ig0b_di" bpmnElement="SequenceFlow_199ig0b"> + <di:waypoint xsi:type="dc:Point" x="200" y="211" /> + <di:waypoint xsi:type="dc:Point" x="248" y="211" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="224" y="190" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1omqxl9_di" bpmnElement="Task_0rfvkh0"> + <dc:Bounds x="379" y="11" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rj6k5t_di" bpmnElement="SequenceFlow_1rj6k5t"> + <di:waypoint xsi:type="dc:Point" x="273" y="186" /> + <di:waypoint xsi:type="dc:Point" x="273" y="51" /> + <di:waypoint xsi:type="dc:Point" x="379" y="51" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="279" y="112.5" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0h35z1p_di" bpmnElement="SequenceFlow_0h35z1p"> + <di:waypoint xsi:type="dc:Point" x="273" y="236" /> + <di:waypoint xsi:type="dc:Point" x="273" y="419" /> + <di:waypoint xsi:type="dc:Point" x="392" y="419" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="282" y="322" width="13" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1vncx6p_di" bpmnElement="SequenceFlow_1vncx6p"> + <di:waypoint xsi:type="dc:Point" x="479" y="51" /> + <di:waypoint xsi:type="dc:Point" x="593" y="51" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="30" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1uy6bdu_di" bpmnElement="ServiceTask_1uy6bdu"> + <dc:Bounds x="743" y="11" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bsmh51_di" bpmnElement="SequenceFlow_0bsmh51"> + <di:waypoint xsi:type="dc:Point" x="843" y="51" /> + <di:waypoint xsi:type="dc:Point" x="942" y="51" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="892.5" y="30" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_09xxhiu_di" bpmnElement="ExclusiveGateway_09xxhiu" isMarkerVisible="true"> + <dc:Bounds x="942" y="26" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="927" y="80" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_10j9lbs_di" bpmnElement="SequenceFlow_10j9lbs"> + <di:waypoint xsi:type="dc:Point" x="992" y="51" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="51" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1019" y="30" width="13" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1opobct_di" bpmnElement="ExclusiveGateway_1opobct" isMarkerVisible="true"> + <dc:Bounds x="580" y="394" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="565" y="448" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_0dixxe6_di" bpmnElement="ServiceTask_0dixxe6"> + <dc:Bounds x="730" y="379" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1x7erbs_di" bpmnElement="ExclusiveGateway_1x7erbs" isMarkerVisible="true"> + <dc:Bounds x="951" y="394" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="936" y="448" width="80" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1tt5u77_di" bpmnElement="EndEvent_1tt5u77"> + <dc:Bounds x="1083" y="401" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1056" y="441" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0ggbe9w_di" bpmnElement="EndEvent_0ggbe9w"> + <dc:Bounds x="1093" y="585" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1066" y="625" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0al8gdl_di" bpmnElement="SequenceFlow_0al8gdl"> + <di:waypoint xsi:type="dc:Point" x="967" y="26" /> + <di:waypoint xsi:type="dc:Point" x="967" y="-132" /> + <di:waypoint xsi:type="dc:Point" x="1058" y="-132" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="969" y="-59" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_07bp14s_di" bpmnElement="SequenceFlow_07bp14s"> + <di:waypoint xsi:type="dc:Point" x="492" y="419" /> + <di:waypoint xsi:type="dc:Point" x="580" y="419" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="536" y="398" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1oz5grh_di" bpmnElement="SequenceFlow_1oz5grh"> + <di:waypoint xsi:type="dc:Point" x="630" y="419" /> + <di:waypoint xsi:type="dc:Point" x="730" y="419" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="674" y="398" width="13" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06e7qr6_di" bpmnElement="SequenceFlow_06e7qr6"> + <di:waypoint xsi:type="dc:Point" x="830" y="419" /> + <di:waypoint xsi:type="dc:Point" x="951" y="419" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="890.5" y="398" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0koi1ia_di" bpmnElement="SequenceFlow_0koi1ia"> + <di:waypoint xsi:type="dc:Point" x="1001" y="419" /> + <di:waypoint xsi:type="dc:Point" x="1083" y="419" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1036" y="398" width="13" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19glon5_di" bpmnElement="SequenceFlow_19glon5"> + <di:waypoint xsi:type="dc:Point" x="605" y="444" /> + <di:waypoint xsi:type="dc:Point" x="605" y="603" /> + <di:waypoint xsi:type="dc:Point" x="1093" y="603" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="608" y="518" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1q83qn9_di" bpmnElement="SequenceFlow_1q83qn9"> + <di:waypoint xsi:type="dc:Point" x="976" y="444" /> + <di:waypoint xsi:type="dc:Point" x="976" y="603" /> + <di:waypoint xsi:type="dc:Point" x="1093" y="603" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="978" y="518" width="26" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn new file mode 100644 index 0000000000..a46d8d4de2 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn @@ -0,0 +1,648 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateE2EServiceInstance" name="DoUpdateE2EServiceInstance" isExecutable="true"> + <bpmn2:startEvent id="createSI_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04xlw7s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_09laxun" name="PreProcess for Add Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_115mdln</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0yztz2p</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstance() +csi.preProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="Task_0ag30bf" name="PostProcess for Add Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1wwjugw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_177wo8z</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstance() +csi.postProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="StartEvent_StartResource" name="StartAddResources"> + <bpmn2:outgoing>SequenceFlow_115mdln</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartAddResources" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_115mdln" sourceRef="StartEvent_StartResource" targetRef="Task_09laxun" /> + <bpmn2:sequenceFlow id="SequenceFlow_0yztz2p" sourceRef="Task_09laxun" targetRef="ExclusiveGateway_06gj84t" /> + <bpmn2:scriptTask id="ScriptTask_1xxvnst" name="PreProcess for Delete Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qn0865</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1s799cp</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstance() +csi.preProcessForDeleteResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_00wgfrc" name="PostProcess for Delete Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0w4t4ao</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uu6uiu</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstance() +csi.postProcessForDeleteResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0h6d9jb" name="StartDeleteResources"> + <bpmn2:outgoing>SequenceFlow_1qn0865</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartDeleteResources" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1qn0865" sourceRef="IntermediateCatchEvent_0h6d9jb" targetRef="ScriptTask_1xxvnst" /> + <bpmn2:scriptTask id="ScriptTask_0acnvkp" name="Prepare Resource Oper Status" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_04xlw7s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0r6c0ci</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoUpdateE2EServiceInstance() +ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:serviceTask id="ServiceTask_17u9q9u" name="Init Resource Oper Status"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="content-type">application/soap+xml</camunda:entry> + <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter> + <camunda:inputParameter name="method">POST</camunda:inputParameter> + <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0r6c0ci</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1muxopq</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_0r6c0ci" sourceRef="ScriptTask_0acnvkp" targetRef="ServiceTask_17u9q9u" /> + <bpmn2:sequenceFlow id="SequenceFlow_1muxopq" sourceRef="ServiceTask_17u9q9u" targetRef="IntermediateThrowEvent_09ur9ds" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vneaao" name="GoTo StartDeleteResources"> + <bpmn2:incoming>SequenceFlow_177wo8z</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartDeleteResources" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:callActivity id="CallActivity_1nm9zq7" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService"> + <bpmn2:extensionElements> + <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" /> + <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" /> + <camunda:in source="serviceType" target="GENPS_serviceType" /> + <camunda:in sourceExpression="service-instance" target="GENPS_type" /> + <camunda:in source="serviceInstanceData" target="GENPS_payload" /> + <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" /> + <camunda:in source="msoRequestId" target="GENPS_requesId" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="GENPS_serviceResourceVersion" target="GENPS_serviceResourceVersion" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1kx5ke9</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0f76thv</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0xtabf8" name="Post Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0f76thv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0x0mhlj</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def ddsi = new DoUpdateE2EServiceInstance() +ddsi.postProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0a9bdjw" name="UpdateAAI"> + <bpmn2:outgoing>SequenceFlow_1demy08</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1demy08" sourceRef="IntermediateCatchEvent_0a9bdjw" targetRef="ScriptTask_195nptq" /> + <bpmn2:sequenceFlow id="SequenceFlow_0f76thv" sourceRef="CallActivity_1nm9zq7" targetRef="ScriptTask_0xtabf8" /> + <bpmn2:scriptTask id="ScriptTask_19v8l1w" name="Post Config Service Instance Update" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ku36oy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_07aa121</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstance() +csi.postConfigRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0z04o3s" name="FinishProcess"> + <bpmn2:outgoing>SequenceFlow_0ku36oy</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:endEvent id="EndEvent_0exzmfn"> + <bpmn2:incoming>SequenceFlow_07aa121</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_07aa121" sourceRef="ScriptTask_19v8l1w" targetRef="EndEvent_0exzmfn" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ku36oy" sourceRef="IntermediateCatchEvent_0z04o3s" targetRef="ScriptTask_19v8l1w" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_06lo96a" name="GoTo UpdateAAI"> + <bpmn2:incoming>SequenceFlow_1uu6uiu</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0hucdtk" name="GoTo FinishProcess"> + <bpmn2:incoming>SequenceFlow_0x0mhlj</bpmn2:incoming> + <bpmn2:linkEventDefinition name="FinishProcess" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0x0mhlj" sourceRef="ScriptTask_0xtabf8" targetRef="IntermediateThrowEvent_0hucdtk" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09ur9ds" name="GoTo StartAddResources"> + <bpmn2:incoming>SequenceFlow_1muxopq</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartAddResources" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1uu6uiu" sourceRef="ScriptTask_00wgfrc" targetRef="IntermediateThrowEvent_06lo96a" /> + <bpmn2:subProcess id="SubProcess_0jo0nms" name="Sub-process for Application Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_06768u3"> + <bpmn2:outgoing>SequenceFlow_05j3sat</bpmn2:outgoing> + <bpmn2:errorEventDefinition /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_014jyvb"> + <bpmn2:incoming>SequenceFlow_02znk15</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:scriptTask id="ScriptTask_1awrp72" name="Pre Process Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_05j3sat</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19ly8h7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.preProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0vc9jgo" name="Post Process Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19ly8h7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_02znk15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.postProcessRollback(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_05j3sat" sourceRef="StartEvent_06768u3" targetRef="ScriptTask_1awrp72" /> + <bpmn2:sequenceFlow id="SequenceFlow_02znk15" sourceRef="ScriptTask_0vc9jgo" targetRef="EndEvent_014jyvb" /> + <bpmn2:sequenceFlow id="SequenceFlow_19ly8h7" sourceRef="ScriptTask_1awrp72" targetRef="ScriptTask_0vc9jgo" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="ScriptTask_195nptq" name="Pre Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1demy08</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1cy5gq2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.preProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1cy5gq2" sourceRef="ScriptTask_195nptq" targetRef="CallActivity_069o6fn" /> + <bpmn2:callActivity id="CallActivity_069o6fn" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1cy5gq2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1vy856f</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0lp9y03" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1vy856f</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14ggluy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1vy856f" sourceRef="CallActivity_069o6fn" targetRef="ScriptTask_0lp9y03" /> + <bpmn2:sequenceFlow id="SequenceFlow_14ggluy" sourceRef="ScriptTask_0lp9y03" targetRef="ScriptTask_0sis7k0" /> + <bpmn2:scriptTask id="ScriptTask_0sis7k0" name="Pre Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_14ggluy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1kx5ke9</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstance() +dcsi.preProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1kx5ke9" sourceRef="ScriptTask_0sis7k0" targetRef="CallActivity_1nm9zq7" /> + <bpmn2:sequenceFlow id="SequenceFlow_04xlw7s" sourceRef="preProcessRequest_ScriptTask" targetRef="ScriptTask_0acnvkp" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_06gj84t" name="HasResourcetoAdd?" default="SequenceFlow_01po987"> + <bpmn2:incoming>SequenceFlow_0yztz2p</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ttlte0</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_01po987</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ttlte0" name="Yes" sourceRef="ExclusiveGateway_06gj84t" targetRef="CallActivity_07pl1uw"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoAdd") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0xny7on" name="GoTo StartDeleteResources"> + <bpmn2:incoming>SequenceFlow_01po987</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartDeleteResources" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_01po987" name="No" sourceRef="ExclusiveGateway_06gj84t" targetRef="IntermediateThrowEvent_0xny7on" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0y1ii4i" name="GoTo UpdateAAI"> + <bpmn2:incoming>SequenceFlow_070o30v</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_177wo8z" sourceRef="Task_0ag30bf" targetRef="IntermediateThrowEvent_0vneaao" /> + <bpmn2:callActivity id="CallActivity_11obqi0" name="Call DoDeleteResources" calledElement="DoDeleteResourcesV1"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="URN_mso_workflow_sdncadapter_callback" target="URN_mso_workflow_sdncadapter_callback" /> + <camunda:in source="deleteResourceList" target="deleteResourceList" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="serviceDecomposition_Original" target="serviceDecomposition" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ur34hv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0w4t4ao</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0w4t4ao" sourceRef="CallActivity_11obqi0" targetRef="ScriptTask_00wgfrc" /> + <bpmn2:callActivity id="CallActivity_07pl1uw" name="Call DoCreateResources" calledElement="DoCreateResourcesV3"> + <bpmn2:extensionElements> + <camunda:in source="serviceDescription" target="nsServiceDescription" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="operationType" target="operationType" /> + <camunda:in source="addResourceList" target="addResourceList" /> + <camunda:in source="serviceInstanceName" target="serviceInstanceName" /> + <camunda:in source="serviceDecomposition_Target" target="serviceDecomposition" /> + <camunda:in source="uuiRequest" target="uuiRequest" /> + <camunda:in source="msoRequestId" target="msoRequestId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0ttlte0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1wwjugw</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1wwjugw" sourceRef="CallActivity_07pl1uw" targetRef="Task_0ag30bf" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1fcnq0g" name="HasResourcetoDelete?" default="SequenceFlow_070o30v"> + <bpmn2:incoming>SequenceFlow_1s799cp</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ur34hv</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_070o30v</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1s799cp" sourceRef="ScriptTask_1xxvnst" targetRef="ExclusiveGateway_1fcnq0g" /> + <bpmn2:sequenceFlow id="SequenceFlow_0ur34hv" name="Yes" sourceRef="ExclusiveGateway_1fcnq0g" targetRef="CallActivity_11obqi0"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoDelete") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_070o30v" sourceRef="ExclusiveGateway_1fcnq0g" targetRef="IntermediateThrowEvent_0y1ii4i" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateE2EServiceInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent"> + <dc:Bounds x="74" y="622" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="68" y="663" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="293" y="600" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="110" y="640" /> + <di:waypoint xsi:type="dc:Point" x="293" y="640" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="156.5" y="625" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1azssf7_di" bpmnElement="Task_09laxun"> + <dc:Bounds x="293" y="828" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1fj89ew_di" bpmnElement="Task_0ag30bf"> + <dc:Bounds x="1229" y="828" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0jks7by_di" bpmnElement="StartEvent_StartResource"> + <dc:Bounds x="74" y="850" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="50" y="895" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_115mdln_di" bpmnElement="SequenceFlow_115mdln"> + <di:waypoint xsi:type="dc:Point" x="110" y="868" /> + <di:waypoint xsi:type="dc:Point" x="293" y="868" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="156.5" y="847" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yztz2p_di" bpmnElement="SequenceFlow_0yztz2p"> + <di:waypoint xsi:type="dc:Point" x="393" y="868" /> + <di:waypoint xsi:type="dc:Point" x="590" y="868" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="446.5" y="847" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1xxvnst_di" bpmnElement="ScriptTask_1xxvnst"> + <dc:Bounds x="293" y="1081" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_00wgfrc_di" bpmnElement="ScriptTask_00wgfrc"> + <dc:Bounds x="1240" y="1081" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0h6d9jb_di" bpmnElement="IntermediateCatchEvent_0h6d9jb"> + <dc:Bounds x="74" y="1103" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="50" y="1143" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qn0865_di" bpmnElement="SequenceFlow_1qn0865"> + <di:waypoint xsi:type="dc:Point" x="110" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="202" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="202" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="293" y="1121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="1115" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0acnvkp_di" bpmnElement="ScriptTask_0acnvkp"> + <dc:Bounds x="589" y="600" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ServiceTask_17u9q9u_di" bpmnElement="ServiceTask_17u9q9u"> + <dc:Bounds x="872" y="600" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0r6c0ci_di" bpmnElement="SequenceFlow_0r6c0ci"> + <di:waypoint xsi:type="dc:Point" x="689" y="640" /> + <di:waypoint xsi:type="dc:Point" x="774" y="640" /> + <di:waypoint xsi:type="dc:Point" x="774" y="640" /> + <di:waypoint xsi:type="dc:Point" x="872" y="640" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744" y="634" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1muxopq_di" bpmnElement="SequenceFlow_1muxopq"> + <di:waypoint xsi:type="dc:Point" x="972" y="640" /> + <di:waypoint xsi:type="dc:Point" x="1762" y="640" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1322" y="619" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0vneaao_di" bpmnElement="IntermediateThrowEvent_0vneaao"> + <dc:Bounds x="1762" y="850" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1738" y="890" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1nm9zq7_di" bpmnElement="CallActivity_1nm9zq7"> + <dc:Bounds x="1229" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0xtabf8_di" bpmnElement="ScriptTask_0xtabf8"> + <dc:Bounds x="1473" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0a9bdjw_di" bpmnElement="IntermediateCatchEvent_0a9bdjw"> + <dc:Bounds x="74" y="1355" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="69" y="1391" width="52" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1demy08_di" bpmnElement="SequenceFlow_1demy08"> + <di:waypoint xsi:type="dc:Point" x="110" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="197" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="197" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="293" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="212" y="1367" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0f76thv_di" bpmnElement="SequenceFlow_0f76thv"> + <di:waypoint xsi:type="dc:Point" x="1329" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="1473" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1356" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_19v8l1w_di" bpmnElement="ScriptTask_19v8l1w"> + <dc:Bounds x="858" y="1579" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0z04o3s_di" bpmnElement="IntermediateCatchEvent_0z04o3s"> + <dc:Bounds x="74" y="1601" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="57" y="1641" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0exzmfn_di" bpmnElement="EndEvent_0exzmfn"> + <dc:Bounds x="1772" y="1601" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1700" y="1641" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07aa121_di" bpmnElement="SequenceFlow_07aa121"> + <di:waypoint xsi:type="dc:Point" x="958" y="1619" /> + <di:waypoint xsi:type="dc:Point" x="1772" y="1619" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1320" y="1598" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ku36oy_di" bpmnElement="SequenceFlow_0ku36oy"> + <di:waypoint xsi:type="dc:Point" x="110" y="1619" /> + <di:waypoint xsi:type="dc:Point" x="858" y="1619" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="439" y="1598" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_06lo96a_di" bpmnElement="IntermediateThrowEvent_06lo96a"> + <dc:Bounds x="1762" y="1103" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1750" y="1143" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0hucdtk_di" bpmnElement="IntermediateThrowEvent_0hucdtk"> + <dc:Bounds x="1762" y="1355" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1756" y="1395" width="70" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0x0mhlj_di" bpmnElement="SequenceFlow_0x0mhlj"> + <di:waypoint xsi:type="dc:Point" x="1573" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="1762" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1622.5" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_09ur9ds_di" bpmnElement="IntermediateThrowEvent_09ur9ds"> + <dc:Bounds x="1762" y="622" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1738" y="663" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1uu6uiu_di" bpmnElement="SequenceFlow_1uu6uiu"> + <di:waypoint xsi:type="dc:Point" x="1340" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="1762" y="1121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1506" y="1100" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_0jo0nms_di" bpmnElement="SubProcess_0jo0nms" isExpanded="true"> + <dc:Bounds x="236" y="1818" width="1428" height="210" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_06768u3_di" bpmnElement="StartEvent_06768u3"> + <dc:Bounds x="266" y="1895" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="194" y="1936" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_014jyvb_di" bpmnElement="EndEvent_014jyvb"> + <dc:Bounds x="1581" y="1895" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1509" y="1936" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1awrp72_di" bpmnElement="ScriptTask_1awrp72"> + <dc:Bounds x="557" y="1873" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0vc9jgo_di" bpmnElement="ScriptTask_0vc9jgo"> + <dc:Bounds x="1248" y="1873" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_05j3sat_di" bpmnElement="SequenceFlow_05j3sat"> + <di:waypoint xsi:type="dc:Point" x="302" y="1913" /> + <di:waypoint xsi:type="dc:Point" x="557" y="1913" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="385" y="1892" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_02znk15_di" bpmnElement="SequenceFlow_02znk15"> + <di:waypoint xsi:type="dc:Point" x="1348" y="1913" /> + <di:waypoint xsi:type="dc:Point" x="1581" y="1913" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1376" y="1898" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19ly8h7_di" bpmnElement="SequenceFlow_19ly8h7"> + <di:waypoint xsi:type="dc:Point" x="657" y="1913" /> + <di:waypoint xsi:type="dc:Point" x="1248" y="1913" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="907.5" y="1892" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_195nptq_di" bpmnElement="ScriptTask_195nptq"> + <dc:Bounds x="293" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1cy5gq2_di" bpmnElement="SequenceFlow_1cy5gq2"> + <di:waypoint xsi:type="dc:Point" x="393" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="495" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="399" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_069o6fn_di" bpmnElement="CallActivity_069o6fn"> + <dc:Bounds x="495" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0lp9y03_di" bpmnElement="ScriptTask_0lp9y03"> + <dc:Bounds x="724" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1vy856f_di" bpmnElement="SequenceFlow_1vy856f"> + <di:waypoint xsi:type="dc:Point" x="595" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="724" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="614.5" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_14ggluy_di" bpmnElement="SequenceFlow_14ggluy"> + <di:waypoint xsi:type="dc:Point" x="824" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="978" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="856" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0sis7k0_di" bpmnElement="ScriptTask_0sis7k0"> + <dc:Bounds x="978" y="1333" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1kx5ke9_di" bpmnElement="SequenceFlow_1kx5ke9"> + <di:waypoint xsi:type="dc:Point" x="1078" y="1373" /> + <di:waypoint xsi:type="dc:Point" x="1229" y="1373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1108.5" y="1352" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04xlw7s_di" bpmnElement="SequenceFlow_04xlw7s"> + <di:waypoint xsi:type="dc:Point" x="393" y="640" /> + <di:waypoint xsi:type="dc:Point" x="589" y="640" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="491" y="619" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_06gj84t_di" bpmnElement="ExclusiveGateway_06gj84t" isMarkerVisible="true"> + <dc:Bounds x="590" y="843" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="815" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ttlte0_di" bpmnElement="SequenceFlow_0ttlte0"> + <di:waypoint xsi:type="dc:Point" x="640" y="868" /> + <di:waypoint xsi:type="dc:Point" x="756" y="868" /> + <di:waypoint xsi:type="dc:Point" x="756" y="868" /> + <di:waypoint xsi:type="dc:Point" x="858" y="868" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="750" y="845" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0xny7on_di" bpmnElement="IntermediateThrowEvent_0xny7on"> + <dc:Bounds x="597" y="955" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="573" y="995" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01po987_di" bpmnElement="SequenceFlow_01po987"> + <di:waypoint xsi:type="dc:Point" x="615" y="893" /> + <di:waypoint xsi:type="dc:Point" x="615" y="955" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="623" y="918" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0y1ii4i_di" bpmnElement="IntermediateThrowEvent_0y1ii4i"> + <dc:Bounds x="597" y="1215" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="585" y="1255" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_177wo8z_di" bpmnElement="SequenceFlow_177wo8z"> + <di:waypoint xsi:type="dc:Point" x="1329" y="868" /> + <di:waypoint xsi:type="dc:Point" x="1762" y="868" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1545.5" y="847" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_11obqi0_di" bpmnElement="CallActivity_11obqi0"> + <dc:Bounds x="872" y="1081" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0w4t4ao_di" bpmnElement="SequenceFlow_0w4t4ao"> + <di:waypoint xsi:type="dc:Point" x="972" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="1240" y="1121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1106" y="1100" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_07pl1uw_di" bpmnElement="CallActivity_07pl1uw"> + <dc:Bounds x="858" y="828" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1wwjugw_di" bpmnElement="SequenceFlow_1wwjugw"> + <di:waypoint xsi:type="dc:Point" x="958" y="868" /> + <di:waypoint xsi:type="dc:Point" x="1101" y="868" /> + <di:waypoint xsi:type="dc:Point" x="1101" y="868" /> + <di:waypoint xsi:type="dc:Point" x="1229" y="868" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1116" y="862" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1fcnq0g_di" bpmnElement="ExclusiveGateway_1fcnq0g" isMarkerVisible="true"> + <dc:Bounds x="589.8479623824451" y="1096.0329153605016" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="572" y="1062" width="85" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1s799cp_di" bpmnElement="SequenceFlow_1s799cp"> + <di:waypoint xsi:type="dc:Point" x="393" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="590" y="1121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="491.5" y="1100" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0ur34hv_di" bpmnElement="SequenceFlow_0ur34hv"> + <di:waypoint xsi:type="dc:Point" x="640" y="1121" /> + <di:waypoint xsi:type="dc:Point" x="872" y="1121" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="746.9754098360655" y="1100" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_070o30v_di" bpmnElement="SequenceFlow_070o30v"> + <di:waypoint xsi:type="dc:Point" x="615" y="1146" /> + <di:waypoint xsi:type="dc:Point" x="615" y="1182" /> + <di:waypoint xsi:type="dc:Point" x="615" y="1182" /> + <di:waypoint xsi:type="dc:Point" x="615" y="1215" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="630" y="1176" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn new file mode 100644 index 0000000000..1589633e59 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn @@ -0,0 +1,799 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateE2EServiceInstanceRollback" name="DoUpdateE2EServiceInstanceRollback" isExecutable="true"> + <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" /> + </bpmn2:startEvent> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.processRollbackException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + </bpmn2:subProcess> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" /> + <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0a83f6m</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" /> + <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:startEvent id="StartEvent_1gxe17c"> + <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing> + <bpmn2:errorEventDefinition errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk= new DoCreateE2EServiceInstanceRollback() +rbk.processRollbackJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_12e3h6k"> + <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming> + <bpmn2:terminateEventDefinition /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" /> + <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" /> + </bpmn2:subProcess> + <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBack Deleted Resources?" default="SequenceFlow_055b52t"> + <bpmn2:documentation>rollback Deleted Resources</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0drjj7b</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_055b52t</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="Rollback Added Resources?" default="SequenceFlow_1uw2p9a"> + <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" /> + <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="IntermediateThrowEvent_11l0okn"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAdded" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" /> + <bpmn2:callActivity id="CallActivity_05jnyuq" name="Call DoDeleteResources" calledElement="DoDeleteResources"> + <bpmn2:extensionElements> + <camunda:in source="nsServiceName" target="nsServiceName" /> + <camunda:in source="nsServiceDescription" target="nsServiceDescription" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="resourceUUID" target="resourceUUID" /> + <camunda:in source="resourceParameters" target="resourceParameters" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1fih4h0</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0pwixhh</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0pwixhh" sourceRef="CallActivity_05jnyuq" targetRef="ScriptTask_0ngehrz" /> + <bpmn2:scriptTask id="ScriptTask_1i1ova8" name="PreProcess for Add Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_06xv7b2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0b73i9r</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstanceRollback() +csi.preProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_0ngehrz" name="PostProcess for Add Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0pwixhh</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08p4pkv</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstanceRollback() +csi.postProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_01beerv" name="PreProcess for Delete Resources" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1g4qm2l</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1fih4h0</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstanceRollback() +csi.preProcessForDeleteResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0l7jjb1" name="Call DoCreateResources" calledElement="DoCreateResources"> + <bpmn2:extensionElements> + <camunda:in source="nsServiceName" target="nsServiceName" /> + <camunda:in source="nsServiceDescription" target="nsServiceDescription" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="serviceType" target="serviceType" /> + <camunda:in source="serviceId" target="serviceId" /> + <camunda:in source="operationId" target="operationId" /> + <camunda:in source="resourceType" target="resourceType" /> + <camunda:in source="resourceUUID" target="resourceUUID" /> + <camunda:in source="resourceParameters" target="resourceParameters" /> + <camunda:in source="operationType" target="operationType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0b73i9r</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0q9ws1s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1afo620" name="PostProcess for Add Resource" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0q9ws1s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1bp5oce</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def csi = new DoUpdateE2EServiceInstanceRollback() +csi.postProcessForAddResource(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0ybxh3b" name="RollBackAAI?" default="SequenceFlow_0a83f6m"> + <bpmn2:documentation>rollback AAI</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_055b52t</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a83f6m</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0zijz16</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0drjj7b" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="IntermediateThrowEvent_14ed07u"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackDeleted" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05uesi2" name="StartAddResources"> + <bpmn2:outgoing>SequenceFlow_06xv7b2</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartAddResource" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1qn9srt" name="StartDeleteResources"> + <bpmn2:outgoing>SequenceFlow_1g4qm2l</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="StartDeleteResources" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11l0okn" name="GoTo StartDeleteResources"> + <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartDeleteResources" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_14ed07u" name="GoTo StartAddResources"> + <bpmn2:incoming>SequenceFlow_0drjj7b</bpmn2:incoming> + <bpmn2:linkEventDefinition name="StartAddResource" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0a83f6m" name="no" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="PostProcess_ScriptTask" /> + <bpmn2:sequenceFlow id="SequenceFlow_1fih4h0" sourceRef="ScriptTask_01beerv" targetRef="CallActivity_05jnyuq" /> + <bpmn2:sequenceFlow id="SequenceFlow_1g4qm2l" sourceRef="IntermediateCatchEvent_1qn9srt" targetRef="ScriptTask_01beerv" /> + <bpmn2:sequenceFlow id="SequenceFlow_06xv7b2" sourceRef="IntermediateCatchEvent_05uesi2" targetRef="ScriptTask_1i1ova8" /> + <bpmn2:sequenceFlow id="SequenceFlow_0b73i9r" sourceRef="ScriptTask_1i1ova8" targetRef="CallActivity_0l7jjb1" /> + <bpmn2:sequenceFlow id="SequenceFlow_0q9ws1s" sourceRef="CallActivity_0l7jjb1" targetRef="ScriptTask_1afo620" /> + <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0546q5i" name="UpdateAAI"> + <bpmn2:outgoing>SequenceFlow_1a65s3k</bpmn2:outgoing> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateCatchEvent> + <bpmn2:scriptTask id="ScriptTask_0gj4dj5" name="Pre Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1ixphei</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1lppnhy</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstanceRollback() +dcsi.preProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_0zs5y0x" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1lppnhy</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0kbisn8</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_1p96syr" name="Post Process AAI PUT" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0kbisn8</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1azhgda</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstanceRollback() +dcsi.postProcessAAIPUT(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1a65s3k" sourceRef="IntermediateCatchEvent_0546q5i" targetRef="ScriptTask_13h2onn" /> + <bpmn2:sequenceFlow id="SequenceFlow_1lppnhy" sourceRef="ScriptTask_0gj4dj5" targetRef="CallActivity_0zs5y0x" /> + <bpmn2:sequenceFlow id="SequenceFlow_0kbisn8" sourceRef="CallActivity_0zs5y0x" targetRef="ScriptTask_1p96syr" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1k16vgh" name="RollBackAAI?" default="SequenceFlow_161uzhj"> + <bpmn2:documentation>rollback AAI</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_08p4pkv</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0cbnwwi</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_161uzhj</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_08p4pkv" sourceRef="ScriptTask_0ngehrz" targetRef="ExclusiveGateway_1k16vgh" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0x32fw8" name="GoTo UpdateAAI"> + <bpmn2:incoming>SequenceFlow_0cbnwwi</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0cbnwwi" name="yes" sourceRef="ExclusiveGateway_1k16vgh" targetRef="IntermediateThrowEvent_0x32fw8"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_1c3q8hc" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_161uzhj</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13r4lij</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_161uzhj" sourceRef="ExclusiveGateway_1k16vgh" targetRef="ScriptTask_1c3q8hc" /> + <bpmn2:endEvent id="EndEvent_0knjkkx"> + <bpmn2:incoming>SequenceFlow_13r4lij</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_13r4lij" sourceRef="ScriptTask_1c3q8hc" targetRef="EndEvent_0knjkkx" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_0g7wcmb" name="RollBackAAI?" default="SequenceFlow_1isdxh1"> + <bpmn2:documentation>rollback AAI</bpmn2:documentation> + <bpmn2:incoming>SequenceFlow_1bp5oce</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0bkvqao</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_1isdxh1</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0q76lxg" name="GoTo UpdateAAI"> + <bpmn2:incoming>SequenceFlow_0bkvqao</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:scriptTask id="ScriptTask_1y4us3g" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1isdxh1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0a9xori</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_0yzh2qs"> + <bpmn2:incoming>SequenceFlow_0a9xori</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0bkvqao" name="yes" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="IntermediateThrowEvent_0q76lxg"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1isdxh1" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="ScriptTask_1y4us3g" /> + <bpmn2:sequenceFlow id="SequenceFlow_0a9xori" sourceRef="ScriptTask_1y4us3g" targetRef="EndEvent_0yzh2qs" /> + <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1et42wh" name="GoTo UpdateAAI"> + <bpmn2:incoming>SequenceFlow_0zijz16</bpmn2:incoming> + <bpmn2:linkEventDefinition name="UpdateAAI" /> + </bpmn2:intermediateThrowEvent> + <bpmn2:sequenceFlow id="SequenceFlow_0zijz16" name="yes" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="IntermediateThrowEvent_1et42wh"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" ) == "true" )}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_1bp5oce" sourceRef="ScriptTask_1afo620" targetRef="ExclusiveGateway_0g7wcmb" /> + <bpmn2:scriptTask id="ScriptTask_17k4l6y" name="Post Process Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1azhgda</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1n6foyw</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def rbk = new DoCreateE2EServiceInstanceRollback() +rbk.postProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_193e9tt"> + <bpmn2:incoming>SequenceFlow_1n6foyw</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1n6foyw" sourceRef="ScriptTask_17k4l6y" targetRef="EndEvent_193e9tt" /> + <bpmn2:sequenceFlow id="SequenceFlow_1azhgda" sourceRef="ScriptTask_1p96syr" targetRef="ScriptTask_17k4l6y" /> + <bpmn2:sequenceFlow id="SequenceFlow_055b52t" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="ExclusiveGateway_0ybxh3b" /> + <bpmn2:scriptTask id="ScriptTask_13h2onn" name="Pre Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1a65s3k</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0870pzc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstanceRollback() +dcsi.preProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1527zgc" name="Call AAI Generic GetService" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:in sourceExpression="service-instance" target="GENGS_type" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" /> + <camunda:out source="GENGS_service" target="GENGS_service" /> + <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" /> + <camunda:in source="serviceType" target="GENGS_serviceType" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0870pzc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f31l5s</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_0870pzc" sourceRef="ScriptTask_13h2onn" targetRef="CallActivity_1527zgc" /> + <bpmn2:scriptTask id="ScriptTask_0td1f55" name="Post Process AAI GET" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1f31l5s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ixphei</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def dcsi = new DoUpdateE2EServiceInstanceRollback() +dcsi.postProcessAAIGET(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1f31l5s" sourceRef="CallActivity_1527zgc" targetRef="ScriptTask_0td1f55" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ixphei" sourceRef="ScriptTask_0td1f55" targetRef="ScriptTask_0gj4dj5" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateE2EServiceInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent"> + <dc:Bounds x="151" y="79" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="146" y="120" width="48" height="14" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="234" y="57" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="187" y="97" /> + <di:waypoint xsi:type="dc:Point" x="234" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="211" y="82" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="636" y="-160" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="609" y="-119" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true"> + <dc:Bounds x="122" y="981" width="466" height="156" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1"> + <dc:Bounds x="190" y="1047" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="163" y="1088" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1"> + <dc:Bounds x="483" y="1047" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="456" y="1088" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269"> + <di:waypoint xsi:type="dc:Point" x="226" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="294" y="1065" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="216" y="1050" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="334" y="97" /> + <di:waypoint xsi:type="dc:Point" x="391" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="342.5" y="82" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1"> + <dc:Bounds x="294" y="1025" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219"> + <di:waypoint xsi:type="dc:Point" x="394" y="1065" /> + <di:waypoint xsi:type="dc:Point" x="483" y="1065" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="394" y="1050" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask"> + <dc:Bounds x="604" y="-62" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl"> + <di:waypoint xsi:type="dc:Point" x="654" y="-62" /> + <di:waypoint xsi:type="dc:Point" x="654" y="-89" /> + <di:waypoint xsi:type="dc:Point" x="654" y="-89" /> + <di:waypoint xsi:type="dc:Point" x="654" y="-124" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="-89" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true"> + <dc:Bounds x="612" y="982" width="463" height="152" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c"> + <dc:Bounds x="647" y="1034" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="620" y="1075" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0"> + <dc:Bounds x="755" y="1012" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k"> + <dc:Bounds x="905" y="1034" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="878" y="1075" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf"> + <di:waypoint xsi:type="dc:Point" x="683" y="1052" /> + <di:waypoint xsi:type="dc:Point" x="755" y="1052" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="663" y="1052" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff"> + <di:waypoint xsi:type="dc:Point" x="855" y="1052" /> + <di:waypoint xsi:type="dc:Point" x="905" y="1052" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="835" y="1052" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true"> + <dc:Bounds x="391" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="383" y="54" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy"> + <di:waypoint xsi:type="dc:Point" x="416" y="72" /> + <di:waypoint xsi:type="dc:Point" x="416" y="-22" /> + <di:waypoint xsi:type="dc:Point" x="604" y="-22" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="463.0056179775281" y="-39" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true"> + <dc:Bounds x="687" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="668" y="39" width="87" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true"> + <dc:Bounds x="520" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="507" y="38" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a"> + <di:waypoint xsi:type="dc:Point" x="570" y="97" /> + <di:waypoint xsi:type="dc:Point" x="687" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="592.125" y="107.5" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb"> + <di:waypoint xsi:type="dc:Point" x="545" y="122" /> + <di:waypoint xsi:type="dc:Point" x="545" y="218" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="510" y="135.20000000000002" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh"> + <di:waypoint xsi:type="dc:Point" x="441" y="97" /> + <di:waypoint xsi:type="dc:Point" x="520" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="460.5" y="104" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_05jnyuq_di" bpmnElement="CallActivity_05jnyuq"> + <dc:Bounds x="417" y="345" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0pwixhh_di" bpmnElement="SequenceFlow_0pwixhh"> + <di:waypoint xsi:type="dc:Point" x="517" y="385" /> + <di:waypoint xsi:type="dc:Point" x="594" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="511" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1i1ova8_di" bpmnElement="ScriptTask_1i1ova8"> + <dc:Bounds x="230" y="533" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0ngehrz_di" bpmnElement="ScriptTask_0ngehrz"> + <dc:Bounds x="594" y="345" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01beerv_di" bpmnElement="ScriptTask_01beerv"> + <dc:Bounds x="230" y="345" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0l7jjb1_di" bpmnElement="CallActivity_0l7jjb1"> + <dc:Bounds x="417" y="533" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1afo620_di" bpmnElement="ScriptTask_1afo620"> + <dc:Bounds x="594" y="533" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0ybxh3b_di" bpmnElement="ExclusiveGateway_0ybxh3b" isMarkerVisible="true"> + <dc:Bounds x="864" y="72" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="894" y="44" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0drjj7b_di" bpmnElement="SequenceFlow_0drjj7b"> + <di:waypoint xsi:type="dc:Point" x="712" y="122" /> + <di:waypoint xsi:type="dc:Point" x="712" y="218" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="687" y="141.6" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_05uesi2_di" bpmnElement="IntermediateCatchEvent_05uesi2"> + <dc:Bounds x="159" y="555" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="135" y="600" width="84" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateCatchEvent_1qn9srt_di" bpmnElement="IntermediateCatchEvent_1qn9srt"> + <dc:Bounds x="159" y="367" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="135" y="407" width="86" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_11l0okn_di" bpmnElement="IntermediateThrowEvent_11l0okn"> + <dc:Bounds x="527" y="218" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="502" y="257" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_14ed07u_di" bpmnElement="IntermediateThrowEvent_14ed07u"> + <dc:Bounds x="694" y="218" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="670" y="262" width="84" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0a83f6m_di" bpmnElement="SequenceFlow_0a83f6m"> + <di:waypoint xsi:type="dc:Point" x="889" y="72" /> + <di:waypoint xsi:type="dc:Point" x="889" y="-22" /> + <di:waypoint xsi:type="dc:Point" x="704" y="-22" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="837" y="19" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1fih4h0_di" bpmnElement="SequenceFlow_1fih4h0"> + <di:waypoint xsi:type="dc:Point" x="330" y="385" /> + <di:waypoint xsi:type="dc:Point" x="417" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="329" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1g4qm2l_di" bpmnElement="SequenceFlow_1g4qm2l"> + <di:waypoint xsi:type="dc:Point" x="195" y="385" /> + <di:waypoint xsi:type="dc:Point" x="230" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_06xv7b2_di" bpmnElement="SequenceFlow_06xv7b2"> + <di:waypoint xsi:type="dc:Point" x="195" y="573" /> + <di:waypoint xsi:type="dc:Point" x="230" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="552" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b73i9r_di" bpmnElement="SequenceFlow_0b73i9r"> + <di:waypoint xsi:type="dc:Point" x="330" y="573" /> + <di:waypoint xsi:type="dc:Point" x="363" y="573" /> + <di:waypoint xsi:type="dc:Point" x="363" y="573" /> + <di:waypoint xsi:type="dc:Point" x="417" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="333" y="567" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0q9ws1s_di" bpmnElement="SequenceFlow_0q9ws1s"> + <di:waypoint xsi:type="dc:Point" x="517" y="573" /> + <di:waypoint xsi:type="dc:Point" x="545" y="573" /> + <di:waypoint xsi:type="dc:Point" x="545" y="573" /> + <di:waypoint xsi:type="dc:Point" x="594" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="515" y="567" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateCatchEvent_0546q5i_di" bpmnElement="IntermediateCatchEvent_0546q5i"> + <dc:Bounds x="156" y="765" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="801" width="52" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0gj4dj5_di" bpmnElement="ScriptTask_0gj4dj5"> + <dc:Bounds x="687" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0zs5y0x_di" bpmnElement="CallActivity_0zs5y0x"> + <dc:Bounds x="841" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1p96syr_di" bpmnElement="ScriptTask_1p96syr"> + <dc:Bounds x="1014" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1a65s3k_di" bpmnElement="SequenceFlow_1a65s3k"> + <di:waypoint xsi:type="dc:Point" x="192" y="783" /> + <di:waypoint xsi:type="dc:Point" x="234" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="168" y="762" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lppnhy_di" bpmnElement="SequenceFlow_1lppnhy"> + <di:waypoint xsi:type="dc:Point" x="787" y="783" /> + <di:waypoint xsi:type="dc:Point" x="841" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="769" y="762" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0kbisn8_di" bpmnElement="SequenceFlow_0kbisn8"> + <di:waypoint xsi:type="dc:Point" x="941" y="783" /> + <di:waypoint xsi:type="dc:Point" x="978" y="783" /> + <di:waypoint xsi:type="dc:Point" x="978" y="783" /> + <di:waypoint xsi:type="dc:Point" x="1014" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="948" y="777" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1k16vgh_di" bpmnElement="ExclusiveGateway_1k16vgh" isMarkerVisible="true"> + <dc:Bounds x="778" y="360" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="358" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08p4pkv_di" bpmnElement="SequenceFlow_08p4pkv"> + <di:waypoint xsi:type="dc:Point" x="694" y="385" /> + <di:waypoint xsi:type="dc:Point" x="778" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="691" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0x32fw8_di" bpmnElement="IntermediateThrowEvent_0x32fw8"> + <dc:Bounds x="785" y="454" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="762" y="495" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0cbnwwi_di" bpmnElement="SequenceFlow_0cbnwwi"> + <di:waypoint xsi:type="dc:Point" x="803" y="410" /> + <di:waypoint xsi:type="dc:Point" x="803" y="454" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="808" y="426" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1c3q8hc_di" bpmnElement="ScriptTask_1c3q8hc"> + <dc:Bounds x="879" y="345" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_161uzhj_di" bpmnElement="SequenceFlow_161uzhj"> + <di:waypoint xsi:type="dc:Point" x="828" y="385" /> + <di:waypoint xsi:type="dc:Point" x="879" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_0knjkkx_di" bpmnElement="EndEvent_0knjkkx"> + <dc:Bounds x="1040" y="367" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1013" y="407" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_13r4lij_di" bpmnElement="SequenceFlow_13r4lij"> + <di:waypoint xsi:type="dc:Point" x="979" y="385" /> + <di:waypoint xsi:type="dc:Point" x="1040" y="385" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="965" y="364" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_0g7wcmb_di" bpmnElement="ExclusiveGateway_0g7wcmb" isMarkerVisible="true"> + <dc:Bounds x="778" y="548" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="719" y="546" width="70" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="IntermediateThrowEvent_0q76lxg_di" bpmnElement="IntermediateThrowEvent_0q76lxg"> + <dc:Bounds x="785" y="647" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="762" y="693" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1y4us3g_di" bpmnElement="ScriptTask_1y4us3g"> + <dc:Bounds x="879" y="533" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0yzh2qs_di" bpmnElement="EndEvent_0yzh2qs"> + <dc:Bounds x="1040" y="555" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1013" y="595" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0bkvqao_di" bpmnElement="SequenceFlow_0bkvqao"> + <di:waypoint xsi:type="dc:Point" x="803" y="598" /> + <di:waypoint xsi:type="dc:Point" x="803" y="647" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="808" y="617" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1isdxh1_di" bpmnElement="SequenceFlow_1isdxh1"> + <di:waypoint xsi:type="dc:Point" x="828" y="573" /> + <di:waypoint xsi:type="dc:Point" x="879" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="809" y="552" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0a9xori_di" bpmnElement="SequenceFlow_0a9xori"> + <di:waypoint xsi:type="dc:Point" x="979" y="573" /> + <di:waypoint xsi:type="dc:Point" x="1040" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="965" y="552" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="IntermediateThrowEvent_1et42wh_di" bpmnElement="IntermediateThrowEvent_1et42wh"> + <dc:Bounds x="873" y="218" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="852" y="269" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0zijz16_di" bpmnElement="SequenceFlow_0zijz16"> + <di:waypoint xsi:type="dc:Point" x="889" y="122" /> + <di:waypoint xsi:type="dc:Point" x="891" y="218" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="861.4067820523877" y="137.3057489950117" width="19" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1bp5oce_di" bpmnElement="SequenceFlow_1bp5oce"> + <di:waypoint xsi:type="dc:Point" x="694" y="573" /> + <di:waypoint xsi:type="dc:Point" x="778" y="573" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="691" y="552" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_17k4l6y_di" bpmnElement="ScriptTask_17k4l6y"> + <dc:Bounds x="1171" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_193e9tt_di" bpmnElement="EndEvent_193e9tt"> + <dc:Bounds x="1327" y="765" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1300" y="805" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1n6foyw_di" bpmnElement="SequenceFlow_1n6foyw"> + <di:waypoint xsi:type="dc:Point" x="1271" y="783" /> + <di:waypoint xsi:type="dc:Point" x="1327" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1254" y="762" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1azhgda_di" bpmnElement="SequenceFlow_1azhgda"> + <di:waypoint xsi:type="dc:Point" x="1114" y="783" /> + <di:waypoint xsi:type="dc:Point" x="1171" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1097.5" y="762" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_055b52t_di" bpmnElement="SequenceFlow_055b52t"> + <di:waypoint xsi:type="dc:Point" x="737" y="97" /> + <di:waypoint xsi:type="dc:Point" x="864" y="97" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="769" y="106" width="15" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_13h2onn_di" bpmnElement="ScriptTask_13h2onn"> + <dc:Bounds x="234" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1527zgc_di" bpmnElement="CallActivity_1527zgc"> + <dc:Bounds x="391" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0870pzc_di" bpmnElement="SequenceFlow_0870pzc"> + <di:waypoint xsi:type="dc:Point" x="334" y="783" /> + <di:waypoint xsi:type="dc:Point" x="391" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="362.5" y="762" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0td1f55_di" bpmnElement="ScriptTask_0td1f55"> + <dc:Bounds x="543" y="743" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f31l5s_di" bpmnElement="SequenceFlow_1f31l5s"> + <di:waypoint xsi:type="dc:Point" x="491" y="783" /> + <di:waypoint xsi:type="dc:Point" x="543" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="517" y="762" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ixphei_di" bpmnElement="SequenceFlow_1ixphei"> + <di:waypoint xsi:type="dc:Point" x="643" y="783" /> + <di:waypoint xsi:type="dc:Point" x="687" y="783" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="665" y="762" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn new file mode 100644 index 0000000000..306b05cea1 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn @@ -0,0 +1,829 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateNetworkInstance" name="DoUpdateNetworkInstance" isExecutable="true"> + <bpmn2:startEvent id="updateNetwork_startEvent" name="Start Flow"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="updateNetwork_startEvent" targetRef="preProcessRequest_ScriptTask" /> + <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare SDNC Topology Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.prepareSDNCRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callAssignSDNCAdapter_CallActivity" /> + <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.validateSDNCResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="isSdncTopoOk_ExclusiveGateway" name="Is SDNC Ok?" default="sdncTopoNo_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>sdncTopoNo_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>sdncTopoYes_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="sdncTopoNo_SequenceFlow" name="No" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="sndcError_EndEvent" /> + <bpmn2:sequenceFlow id="sdncTopoYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="callRESTReQuery1NetworkID_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoOk_ExclusiveGateway" /> + <bpmn2:boundaryEvent id="BoundaryEvent_4" name="" attachedToRef="validateSDNCResponse_ScriptTask"> + <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_84" errorRef="Error_2" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="BoundaryEvent_4" targetRef="sndcError_EndEvent" /> + <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error"> + <bpmn2:incoming>sdncTopoNo_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_2" /> + </bpmn2:endEvent> + <bpmn2:callActivity id="callAssignSDNCAdapter_CallActivity" name="Call SDNC ChangeAssign Adapter V1 Sub-process" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="UPDNETI_changeAssignSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:out source="sdncAdapterResponse" target="UPDNETI_changeAssignSDNCResponse" /> + <camunda:out source="SDNCA_ResponseCode" target="UPDNETI_sdncReturnCode" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="WorkflowException" target="UPDNETI_WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + <camunda:in variables="all" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callAssignSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" /> + <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_46</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="EndEvent_3" /> + <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception" triggeredByEvent="true"> + <bpmn2:exclusiveGateway id="isRollbackOn_Network_ExclusiveGateway" name="Is Rollback On?" default="isRollbackOn_NoNetwork_SequenceFlow"> + <bpmn2:incoming>SequenceFlow_053re4q</bpmn2:incoming> + <bpmn2:outgoing>isRollbackOn_YesNetwork_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isRollbackOn_NoNetwork_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isRollbackOn_YesNetwork_SequenceFlow" name="Yes" sourceRef="isRollbackOn_Network_ExclusiveGateway" targetRef="isPONR_ExclusiveGateway"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_rollbackEnabled") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isRollbackOn_NoNetwork_SequenceFlow" name="No" sourceRef="isRollbackOn_Network_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2" /> + <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start"> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ScriptTask_1gedbow" /> + <bpmn2:exclusiveGateway id="isPONR_ExclusiveGateway" name="isPONR?" default="isPONR_No_SequenceFlow"> + <bpmn2:incoming>isRollbackOn_YesNetwork_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>isPONR_Yes_SequenceFlow</bpmn2:outgoing> + <bpmn2:outgoing>isPONR_No_SequenceFlow</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="isPONR_Yes_SequenceFlow" name="Yes" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_isPONR") == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="isPONR_No_SequenceFlow" name="No" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2" /> + <bpmn2:exclusiveGateway id="sdncOk_ExclusiveGateway" name="is Sdnc Ok?" default="sdncOk_No_ExclusiveGateway"> + <bpmn2:incoming>SequenceFlow_0nrc66n</bpmn2:incoming> + <bpmn2:outgoing>sdncOk_Yeso_ExclusiveGateway</bpmn2:outgoing> + <bpmn2:outgoing>sdncOk_No_ExclusiveGateway</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="sdncOk_Yeso_ExclusiveGateway" name="Yes" sourceRef="sdncOk_ExclusiveGateway" targetRef="prepareSDNCRollbackRequest_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_isSdncRollbackNeeded" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="sdncOk_No_ExclusiveGateway" name="No" sourceRef="sdncOk_ExclusiveGateway" targetRef="InclusiveGateway_6" /> + <bpmn2:scriptTask id="prepareSDNCRollbackRequest_ScriptTask" name="Prepare SDNCRollback Request" scriptFormat="groovy"> + <bpmn2:incoming>sdncOk_Yeso_ExclusiveGateway</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_53</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.prepareSDNCRollbackRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_53" name="" sourceRef="prepareSDNCRollbackRequest_ScriptTask" targetRef="InclusiveGateway_6" /> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_04rdjfi</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:inclusiveGateway id="InclusiveGateway_6"> + <bpmn2:incoming>SequenceFlow_53</bpmn2:incoming> + <bpmn2:incoming>sdncOk_No_ExclusiveGateway</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0srdlf3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_47</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_47" name="" sourceRef="InclusiveGateway_6" targetRef="ScriptTask_1p6n2yy" /> + <bpmn2:scriptTask id="ScriptTask_1p6n2yy" name="Prepare RollbackData" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_47</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0qr4es6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="CallActivity_1kid5y0" name="DoUpdate NetworkInstanceRollback " calledElement="DoCreateNetworkInstanceRollback"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="rollbackData" target="rollbackData" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="WorkflowException" target="WorkflowException" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:out source="wasDeleted" target="wasDeleted" /> + <camunda:out source="rolledBack" target="rolledBack" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="workflowException" target="workflowException" /> + <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_0qr4es6</bpmn2:incoming> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_0voqz6r" name="Post Process Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_0ze5k6c</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04rdjfi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_0qr4es6" sourceRef="ScriptTask_1p6n2yy" targetRef="CallActivity_1kid5y0" /> + <bpmn2:sequenceFlow id="SequenceFlow_04rdjfi" sourceRef="ScriptTask_0voqz6r" targetRef="EndEvent_4" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1kjh92x" name="is '1702' SNDC Call?"> + <bpmn2:outgoing>SequenceFlow_0nrc66n</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0srdlf3</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0nrc66n" name="No" sourceRef="ExclusiveGateway_1kjh92x" targetRef="sdncOk_ExclusiveGateway" /> + <bpmn2:sequenceFlow id="SequenceFlow_0srdlf3" name="Yes" sourceRef="ExclusiveGateway_1kjh92x" targetRef="InclusiveGateway_6"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="ScriptTask_1gedbow" name="Set Exception Flag" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_053re4q</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.setExceptionFlag(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_053re4q" sourceRef="ScriptTask_1gedbow" targetRef="isRollbackOn_Network_ExclusiveGateway" /> + <bpmn2:inclusiveGateway id="ExclusiveGateway_1dcb5p2"> + <bpmn2:incoming>isPONR_Yes_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>isRollbackOn_NoNetwork_SequenceFlow</bpmn2:incoming> + <bpmn2:incoming>isPONR_No_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0ze5k6c</bpmn2:outgoing> + </bpmn2:inclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_0ze5k6c" sourceRef="ExclusiveGateway_1dcb5p2" targetRef="ScriptTask_0voqz6r" /> + <bpmn2:textAnnotation id="TextAnnotation_0qx19b9"> <bpmn2:text>Note: Rollback is not needed for UpdateNetwork,</bpmn2:text> +</bpmn2:textAnnotation> + <bpmn2:association id="Association_10dk4x3" sourceRef="CallActivity_1kid5y0" targetRef="TextAnnotation_0qx19b9" /> + </bpmn2:subProcess> + <bpmn2:scriptTask id="callRESTReQuery2NetworkID_ScriptTask" name="Call REST ReQuery2 Network Id in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTReQuery2NetworkID_ScriptTask" targetRef="callRESTUpdateContrailNetwork_ScriptTask" /> + <bpmn2:scriptTask id="callRESTUpdateContrailNetwork_ScriptTask" name="Call REST Update Contrail Network in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTUpdateContrailAAINetwork(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_46" name="PONR" sourceRef="callRESTUpdateContrailNetwork_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" /> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" /> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" /> + <bpmn2:endEvent id="EndEvent_1"> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + </bpmn2:endEvent> + </bpmn2:subProcess> + <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.preProcessRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="callGetServiceInstance" /> + <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="prepareSDNCTopoRequest_ScriptTask" /> + <bpmn2:scriptTask id="callRESTQueryNetworkId_ScriptTask" name="Call REST Query Network Id In AAI" scriptFormat="groovy"> + <bpmn2:incoming>siFoundYes</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTQueryAAINetworkId(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="callRESTQueryNetworkId_ScriptTask" targetRef="callRESTQueryCloudRegion_ScriptTask" /> + <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy"> + <bpmn2:incoming>siFoundNo</bpmn2:incoming> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:exclusiveGateway id="siFoundCheck" name="is SI Found?" default="siFoundNo"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>siFoundYes</bpmn2:outgoing> + <bpmn2:outgoing>siFoundNo</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="siFoundYes" name="Yes" sourceRef="siFoundCheck" targetRef="callRESTQueryNetworkId_ScriptTask"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGSI_FoundIndicator" ) == true && execution.getVariable("GENGSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" /> + <bpmn2:callActivity id="callGetServiceInstance" name="Get Service Instance" calledElement="GenericGetService"> + <bpmn2:extensionElements> + <camunda:in source="UPDNETI_serviceInstanceId" target="GENGS_serviceInstanceId" /> + <camunda:out source="GENGS_serviceInstance" target="UPDNETI_serviceInstanceId" /> + <camunda:out source="GENGS_FoundIndicator" target="GENGSI_FoundIndicator" /> + <camunda:out source="GENGS_SuccessIndicator" target="GENGSI_SuccessIndicator" /> + <camunda:out source="GENGS_siResourceLink" target="GENGSI_siResourceLink" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="GENGS_type" target="GENGS_type" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="callGetServiceInstance" targetRef="siFoundCheck" /> + <bpmn2:scriptTask id="validateUpdatePONetwork_ScriptTask" name="Validate Update PO Network" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_59</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.validateUpdateNetworkResponse(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="validateUpdatePONetwork_ScriptTask" targetRef="callRESTReQuery2NetworkID_ScriptTask" /> + <bpmn2:serviceTask id="callUpdateNetwork_ServiceTask" name="Call Update Network"> + <bpmn2:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="payload">${UPDNETI_updateNetworkRequest}</camunda:inputParameter> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)}/${UPDNETI_networkId} +]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry> + <camunda:entry key="content-type">application/xml</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">PUT</camunda:inputParameter> + <camunda:outputParameter name="UPDNETI_networkReturnCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="UPDNETI_updateNetworkResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_61</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_59</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_59" name="" sourceRef="callUpdateNetwork_ServiceTask" targetRef="validateUpdatePONetwork_ScriptTask" /> + <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Create Network Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_61</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.prepareUpdateNetworkRequest(execution) +]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_61" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="callUpdateNetwork_ServiceTask" /> + <bpmn2:scriptTask id="callRESTQueryNetworkTableRef_ScriptTask" name="Call REST Query Network TableRef in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTQueryAAINetworkTableRef(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="callRESTQueryNetworkTableRef_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" /> + <bpmn2:scriptTask id="callRESTReQuery1NetworkID_ScriptTask" name="Call REST ReQuery1 Network Id in AAI" scriptFormat="groovy"> + <bpmn2:incoming>sdncTopoYes_SequenceFlow</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callRESTReQuery1NetworkID_ScriptTask" targetRef="callRESTQueryVpnBinding_ScriptTask" /> + <bpmn2:scriptTask id="callRESTQueryVpnBinding_ScriptTask" name="Call REST Query Vpn Binding in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="callRESTQueryVpnBinding_ScriptTask" targetRef="callRESTQueryNetworkPolicy_ScriptTask" /> + <bpmn2:scriptTask id="callRESTQueryNetworkPolicy_ScriptTask" name="Call REST Query Network Policy in AAI" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstance = new DoUpdateNetworkInstance() +DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="callRESTQueryNetworkPolicy_ScriptTask" targetRef="callRESTQueryNetworkTableRef_ScriptTask" /> + </bpmn2:process> + <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateNetworkInstance"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="updateNetwork_startEvent"> + <dc:Bounds x="286" y="185" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="279" y="226" width="49" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask"> + <dc:Bounds x="472" y="163" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="322" y="203" /> + <di:waypoint xsi:type="dc:Point" x="472" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="188" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateUpdatePONetwork_ScriptTask"> + <dc:Bounds x="1343" y="1311" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_83" bpmnElement="callUpdateNetwork_ServiceTask"> + <dc:Bounds x="1342" y="1176" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask"> + <dc:Bounds x="1519" y="100" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true"> + <dc:Bounds x="-153" y="594" width="1288" height="701" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent"> + <dc:Bounds x="-103" y="1160" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-109" y="1201" width="50" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="1544" y="521" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1535" y="577" width="67" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1594" y="546" /> + <di:waypoint xsi:type="dc:Point" x="1682" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1600" y="546.8622891951518" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_ScriptTask_336"> + <di:waypoint xsi:type="dc:Point" x="1544" y="546" /> + <di:waypoint xsi:type="dc:Point" x="1393" y="546" /> + <di:waypoint xsi:type="dc:Point" x="1393" y="576" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1526" y="546" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask"> + <dc:Bounds x="743" y="1390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent"> + <dc:Bounds x="1682" y="528" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1663" y="569" width="74" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callAssignSDNCAdapter_CallActivity"> + <dc:Bounds x="1519" y="242" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_67" targetElement="_BPMNShape_CallActivity_19"> + <di:waypoint xsi:type="dc:Point" x="1569" y="180" /> + <di:waypoint xsi:type="dc:Point" x="1569" y="242" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1584" y="211" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131"> + <di:waypoint xsi:type="dc:Point" x="1569" y="322" /> + <di:waypoint xsi:type="dc:Point" x="1569" y="373" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1584" y="347.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61"> + <di:waypoint xsi:type="dc:Point" x="572" y="203" /> + <di:waypoint xsi:type="dc:Point" x="686" y="203" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="629" y="188" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ExclusiveGateway_90"> + <di:waypoint xsi:type="dc:Point" x="-67" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="-40" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="-11" y="1178" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-53" y="1163" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask"> + <dc:Bounds x="1519" y="373" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67"> + <di:waypoint xsi:type="dc:Point" x="1569" y="453" /> + <di:waypoint xsi:type="dc:Point" x="1569" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1584" y="487" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80"> + <di:waypoint xsi:type="dc:Point" x="743" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="635" y="1430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="689" y="1415" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="callRESTQueryNetworkId_ScriptTask"> + <dc:Bounds x="984" y="100" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTReQuery2NetworkID_ScriptTask"> + <dc:Bounds x="1176" y="1390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_135" bpmnElement="callRESTUpdateContrailNetwork_ScriptTask"> + <dc:Bounds x="984" y="1390" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_135"> + <di:waypoint xsi:type="dc:Point" x="1176" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="1084" y="1430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1130" y="1415" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_65" bpmnElement="SequenceFlow_46" sourceElement="_BPMNShape_ScriptTask_135"> + <di:waypoint xsi:type="dc:Point" x="984" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="843" y="1430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="935" y="1431.2411831373652" width="32" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="callRESTQueryVpnBinding_ScriptTask"> + <dc:Bounds x="1341" y="688" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_215"> + <di:waypoint xsi:type="dc:Point" x="1391" y="768" /> + <di:waypoint xsi:type="dc:Point" x="1391" y="810" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1388" y="781" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_87" bpmnElement="SequenceFlow_59" sourceElement="_BPMNShape_ServiceTask_83" targetElement="_BPMNShape_ScriptTask_63"> + <di:waypoint xsi:type="dc:Point" x="1392" y="1256" /> + <di:waypoint xsi:type="dc:Point" x="1393" y="1311" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1390" y="1284" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="prepareNetworkRequest_ScriptTask"> + <dc:Bounds x="1342" y="1052" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_89" bpmnElement="SequenceFlow_61" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ServiceTask_83"> + <di:waypoint xsi:type="dc:Point" x="1392" y="1132" /> + <di:waypoint xsi:type="dc:Point" x="1392" y="1176" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1389" y="1159" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_90" bpmnElement="isRollbackOn_Network_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="156" y="1153" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="143" y="1213" width="78" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="isRollbackOn_YesNetwork_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ExclusiveGateway_215"> + <di:waypoint xsi:type="dc:Point" x="181" y="1153" /> + <di:waypoint xsi:type="dc:Point" x="181" y="1089" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="187" y="1133.4787123394708" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="isRollbackOn_NoNetwork_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_InclusiveGateway_24"> + <di:waypoint xsi:type="dc:Point" x="206" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="372" y="1178" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="206" y="1182.7278101950883" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="callRESTQueryNetworkPolicy_ScriptTask"> + <dc:Bounds x="1341" y="810" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ScriptTask_335"> + <di:waypoint xsi:type="dc:Point" x="1391" y="890" /> + <di:waypoint xsi:type="dc:Point" x="1391" y="926" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1388" y="900" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_24" bpmnElement="InclusiveGateway_6"> + <dc:Bounds x="626" y="859" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="651" y="914" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="isPONR_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="156" y="1039" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="1054" width="46" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_77" bpmnElement="isPONR_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_InclusiveGateway_24"> + <di:waypoint xsi:type="dc:Point" x="206" y="1064" /> + <di:waypoint xsi:type="dc:Point" x="397" y="1064" /> + <di:waypoint xsi:type="dc:Point" x="397" y="1153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="213" y="1067.6448598130842" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_85" bpmnElement="isPONR_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215"> + <di:waypoint xsi:type="dc:Point" x="181" y="1039" /> + <di:waypoint xsi:type="dc:Point" x="181" y="971" /> + <di:waypoint xsi:type="dc:Point" x="397" y="971" /> + <di:waypoint xsi:type="dc:Point" x="397" y="1153" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="185" y="1027.872131147541" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_217" bpmnElement="sdncOk_ExclusiveGateway" isMarkerVisible="true"> + <dc:Bounds x="493" y="709" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="488" y="683" width="60" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_92" bpmnElement="sdncOk_Yeso_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217" targetElement="_BPMNShape_ScriptTask_261"> + <di:waypoint xsi:type="dc:Point" x="543" y="734" /> + <di:waypoint xsi:type="dc:Point" x="601" y="733" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="545" y="737.2172362208834" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_93" bpmnElement="sdncOk_No_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217"> + <di:waypoint xsi:type="dc:Point" x="517" y="758" /> + <di:waypoint xsi:type="dc:Point" x="517" y="884" /> + <di:waypoint xsi:type="dc:Point" x="626" y="884" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="526" y="761.1171067354646" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3"> + <dc:Bounds x="599" y="1412" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="617" y="1453" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_4"> + <dc:Bounds x="1029" y="968" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1047" y="1009" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_245" bpmnElement="callRESTQueryCloudRegion_ScriptTask"> + <dc:Bounds x="1200" y="100" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_53" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_245" targetElement="_BPMNShape_ScriptTask_67"> + <di:waypoint xsi:type="dc:Point" x="1300" y="140" /> + <di:waypoint xsi:type="dc:Point" x="1519" y="140" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1410" y="125" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_38" bpmnElement="BoundaryEvent_4"> + <dc:Bounds x="1601" y="355" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1619" y="391" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_69" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_BoundaryEvent_38" targetElement="_BPMNShape_EndEvent_124"> + <di:waypoint xsi:type="dc:Point" x="1637" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1700" y="373" /> + <di:waypoint xsi:type="dc:Point" x="1700" y="528" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1669" y="358" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_261" bpmnElement="prepareSDNCRollbackRequest_ScriptTask"> + <dc:Bounds x="601" y="694" width="100" height="79" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_76" bpmnElement="SequenceFlow_47" sourceElement="_BPMNShape_InclusiveGateway_24"> + <di:waypoint xsi:type="dc:Point" x="651" y="909" /> + <di:waypoint xsi:type="dc:Point" x="651" y="946" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="666" y="927.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_84" bpmnElement="SequenceFlow_53" sourceElement="_BPMNShape_ScriptTask_261"> + <di:waypoint xsi:type="dc:Point" x="651" y="773" /> + <di:waypoint xsi:type="dc:Point" x="651" y="859" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="666" y="816" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_134"> + <di:waypoint xsi:type="dc:Point" x="1393" y="1391" /> + <di:waypoint xsi:type="dc:Point" x="1393" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="1310" y="1430" /> + <di:waypoint xsi:type="dc:Point" x="1276" y="1430" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1390" y="1425" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true"> + <dc:Bounds x="-62" y="375" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1"> + <dc:Bounds x="-29" y="452" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-11" y="493" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1"> + <dc:Bounds x="86" y="430" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1"> + <dc:Bounds x="247" y="452" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="265" y="493" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270"> + <di:waypoint xsi:type="dc:Point" x="7" y="470" /> + <di:waypoint xsi:type="dc:Point" x="86" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="49" y="470" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220"> + <di:waypoint xsi:type="dc:Point" x="186" y="470" /> + <di:waypoint xsi:type="dc:Point" x="247" y="470" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="221" y="470" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="callGetServiceInstance"> + <dc:Bounds x="686" y="163" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_244" bpmnElement="siFoundCheck" isMarkerVisible="true"> + <dc:Bounds x="836" y="177" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="891" y="195" width="79" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_CallActivity_72" targetElement="_BPMNShape_ExclusiveGateway_244"> + <di:waypoint xsi:type="dc:Point" x="786" y="203" /> + <di:waypoint xsi:type="dc:Point" x="805" y="203" /> + <di:waypoint xsi:type="dc:Point" x="805" y="202" /> + <di:waypoint xsi:type="dc:Point" x="836" y="202" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="799" y="203" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="siFoundYes" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_133"> + <di:waypoint xsi:type="dc:Point" x="861" y="177" /> + <di:waypoint xsi:type="dc:Point" x="861" y="140" /> + <di:waypoint xsi:type="dc:Point" x="910" y="140" /> + <di:waypoint xsi:type="dc:Point" x="984" y="140" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="868" y="157" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound"> + <dc:Bounds x="984" y="256" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="siFoundNo" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_331"> + <di:waypoint xsi:type="dc:Point" x="861" y="227" /> + <di:waypoint xsi:type="dc:Point" x="861" y="296" /> + <di:waypoint xsi:type="dc:Point" x="984" y="296" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="871" y="233" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_ScriptTask_245"> + <di:waypoint xsi:type="dc:Point" x="1084" y="140" /> + <di:waypoint xsi:type="dc:Point" x="1200" y="140" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1127" y="140" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_335" bpmnElement="callRESTQueryNetworkTableRef_ScriptTask"> + <dc:Bounds x="1341" y="926" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_335" targetElement="_BPMNShape_ScriptTask_157"> + <di:waypoint xsi:type="dc:Point" x="1391" y="1006" /> + <di:waypoint xsi:type="dc:Point" x="1392" y="1052" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1388" y="1028" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_336" bpmnElement="callRESTReQuery1NetworkID_ScriptTask"> + <dc:Bounds x="1343" y="576" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_336" targetElement="_BPMNShape_ScriptTask_156"> + <di:waypoint xsi:type="dc:Point" x="1393" y="656" /> + <di:waypoint xsi:type="dc:Point" x="1393" y="672" /> + <di:waypoint xsi:type="dc:Point" x="1391" y="672" /> + <di:waypoint xsi:type="dc:Point" x="1391" y="688" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1390" y="666" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1p6n2yy_di" bpmnElement="ScriptTask_1p6n2yy"> + <dc:Bounds x="601" y="946" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_1kid5y0_di" bpmnElement="CallActivity_1kid5y0"> + <dc:Bounds x="739" y="946" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0voqz6r_di" bpmnElement="ScriptTask_0voqz6r"> + <dc:Bounds x="883" y="946" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qr4es6_di" bpmnElement="SequenceFlow_0qr4es6"> + <di:waypoint xsi:type="dc:Point" x="701" y="986" /> + <di:waypoint xsi:type="dc:Point" x="739" y="986" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="720" y="971" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_04rdjfi_di" bpmnElement="SequenceFlow_04rdjfi"> + <di:waypoint xsi:type="dc:Point" x="983" y="986" /> + <di:waypoint xsi:type="dc:Point" x="1029" y="986" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1006" y="961" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1kjh92x_di" bpmnElement="ExclusiveGateway_1kjh92x" isMarkerVisible="true"> + <dc:Bounds x="372" y="709" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="368" y="672" width="76" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0nrc66n_di" bpmnElement="SequenceFlow_0nrc66n"> + <di:waypoint xsi:type="dc:Point" x="422" y="734" /> + <di:waypoint xsi:type="dc:Point" x="493" y="734" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="427" y="735" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0srdlf3_di" bpmnElement="SequenceFlow_0srdlf3"> + <di:waypoint xsi:type="dc:Point" x="397" y="759" /> + <di:waypoint xsi:type="dc:Point" x="397" y="884" /> + <di:waypoint xsi:type="dc:Point" x="626" y="884" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="402" y="760" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1gedbow_di" bpmnElement="ScriptTask_1gedbow"> + <dc:Bounds x="-11" y="1138" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_053re4q_di" bpmnElement="SequenceFlow_053re4q"> + <di:waypoint xsi:type="dc:Point" x="89" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="156" y="1178" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="123" y="1163" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_1adrta3_di" bpmnElement="ExclusiveGateway_1dcb5p2"> + <dc:Bounds x="372" y="1153" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="1203" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0ze5k6c_di" bpmnElement="SequenceFlow_0ze5k6c"> + <di:waypoint xsi:type="dc:Point" x="422" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="933" y="1178" /> + <di:waypoint xsi:type="dc:Point" x="933" y="1026" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="678" y="1163" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="TextAnnotation_0qx19b9_di" bpmnElement="TextAnnotation_0qx19b9"> + <dc:Bounds x="736" y="808" width="168" height="39" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_10dk4x3_di" bpmnElement="Association_10dk4x3"> + <di:waypoint xsi:type="dc:Point" x="797" y="946" /> + <di:waypoint xsi:type="dc:Point" x="816" y="847" /> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn new file mode 100644 index 0000000000..9d37d8084e --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn @@ -0,0 +1,374 @@ +<?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="1.4.0"> + <bpmn:process id="DoUpdateNetworkInstanceRollback" name="DoUpdateNetworkInstanceRollback" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() +DoUpdateNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" /> + <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0v0en47" /> + <bpmn:serviceTask id="ServiceTask_0bqh5yl" name="Call Rollback Network"> + <bpmn:extensionElements> + <camunda:connector> + <camunda:inputOutput> + <camunda:inputParameter name="payload">${UPDNETIR_rollbackNetworkRequest}</camunda:inputParameter> + <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)} +]]></camunda:inputParameter> + <camunda:inputParameter name="headers"> + <camunda:map> + <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry> + <camunda:entry key="content-type">application/xml</camunda:entry> + </camunda:map> + </camunda:inputParameter> + <camunda:inputParameter name="method">PUT</camunda:inputParameter> + <camunda:outputParameter name="UPDNETIR_rollbackNetworkReturnCode">${statusCode}</camunda:outputParameter> + <camunda:outputParameter name="UPDNETIR_rollbackNetworkResponse">${response}</camunda:outputParameter> + </camunda:inputOutput> + <camunda:connectorId>http-connector</camunda:connectorId> + </camunda:connector> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0e1uixp</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_17o4w67</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_0v0en47" name="is PO Network Rollback?" default="SequenceFlow_1lteduj"> + <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e1uixp</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_1lteduj</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:callActivity id="CallActivity_1xilevb" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter"> + <bpmn:extensionElements> + <camunda:in source="UPDNETIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:out source="SDNCA_ResponseCode" target="UPDNETIR_rollbackSDNCReturnCode" /> + <camunda:out source="sdncAdapterResponse" target="UPDNETIR_rollbackSDNCResponse" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_101y57s</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0790olb</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:exclusiveGateway id="ExclusiveGateway_17g4q5c" name="is RSRC SDNC?" default="SequenceFlow_101y57s"> + <bpmn:incoming>SequenceFlow_0virkpu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_101y57s</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0mw0dgd</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0qc4v9t</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0el8yzs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0yto4gz</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() +DoUpdateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:exclusiveGateway id="ExclusiveGateway_1n5jck8" name="is SDNC Rollback?" default="SequenceFlow_0qc4v9t"> + <bpmn:incoming>SequenceFlow_1lteduj</bpmn:incoming> + <bpmn:incoming>SequenceFlow_17o4w67</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0virkpu</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0qc4v9t</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0e1uixp" name="Yes" sourceRef="ExclusiveGateway_0v0en47" targetRef="ServiceTask_0bqh5yl"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1lteduj" name="No" sourceRef="ExclusiveGateway_0v0en47" targetRef="ExclusiveGateway_1n5jck8" /> + <bpmn:sequenceFlow id="SequenceFlow_0virkpu" name="Yes" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ExclusiveGateway_17g4q5c"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" /> + <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" /> + <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="ExclusiveGateway_0b9kbop"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:endEvent id="EndEvent_1fvr7ad"> + <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0qc4v9t" name="No" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:sequenceFlow id="SequenceFlow_0790olb" sourceRef="CallActivity_1xilevb" targetRef="ExclusiveGateway_0b9kbop" /> + <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback() +DoUpdateNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_1j0eixl"> + <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_0jxh015"> + <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" /> + <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" /> + </bpmn:subProcess> + <bpmn:inclusiveGateway id="ExclusiveGateway_0b9kbop"> + <bpmn:incoming>SequenceFlow_0790olb</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0mw0dgd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0el8yzs</bpmn:outgoing> + </bpmn:inclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0el8yzs" sourceRef="ExclusiveGateway_0b9kbop" targetRef="ScriptTask_1ggaxfu" /> + <bpmn:sequenceFlow id="SequenceFlow_0yto4gz" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" /> + <bpmn:subProcess id="SubProcess_1b8rnqv" name="Sub-process for UnexpectedErrors" triggeredByEvent="true"> + <bpmn:scriptTask id="ScriptTask_02d3i14" name="Catch Exception"> + <bpmn:incoming>SequenceFlow_07kf49j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_01syg1x</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +execution.setVariable("workflowException", execution.getVariable("WorkflowException")]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:startEvent id="StartEvent_0e8yrgo"> + <bpmn:outgoing>SequenceFlow_07kf49j</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1cmovvm"> + <bpmn:incoming>SequenceFlow_01syg1x</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_07kf49j" name="" sourceRef="StartEvent_0e8yrgo" targetRef="ScriptTask_02d3i14" /> + <bpmn:sequenceFlow id="SequenceFlow_01syg1x" name="" sourceRef="ScriptTask_02d3i14" targetRef="EndEvent_1cmovvm" /> + </bpmn:subProcess> + <bpmn:textAnnotation id="TextAnnotation_000ap15"> <bpmn:text><![CDATA[Include ONLY inputs/varrables: Â +rollbackData, as Map +-rollbackSDNCRequest +-rollbackNetworkRequest +WorkflowException +Â +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" /> + <bpmn:textAnnotation id="TextAnnotation_0vwyo82"> <bpmn:text><![CDATA[set value for: +WorkflowException +rolledBack +wasDeleted +]]></bpmn:text> +</bpmn:textAnnotation> + <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateNetworkInstanceRollback"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="240" y="354" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="258" y="390" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1"> + <dc:Bounds x="403" y="332" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg"> + <di:waypoint xsi:type="dc:Point" x="276" y="372" /> + <di:waypoint xsi:type="dc:Point" x="382" y="372" /> + <di:waypoint xsi:type="dc:Point" x="382" y="372" /> + <di:waypoint xsi:type="dc:Point" x="403" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="397" y="372" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2"> + <di:waypoint xsi:type="dc:Point" x="503" y="372" /> + <di:waypoint xsi:type="dc:Point" x="660" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="582" y="357" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0bqh5yl_di" bpmnElement="ServiceTask_0bqh5yl"> + <dc:Bounds x="635" y="481" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0v0en47_di" bpmnElement="ExclusiveGateway_0v0en47" isMarkerVisible="true"> + <dc:Bounds x="660" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="312" width="74" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15"> + <dc:Bounds x="469" y="133" width="277" height="115" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal"> + <di:waypoint xsi:type="dc:Point" x="487" y="332" /> + <di:waypoint xsi:type="dc:Point" x="559" y="248" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1xilevb_di" bpmnElement="CallActivity_1xilevb"> + <dc:Bounds x="995" y="610" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_17g4q5c_di" bpmnElement="ExclusiveGateway_17g4q5c" isMarkerVisible="true"> + <dc:Bounds x="879" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="926" y="474" width="82" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu"> + <dc:Bounds x="1123" y="332" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1n5jck8_di" bpmnElement="ExclusiveGateway_1n5jck8" isMarkerVisible="true"> + <dc:Bounds x="879" y="347" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="880" y="308" width="48" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82"> + <dc:Bounds x="1287" y="410" width="165" height="60" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b"> + <di:waypoint xsi:type="dc:Point" x="1223" y="389" /> + <di:waypoint xsi:type="dc:Point" x="1287" y="412" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0e1uixp_di" bpmnElement="SequenceFlow_0e1uixp"> + <di:waypoint xsi:type="dc:Point" x="685" y="397" /> + <di:waypoint xsi:type="dc:Point" x="685" y="439" /> + <di:waypoint xsi:type="dc:Point" x="685" y="439" /> + <di:waypoint xsi:type="dc:Point" x="685" y="481" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="693" y="395" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1lteduj_di" bpmnElement="SequenceFlow_1lteduj"> + <di:waypoint xsi:type="dc:Point" x="710" y="372" /> + <di:waypoint xsi:type="dc:Point" x="879" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="716" y="350" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0virkpu_di" bpmnElement="SequenceFlow_0virkpu"> + <di:waypoint xsi:type="dc:Point" x="904" y="397" /> + <di:waypoint xsi:type="dc:Point" x="904" y="496" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="914" y="392.7469456247061" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_17o4w67_di" bpmnElement="SequenceFlow_17o4w67"> + <di:waypoint xsi:type="dc:Point" x="735" y="521" /> + <di:waypoint xsi:type="dc:Point" x="817" y="521" /> + <di:waypoint xsi:type="dc:Point" x="817" y="372" /> + <di:waypoint xsi:type="dc:Point" x="879" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="446.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_101y57s_di" bpmnElement="SequenceFlow_101y57s"> + <di:waypoint xsi:type="dc:Point" x="904" y="546" /> + <di:waypoint xsi:type="dc:Point" x="904" y="650" /> + <di:waypoint xsi:type="dc:Point" x="995" y="650" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="913" y="544.0784313725491" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0mw0dgd_di" bpmnElement="SequenceFlow_0mw0dgd"> + <di:waypoint xsi:type="dc:Point" x="929" y="521" /> + <di:waypoint xsi:type="dc:Point" x="1148" y="521" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="937" y="500" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad"> + <dc:Bounds x="1352" y="354" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1370" y="390" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0qc4v9t_di" bpmnElement="SequenceFlow_0qc4v9t"> + <di:waypoint xsi:type="dc:Point" x="929" y="372" /> + <di:waypoint xsi:type="dc:Point" x="1123" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="941" y="351.1191898360114" width="14" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0790olb_di" bpmnElement="SequenceFlow_0790olb"> + <di:waypoint xsi:type="dc:Point" x="1095" y="650" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="650" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="546" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1134" y="635" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true"> + <dc:Bounds x="61" y="668" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk"> + <dc:Bounds x="209" y="723" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl"> + <dc:Bounds x="94" y="745" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="112" y="786" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015"> + <dc:Bounds x="370" y="745" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="786" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v"> + <di:waypoint xsi:type="dc:Point" x="130" y="763" /> + <di:waypoint xsi:type="dc:Point" x="209" y="763" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="763" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3"> + <di:waypoint xsi:type="dc:Point" x="309" y="763" /> + <di:waypoint xsi:type="dc:Point" x="370" y="763" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="344" y="763" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="InclusiveGateway_0dot6c9_di" bpmnElement="ExclusiveGateway_0b9kbop"> + <dc:Bounds x="1148" y="496" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1173" y="546" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0el8yzs_di" bpmnElement="SequenceFlow_0el8yzs"> + <di:waypoint xsi:type="dc:Point" x="1173" y="496" /> + <di:waypoint xsi:type="dc:Point" x="1173" y="412" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1188" y="444" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0yto4gz_di" bpmnElement="SequenceFlow_0yto4gz"> + <di:waypoint xsi:type="dc:Point" x="1223" y="372" /> + <di:waypoint xsi:type="dc:Point" x="1352" y="372" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1288" y="357" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="SubProcess_1b8rnqv_di" bpmnElement="SubProcess_1b8rnqv" isExpanded="true"> + <dc:Bounds x="61" y="916" width="394" height="188" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_02d3i14_di" bpmnElement="ScriptTask_02d3i14"> + <dc:Bounds x="209" y="971" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0e8yrgo_di" bpmnElement="StartEvent_0e8yrgo"> + <dc:Bounds x="94" y="993" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="112" y="1034" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1cmovvm_di" bpmnElement="EndEvent_1cmovvm"> + <dc:Bounds x="370" y="993" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="388" y="1034" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_07kf49j_di" bpmnElement="SequenceFlow_07kf49j"> + <di:waypoint xsi:type="dc:Point" x="130" y="1011" /> + <di:waypoint xsi:type="dc:Point" x="209" y="1011" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="172" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_01syg1x_di" bpmnElement="SequenceFlow_01syg1x"> + <di:waypoint xsi:type="dc:Point" x="309" y="1011" /> + <di:waypoint xsi:type="dc:Point" x="370" y="1011" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="344" y="1011" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn new file mode 100644 index 0000000000..46e7ddcbe6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn @@ -0,0 +1,671 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateVfModule" name="DoUpdateVfModule" isExecutable="true"> + <bpmn2:documentation><![CDATA[This flow expects its incoming request to be in the variable 'DoUpdateVfModuleRequest'. This flow produces no output.]]></bpmn2:documentation> + <bpmn2:scriptTask id="PrepareUpdateAAIVfModule_prep" name="Prepare Update AAI Vf Module (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepPrepareUpdateAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="PrepareUpdateAAIVfModule_prep" targetRef="ScriptTask_1" /> + <bpmn2:callActivity id="ScriptTask_1" name="Prepare Update AAI Vf Module" calledElement="PrepareUpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_prepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="PUAAIVfMod_outVfModule" target="DOUPVfMod_vfModule" /> + <camunda:out source="PUAAIVfMod_vnfName" target="DOUPVfMod_vnfNameFromAAI" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ProcessReceivedRequest" name="Process Received Request" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="ProcessReceivedRequest" targetRef="PrepareUpdateAAIVfModule_prep" /> + <bpmn2:subProcess id="SubProcess_1" name="Catch Exception" triggeredByEvent="true"> + <bpmn2:scriptTask id="ScriptTask_16" name="Handle Exception" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.handleWorkflowException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:endEvent id="EndEvent_3"> + <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ScriptTask_16" targetRef="EndEvent_3" /> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_16" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_5"> + <bpmn2:incoming>SequenceFlow_36</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12" /> + </bpmn2:endEvent> + <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1"> + <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_70" /> + </bpmn2:boundaryEvent> + <bpmn2:sequenceFlow id="SequenceFlow_36" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_5" /> + <bpmn2:scriptTask id="ScriptTask_10" name="Update AAI Vf Module (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="ScriptTask_10" targetRef="ScriptTask_11" /> + <bpmn2:callActivity id="ScriptTask_11" name="UpdateAAIVfModule" calledElement="UpdateAAIVfModule"> + <bpmn2:extensionElements> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="DOUPVfMod_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="ScriptTask_11" targetRef="ScriptTask_12" /> + <bpmn2:scriptTask id="ScriptTask_12" name="SDNC Topology Activate (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepSDNCTopologyAct(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ScriptTask_12" targetRef="ScriptTask_13" /> + <bpmn2:callActivity id="ScriptTask_13" name="SDNCAdapter Topology Activate" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_sdncActivateRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncActivateResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_14" name="Update AAI Generic Vnf (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_14" targetRef="ExclusiveGateway_1" /> + <bpmn2:callActivity id="CallActivity_1" name="UpdateAAIGenericVnf" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_10" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update + Generic Vnf?" default="SequenceFlow_14"> + <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_14" name="Do the update" sourceRef="ExclusiveGateway_1" targetRef="CallActivity_1" /> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="Skip the update" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_10"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_skipUpdateGenericVnf')} == true]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:startEvent id="StartEvent_1" name="Start"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="ProcessReceivedRequest" /> + <bpmn2:scriptTask id="ScriptTask_4" name="SDNC Topology Change/Assign (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepSDNCTopologyChg(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ScriptTask_4" targetRef="ScriptTask_5" /> + <bpmn2:callActivity id="ScriptTask_5" name="SDNC Adapter Topology Change/Assign" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_sdncChangeAssignRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncChangeAssignResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:callActivity id="ScriptTask_9" name="VnfAdapterRest" calledElement="vnfAdapterRestV1"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="vnfAdapterRestV1Response" target="DOUPVfMod_vnfAdapterRestResponse" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_9" targetRef="ScriptTask_14" /> + <bpmn2:scriptTask id="ScriptTask_8" name="VNF Adapter (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepVnfAdapterRest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_9" /> + <bpmn2:scriptTask id="ScriptTask_15" name="Validate SDNC Query Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("DOUPVfMod_sdncTopologyResponse") +def duvm = new DoUpdateVfModule() +duvm.validateSDNCResponse(execution, response, "query")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:callActivity id="ScriptTask_7" name="SDNCAdapter Topology Query" calledElement="sdncAdapter"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_sdncTopologyRequest" target="sdncAdapterWorkflowRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncTopologyResponse" /> + <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="ScriptTask_18" name="Validate SDNC Change/Assign Response" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("DOUPVfMod_sdncChangeAssignResponse") +def duvm = new DoUpdateVfModule() +duvm.validateSDNCResponse(execution, response, "changeassign")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_18" /> + <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_18" targetRef="ScriptTask_6" /> + <bpmn2:scriptTask id="ScriptTask_6" name="SDNC Topology Query (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepSDNCTopologyQuery(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_7" /> + <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_15" /> + <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_15" targetRef="ScriptTask_8" /> + <bpmn2:exclusiveGateway id="IsBaseVfModule" name="Is Base VF Module?" default="SequenceFlow_30"> + <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_1" targetRef="IsBaseVfModule" /> + <bpmn2:callActivity id="ScriptTask_3" name="Confirm VolumeGroup Tenant" calledElement="ConfirmVolumeGroupTenant"> + <bpmn2:extensionElements> + <camunda:in source="DOUPVfMod_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DOUPVfMod_tenantId" target="tenantId" /> + <camunda:in source="DOUPVfMod_cloudRegionForVolume" target="aicCloudRegion" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DOUPVfMod_volumeGroupStackId" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_3" targetRef="ScriptTask_4" /> + <bpmn2:scriptTask id="ScriptTask_2" name="Confirm VolumeGroup Tenant (prep)" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvm = new DoUpdateVfModule() +duvm.prepConfirmVolumeGroupTenant(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId + present?" default="SequenceFlow_16"> + <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_10" name="Yes" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_2"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_volumeGroupId').isEmpty()} == false]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:sequenceFlow id="SequenceFlow_16" name="No" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_4" /> + <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="IsBaseVfModule" targetRef="ExclusiveGateway_3"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DOUPVfMod_isBaseVfModule") == "true"]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:scriptTask id="QueryAAIVfModule" name="Query AAI Vf Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def doUpdateVfModule = new DoUpdateVfModule() +doUpdateVfModule.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_3" /> + <bpmn2:exclusiveGateway id="ExclusiveGateway_3"> + <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_13" targetRef="ScriptTask_19" /> + <bpmn2:scriptTask id="ScriptTask_19" name="PostProcess SDNC Adapter Activate" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +String response = execution.getVariable("DOUPVfMod_sdncActivateResponse") +def duvm = new DoUpdateVfModule() +duvm.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="ScriptTask_17" name="Set Success Indicator" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> + <bpmn2:script><![CDATA[// This variable is checked by the unit test +execution.setVariable('DoUpdateVfModuleSuccessIndicator', true)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_17" targetRef="EndEvent_1" /> + <bpmn2:endEvent id="EndEvent_1" name="TheEnd"> + <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10" /> + </bpmn2:endEvent> + <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_19" targetRef="ScriptTask_17" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVfModule"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1"> + <dc:Bounds x="150" y="214" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="151" y="255" width="34" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="ProcessReceivedRequest"> + <dc:Bounds x="300" y="192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22"> + <di:waypoint xsi:type="dc:Point" x="186" y="232" /> + <di:waypoint xsi:type="dc:Point" x="300" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="208" y="232" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="PrepareUpdateAAIVfModule_prep"> + <dc:Bounds x="456" y="192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ScriptTask_160"> + <di:waypoint xsi:type="dc:Point" x="400" y="232" /> + <di:waypoint xsi:type="dc:Point" x="456" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="492" y="232" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_164" bpmnElement="ScriptTask_1"> + <dc:Bounds x="624" y="192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ScriptTask_164"> + <di:waypoint xsi:type="dc:Point" x="556" y="232" /> + <di:waypoint xsi:type="dc:Point" x="624" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="575" y="232" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_88" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> + <dc:Bounds x="1039" y="206" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1011" y="172" width="109" height="38" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_165" bpmnElement="ScriptTask_2"> + <dc:Bounds x="1152" y="192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_165"> + <di:waypoint xsi:type="dc:Point" x="1089" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1118" y="232" /> + <di:waypoint xsi:type="dc:Point" x="1152" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1099" y="231" width="29" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_166" bpmnElement="ScriptTask_3"> + <dc:Bounds x="1308" y="192" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_165" targetElement="_BPMNShape_ScriptTask_166"> + <di:waypoint xsi:type="dc:Point" x="1252" y="232" /> + <di:waypoint xsi:type="dc:Point" x="1308" y="232" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1271" y="232" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_167" bpmnElement="ScriptTask_4"> + <dc:Bounds x="72" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_168" bpmnElement="ScriptTask_5"> + <dc:Bounds x="239" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_169" bpmnElement="ScriptTask_6"> + <dc:Bounds x="535" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_167" targetElement="_BPMNShape_ScriptTask_168"> + <di:waypoint xsi:type="dc:Point" x="172" y="460" /> + <di:waypoint xsi:type="dc:Point" x="239" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="197" y="460" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_167"> + <di:waypoint xsi:type="dc:Point" x="1064" y="256" /> + <di:waypoint xsi:type="dc:Point" x="1064" y="351" /> + <di:waypoint xsi:type="dc:Point" x="122" y="351" /> + <di:waypoint xsi:type="dc:Point" x="122" y="420" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1073" y="271" width="22" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_166" targetElement="_BPMNShape_ScriptTask_167"> + <di:waypoint xsi:type="dc:Point" x="1358" y="272" /> + <di:waypoint xsi:type="dc:Point" x="1358" y="352" /> + <di:waypoint xsi:type="dc:Point" x="639" y="352" /> + <di:waypoint xsi:type="dc:Point" x="122" y="352" /> + <di:waypoint xsi:type="dc:Point" x="122" y="420" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="927" y="352" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="ScriptTask_7"> + <dc:Bounds x="684" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_169" targetElement="_BPMNShape_ScriptTask_170"> + <di:waypoint xsi:type="dc:Point" x="635" y="460" /> + <di:waypoint xsi:type="dc:Point" x="684" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="648" y="460" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="ScriptTask_8"> + <dc:Bounds x="996" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="ScriptTask_9"> + <dc:Bounds x="1176" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_ScriptTask_172"> + <di:waypoint xsi:type="dc:Point" x="1096" y="460" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1133" y="460" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="ScriptTask_10"> + <dc:Bounds x="466" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="ScriptTask_11"> + <dc:Bounds x="624" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_ScriptTask_219"> + <di:waypoint xsi:type="dc:Point" x="1226" y="500" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="576" /> + <di:waypoint xsi:type="dc:Point" x="194" y="576" /> + <di:waypoint xsi:type="dc:Point" x="194" y="636" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="821" y="576" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_ScriptTask_174"> + <di:waypoint xsi:type="dc:Point" x="566" y="676" /> + <di:waypoint xsi:type="dc:Point" x="624" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="591" y="676" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="ScriptTask_12"> + <dc:Bounds x="804" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_176" bpmnElement="ScriptTask_13"> + <dc:Bounds x="984" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ScriptTask_174" targetElement="_BPMNShape_ScriptTask_175"> + <di:waypoint xsi:type="dc:Point" x="724" y="676" /> + <di:waypoint xsi:type="dc:Point" x="804" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="695" y="674" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_175" targetElement="_BPMNShape_ScriptTask_176"> + <di:waypoint xsi:type="dc:Point" x="904" y="676" /> + <di:waypoint xsi:type="dc:Point" x="984" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="902" y="676" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_162" bpmnElement="EndEvent_1"> + <dc:Bounds x="1208" y="906" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1201" y="947" width="50" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_21" bpmnElement="SubProcess_1" isExpanded="true"> + <dc:Bounds x="239" y="924" width="475" height="198" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_179" bpmnElement="ScriptTask_16"> + <dc:Bounds x="399" y="984" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_3"> + <dc:Bounds x="617" y="1006" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="635" y="1047" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_179" targetElement="_BPMNShape_EndEvent_163"> + <di:waypoint xsi:type="dc:Point" x="499" y="1024" /> + <di:waypoint xsi:type="dc:Point" x="617" y="1024" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="555" y="1024" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_46" bpmnElement="BoundaryEvent_1"> + <dc:Bounds x="696" y="1005" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="711" y="1046" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_164" bpmnElement="EndEvent_5"> + <dc:Bounds x="814" y="1005" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="832" y="1046" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_36" sourceElement="_BPMNShape_BoundaryEvent_46" targetElement="_BPMNShape_EndEvent_164"> + <di:waypoint xsi:type="dc:Point" x="732" y="1023" /> + <di:waypoint xsi:type="dc:Point" x="814" y="1023" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="770" y="1023" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_56" bpmnElement="StartEvent_3"> + <dc:Bounds x="305" y="1006" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="323" y="1047" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_StartEvent_56" targetElement="_BPMNShape_ScriptTask_179"> + <di:waypoint xsi:type="dc:Point" x="341" y="1024" /> + <di:waypoint xsi:type="dc:Point" x="399" y="1024" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="302" y="1084" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_180" bpmnElement="ScriptTask_17"> + <dc:Bounds x="1176" y="768" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_180" targetElement="_BPMNShape_EndEvent_162"> + <di:waypoint xsi:type="dc:Point" x="1226" y="848" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="906" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1223" y="868" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_219" bpmnElement="ScriptTask_14"> + <dc:Bounds x="144" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_CallActivity_2" bpmnElement="CallActivity_1"> + <dc:Bounds x="300" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_CallActivity_2" targetElement="_BPMNShape_ScriptTask_173"> + <di:waypoint xsi:type="dc:Point" x="400" y="676" /> + <di:waypoint xsi:type="dc:Point" x="466" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="431" y="676" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_219" targetElement="_BPMNShape_ExclusiveGateway_213"> + <di:waypoint xsi:type="dc:Point" x="194" y="716" /> + <di:waypoint xsi:type="dc:Point" x="195" y="793" /> + <di:waypoint xsi:type="dc:Point" x="284" y="793" /> + <di:waypoint xsi:type="dc:Point" x="324" y="793" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="191" y="746" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_213" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true"> + <dc:Bounds x="324" y="768" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="349" y="823" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_CallActivity_2"> + <di:waypoint xsi:type="dc:Point" x="349" y="768" /> + <di:waypoint xsi:type="dc:Point" x="350" y="716" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="357" y="733" width="80" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_ScriptTask_173"> + <di:waypoint xsi:type="dc:Point" x="374" y="793" /> + <di:waypoint xsi:type="dc:Point" x="515" y="793" /> + <di:waypoint xsi:type="dc:Point" x="516" y="716" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="380" y="768" width="97" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="ScriptTask_15"> + <dc:Bounds x="840" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="ScriptTask_18"> + <dc:Bounds x="384" y="420" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_168" targetElement="_BPMNShape_ScriptTask_221"> + <di:waypoint xsi:type="dc:Point" x="339" y="460" /> + <di:waypoint xsi:type="dc:Point" x="384" y="460" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_169"> + <di:waypoint xsi:type="dc:Point" x="484" y="460" /> + <di:waypoint xsi:type="dc:Point" x="535" y="460" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="511" y="460" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_ScriptTask_220"> + <di:waypoint xsi:type="dc:Point" x="784" y="460" /> + <di:waypoint xsi:type="dc:Point" x="840" y="460" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_171"> + <di:waypoint xsi:type="dc:Point" x="940" y="460" /> + <di:waypoint xsi:type="dc:Point" x="996" y="460" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_214" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> + <dc:Bounds x="965" y="206" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="990" y="261" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="IsBaseVfModule" isMarkerVisible="true"> + <dc:Bounds x="770" y="206" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="795" y="261" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="QueryAAIVfModule"> + <dc:Bounds x="849" y="72" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_164" targetElement="_BPMNShape_ExclusiveGateway_215"> + <di:waypoint xsi:type="dc:Point" x="724" y="232" /> + <di:waypoint xsi:type="dc:Point" x="747" y="232" /> + <di:waypoint xsi:type="dc:Point" x="747" y="231" /> + <di:waypoint xsi:type="dc:Point" x="770" y="231" /> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ExclusiveGateway_214"> + <di:waypoint xsi:type="dc:Point" x="820" y="231" /> + <di:waypoint xsi:type="dc:Point" x="965" y="231" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="888" y="231" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ExclusiveGateway_214" targetElement="_BPMNShape_ExclusiveGateway_88"> + <di:waypoint xsi:type="dc:Point" x="1015" y="231" /> + <di:waypoint xsi:type="dc:Point" x="1039" y="231" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1015" y="231" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ScriptTask_285"> + <di:waypoint xsi:type="dc:Point" x="795" y="206" /> + <di:waypoint xsi:type="dc:Point" x="795" y="112" /> + <di:waypoint xsi:type="dc:Point" x="849" y="112" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="770" y="151" width="20" height="22" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ExclusiveGateway_214"> + <di:waypoint xsi:type="dc:Point" x="949" y="112" /> + <di:waypoint xsi:type="dc:Point" x="966" y="112" /> + <di:waypoint xsi:type="dc:Point" x="990" y="112" /> + <di:waypoint xsi:type="dc:Point" x="990" y="206" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="987" y="136" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="ScriptTask_19"> + <dc:Bounds x="1176" y="636" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_176" targetElement="_BPMNShape_ScriptTask_286"> + <di:waypoint xsi:type="dc:Point" x="1084" y="676" /> + <di:waypoint xsi:type="dc:Point" x="1176" y="676" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1121" y="676" width="6" height="6" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_ScriptTask_180"> + <di:waypoint xsi:type="dc:Point" x="1226" y="716" /> + <di:waypoint xsi:type="dc:Point" x="1226" y="768" /> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn new file mode 100644 index 0000000000..ae77461070 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> + <bpmn2:process id="DoUpdateVnfAndModules" name="DoUpdateVnfAndModules" isExecutable="true"> + <bpmn2:startEvent id="StartEvent_1"> + <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" /> + <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_08nd69s</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +DoUpdateVnfAndModules updateVnfAndModules = new DoUpdateVnfAndModules() +updateVnfAndModules.preProcessRequest(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true"> + <bpmn2:endEvent id="EndEvent_4"> + <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming> + </bpmn2:endEvent> + <bpmn2:startEvent id="StartEvent_3"> + <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> + <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" /> + </bpmn2:startEvent> + <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" /> + <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.* +ExceptionUtil exceptionUtil = new ExceptionUtil() +exceptionUtil.processJavaException(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" /> + </bpmn2:subProcess> + <bpmn2:endEvent id="EndEvent_2"> + <bpmn2:incoming>SequenceFlow_0of4kmm</bpmn2:incoming> + <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" /> + </bpmn2:endEvent> + <bpmn2:exclusiveGateway id="ExclusiveGateway_1amun4k" name="Are there VF modules to update?" default="SequenceFlow_19c7hcw"> + <bpmn2:incoming>SequenceFlow_0t4yszi</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_1f4mbkc</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1qrkdn3</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_19c7hcw</bpmn2:outgoing> + </bpmn2:exclusiveGateway> + <bpmn2:sequenceFlow id="SequenceFlow_08nd69s" sourceRef="intialization" targetRef="QueryVnf" /> + <bpmn2:sequenceFlow id="SequenceFlow_1qrkdn3" name="yes" sourceRef="ExclusiveGateway_1amun4k" targetRef="PrepareModuleList"> + <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DUVAM_nextModule") < execution.getVariable("DUVAM_moduleCount")]]></bpmn2:conditionExpression> + </bpmn2:sequenceFlow> + <bpmn2:callActivity id="UpdateVFModule" name="Do Update VF Module" calledElement="DoUpdateVfModule"> + <bpmn2:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + <camunda:in source="isVidRequest" target="isVidRequest" /> + <camunda:in source="vnfType" target="vnfType" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="DUVAM_vfModuleName" target="vfModuleName" /> + <camunda:in source="DUVAM_vfModuleId" target="vfModuleId" /> + <camunda:in source="DUVAM_volumeGroupId" target="volumeGroupId" /> + <camunda:in source="DUVAM_volumeGroupName" target="volumeGroupName" /> + <camunda:in source="DUVAM_isBaseVfModule" target="isBaseVfModule" /> + <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" /> + <camunda:in source="serviceInstanceId" target="serviceInstanceId" /> + <camunda:in source="serviceModelInfo" target="serviceModelInfo" /> + <camunda:in source="vnfModelInfo" target="vnfModelInfo" /> + <camunda:in source="globalSubscriberId" target="globalSubscriberId" /> + <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" /> + <camunda:in source="tenantId" target="tenantId" /> + <camunda:in source="sdncVersion" target="sdncVersion" /> + <camunda:in source="DUVAM_vfModuleModelInfo" target="vfModuleModelInfo" /> + <camunda:in source="usePreload" target="usePreload" /> + <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_04o61yk</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1p4ycii</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:sequenceFlow id="SequenceFlow_1p4ycii" sourceRef="UpdateVFModule" targetRef="PostProcessUpdateVfModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_0t4yszi" sourceRef="PostProcessUpdateVfModule" targetRef="ExclusiveGateway_1amun4k" /> + <bpmn2:scriptTask id="QueryVnf" name="Query VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_08nd69s</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1f4mbkc</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.queryAAIVfModule(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PrepareModuleList" name="Prepare Next Module To Update" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1qrkdn3</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_04o61yk</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.prepareNextModuleToUpdate(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:scriptTask id="PostProcessUpdateVfModule" name="PostProcess Update VF Module" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_1p4ycii</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0t4yszi</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +int nextModule = execution.getVariable("DUVAM_nextModule") + execution.setVariable("DUVAM_nextModule", nextModule + 1)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_04o61yk" sourceRef="PrepareModuleList" targetRef="UpdateVFModule" /> + <bpmn2:sequenceFlow id="SequenceFlow_19c7hcw" name="no" sourceRef="ExclusiveGateway_1amun4k" targetRef="PreProcessUpdateAAIGenericVNF" /> + <bpmn2:sequenceFlow id="SequenceFlow_0of4kmm" sourceRef="UpdateAAIGenericVNFTask" targetRef="EndEvent_2" /> + <bpmn2:sequenceFlow id="SequenceFlow_1ltycz6" sourceRef="PreProcessUpdateAAIGenericVNF" targetRef="UpdateAAIGenericVNFTask" /> + <bpmn2:callActivity id="UpdateAAIGenericVNFTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf"> + <bpmn2:extensionElements> + <camunda:in source="DUVAM_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" /> + <camunda:in source="mso-request-id" target="mso-request-id" /> + <camunda:in source="mso-service-id" target="mso-service-id" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="WorkflowException" target="WorkflowException" /> + </bpmn2:extensionElements> + <bpmn2:incoming>SequenceFlow_1ltycz6</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0of4kmm</bpmn2:outgoing> + </bpmn2:callActivity> + <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVNF" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy"> + <bpmn2:incoming>SequenceFlow_19c7hcw</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_1ltycz6</bpmn2:outgoing> + <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def duvam = new DoUpdateVnfAndModules() +duvam.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script> + </bpmn2:scriptTask> + <bpmn2:sequenceFlow id="SequenceFlow_1f4mbkc" sourceRef="QueryVnf" targetRef="ExclusiveGateway_1amun4k" /> + </bpmn2:process> + <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> + <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" /> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVnfAndModules"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1"> + <dc:Bounds x="238" y="209" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="256" y="250" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization"> + <dc:Bounds x="344" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311"> + <di:waypoint xsi:type="dc:Point" x="274" y="227" /> + <di:waypoint xsi:type="dc:Point" x="344" y="228" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="309" y="212.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2"> + <dc:Bounds x="1441" y="279" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1459" y="320" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true"> + <dc:Bounds x="242" y="457" width="431" height="157" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3"> + <dc:Bounds x="390" y="518" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="408" y="559" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4"> + <dc:Bounds x="606" y="518" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="624" y="559" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException"> + <dc:Bounds x="460" y="496" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319"> + <di:waypoint xsi:type="dc:Point" x="426" y="536" /> + <di:waypoint xsi:type="dc:Point" x="460" y="536" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="443" y="521" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239"> + <di:waypoint xsi:type="dc:Point" x="560" y="536" /> + <di:waypoint xsi:type="dc:Point" x="606" y="536" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="583" y="521" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1amun4k_di" bpmnElement="ExclusiveGateway_1amun4k" isMarkerVisible="true"> + <dc:Bounds x="706" y="201" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="660" y="248" width="65" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_08nd69s_di" bpmnElement="SequenceFlow_08nd69s"> + <di:waypoint xsi:type="dc:Point" x="444" y="227" /> + <di:waypoint xsi:type="dc:Point" x="512" y="227" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="478" y="212" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1qrkdn3_di" bpmnElement="SequenceFlow_1qrkdn3"> + <di:waypoint xsi:type="dc:Point" x="731" y="201" /> + <di:waypoint xsi:type="dc:Point" x="731" y="92" /> + <di:waypoint xsi:type="dc:Point" x="816" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="737" y="151" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0qmp9y5_di" bpmnElement="UpdateVFModule"> + <dc:Bounds x="983" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1p4ycii_di" bpmnElement="SequenceFlow_1p4ycii"> + <di:waypoint xsi:type="dc:Point" x="1083" y="92" /> + <di:waypoint xsi:type="dc:Point" x="1164" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1124" y="77" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0t4yszi_di" bpmnElement="SequenceFlow_0t4yszi"> + <di:waypoint xsi:type="dc:Point" x="1214" y="132" /> + <di:waypoint xsi:type="dc:Point" x="1214" y="226" /> + <di:waypoint xsi:type="dc:Point" x="756" y="226" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1229" y="179" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12xsp2f_di" bpmnElement="QueryVnf"> + <dc:Bounds x="512" y="187" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_01c9qas_di" bpmnElement="PrepareModuleList"> + <dc:Bounds x="816" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_11i0rnd_di" bpmnElement="PostProcessUpdateVfModule"> + <dc:Bounds x="1164" y="52" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_04o61yk_di" bpmnElement="SequenceFlow_04o61yk"> + <di:waypoint xsi:type="dc:Point" x="916" y="92" /> + <di:waypoint xsi:type="dc:Point" x="983" y="92" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="950" y="77" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_19c7hcw_di" bpmnElement="SequenceFlow_19c7hcw"> + <di:waypoint xsi:type="dc:Point" x="731" y="251" /> + <di:waypoint xsi:type="dc:Point" x="731" y="295" /> + <di:waypoint xsi:type="dc:Point" x="1111" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="908" y="273" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0of4kmm_di" bpmnElement="SequenceFlow_0of4kmm"> + <di:waypoint xsi:type="dc:Point" x="1367" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1404" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1404" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1441" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1419" y="297" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ltycz6_di" bpmnElement="SequenceFlow_1ltycz6"> + <di:waypoint xsi:type="dc:Point" x="1211" y="297" /> + <di:waypoint xsi:type="dc:Point" x="1267" y="297" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1239" y="282" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1cem00f_di" bpmnElement="UpdateAAIGenericVNFTask"> + <dc:Bounds x="1267" y="257" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0snu9sv_di" bpmnElement="PreProcessUpdateAAIGenericVNF"> + <dc:Bounds x="1111" y="257" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1f4mbkc_di" bpmnElement="SequenceFlow_1f4mbkc"> + <di:waypoint xsi:type="dc:Point" x="612" y="227" /> + <di:waypoint xsi:type="dc:Point" x="706" y="226" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="659" y="211.5" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn2:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn new file mode 100644 index 0000000000..e1300c978f --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn @@ -0,0 +1,346 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3"> + <bpmn:process id="RollbackVnf" name="RollbackVnf" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1"> + <bpmn:outgoing>SequenceFlow_0bie3cu</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:exclusiveGateway id="ExclusiveGateway_0dysixy" name="Start VNF?" default="SequenceFlow_0tj5bkd"> + <bpmn:incoming>SequenceFlow_0mpoa26</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1pirwg0</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1lne8je</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0tj5bkd</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_1iuuwqx" name="Unlock VNF?" default="SequenceFlow_0b2y2dw"> + <bpmn:incoming>SequenceFlow_0tj5bkd</bpmn:incoming> + <bpmn:incoming>SequenceFlow_1ney8l6</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0gsro0z</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0b2y2dw</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_1oswdsn" name="Unset closedLoopDisabled Flag?" default="SequenceFlow_0c5ovtd"> + <bpmn:incoming>SequenceFlow_0b2y2dw</bpmn:incoming> + <bpmn:incoming>SequenceFlow_11556y3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0skjb2u</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_0c5ovtd</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:exclusiveGateway id="ExclusiveGateway_0bu2ybs" name="Unset VNF inMaintenance Flag?" default="SequenceFlow_03qkk4e"> + <bpmn:incoming>SequenceFlow_0g18wrd</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0c5ovtd</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_12bz15k</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_03qkk4e</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_1lne8je" name="yes" sourceRef="ExclusiveGateway_0dysixy" targetRef="Task_0zktukf"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackVnfStop") == true]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0tj5bkd" name="no" sourceRef="ExclusiveGateway_0dysixy" targetRef="ExclusiveGateway_1iuuwqx" /> + <bpmn:sequenceFlow id="SequenceFlow_1ney8l6" sourceRef="Task_0zktukf" targetRef="ExclusiveGateway_1iuuwqx" /> + <bpmn:sequenceFlow id="SequenceFlow_0gsro0z" name="yes" sourceRef="ExclusiveGateway_1iuuwqx" targetRef="Task_10x6bcq"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackVnfLock") == true]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0b2y2dw" name="no" sourceRef="ExclusiveGateway_1iuuwqx" targetRef="ExclusiveGateway_1oswdsn" /> + <bpmn:sequenceFlow id="SequenceFlow_11556y3" sourceRef="Task_10x6bcq" targetRef="ExclusiveGateway_1oswdsn" /> + <bpmn:sequenceFlow id="SequenceFlow_0skjb2u" name="yes" sourceRef="ExclusiveGateway_1oswdsn" targetRef="Task_0uvsonk"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackSetClosedLoopDisabledFlag") == true]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0g18wrd" sourceRef="Task_0uvsonk" targetRef="ExclusiveGateway_0bu2ybs" /> + <bpmn:sequenceFlow id="SequenceFlow_12bz15k" name="yes" sourceRef="ExclusiveGateway_0bu2ybs" targetRef="Task_1uwp7nt"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackSetVnfInMaintenanceFlag") == true]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_0bie3cu" sourceRef="StartEvent_1" targetRef="Task_1k4wj72" /> + <bpmn:sequenceFlow id="SequenceFlow_1ix4dpf" sourceRef="Task_1k4wj72" targetRef="ExclusiveGateway_1lztiva" /> + <bpmn:scriptTask id="Task_1k4wj72" name="PreProcess Rollback Request" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0bie3cu</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ix4dpf</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new RollbackVnf() +uvfm.preProcessRequest(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_0c5ovtd" name="no" sourceRef="ExclusiveGateway_1oswdsn" targetRef="ExclusiveGateway_0bu2ybs" /> + <bpmn:callActivity id="Task_0zktukf" name="Call APP-C VNF Start" calledElement="AppCClient"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionStart" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="rollbackErrorCode" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1lne8je</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ney8l6</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:callActivity id="Task_10x6bcq" name="Call APP-C VNF Unlock" calledElement="AppCClient"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionUnlock" target="action" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="rollbackErrorCode" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_0gsro0z</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_11556y3</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_0uvsonk" name="Unset VF Is Closed Loop DisabledFlag in A&AI" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0skjb2u</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0g18wrd</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new RollbackVnf() +uvfm.setClosedLoopDisabledInAAI(execution, false) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_1uwp7nt" name="Unset VNF In Maintenance Flag in A&AI" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_12bz15k</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0tkvd6f</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new RollbackVnf() +uvfm.setVnfInMaintFlagInAAI(execution, false) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:endEvent id="EndEvent_1ull6mm"> + <bpmn:incoming>SequenceFlow_1p3pyal</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_03qkk4e" name="no" sourceRef="ExclusiveGateway_0bu2ybs" targetRef="Task_1bahewx" /> + <bpmn:sequenceFlow id="SequenceFlow_0tkvd6f" sourceRef="Task_1uwp7nt" targetRef="Task_1bahewx" /> + <bpmn:scriptTask id="Task_1bahewx" name="Set Rollback Result" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_03qkk4e</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0tkvd6f</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1p3pyal</bpmn:outgoing> + <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.* +def uvfm = new RollbackVnf() +uvfm.setRollbackResult(execution) +]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_1p3pyal" sourceRef="Task_1bahewx" targetRef="EndEvent_1ull6mm" /> + <bpmn:exclusiveGateway id="ExclusiveGateway_1lztiva" name="Resume Traffic?" default="SequenceFlow_0mpoa26"> + <bpmn:incoming>SequenceFlow_1ix4dpf</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0mpoa26</bpmn:outgoing> + <bpmn:outgoing>SequenceFlow_05ihl7f</bpmn:outgoing> + </bpmn:exclusiveGateway> + <bpmn:sequenceFlow id="SequenceFlow_0mpoa26" name="no" sourceRef="ExclusiveGateway_1lztiva" targetRef="ExclusiveGateway_0dysixy" /> + <bpmn:sequenceFlow id="SequenceFlow_05ihl7f" name="yes" sourceRef="ExclusiveGateway_1lztiva" targetRef="Task_0d4mz7a"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackQuiesceTraffic") == true]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_1pirwg0" sourceRef="Task_0d4mz7a" targetRef="ExclusiveGateway_0dysixy" /> + <bpmn:callActivity id="Task_0d4mz7a" name="Call APP-C Resume Traffic" calledElement="AppCClient"> + <bpmn:extensionElements> + <camunda:in source="msoRequestId" target="msoRequestId" /> + <camunda:in source="actionResumeTraffic" target="action" /> + <camunda:in source="payload" target="payload" /> + <camunda:in source="vnfId" target="vnfId" /> + <camunda:in source="vnfName" target="vnfName" /> + <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" /> + <camunda:out source="errorCode" target="rollbackErrorCode" /> + <camunda:in source="controllerType" target="controllerType" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_05ihl7f</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1pirwg0</bpmn:outgoing> + </bpmn:callActivity> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="RollbackVnf"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="164" y="154" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="182" y="190" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0dysixy_di" bpmnElement="ExclusiveGateway_0dysixy" isMarkerVisible="true"> + <dc:Bounds x="786" y="147" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="784" y="197" width="54" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1iuuwqx_di" bpmnElement="ExclusiveGateway_1iuuwqx" isMarkerVisible="true"> + <dc:Bounds x="1040" y="147" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1032" y="197" width="65" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_1oswdsn_di" bpmnElement="ExclusiveGateway_1oswdsn" isMarkerVisible="true"> + <dc:Bounds x="1297" y="147" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1279" y="197" width="86" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ExclusiveGateway_0bu2ybs_di" bpmnElement="ExclusiveGateway_0bu2ybs" isMarkerVisible="true"> + <dc:Bounds x="1532" y="147" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1520" y="197" width="73" height="36" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1lne8je_di" bpmnElement="SequenceFlow_1lne8je"> + <di:waypoint xsi:type="dc:Point" x="811" y="147" /> + <di:waypoint xsi:type="dc:Point" x="811" y="61" /> + <di:waypoint xsi:type="dc:Point" x="877" y="61" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="817" y="104" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tj5bkd_di" bpmnElement="SequenceFlow_0tj5bkd"> + <di:waypoint xsi:type="dc:Point" x="836" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1040" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="932" y="151" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ney8l6_di" bpmnElement="SequenceFlow_1ney8l6"> + <di:waypoint xsi:type="dc:Point" x="977" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1065" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1065" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1021" y="46" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0gsro0z_di" bpmnElement="SequenceFlow_0gsro0z"> + <di:waypoint xsi:type="dc:Point" x="1065" y="147" /> + <di:waypoint xsi:type="dc:Point" x="1065" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1143" y="61" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1071" y="94" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0b2y2dw_di" bpmnElement="SequenceFlow_0b2y2dw"> + <di:waypoint xsi:type="dc:Point" x="1090" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1297" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1188" y="147" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_11556y3_di" bpmnElement="SequenceFlow_11556y3"> + <di:waypoint xsi:type="dc:Point" x="1243" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1322" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1322" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1283" y="46" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0skjb2u_di" bpmnElement="SequenceFlow_0skjb2u"> + <di:waypoint xsi:type="dc:Point" x="1322" y="147" /> + <di:waypoint xsi:type="dc:Point" x="1322" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1376" y="61" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1328" y="94" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0g18wrd_di" bpmnElement="SequenceFlow_0g18wrd"> + <di:waypoint xsi:type="dc:Point" x="1476" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1557" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1557" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1517" y="46" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_12bz15k_di" bpmnElement="SequenceFlow_12bz15k"> + <di:waypoint xsi:type="dc:Point" x="1557" y="147" /> + <di:waypoint xsi:type="dc:Point" x="1557" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1600" y="61" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1563" y="94" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0bie3cu_di" bpmnElement="SequenceFlow_0bie3cu"> + <di:waypoint xsi:type="dc:Point" x="200" y="172" /> + <di:waypoint xsi:type="dc:Point" x="315" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="258" y="157" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ix4dpf_di" bpmnElement="SequenceFlow_1ix4dpf"> + <di:waypoint xsi:type="dc:Point" x="415" y="172" /> + <di:waypoint xsi:type="dc:Point" x="524" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="470" y="157" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_12bnvgq_di" bpmnElement="Task_1k4wj72"> + <dc:Bounds x="315" y="132" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0c5ovtd_di" bpmnElement="SequenceFlow_0c5ovtd"> + <di:waypoint xsi:type="dc:Point" x="1347" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1532" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1434" y="147" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_0gw56ug_di" bpmnElement="Task_0zktukf"> + <dc:Bounds x="877" y="21" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_04vh5qa_di" bpmnElement="Task_10x6bcq"> + <dc:Bounds x="1143" y="21" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_0k4zdeb_di" bpmnElement="Task_0uvsonk"> + <dc:Bounds x="1376" y="21" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1uergdm_di" bpmnElement="Task_1uwp7nt"> + <dc:Bounds x="1600" y="21" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1ull6mm_di" bpmnElement="EndEvent_1ull6mm"> + <dc:Bounds x="1909" y="145" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1927" y="181" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_03qkk4e_di" bpmnElement="SequenceFlow_03qkk4e"> + <di:waypoint xsi:type="dc:Point" x="1582" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1664" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1664" y="172" /> + <di:waypoint xsi:type="dc:Point" x="1728" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1678" y="145" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0tkvd6f_di" bpmnElement="SequenceFlow_0tkvd6f"> + <di:waypoint xsi:type="dc:Point" x="1700" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1778" y="61" /> + <di:waypoint xsi:type="dc:Point" x="1778" y="123" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1739" y="46" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1hobybp_di" bpmnElement="Task_1bahewx"> + <dc:Bounds x="1728" y="123" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1p3pyal_di" bpmnElement="SequenceFlow_1p3pyal"> + <di:waypoint xsi:type="dc:Point" x="1829" y="163" /> + <di:waypoint xsi:type="dc:Point" x="1877" y="163" /> + <di:waypoint xsi:type="dc:Point" x="1877" y="163" /> + <di:waypoint xsi:type="dc:Point" x="1909" y="163" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1892" y="163" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ExclusiveGateway_1lztiva_di" bpmnElement="ExclusiveGateway_1lztiva" isMarkerVisible="true"> + <dc:Bounds x="524" y="147" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="508" y="197" width="81" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0mpoa26_di" bpmnElement="SequenceFlow_0mpoa26"> + <di:waypoint xsi:type="dc:Point" x="574" y="172" /> + <di:waypoint xsi:type="dc:Point" x="786" y="172" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="674" y="147" width="12" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_05ihl7f_di" bpmnElement="SequenceFlow_05ihl7f"> + <di:waypoint xsi:type="dc:Point" x="549" y="147" /> + <di:waypoint xsi:type="dc:Point" x="549" y="61" /> + <di:waypoint xsi:type="dc:Point" x="623" y="61" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="555" y="94" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1pirwg0_di" bpmnElement="SequenceFlow_1pirwg0"> + <di:waypoint xsi:type="dc:Point" x="723" y="61" /> + <di:waypoint xsi:type="dc:Point" x="811" y="61" /> + <di:waypoint xsi:type="dc:Point" x="811" y="147" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="767" y="46" width="0" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="CallActivity_1tber80_di" bpmnElement="Task_0d4mz7a"> + <dc:Bounds x="623" y="21" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn new file mode 100644 index 0000000000..7afac44ff6 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn @@ -0,0 +1,68 @@ +<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2"> + <bpmn:process id="SetRefactorServiceDecomp" name="SetRefactorServiceDecomp" isExecutable="true"> + <bpmn:startEvent id="StartEvent_1" name="start"> + <bpmn:outgoing>SequenceFlow_1aizx5q</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1aizx5q" sourceRef="StartEvent_1" targetRef="Task_0gznhje" /> + <bpmn:endEvent id="EndEvent_1yia7od" name="end"> + <bpmn:incoming>SequenceFlow_1fypndb</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_1ipdcwj" sourceRef="Task_0gznhje" targetRef="CallActivity_0fl1ppe" /> + <bpmn:serviceTask id="Task_0gznhje" name="Setup ServiceDecomp" camunda:class="org.onap.so.bpmn.infrastructure.DoCreateServiceInstance.SetupServiceDecomp"> + <bpmn:incoming>SequenceFlow_1aizx5q</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ipdcwj</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:callActivity id="CallActivity_0fl1ppe" name="Call CreateSI" calledElement="CreateServiceInstanceV3"> + <bpmn:extensionElements> + <camunda:in source="ServiceDecomposition" target="ServiceDecomposition" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1ipdcwj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1fypndb</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1fypndb" sourceRef="CallActivity_0fl1ppe" targetRef="EndEvent_1yia7od" /> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="SetRefactorServiceDecomp"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1"> + <dc:Bounds x="173" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="180" y="138" width="22" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1aizx5q_di" bpmnElement="SequenceFlow_1aizx5q"> + <di:waypoint xsi:type="dc:Point" x="209" y="120" /> + <di:waypoint xsi:type="dc:Point" x="254" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="231.5" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_1yia7od_di" bpmnElement="EndEvent_1yia7od"> + <dc:Bounds x="544" y="102" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="553" y="142" width="18" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1ipdcwj_di" bpmnElement="SequenceFlow_1ipdcwj"> + <di:waypoint xsi:type="dc:Point" x="354" y="120" /> + <di:waypoint xsi:type="dc:Point" x="392" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="328" y="99" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0kwb6lz_di" bpmnElement="Task_0gznhje"> + <dc:Bounds x="254" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_0fl1ppe_di" bpmnElement="CallActivity_0fl1ppe"> + <dc:Bounds x="392" y="80" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1fypndb_di" bpmnElement="SequenceFlow_1fypndb"> + <di:waypoint xsi:type="dc:Point" x="492" y="120" /> + <di:waypoint xsi:type="dc:Point" x="544" y="120" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="518" y="99" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> |