2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.scripts
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.delegate.DelegateExecution
27 import org.onap.aai.domain.yang.L3Network
28 import org.onap.so.bpmn.common.scripts.AaiUtil
29 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
30 import org.onap.so.bpmn.common.scripts.ExceptionUtil
31 import org.onap.so.bpmn.common.scripts.MsoUtils
32 import org.onap.so.bpmn.common.scripts.NetworkUtils
33 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
34 import org.onap.so.bpmn.common.scripts.VidUtils
35 import org.onap.so.bpmn.core.UrnPropertiesReader
36 import org.onap.so.bpmn.core.WorkflowException
37 import org.onap.so.bpmn.core.json.JsonUtils
38 import org.onap.so.client.HttpClient
39 import org.onap.so.client.HttpClientFactory
40 import org.onap.so.client.aai.AAIObjectType
41 import org.onap.so.client.aai.entities.AAIResultWrapper
42 import org.onap.so.client.aai.entities.Relationships
43 import org.onap.so.client.aai.entities.uri.AAIResourceUri
44 import org.onap.so.client.aai.entities.uri.AAIUriFactory
45 import org.onap.so.client.graphinventory.entities.uri.Depth
46 import org.onap.so.constants.Defaults
47 import org.onap.so.logger.ErrorCode
48 import org.onap.so.logger.MessageEnum
49 import org.slf4j.Logger
50 import org.slf4j.LoggerFactory
52 import org.springframework.web.util.UriUtils
53 import org.onap.so.utils.TargetEntity
55 import groovy.json.JsonOutput
56 import javax.ws.rs.core.Response
58 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
59 private static final Logger logger = LoggerFactory.getLogger( DoDeleteNetworkInstance.class);
61 String Prefix= "DELNWKI_"
62 String groovyClassName = "DoDeleteNetworkInstance"
63 ExceptionUtil exceptionUtil = new ExceptionUtil()
64 JsonUtils jsonUtil = new JsonUtils()
65 VidUtils vidUtils = new VidUtils(this)
66 NetworkUtils networkUtils = new NetworkUtils()
67 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
69 public InitializeProcessVariables(DelegateExecution execution){
70 /* Initialize all the process variables in this block */
72 execution.setVariable(Prefix + "networkRequest", "")
73 execution.setVariable(Prefix + "isSilentSuccess", false)
74 execution.setVariable(Prefix + "Success", false)
76 execution.setVariable(Prefix + "requestId", "")
77 execution.setVariable(Prefix + "source", "")
78 execution.setVariable(Prefix + "lcpCloudRegion", "")
79 execution.setVariable(Prefix + "networkInputs", "")
80 execution.setVariable(Prefix + "tenantId", "")
82 execution.setVariable(Prefix + "queryAAIResponse", "")
83 execution.setVariable(Prefix + "aaiReturnCode", "")
84 execution.setVariable(Prefix + "isAAIGood", false)
85 execution.setVariable(Prefix + "isVfRelationshipExist", false)
87 // AAI query Cloud Region
88 execution.setVariable(Prefix + "queryCloudRegionRequest","")
89 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
90 execution.setVariable(Prefix + "queryCloudRegionResponse","")
91 execution.setVariable(Prefix + "cloudRegionPo","")
92 execution.setVariable(Prefix + "cloudRegionSdnc","")
94 execution.setVariable(Prefix + "deleteNetworkRequest", "")
95 execution.setVariable(Prefix + "deleteNetworkResponse", "")
96 execution.setVariable(Prefix + "networkReturnCode", "")
97 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
99 execution.setVariable(Prefix + "deleteSDNCRequest", "")
100 execution.setVariable(Prefix + "deleteSDNCResponse", "")
101 execution.setVariable(Prefix + "sdncReturnCode", "")
102 execution.setVariable(Prefix + "sdncResponseSuccess", false)
104 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
105 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
106 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
107 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
109 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
110 execution.setVariable(Prefix + "isException", false)
115 // **************************************************
116 // Pre or Prepare Request Section
117 // **************************************************
119 public void preProcessRequest (DelegateExecution execution) {
121 execution.setVariable("prefix",Prefix)
123 logger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
125 // initialize flow variables
126 InitializeProcessVariables(execution)
129 // get incoming message/input
130 execution.setVariable("action", "DELETE")
131 String deleteNetwork = execution.getVariable("bpmnRequest")
132 if (deleteNetwork != null) {
133 if (deleteNetwork.contains("requestDetails")) {
134 // JSON format request is sent, create xml
136 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
137 logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
138 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
140 } catch (Exception ex) {
141 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
142 logger.debug(dataErrorMessage)
143 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
146 // XML format request is sent
150 // vIPR format request is sent, create xml from individual variables
151 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
154 deleteNetwork = utils.formatXml(deleteNetwork)
155 logger.debug(deleteNetwork)
156 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
157 logger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
159 // validate 'backout-on-failure' to override 'mso.rollback'
160 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
161 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
162 logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
164 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
165 execution.setVariable(Prefix + "networkInputs", networkInputs)
168 String messageId = execution.getVariable("testMessageId") // for testing
169 if (messageId == null || messageId == "") {
170 messageId = UUID.randomUUID()
171 logger.debug(Prefix + "messageId, random generated: " + messageId)
173 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
175 execution.setVariable(Prefix + "messageId", messageId)
177 String source = utils.getNodeText(deleteNetwork, "source")
178 execution.setVariable(Prefix + "source", source)
179 logger.debug(Prefix + "source - " + source)
181 String networkId = ""
182 if (utils.nodeExists(networkInputs, "network-id")) {
183 networkId = utils.getNodeText(networkInputs, "network-id")
184 if (networkId == null || networkId == "" || networkId == 'null' ) {
185 sendSyncError(execution)
186 // missing value of network-id
187 String dataErrorMessage = "network-request has missing 'network-id' element/value."
188 logger.debug(" Invalid Request - " + dataErrorMessage)
189 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
193 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
194 def lcpCloudRegion = null
195 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
196 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
197 if (lcpCloudRegion == 'null') {
198 lcpCloudRegion = null
201 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
202 logger.debug("lcpCloudRegion : " + lcpCloudRegion)
204 String tenantId = null
205 if (utils.nodeExists(networkInputs, "tenant-id")) {
206 tenantId = utils.getNodeText(networkInputs, "tenant-id")
207 if (tenantId == 'null') {
212 execution.setVariable(Prefix + "tenantId", tenantId)
213 logger.debug("tenantId : " + tenantId)
215 String sdncVersion = execution.getVariable("sdncVersion")
216 logger.debug("sdncVersion? : " + sdncVersion)
218 // PO Authorization Info / headers Authorization=
219 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
222 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
223 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
224 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
226 } catch (IOException ex) {
227 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
228 logger.debug(dataErrorMessage )
229 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
232 } catch (BpmnError e) {
235 } catch (Exception ex){
237 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
238 logger.debug(exceptionMessage)
239 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
246 public void callRESTQueryAAI (DelegateExecution execution) {
248 execution.setVariable("prefix",Prefix)
250 logger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
253 String networkInputs = execution.getVariable(Prefix + "networkInputs")
254 String networkId = utils.getNodeText(networkInputs, "network-id")
255 networkId = UriUtils.encode(networkId,"UTF-8")
256 ExceptionUtil exceptionUtil = new ExceptionUtil()
257 Boolean isVfRelationshipExist = false
259 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
260 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
261 AAIResultWrapper wrapper = getAAIClient().get(uri);
262 Optional<Relationships> relationships = wrapper.getRelationships()
264 if (l3Network.isPresent()) {
265 execution.setVariable(Prefix + "aaiReturnCode", 200)
266 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
267 execution.setVariable(Prefix + "isAAIGood", true)
268 if (relationships.isPresent()){
269 if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
270 execution.setVariable(Prefix + "isVfRelationshipExist", true)
271 isVfRelationshipExist = true
272 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
273 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
275 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
276 for(AAIResourceUri tenantURI: tenantURIList){
277 if(execution.getVariable(Prefix + "tenantId") == null) {
278 String tenantId = tenantURI.getURIKeys().get("tenant-id")
279 execution.setVariable(Prefix + "tenantId", tenantId)
280 logger.debug(" Get AAI getTenantId() : " + tenantId)
283 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
284 for(AAIResourceUri tenantURI: cloudRegionURIList){
285 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
286 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
287 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
288 logger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
293 logger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
295 // not found // empty aai response
296 execution.setVariable(Prefix + "aaiReturnCode", 404)
297 execution.setVariable(Prefix + "isAAIGood", false)
298 execution.setVariable(Prefix + "isSilentSuccess", true)
299 logger.debug(" AAI Query is Silent Success")
301 logger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
302 } catch (Exception ex) {
304 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
305 logger.debug(exceptionMessage)
306 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
312 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
314 execution.setVariable("prefix", Prefix)
316 logger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
319 String networkInputs = execution.getVariable(Prefix + "networkInputs")
320 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
321 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
323 AaiUtil aaiUtil = new AaiUtil(this)
325 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
326 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
328 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
330 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
331 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
333 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
334 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
335 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
338 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
339 logger.debug(dataErrorMessage)
340 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
344 } catch (BpmnError e) {
347 } catch (Exception ex) {
349 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
350 logger.debug(exceptionMessage)
351 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
357 public void prepareNetworkRequest (DelegateExecution execution) {
359 execution.setVariable("prefix", Prefix)
361 logger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
362 ExceptionUtil exceptionUtil = new ExceptionUtil()
365 String networkRequest = execution.getVariable(Prefix + "networkRequest")
366 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
367 String tenantId = execution.getVariable(Prefix + "tenantId")
369 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
370 String networkType = l3Network.getNetworkType()
371 String networkId = l3Network.getNetworkId()
373 String networkStackId = ""
374 networkStackId = l3Network.getHeatStackId()
375 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
376 networkStackId = "force_delete"
379 String requestId = execution.getVariable("msoRequestId")
380 if (requestId != null) {
381 execution.setVariable("mso-request-id", requestId)
383 requestId = execution.getVariable("mso-request-id")
385 String serviceInstanceId = execution.getVariable("serviceInstanceId")
387 // Added new Elements
388 String messageId = execution.getVariable(Prefix + "messageId")
389 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
390 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
392 String modelCustomizationUuid = ""
393 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
394 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
395 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
397 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
400 String deleteNetworkRequest = """
401 <deleteNetworkRequest>
402 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
403 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
404 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
405 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
406 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
407 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
408 <skipAAI>true</skipAAI>
410 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
411 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
413 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
414 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
415 </deleteNetworkRequest>
418 logger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
420 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
421 logger.debug(buildDeleteNetworkRequestAsString)
422 logger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
424 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
425 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
426 logger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
428 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
429 logger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
431 catch (Exception ex) {
433 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
434 logger.debug(exceptionMessage)
435 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
441 * This method is used instead of an HTTP Connector task because the
442 * connector does not allow DELETE with a body.
444 public void sendRequestToVnfAdapter(DelegateExecution execution) {
445 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
446 'execution=' + execution.getId() +
449 logger.trace('Entered ' + method)
453 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
454 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
456 URL url = new URL(vnfAdapterUrl)
457 HttpClient httpClient = new HttpClientFactory().newXmlClient(url, TargetEntity.OPENSTACK_ADAPTER)
458 httpClient.accept = "application/xml"
459 httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
460 Response response = httpClient.delete(vnfAdapterRequest)
462 execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
463 execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
465 } catch (Exception ex) {
467 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
468 logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
469 "BPMN", ErrorCode.UnknownError.getValue(),
470 "Exception is:\n" + ex);
471 logger.debug(exceptionMessage)
472 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
478 public void prepareSDNCRequest (DelegateExecution execution) {
480 execution.setVariable("prefix", Prefix)
482 logger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
486 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
487 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
489 String networkId = ""
490 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
491 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
493 if (networkId == 'null') {networkId = ""}
495 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
497 // get/set 'msoRequestId' and 'mso-request-id'
498 String requestId = execution.getVariable("msoRequestId")
499 if (requestId != null) {
500 execution.setVariable("mso-request-id", requestId)
502 requestId = execution.getVariable("mso-request-id")
504 execution.setVariable(Prefix + "requestId", requestId)
505 logger.debug(Prefix + "requestId " + requestId)
506 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
508 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
509 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
510 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
511 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
512 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
513 logger.debug(sndcTopologyDeleteRequesAsString)
514 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
515 logger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
517 } catch (Exception ex) {
519 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
520 logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
521 "BPMN", ErrorCode.UnknownError.getValue(),
522 "Exception is:\n" + ex);
523 logger.debug(exceptionMessage)
524 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
530 public void prepareRpcSDNCRequest (DelegateExecution execution) {
532 execution.setVariable("prefix", Prefix)
534 logger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
538 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
539 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
541 String networkId = ""
542 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
543 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
545 if (networkId == 'null') {networkId = ""}
547 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
549 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
550 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
551 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
552 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
553 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
554 logger.debug(sndcTopologyDeleteRequesAsString)
555 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
556 logger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
558 } catch (Exception ex) {
560 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
561 logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
562 "BPMN", ErrorCode.UnknownError.getValue(),
563 "Exception is:\n" + ex);
564 logger.debug(exceptionMessage)
565 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
572 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
574 execution.setVariable("prefix",Prefix)
576 logger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
581 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
582 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
583 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
584 String networkId = ""
585 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
586 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
588 if (networkId == 'null') {networkId = ""}
589 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
591 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
592 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
593 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
594 logger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
597 } catch (Exception ex) {
598 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
599 logger.debug(exceptionMessage)
600 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
606 // **************************************************
607 // Post or Validate Response Section
608 // **************************************************
610 public void validateNetworkResponse (DelegateExecution execution) {
612 execution.setVariable("prefix", Prefix)
614 logger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
617 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
618 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
620 logger.debug(" Network Adapter responseCode: " + returnCode)
621 logger.debug("Network Adapter Response - " + "\n" + networkResponse)
622 logger.debug(networkResponse)
624 String errorMessage = ""
625 if (returnCode == "200") {
626 logger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
628 // prepare rollback data
629 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
630 if ((rollbackData == null) || (rollbackData.isEmpty())) {
631 logger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
632 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
634 String rollbackNetwork =
635 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
637 </NetworkAdapter:rollbackNetwork>"""
638 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
639 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
640 logger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
644 } else { // network error
645 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
646 if (networkResponse.contains("deleteNetworkError") ) {
647 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
648 errorMessage = utils.getNodeText(networkResponse, "message")
649 errorMessage = "Received error from Network Adapter: " + errorMessage
650 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
652 } else { // CatchAll exception
653 if (returnCode == "500") {
654 errorMessage = "JBWEB000065: HTTP Status 500."
656 errorMessage = "Return code is " + returnCode
658 errorMessage = "Received error from Network Adapter: " + errorMessage
659 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
663 } else { // CatchAll exception
664 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
665 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
671 } catch (BpmnError e) {
674 } catch (Exception ex) {
676 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
677 logger.debug(exceptionMessage)
678 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
684 public void validateSDNCResponse (DelegateExecution execution) {
686 execution.setVariable("prefix", Prefix)
688 logger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
690 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
691 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
692 WorkflowException workflowException = execution.getVariable("WorkflowException")
694 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
695 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
697 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
698 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
699 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
701 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
702 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
703 execution.setVariable(Prefix + "isPONR", true)
704 logger.debug("Successfully Validated SDNC Response")
706 logger.debug("Did NOT Successfully Validated SDNC Response")
707 throw new BpmnError("MSOWorkflowException")
712 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
714 execution.setVariable("prefix",Prefix)
716 logger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
718 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
719 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
720 WorkflowException workflowException = execution.getVariable("WorkflowException")
722 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
723 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
725 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
726 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
727 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
729 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
730 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
731 logger.debug("Successfully Validated Rpc SDNC Activate Response")
734 logger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
735 throw new BpmnError("MSOWorkflowException")
740 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
742 execution.setVariable("prefix",Prefix)
744 logger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
749 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
750 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
751 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
752 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
753 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
754 if (networkId == 'null') {networkId = ""}
755 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
757 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
758 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
759 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
760 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
761 logger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
764 } catch (Exception ex) {
765 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
766 logger.debug(exceptionMessage)
767 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
773 public void prepareRollbackData(DelegateExecution execution) {
775 execution.setVariable("prefix",Prefix)
777 logger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
781 Map<String, String> rollbackData = new HashMap<String, String>();
782 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
783 if (rollbackNetworkRequest != null) {
784 if (rollbackNetworkRequest != "") {
785 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
788 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
789 if (rollbackDeactivateSDNCRequest != null) {
790 if (rollbackDeactivateSDNCRequest != "") {
791 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
794 execution.setVariable("rollbackData", rollbackData)
795 logger.debug("** rollbackData : " + rollbackData)
797 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
798 logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
800 } catch (Exception ex) {
801 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
802 logger.debug(exceptionMessage)
803 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
809 public void postProcessResponse (DelegateExecution execution) {
811 execution.setVariable("prefix", Prefix)
813 logger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
817 logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
818 if (execution.getVariable(Prefix + "isException") == false) {
819 execution.setVariable(Prefix + "Success", true)
820 execution.setVariable("WorkflowException", null)
821 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
822 execution.setVariable("rolledBack", false)
824 execution.setVariable("rolledBack", true)
826 prepareSuccessRollbackData(execution) // populate rollbackData
829 execution.setVariable(Prefix + "Success", false)
830 execution.setVariable("rollbackData", null)
831 String exceptionMessage = " Exception encountered in MSO Bpmn. "
832 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
833 logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
834 WorkflowException wfex = execution.getVariable("workflowException")
835 exceptionMessage = wfex.getErrorMessage()
837 if (execution.getVariable(Prefix + "WorkflowException") != null) {
838 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
839 exceptionMessage = pwfex.getErrorMessage()
841 if (execution.getVariable("WorkflowException") != null) {
842 WorkflowException pwfex = execution.getVariable("WorkflowException")
843 exceptionMessage = pwfex.getErrorMessage()
848 // going to the Main flow: a-la-carte or macro
849 logger.debug(" ***** postProcessResponse(), BAD !!!")
850 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
851 throw new BpmnError("MSOWorkflowException")
855 } catch(BpmnError b){
856 logger.debug("Rethrowing MSOWorkflowException")
859 } catch (Exception ex) {
861 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
862 logger.debug(exceptionMessage)
863 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
864 throw new BpmnError("MSOWorkflowException")
870 public void prepareSuccessRollbackData(DelegateExecution execution) {
872 execution.setVariable("prefix",Prefix)
874 logger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
878 if (execution.getVariable("sdncVersion") != '1610') {
879 prepareRpcSDNCDeactivateRollback(execution)
880 prepareRpcSDNCUnassignRollback(execution)
882 prepareSDNCRollback(execution)
885 Map<String, String> rollbackData = new HashMap<String, String>();
886 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
887 if (rollbackSDNCRequest != null) {
888 if (rollbackSDNCRequest != "") {
889 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
892 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
893 if (rollbackNetworkRequest != null) {
894 if (rollbackNetworkRequest != "") {
895 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
898 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
899 if (rollbackDeactivateSDNCRequest != null) {
900 if (rollbackDeactivateSDNCRequest != "") {
901 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
904 execution.setVariable("rollbackData", rollbackData)
906 logger.debug("** rollbackData : " + rollbackData)
907 execution.setVariable("WorkflowException", null)
910 } catch (Exception ex) {
911 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
912 logger.debug(exceptionMessage)
913 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
919 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
921 execution.setVariable("prefix",Prefix)
923 logger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
928 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
929 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
931 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
932 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
933 if (networkId == 'null') {networkId = ""}
934 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
936 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
937 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
938 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
939 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
940 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
941 logger.debug(sndcTopologyDeleteRequesAsString)
942 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
943 logger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
944 logger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
947 } catch (Exception ex) {
948 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
949 logger.debug(exceptionMessage)
950 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
956 public void prepareSDNCRollback (DelegateExecution execution) {
958 execution.setVariable("prefix", Prefix)
960 logger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
965 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
966 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
968 String networkId = ""
969 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
970 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
972 if (networkId == 'null') {networkId = ""}
974 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
976 // get/set 'msoRequestId' and 'mso-request-id'
977 String requestId = execution.getVariable("msoRequestId")
978 if (requestId != null) {
979 execution.setVariable("mso-request-id", requestId)
981 requestId = execution.getVariable("mso-request-id")
983 execution.setVariable(Prefix + "requestId", requestId)
985 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
987 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
988 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
989 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
990 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
991 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
992 logger.debug(sndcTopologyDeleteRequesAsString)
993 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
994 logger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
995 logger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
998 } catch (Exception ex) {
1000 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
1001 logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
1002 "BPMN", ErrorCode.UnknownError.getValue(),
1003 "Exception is:\n" + ex);
1004 logger.debug(exceptionMessage)
1005 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
1011 public void setExceptionFlag(DelegateExecution execution){
1013 execution.setVariable("prefix",Prefix)
1015 logger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1019 execution.setVariable(Prefix + "isException", true)
1021 if (execution.getVariable("SavedWorkflowException1") != null) {
1022 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1024 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1026 logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1028 } catch(Exception ex){
1029 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1030 logger.debug(exceptionMessage)
1031 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1037 // *******************************
1038 // Build Error Section
1039 // *******************************
1041 public void processJavaException(DelegateExecution execution){
1043 execution.setVariable("prefix",Prefix)
1045 logger.debug("Caught a Java Exception")
1046 logger.debug("Started processJavaException Method")
1047 logger.debug("Variables List: " + execution.getVariables())
1048 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1049 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1051 }catch(Exception e){
1052 logger.debug("Caught Exception during processJavaException Method: " + e)
1053 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1054 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1056 logger.debug("Completed processJavaException Method of " + Prefix)