diff options
Diffstat (limited to 'bpmn/MSOInfrastructureBPMN/src/main')
11 files changed, 1870 insertions, 5 deletions
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy index 1beb31254f..b6b1adc241 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy @@ -65,7 +65,7 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { String requestAction = execution.getVariable("requestAction")
utils.log("INFO","The requestAction is: " + requestAction, isDebugEnabled)
String recipeParamsFromRequest = execution.getVariable("recipeParams")
- utils.log("INFO","The recipeParams is: " + recipeParams, isDebugEnabled)
+ utils.log("INFO","The recipeParams is: " + recipeParamsFromRequest, isDebugEnabled)
String resourceInput = execution.getVariable("requestInput")
utils.log("INFO","The resourceInput is: " + resourceInput, isDebugEnabled)
//Get ResourceInput Object
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy new file mode 100644 index 0000000000..479e091345 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy @@ -0,0 +1,222 @@ + +/*- + * ============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.openecomp.mso.bpmn.infrastructure.scripts + +import org.json.JSONArray +import org.openecomp.mso.bpmn.common.resource.ResourceRequestBuilder +import org.openecomp.mso.bpmn.core.domain.Resource +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition +import org.openecomp.mso.bpmn.infrastructure.properties.BPMNProperties; +import org.apache.http.HttpResponse +import org.json.JSONArray +import org.openecomp.mso.bpmn.common.recipe.BpmnRestClient +import org.openecomp.mso.bpmn.common.recipe.ResourceInput; + +import static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils; +import groovy.json.* + +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils +import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.rest.APIResponse; +import org.openecomp.mso.rest.RESTClient +import org.openecomp.mso.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.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; + +public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor { + String Prefix="DDELSDNNS_" + + + public void preProcessRequest (DelegateExecution execution) { + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** preProcessSDNCDelete *****", isDebugEnabled) + String msg = "" + + try { + serviceInstanceId = execution.getVariable("serviceInstanceId") + serviceInstanceName = execution.getVariable("serviceInstanceName") + callbackURL = execution.getVariable("sdncCallbackUrl") + requestId = execution.getVariable("msoRequestId") + serviceId = execution.getVariable("productFamilyId") + subscriptionServiceType = execution.getVariable("subscriptionServiceType") + globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId + String recipeParamsFromRequest = execution.getVariable("recipeParams") + String serviceModelInfo = execution.getVariable("serviceModelInfo") + modelInvariantUuid = "" + modelVersion = "" + modelUuid = "" + 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 = "" + } + + sdncRequestId = UUID.randomUUID().toString() + + String recipeParamsFromWf = execution.getVariable("recipeParamXsd") + + String operationType = "Network" + String sdnc_svcAction = "delete" + + 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") + } + + operationType = "delete" + operationType + "Instance" + + if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "overlay")){ + //This will be resolved in R3. + sdnc_svcAction ="deactivate" + operationType = "DeActivateDCINetworkInstance" + } + if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "underlay")){ + //This will be resolved in R3. + operationType ="DeleteNetworkInstance" + } + + String sdncDelete = + """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1" + xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1" + xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1"> + <sdncadapter:RequestHeader> + <sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId> + <sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId> + <sdncadapter:SvcAction>${sdnc_svcAction}</sdncadapter:SvcAction> + <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation> + <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl> + <sdncadapter:MsoAction>${serviceType}</sdncadapter:MsoAction> + </sdncadapter:RequestHeader> + <sdncadapterworkflow:SDNCRequestData> + <request-information> + <request-id>${requestId}</request-id> + <source>MSO</source> + <notification-url/> + <order-number/> + <order-version/> + <request-action>${operationType}</request-action> + </request-information> + <service-information> + <service-id>${serviceId}</service-id> + <subscription-service-type>${subscriptionServiceType}</subscription-service-type> + <onap-model-information> + <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid> + <model-uuid>${modelUuid}</model-uuid> + <model-version>${modelVersion}</model-version> + <model-name>${modelName}</model-name> + </onap-model-information> + <service-instance-id>${serviceInstanceId}</service-instance-id> + <subscriber-name/> + <global-customer-id>${globalSubscriberId}</global-customer-id> + </service-information> + <service-request-input> + <service-instance-name>${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) + utils.log("INFO","sdncDeactivate:\n" + sdncDeactivate, isDebugEnabled) + utils.log("INFO","sdncDelete:\n" + sdncDelete, isDebugEnabled) + + } catch (BpmnError e) { + throw e; + } catch(Exception ex) { + msg = "Exception in preProcessSDNCDelete. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage()) + } + utils.log("INFO"," *****Exit preProcessSDNCDelete *****", isDebugEnabled) + } + + + public void postProcessSDNCDelete(DelegateExecution execution, String response) { + + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessSDNC " + " *****", isDebugEnabled) + String msg = "" + utils.log("INFO"," response " + response, isDebugEnabled) + utils.log("INFO"," *** Exit postProcessSDNC " + " ***", isDebugEnabled) + } + +} diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy index b9319466d9..95747d5a0b 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy @@ -18,7 +18,9 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.bpmn.infrastructure.scripts; +package org.openecomp.mso.bpmn.infrastructure.scripts + +import org.openecomp.mso.bpmn.core.domain.CloudFlavor import java.util.Map import java.util.Currency.CurrencyNameGetter @@ -174,6 +176,12 @@ public class DoCreateVfModule extends VfModuleBase { execution.setVariable("DCVFM_serviceInstanceId", serviceInstanceId) rollbackData.put("VFMODULE", "serviceInstanceId", serviceInstanceId) logDebug("serviceInstanceId: " + serviceInstanceId, isDebugLogEnabled) + //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) @@ -927,6 +935,8 @@ public class DoCreateVfModule extends VfModuleBase { 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 @@ -962,6 +972,10 @@ public class DoCreateVfModule extends VfModuleBase { } 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') diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy new file mode 100644 index 0000000000..1c8a5e70fe --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy @@ -0,0 +1,460 @@ +/*- + * ============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.openecomp.mso.bpmn.infrastructure.scripts + +import org.apache.http.HttpResponse +import org.json.JSONArray +import org.openecomp.mso.bpmn.common.recipe.BpmnRestClient +import org.openecomp.mso.bpmn.common.recipe.ResourceInput +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition; + +import static org.apache.commons.lang3.StringUtils.*; +import groovy.xml.XmlUtil +import groovy.json.* + +import org.openecomp.mso.bpmn.core.domain.ModelInfo +import org.openecomp.mso.bpmn.core.domain.Resource +import org.openecomp.mso.bpmn.core.domain.ServiceInstance +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils +import org.openecomp.mso.bpmn.core.WorkflowException +import org.openecomp.mso.rest.APIResponse; +import org.openecomp.mso.rest.RESTClient +import org.openecomp.mso.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; + +/** + * 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>${paramName}</name> + <value>${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 + { + // 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) + 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() + 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(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") + //here modelVersion is not set, we use modelUuid to decompose the service. + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "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 create generic e2e service flow ***** ", isDebugEnabled) + try { + ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") + List<Resource> deleteResourceList = serviceDecomposition.getServiceResources() + execution.setVariable("deleteResourceList", deleteResourceList) + } 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) + } + } + + 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) + + 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.openecomp.mso/requestsdb"> + <soapenv:Header/> + <soapenv:Body> + <ns:initResourceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb"> + <serviceId>${serviceId}</serviceId> + <operationId>${operationId}</operationId> + <operationType>${operationType}</operationType> + <resourceTemplateUUIDs>${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 postProcessAAIDEL(DelegateExecution execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO"," ***** postProcessAAIDEL ***** ", isDebugEnabled) + String msg = "" + try { + String serviceInstanceId = execution.getVariable("serviceInstanceId") + boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator") + if(!succInAAI){ + msg = "Error deleting Service-instance in AAI" + serviceInstanceId + utils.log("INFO", msg, isDebugEnabled) + WorkflowException workflowException = execution.getVariable("WorkflowException") + utils.logAudit("workflowException: " + workflowException) + if(workflowException != null){ + exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage()) + } + else + { + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + } catch (BpmnError e) { + throw e; + } catch (Exception ex) { + msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIDEL. " + ex.getMessage() + utils.log("INFO", msg, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + utils.log("INFO"," *** Exit postProcessAAIDEL *** ", isDebugEnabled) + } + + /** + * post config request. + */ + public void postConfigRequest(execution){ + //to do + } + +} +
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy new file mode 100644 index 0000000000..6c150df754 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy @@ -0,0 +1,238 @@ + +/*- + * ============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.openecomp.mso.bpmn.infrastructure.scripts + +import groovy.json.JsonSlurper +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.openecomp.mso.bpmn.common.recipe.BpmnRestClient +import org.openecomp.mso.bpmn.common.recipe.ResourceInput +import org.openecomp.mso.bpmn.common.resource.ResourceRequestBuilder +import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils +import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil +import org.openecomp.mso.bpmn.core.domain.Resource +import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition +import org.openecomp.mso.bpmn.core.domain.ServiceInstance +import org.openecomp.mso.bpmn.core.json.JsonUtils +import org.openecomp.mso.bpmn.infrastructure.properties.BPMNProperties + +import static org.apache.commons.lang3.StringUtils.isBlank +import static org.apache.commons.lang3.StringUtils.isBlank + +public class DoDeleteResourcesV1 extends AbstractServiceTaskProcessor { + + 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>${paramName}</name> + <value>${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(execution){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED sequenceResource Process ======== ", isDebugEnabled) + 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) + utils.log("INFO", "resourceSequence: " + resourceSequence, isDebugEnabled) + execution.setVariable("wanResources", wanResources) + utils.log("INFO", " ======== END sequenceResource Process ======== ", isDebugEnabled) + } + + /** + * prepare delete parameters + */ + public void preResourceDelete(execution, resourceName){ + + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + + utils.log("INFO", " ======== STARTED preResourceDelete Process ======== ", isDebugEnabled) + + 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) + utils.log("INFO", "Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + " resourceInstanceId: " + + resourceInstanceUUID + " resourceType: " + resourceName, isDebugEnabled) + } + } + + utils.log("INFO", " ======== END preResourceDelete Process ======== ", isDebugEnabled) + } + + + /** + * Execute delete workflow for resource + */ + public void executeResourceDelete(execution) { + def isDebugEnabled=execution.getVariable("isDebugLogEnabled") + utils.log("INFO", "======== Start executeResourceDelete Process ======== ", isDebugEnabled) + String requestId = execution.getVariable("msoRequestId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + String serviceType = execution.getVariable("serviceType") + ResourceInput resourceInput = execution.getVariable("resourceInput") + String requestAction = resourceInput.getOperationType() + JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceUuid(), requestAction) + String recipeUri = resourceRecipe.getString("orchestrationUri") + String recipeTimeOut = resourceRecipe.getString("recipeTimeout") + String recipeParamXsd = resourceRecipe.get("paramXSD") + HttpResponse resp = BpmnRestClient.post(recipeUri, requestId, recipeTimeout, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd) + utils.log("INFO", " ======== END executeResourceDelete Process ======== ", isDebugEnabled) + } + + + public void parseNextResource(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> resourceSequence = execution.getVariable("resourceSequence") + if(nextIndex >= resourceSequence.size()){ + execution.setVariable("allResourceFinished", "true") + }else{ + execution.setVariable("allResourceFinished", "false") + } + utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled) + } +} diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java new file mode 100644 index 0000000000..70572dc94a --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei 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.openecomp.mso.bpmn.infrastructure.properties; + +import org.openecomp.mso.logger.MessageEnum; +import org.openecomp.mso.logger.MsoLogger; +import org.openecomp.mso.properties.MsoPropertiesException; +import org.openecomp.mso.properties.MsoPropertiesFactory; + +import java.util.Arrays; +import java.util.List; + +public class BPMNProperties { + + public static String MSO_PROP_BPMN = "MSO_PROP_BPMN"; + + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA); + + public static String getProperty(String key, String defaultValue) { + String value; + try { + value = new MsoPropertiesFactory().getMsoJavaProperties(MSO_PROP_BPMN).getProperty(key, defaultValue); + } catch (MsoPropertiesException e) { + msoLogger.error (MessageEnum.NO_PROPERTIES, "Unknown. Mso Properties ID not found in cache: " + + MSO_PROP_BPMN, "BPMN", "", MsoLogger.ErrorCode.DataError, + "Exception - Mso Properties ID not found in cache", e); + return null; + } + msoLogger.debug("Config read for " + MSO_PROP_BPMN + " - key:" + key + " value:" + value); + return value; + } + + public static List<String> getResourceSequenceProp() { + String resource_sequence = getProperty("resource_sequence", null); + if (resource_sequence != null) { + String[] resourceSequence = resource_sequence.split(","); + return Arrays.asList(resource_sequence); + } + return Arrays.asList(ResourceSequence.RESOURCE_EPC, + ResourceSequence.RESOURCE_IMS, + ResourceSequence.RESOUCE_OVERLAY, + ResourceSequence.RESOURCE_UNDERLAY); + } +} diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/ResourceSequence.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/ResourceSequence.java new file mode 100644 index 0000000000..86e5d30b11 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/ResourceSequence.java @@ -0,0 +1,30 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei 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.openecomp.mso.bpmn.infrastructure.properties; + +public final class ResourceSequence { + + public static final String RESOURCE_IMS = "ims"; + public static final String RESOURCE_EPC = "epc"; + public static final String RESOUCE_OVERLAY = "overlay"; + public static final String RESOURCE_UNDERLAY = "underlay"; + + private ResourceSequence() {} +}
\ No newline at end of file diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn index 289128d95f..013b5b2504 100644 --- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns: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: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> @@ -22,7 +22,7 @@ ex.processJavaException(execution)]]></bpmn:script> <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="DoCustomDeleteE2EServiceInstance"> + <bpmn:callActivity id="CallActivity_1vyx9hu" name="Call DoCustomDeleteE2EServiceInstance " calledElement="DoDeleteE2EServiceInstance"> <bpmn:extensionElements> <camunda:out source="WorkflowException" target="WorkflowException" /> <camunda:in source="msoRequestId" target="msoRequestId" /> @@ -139,7 +139,7 @@ csi.sendSyncResponse(execution)]]></bpmn:script> </bpmn:process> <bpmn:error id="Error_1erlsmy" name="MSO Workflow Exception" errorCode="MSOWorkflowException" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteCustomE2EServiceInstance"> <bpmndi:BPMNShape id="StartEvent_00m8zen_di" bpmnElement="StartEvent_00m8zen"> <dc:Bounds x="577" y="209" width="36" height="36" /> <bpmndi:BPMNLabel> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteSDNCNetworkResource.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteSDNCNetworkResource.bpmn new file mode 100644 index 0000000000..c730c8e2de --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteSDNCNetworkResource.bpmn @@ -0,0 +1,156 @@ +<?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="DeleteSDNCNetworkResource" name="DeleteSDNCNetworkResource" isExecutable="true"> + <bpmn:startEvent id="createNS_StartEvent" name="deleteNS_StartEvent"> + <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing> + </bpmn:startEvent> + <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="Task_1d5rrfs" /> + <bpmn:endEvent id="EndEvent_1x6k78c" name="Delete SDNC call end"> + <bpmn:incoming>SequenceFlow_1ba6i0r</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_092fygq" sourceRef="Task_0i59nr9" targetRef="Task_1cglzlg" /> + <bpmn:serviceTask id="Task_0i59nr9" name="Call Custom Delete SDNC Overlay" camunda:class="org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1twf9nk</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_092fygq</bpmn:outgoing> + </bpmn:serviceTask> + <bpmn:subProcess id="SubProcess_0rd2egn" triggeredByEvent="true"> + <bpmn:startEvent id="StartEvent_1dikunf"> + <bpmn:outgoing>SequenceFlow_00oxyoj</bpmn:outgoing> + <bpmn:errorEventDefinition /> + </bpmn:startEvent> + <bpmn:endEvent id="EndEvent_1bbyk46"> + <bpmn:incoming>SequenceFlow_0k06srk</bpmn:incoming> + </bpmn:endEvent> + <bpmn:sequenceFlow id="SequenceFlow_00oxyoj" sourceRef="StartEvent_1dikunf" targetRef="Task_0kqrld2" /> + <bpmn:sequenceFlow id="SequenceFlow_0k06srk" sourceRef="Task_0kqrld2" targetRef="EndEvent_1bbyk46" /> + <bpmn:scriptTask id="Task_0kqrld2" name="Log / Print Unexpected Error"> + <bpmn:incoming>SequenceFlow_00oxyoj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0k06srk</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.* +ExceptionUtil ex = new ExceptionUtil() +ex.processJavaException(execution)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:subProcess> + <bpmn:sequenceFlow id="SequenceFlow_1twf9nk" sourceRef="Task_1t687g1" targetRef="Task_0i59nr9" /> + <bpmn:sequenceFlow id="SequenceFlow_1ba6i0r" sourceRef="Task_1cglzlg" targetRef="EndEvent_1x6k78c" /> + <bpmn:scriptTask id="Task_1t687g1" name="Pre Resource Delete"> + <bpmn:incoming>SequenceFlow_01medil</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1twf9nk</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dsdncr = new DeleteSDNCNetworkResource() +dsdncr.preProcessSDNCDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="Task_1cglzlg" name="Post Resource Delete"> + <bpmn:incoming>SequenceFlow_092fygq</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ba6i0r</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dsdncr = new DeleteSDNCNetworkResource() +dsdncr.postProcessSDNCDelete(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:sequenceFlow id="SequenceFlow_01medil" sourceRef="Task_1d5rrfs" targetRef="Task_1t687g1" /> + <bpmn:scriptTask id="Task_1d5rrfs" name="Set RecipeParam"> + <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_01medil</bpmn:outgoing> + <bpmn:script><![CDATA[String recipeParamXsdDemo=""" +{"operationType":"GRE"}""" + +String recipeParamXsd="" +execution.setVariable("recipeParamXsd", recipeParamXsd)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteSDNCNetworkResource"> + <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent"> + <dc:Bounds x="-168" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-193" y="147" width="88" height="25" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln"> + <di:waypoint xsi:type="dc:Point" x="-132" y="129" /> + <di:waypoint xsi:type="dc:Point" x="-60" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="-141" y="108" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c"> + <dc:Bounds x="722" y="111" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="682" y="153" width="88" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_092fygq_di" bpmnElement="SequenceFlow_092fygq"> + <di:waypoint xsi:type="dc:Point" x="419" y="129" /> + <di:waypoint xsi:type="dc:Point" x="527" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="428" y="107.5" width="90" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_1lqz0ta_di" bpmnElement="Task_0i59nr9"> + <dc:Bounds x="319" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="SubProcess_1u3lwl3_di" bpmnElement="SubProcess_0rd2egn" isExpanded="true"> + <dc:Bounds x="38" y="273" width="350" height="200" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="StartEvent_0eyldml_di" bpmnElement="StartEvent_1dikunf"> + <dc:Bounds x="69" y="340" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="41" y="378" width="90" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="EndEvent_1bbyk46_di" bpmnElement="EndEvent_1bbyk46"> + <dc:Bounds x="333" y="340" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="306" y="379" width="90" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_00oxyoj_di" bpmnElement="SequenceFlow_00oxyoj"> + <di:waypoint xsi:type="dc:Point" x="105" y="358" /> + <di:waypoint xsi:type="dc:Point" x="165" y="358" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="90" y="337" width="90" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0k06srk_di" bpmnElement="SequenceFlow_0k06srk"> + <di:waypoint xsi:type="dc:Point" x="265" y="358" /> + <di:waypoint xsi:type="dc:Point" x="333" y="358" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="254" y="337" width="90" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1b3k692_di" bpmnElement="Task_0kqrld2"> + <dc:Bounds x="165" y="318" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_1twf9nk_di" bpmnElement="SequenceFlow_1twf9nk"> + <di:waypoint xsi:type="dc:Point" x="213" y="129" /> + <di:waypoint xsi:type="dc:Point" x="319" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="266" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ba6i0r_di" bpmnElement="SequenceFlow_1ba6i0r"> + <di:waypoint xsi:type="dc:Point" x="627" y="129" /> + <di:waypoint xsi:type="dc:Point" x="722" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="674.5" y="108" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_1t116cs_di" bpmnElement="Task_1t687g1"> + <dc:Bounds x="113" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_18zliw7_di" bpmnElement="Task_1cglzlg"> + <dc:Bounds x="527" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_01medil_di" bpmnElement="SequenceFlow_01medil"> + <di:waypoint xsi:type="dc:Point" x="40" y="129" /> + <di:waypoint xsi:type="dc:Point" x="113" y="129" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="76.5" y="107.5" width="0" height="13" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ScriptTask_0f9etr5_di" bpmnElement="Task_1d5rrfs"> + <dc:Bounds x="-60" y="89" width="100" height="80" /> + </bpmndi:BPMNShape> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn new file mode 100644 index 0000000000..47f3db5c9a --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn @@ -0,0 +1,380 @@ +<?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="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.openecomp.mso.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:callActivity id="CallActivity_06izbke" name="Call AAI GenericDelete Service " calledElement="GenericDeleteService"> + <bpmn:extensionElements> + <camunda:in source="serviceInstanceId" target="GENDS_serviceInstanceId" /> + <camunda:in source="serviceType" target="GENDS_serviceType" /> + <camunda:in source="globalSubscriberId" target="GENDS_globalCustomerId" /> + <camunda:in sourceExpression="service-instance" target="GENDS_type" /> + <camunda:out source="GENDS_FoundIndicator" target="GENDS_FoundIndicator" /> + <camunda:in sourceExpression="""" target="GENGS_serviceType" /> + <camunda:out source="GENDS_SuccessIndicator" target="GENDS_SuccessIndicator" /> + <camunda:out source="WorkflowException" target="WorkflowExcpeton" /> + </bpmn:extensionElements> + <bpmn:incoming>SequenceFlow_1cevtpy</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0g6bxqw</bpmn:outgoing> + </bpmn:callActivity> + <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.openecomp.mso.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteE2EServiceInstance() +ddsi.postProcessAAIGET(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_01erufg" name="Post Process AAI Delete" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_0g6bxqw</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddsi = new DoDeleteE2EServiceInstance() +ddsi.postProcessAAIDEL(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.openecomp.mso.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_0g6bxqw" sourceRef="CallActivity_06izbke" targetRef="ScriptTask_01erufg" /> + <bpmn:sequenceFlow id="SequenceFlow_0vi0sv6" sourceRef="ScriptTask_1rtnsh8" targetRef="StartEvent_1qh5a34" /> + <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.openecomp.mso.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:intermediateCatchEvent id="StartEvent_1irom2x" name="Decompose Service"> + <bpmn:outgoing>SequenceFlow_1q2mqnm</bpmn:outgoing> + <bpmn:linkEventDefinition name="DecomposeService" /> + </bpmn:intermediateCatchEvent> + <bpmn:sequenceFlow id="SequenceFlow_1q2mqnm" sourceRef="StartEvent_1irom2x" targetRef="Task_1ldvug1" /> + <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="StartEvent_09zdoq6" name="Start Delete Resources"> + <bpmn:outgoing>SequenceFlow_1961633</bpmn:outgoing> + <bpmn:linkEventDefinition name="StartDeleteResource" /> + </bpmn:intermediateCatchEvent> + <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_1961633" sourceRef="StartEvent_09zdoq6" targetRef="ScriptTask_146jt8v" /> + <bpmn:scriptTask id="Task_1ldvug1" name="Prepare Decompose Service"> + <bpmn:incoming>SequenceFlow_1q2mqnm</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0fo5vw5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.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:incoming>SequenceFlow_0fo5vw5</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0orw2f8</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:scriptTask id="Task_1yx1n05" name="Post Decompose Service"> + <bpmn:incoming>SequenceFlow_0orw2f8</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0ha8ix9</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def dcsi= new DoDeleteE2EServiceInstance() +dcsi.postDecomposeService(execution)]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:callActivity id="Task_1f5dlsv" name="Delete Resources" calledElement="DoDeleteResource" camunda:calledElementTenantId="DoDeleteResources"> + <bpmn:incoming>SequenceFlow_1j08ko3</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1cevtpy</bpmn:outgoing> + </bpmn:callActivity> + <bpmn:sequenceFlow id="SequenceFlow_1cevtpy" sourceRef="Task_1f5dlsv" targetRef="CallActivity_06izbke" /> + </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="651" y="466" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="579" y="507" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="CallActivity_06izbke_di" bpmnElement="CallActivity_06izbke"> + <dc:Bounds x="259" y="450" width="100" height="80" /> + </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="457" y="444" 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="557" y="484" /> + <di:waypoint xsi:type="dc:Point" x="651" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="559" y="463" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0g6bxqw_di" bpmnElement="SequenceFlow_0g6bxqw"> + <di:waypoint xsi:type="dc:Point" x="359" y="484" /> + <di:waypoint xsi:type="dc:Point" x="407" y="484" /> + <di:waypoint xsi:type="dc:Point" x="407" y="484" /> + <di:waypoint xsi:type="dc:Point" x="457" y="484" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="377" y="478" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <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: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:BPMNShape id="IntermediateCatchEvent_0s6bb2d_di" bpmnElement="StartEvent_1irom2x"> + <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: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="StartEvent_09zdoq6"> + <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: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_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="259" y="490" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="134" y="469" width="90" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions> diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn new file mode 100644 index 0000000000..d8dea30ad8 --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn @@ -0,0 +1,304 @@ +<?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="DoDeleteResourceV1" name="DoDeleteResourceV1" 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"> + <bpmn:incoming>SequenceFlow_1oil1t3</bpmn:incoming> + <bpmn:incoming>SequenceFlow_13nyd1j</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1qm7owo</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddrs = new DoDeleteResource() +ddrs.preResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_15zy0jf" name="Execute Delete Resource Recipe"> + <bpmn:incoming>SequenceFlow_1qm7owo</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_1ly5jrs</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +String resourceName = execution.getVariable("resourceType") +def ddr = new DoDeleteResource() +ddr.executeResourceDelete(execution, resourceName )]]></bpmn:script> + </bpmn:scriptTask> + <bpmn:scriptTask id="ScriptTask_1gf78zz" name="Parse Next Resource" scriptFormat="groovy"> + <bpmn:incoming>SequenceFlow_1ly5jrs</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_0i1gez5</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddr = new DoDeleteResource() +ddsr.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="ScriptTask_15zy0jf" /> + <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.openecomp.mso.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:serviceTask id="ServiceTask_176j3rl" name="Call Delete SDNC Service Topology" camunda:class="org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask"> + <bpmn:incoming>SequenceFlow_1s1nnmj</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_174yrgl</bpmn:outgoing> + </bpmn:serviceTask> + <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="ServiceTask_176j3rl"> + <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" ) == "true" )}]]></bpmn:conditionExpression> + </bpmn:sequenceFlow> + <bpmn:sequenceFlow id="SequenceFlow_174yrgl" sourceRef="ServiceTask_176j3rl" targetRef="ExclusiveGateway_1jybr0n" /> + <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_174yrgl</bpmn:incoming> + <bpmn:incoming>SequenceFlow_0lk19rm</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.openecomp.mso.bpmn.infrastructure.scripts.* +def ddrs = new DoDeleteResource() +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"> + <bpmn:incoming>SequenceFlow_0stqur4</bpmn:incoming> + <bpmn:outgoing>SequenceFlow_14dezx8</bpmn:outgoing> + <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.* +def ddrs = new DoDeleteResource() +ddrs.preProcessRequest(execution)]]></bpmn:script> + </bpmn:scriptTask> + </bpmn:process> + <bpmndi:BPMNDiagram id="BPMNDiagram_1"> + <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResourceV1"> + <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="587" y="233" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape id="ScriptTask_1gf78zz_di" bpmnElement="ScriptTask_1gf78zz"> + <dc:Bounds x="802" 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="587" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="539.5" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_1ly5jrs_di" bpmnElement="SequenceFlow_1ly5jrs"> + <di:waypoint xsi:type="dc:Point" x="687" y="273" /> + <di:waypoint xsi:type="dc:Point" x="802" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="744.5" y="252" width="0" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_0i1gez5_di" bpmnElement="SequenceFlow_0i1gez5"> + <di:waypoint xsi:type="dc:Point" x="902" y="273" /> + <di:waypoint xsi:type="dc:Point" x="1011" y="273" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="956.5" y="252" width="0" 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="ServiceTask_176j3rl_di" bpmnElement="ServiceTask_176j3rl"> + <dc:Bounds x="604" y="566" width="100" height="80" /> + </bpmndi:BPMNShape> + <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="992.2009291521485" y="588" width="36" height="36" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="977" y="628" width="72" height="24" /> + </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="604" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="516" y="585" width="20" height="12" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge id="SequenceFlow_174yrgl_di" bpmnElement="SequenceFlow_174yrgl"> + <di:waypoint xsi:type="dc:Point" x="704" y="606" /> + <di:waypoint xsi:type="dc:Point" x="827" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="765.5" y="585" width="0" height="12" /> + </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="852" y="721" /> + <di:waypoint xsi:type="dc:Point" x="852" y="631" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="629" y="700" width="15" height="12" /> + </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="827" y="581" width="50" height="50" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="815" y="635" width="75" height="24" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0o21fg8_di" bpmnElement="SequenceFlow_0o21fg8"> + <di:waypoint xsi:type="dc:Point" x="877" y="606" /> + <di:waypoint xsi:type="dc:Point" x="992" y="606" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="934.5" y="585" width="0" 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:BPMNPlane> + </bpmndi:BPMNDiagram> +</bpmn:definitions>
\ No newline at end of file |