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.onap.so.logger.LoggingAnchor
26 import org.camunda.bpm.engine.delegate.BpmnError
27 import org.camunda.bpm.engine.delegate.DelegateExecution
28 import org.onap.aai.domain.yang.L3Network
29 import org.onap.so.bpmn.common.scripts.AaiUtil
30 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
31 import org.onap.so.bpmn.common.scripts.ExceptionUtil
32 import org.onap.so.bpmn.common.scripts.MsoUtils
33 import org.onap.so.bpmn.common.scripts.NetworkUtils
34 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
35 import org.onap.so.bpmn.common.scripts.VidUtils
36 import org.onap.so.bpmn.core.UrnPropertiesReader
37 import org.onap.so.bpmn.core.WorkflowException
38 import org.onap.so.bpmn.core.json.JsonUtils
39 import org.onap.so.client.HttpClient
40 import org.onap.so.client.HttpClientFactory
41 import org.onap.so.client.aai.AAIObjectType
42 import org.onap.so.client.aai.entities.AAIResultWrapper
43 import org.onap.so.client.aai.entities.Relationships
44 import org.onap.so.client.aai.entities.uri.AAIResourceUri
45 import org.onap.so.client.aai.entities.uri.AAIUriFactory
46 import org.onap.so.client.graphinventory.entities.uri.Depth
47 import org.onap.so.constants.Defaults
48 import org.onap.logging.filter.base.ErrorCode
49 import org.onap.so.logger.MessageEnum
50 import org.slf4j.Logger
51 import org.slf4j.LoggerFactory
53 import org.springframework.web.util.UriUtils
54 import org.onap.logging.filter.base.ONAPComponents;
56 import groovy.json.JsonOutput
57 import javax.ws.rs.core.Response
59 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
60 private static final Logger logger = LoggerFactory.getLogger( DoDeleteNetworkInstance.class);
62 String Prefix= "DELNWKI_"
63 String groovyClassName = "DoDeleteNetworkInstance"
64 ExceptionUtil exceptionUtil = new ExceptionUtil()
65 JsonUtils jsonUtil = new JsonUtils()
66 VidUtils vidUtils = new VidUtils(this)
67 NetworkUtils networkUtils = new NetworkUtils()
68 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
70 public InitializeProcessVariables(DelegateExecution execution){
71 /* Initialize all the process variables in this block */
73 execution.setVariable(Prefix + "networkRequest", "")
74 execution.setVariable(Prefix + "isSilentSuccess", false)
75 execution.setVariable(Prefix + "Success", false)
77 execution.setVariable(Prefix + "requestId", "")
78 execution.setVariable(Prefix + "source", "")
79 execution.setVariable(Prefix + "lcpCloudRegion", "")
80 execution.setVariable(Prefix + "networkInputs", "")
81 execution.setVariable(Prefix + "tenantId", "")
83 execution.setVariable(Prefix + "queryAAIResponse", "")
84 execution.setVariable(Prefix + "aaiReturnCode", "")
85 execution.setVariable(Prefix + "isAAIGood", false)
86 execution.setVariable(Prefix + "isVfRelationshipExist", false)
88 // AAI query Cloud Region
89 execution.setVariable(Prefix + "queryCloudRegionRequest","")
90 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
91 execution.setVariable(Prefix + "queryCloudRegionResponse","")
92 execution.setVariable(Prefix + "cloudRegionPo","")
93 execution.setVariable(Prefix + "cloudRegionSdnc","")
95 execution.setVariable(Prefix + "deleteNetworkRequest", "")
96 execution.setVariable(Prefix + "deleteNetworkResponse", "")
97 execution.setVariable(Prefix + "networkReturnCode", "")
98 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
100 execution.setVariable(Prefix + "deleteSDNCRequest", "")
101 execution.setVariable(Prefix + "deleteSDNCResponse", "")
102 execution.setVariable(Prefix + "sdncReturnCode", "")
103 execution.setVariable(Prefix + "sdncResponseSuccess", false)
105 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
106 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
107 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
108 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
110 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
111 execution.setVariable(Prefix + "isException", false)
116 // **************************************************
117 // Pre or Prepare Request Section
118 // **************************************************
120 public void preProcessRequest (DelegateExecution execution) {
122 execution.setVariable("prefix",Prefix)
124 logger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
126 // initialize flow variables
127 InitializeProcessVariables(execution)
130 // get incoming message/input
131 execution.setVariable("action", "DELETE")
132 String deleteNetwork = execution.getVariable("bpmnRequest")
133 if (deleteNetwork != null) {
134 if (deleteNetwork.contains("requestDetails")) {
135 // JSON format request is sent, create xml
137 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
138 logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
139 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
141 } catch (Exception ex) {
142 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
143 logger.debug(dataErrorMessage)
144 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
147 // XML format request is sent
151 // vIPR format request is sent, create xml from individual variables
152 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
155 deleteNetwork = utils.formatXml(deleteNetwork)
156 logger.debug(deleteNetwork)
157 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
158 logger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
160 // validate 'backout-on-failure' to override 'mso.rollback'
161 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
162 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
163 logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
165 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
166 execution.setVariable(Prefix + "networkInputs", networkInputs)
169 String messageId = execution.getVariable("testMessageId") // for testing
170 if (messageId == null || messageId == "") {
171 messageId = UUID.randomUUID()
172 logger.debug(Prefix + "messageId, random generated: " + messageId)
174 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
176 execution.setVariable(Prefix + "messageId", messageId)
178 String source = utils.getNodeText(deleteNetwork, "source")
179 execution.setVariable(Prefix + "source", source)
180 logger.debug(Prefix + "source - " + source)
182 String networkId = ""
183 if (utils.nodeExists(networkInputs, "network-id")) {
184 networkId = utils.getNodeText(networkInputs, "network-id")
185 if (networkId == null || networkId == "" || networkId == 'null' ) {
186 sendSyncError(execution)
187 // missing value of network-id
188 String dataErrorMessage = "network-request has missing 'network-id' element/value."
189 logger.debug(" Invalid Request - " + dataErrorMessage)
190 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
194 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
195 def lcpCloudRegion = null
196 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
197 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
198 if (lcpCloudRegion == 'null') {
199 lcpCloudRegion = null
202 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
203 logger.debug("lcpCloudRegion : " + lcpCloudRegion)
205 String tenantId = null
206 if (utils.nodeExists(networkInputs, "tenant-id")) {
207 tenantId = utils.getNodeText(networkInputs, "tenant-id")
208 if (tenantId == 'null') {
213 execution.setVariable(Prefix + "tenantId", tenantId)
214 logger.debug("tenantId : " + tenantId)
216 String sdncVersion = execution.getVariable("sdncVersion")
217 logger.debug("sdncVersion? : " + sdncVersion)
219 // PO Authorization Info / headers Authorization=
220 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
223 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
224 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
225 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
227 } catch (IOException ex) {
228 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
229 logger.debug(dataErrorMessage )
230 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
233 } catch (BpmnError e) {
236 } catch (Exception ex){
238 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
239 logger.debug(exceptionMessage)
240 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
247 public void callRESTQueryAAI (DelegateExecution execution) {
249 execution.setVariable("prefix",Prefix)
251 logger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
254 String networkInputs = execution.getVariable(Prefix + "networkInputs")
255 String networkId = utils.getNodeText(networkInputs, "network-id")
256 networkId = UriUtils.encode(networkId,"UTF-8")
257 ExceptionUtil exceptionUtil = new ExceptionUtil()
258 Boolean isVfRelationshipExist = false
260 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
261 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
262 AAIResultWrapper wrapper = getAAIClient().get(uri);
263 Optional<Relationships> relationships = wrapper.getRelationships()
265 if (l3Network.isPresent()) {
266 execution.setVariable(Prefix + "aaiReturnCode", 200)
267 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
268 execution.setVariable(Prefix + "isAAIGood", true)
269 if (relationships.isPresent()){
270 if(!relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
271 execution.setVariable(Prefix + "isVfRelationshipExist", true)
272 isVfRelationshipExist = true
273 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
274 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
276 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
277 for(AAIResourceUri tenantURI: tenantURIList){
278 if(execution.getVariable(Prefix + "tenantId") == null) {
279 String tenantId = tenantURI.getURIKeys().get("tenant-id")
280 execution.setVariable(Prefix + "tenantId", tenantId)
281 logger.debug(" Get AAI getTenantId() : " + tenantId)
284 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
285 for(AAIResourceUri tenantURI: cloudRegionURIList){
286 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
287 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
288 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
289 logger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
294 logger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
296 // not found // empty aai response
297 execution.setVariable(Prefix + "aaiReturnCode", 404)
298 execution.setVariable(Prefix + "isAAIGood", false)
299 execution.setVariable(Prefix + "isSilentSuccess", true)
300 logger.debug(" AAI Query is Silent Success")
302 logger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
303 } catch (Exception ex) {
305 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
306 logger.debug(exceptionMessage)
307 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
313 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
315 execution.setVariable("prefix", Prefix)
317 logger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
320 String networkInputs = execution.getVariable(Prefix + "networkInputs")
321 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
322 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
324 AaiUtil aaiUtil = new AaiUtil(this)
326 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
327 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
329 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
331 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
332 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
334 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
335 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
336 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
339 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
340 logger.debug(dataErrorMessage)
341 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
345 } catch (BpmnError e) {
348 } catch (Exception ex) {
350 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
351 logger.debug(exceptionMessage)
352 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
358 public void prepareNetworkRequest (DelegateExecution execution) {
360 execution.setVariable("prefix", Prefix)
362 logger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
363 ExceptionUtil exceptionUtil = new ExceptionUtil()
366 String networkRequest = execution.getVariable(Prefix + "networkRequest")
367 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
368 String tenantId = execution.getVariable(Prefix + "tenantId")
370 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
371 String networkType = l3Network.getNetworkType()
372 String networkId = l3Network.getNetworkId()
374 String networkStackId = ""
375 networkStackId = l3Network.getHeatStackId()
376 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
377 networkStackId = "force_delete"
380 String requestId = execution.getVariable("msoRequestId")
381 if (requestId != null) {
382 execution.setVariable("mso-request-id", requestId)
384 requestId = execution.getVariable("mso-request-id")
386 String serviceInstanceId = execution.getVariable("serviceInstanceId")
388 // Added new Elements
389 String messageId = execution.getVariable(Prefix + "messageId")
390 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
391 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
393 String modelCustomizationUuid = ""
394 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
395 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
396 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
398 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
401 String deleteNetworkRequest = """
402 <deleteNetworkRequest>
403 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
404 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
405 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
406 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
407 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
408 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
409 <skipAAI>true</skipAAI>
411 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
412 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
414 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
415 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
416 </deleteNetworkRequest>
419 logger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
421 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
422 logger.debug(buildDeleteNetworkRequestAsString)
423 logger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
425 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
426 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
427 logger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
429 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
430 logger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
432 catch (Exception ex) {
434 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
435 logger.debug(exceptionMessage)
436 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
442 * This method is used instead of an HTTP Connector task because the
443 * connector does not allow DELETE with a body.
445 public void sendRequestToVnfAdapter(DelegateExecution execution) {
446 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
447 'execution=' + execution.getId() +
450 logger.trace('Entered ' + method)
454 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
455 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
457 URL url = new URL(vnfAdapterUrl)
458 HttpClient httpClient = new HttpClientFactory().newXmlClient(url, ONAPComponents.OPENSTACK_ADAPTER)
459 httpClient.accept = "application/xml"
460 httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
461 Response response = httpClient.delete(vnfAdapterRequest)
463 execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
464 execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
466 } catch (Exception ex) {
468 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
469 logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
470 "BPMN", ErrorCode.UnknownError.getValue(),
471 "Exception is:\n" + ex);
472 logger.debug(exceptionMessage)
473 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
479 public void prepareSDNCRequest (DelegateExecution execution) {
481 execution.setVariable("prefix", Prefix)
483 logger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
487 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
488 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
490 String networkId = ""
491 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
492 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
494 if (networkId == 'null') {networkId = ""}
496 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
498 // get/set 'msoRequestId' and 'mso-request-id'
499 String requestId = execution.getVariable("msoRequestId")
500 if (requestId != null) {
501 execution.setVariable("mso-request-id", requestId)
503 requestId = execution.getVariable("mso-request-id")
505 execution.setVariable(Prefix + "requestId", requestId)
506 logger.debug(Prefix + "requestId " + requestId)
507 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
509 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
510 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
511 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
512 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
513 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
514 logger.debug(sndcTopologyDeleteRequesAsString)
515 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
516 logger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
518 } catch (Exception ex) {
520 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
521 logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
522 "BPMN", ErrorCode.UnknownError.getValue(),
523 "Exception is:\n" + ex);
524 logger.debug(exceptionMessage)
525 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
531 public void prepareRpcSDNCRequest (DelegateExecution execution) {
533 execution.setVariable("prefix", Prefix)
535 logger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
539 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
540 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
542 String networkId = ""
543 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
544 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
546 if (networkId == 'null') {networkId = ""}
548 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
550 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
551 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
552 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
553 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
554 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
555 logger.debug(sndcTopologyDeleteRequesAsString)
556 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
557 logger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
559 } catch (Exception ex) {
561 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
562 logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
563 "BPMN", ErrorCode.UnknownError.getValue(),
564 "Exception is:\n" + ex);
565 logger.debug(exceptionMessage)
566 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
573 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
575 execution.setVariable("prefix",Prefix)
577 logger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
582 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
583 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
584 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
585 String networkId = ""
586 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
587 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
589 if (networkId == 'null') {networkId = ""}
590 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
592 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
593 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
594 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
595 logger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
598 } catch (Exception ex) {
599 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
600 logger.debug(exceptionMessage)
601 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
607 // **************************************************
608 // Post or Validate Response Section
609 // **************************************************
611 public void validateNetworkResponse (DelegateExecution execution) {
613 execution.setVariable("prefix", Prefix)
615 logger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
618 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
619 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
621 logger.debug(" Network Adapter responseCode: " + returnCode)
622 logger.debug("Network Adapter Response - " + "\n" + networkResponse)
623 logger.debug(networkResponse)
625 String errorMessage = ""
626 if (returnCode == "200") {
627 logger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
629 // prepare rollback data
630 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
631 if ((rollbackData == null) || (rollbackData.isEmpty())) {
632 logger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
633 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
635 String rollbackNetwork =
636 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
638 </NetworkAdapter:rollbackNetwork>"""
639 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
640 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
641 logger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
645 } else { // network error
646 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
647 if (networkResponse.contains("deleteNetworkError") ) {
648 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
649 errorMessage = utils.getNodeText(networkResponse, "message")
650 errorMessage = "Received error from Network Adapter: " + errorMessage
651 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
653 } else { // CatchAll exception
654 if (returnCode == "500") {
655 errorMessage = "JBWEB000065: HTTP Status 500."
657 errorMessage = "Return code is " + returnCode
659 errorMessage = "Received error from Network Adapter: " + errorMessage
660 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
664 } else { // CatchAll exception
665 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
666 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
672 } catch (BpmnError e) {
675 } catch (Exception ex) {
677 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
678 logger.debug(exceptionMessage)
679 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
685 public void validateSDNCResponse (DelegateExecution execution) {
687 execution.setVariable("prefix", Prefix)
689 logger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
691 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
692 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
693 WorkflowException workflowException = execution.getVariable("WorkflowException")
695 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
696 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
698 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
699 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
700 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
702 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
703 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
704 execution.setVariable(Prefix + "isPONR", true)
705 logger.debug("Successfully Validated SDNC Response")
707 logger.debug("Did NOT Successfully Validated SDNC Response")
708 throw new BpmnError("MSOWorkflowException")
713 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
715 execution.setVariable("prefix",Prefix)
717 logger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
719 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
720 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
721 WorkflowException workflowException = execution.getVariable("WorkflowException")
723 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
724 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
726 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
727 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
728 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
730 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
731 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
732 logger.debug("Successfully Validated Rpc SDNC Activate Response")
735 logger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
736 throw new BpmnError("MSOWorkflowException")
741 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
743 execution.setVariable("prefix",Prefix)
745 logger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
750 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
751 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
752 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
753 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
754 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
755 if (networkId == 'null') {networkId = ""}
756 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
758 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
759 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
760 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
761 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
762 logger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
765 } catch (Exception ex) {
766 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
767 logger.debug(exceptionMessage)
768 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
774 public void prepareRollbackData(DelegateExecution execution) {
776 execution.setVariable("prefix",Prefix)
778 logger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
782 Map<String, String> rollbackData = new HashMap<String, String>();
783 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
784 if (rollbackNetworkRequest != null) {
785 if (rollbackNetworkRequest != "") {
786 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
789 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
790 if (rollbackDeactivateSDNCRequest != null) {
791 if (rollbackDeactivateSDNCRequest != "") {
792 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
795 execution.setVariable("rollbackData", rollbackData)
796 logger.debug("** rollbackData : " + rollbackData)
798 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
799 logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
801 } catch (Exception ex) {
802 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
803 logger.debug(exceptionMessage)
804 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
810 public void postProcessResponse (DelegateExecution execution) {
812 execution.setVariable("prefix", Prefix)
814 logger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
818 logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
819 if (execution.getVariable(Prefix + "isException") == false) {
820 execution.setVariable(Prefix + "Success", true)
821 execution.setVariable("WorkflowException", null)
822 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
823 execution.setVariable("rolledBack", false)
825 execution.setVariable("rolledBack", true)
827 prepareSuccessRollbackData(execution) // populate rollbackData
830 execution.setVariable(Prefix + "Success", false)
831 execution.setVariable("rollbackData", null)
832 String exceptionMessage = " Exception encountered in MSO Bpmn. "
833 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
834 logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
835 WorkflowException wfex = execution.getVariable("workflowException")
836 exceptionMessage = wfex.getErrorMessage()
838 if (execution.getVariable(Prefix + "WorkflowException") != null) {
839 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
840 exceptionMessage = pwfex.getErrorMessage()
842 if (execution.getVariable("WorkflowException") != null) {
843 WorkflowException pwfex = execution.getVariable("WorkflowException")
844 exceptionMessage = pwfex.getErrorMessage()
849 // going to the Main flow: a-la-carte or macro
850 logger.debug(" ***** postProcessResponse(), BAD !!!")
851 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
852 throw new BpmnError("MSOWorkflowException")
856 } catch(BpmnError b){
857 logger.debug("Rethrowing MSOWorkflowException")
860 } catch (Exception ex) {
862 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
863 logger.debug(exceptionMessage)
864 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
865 throw new BpmnError("MSOWorkflowException")
871 public void prepareSuccessRollbackData(DelegateExecution execution) {
873 execution.setVariable("prefix",Prefix)
875 logger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
879 if (execution.getVariable("sdncVersion") != '1610') {
880 prepareRpcSDNCDeactivateRollback(execution)
881 prepareRpcSDNCUnassignRollback(execution)
883 prepareSDNCRollback(execution)
886 Map<String, String> rollbackData = new HashMap<String, String>();
887 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
888 if (rollbackSDNCRequest != null) {
889 if (rollbackSDNCRequest != "") {
890 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
893 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
894 if (rollbackNetworkRequest != null) {
895 if (rollbackNetworkRequest != "") {
896 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
899 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
900 if (rollbackDeactivateSDNCRequest != null) {
901 if (rollbackDeactivateSDNCRequest != "") {
902 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
905 execution.setVariable("rollbackData", rollbackData)
907 logger.debug("** rollbackData : " + rollbackData)
908 execution.setVariable("WorkflowException", null)
911 } catch (Exception ex) {
912 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
913 logger.debug(exceptionMessage)
914 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
920 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
922 execution.setVariable("prefix",Prefix)
924 logger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
929 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
930 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
932 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
933 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
934 if (networkId == 'null') {networkId = ""}
935 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
937 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
938 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
939 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
940 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
941 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
942 logger.debug(sndcTopologyDeleteRequesAsString)
943 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
944 logger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
945 logger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
948 } catch (Exception ex) {
949 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
950 logger.debug(exceptionMessage)
951 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
957 public void prepareSDNCRollback (DelegateExecution execution) {
959 execution.setVariable("prefix", Prefix)
961 logger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
966 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
967 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
969 String networkId = ""
970 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
971 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
973 if (networkId == 'null') {networkId = ""}
975 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
977 // get/set 'msoRequestId' and 'mso-request-id'
978 String requestId = execution.getVariable("msoRequestId")
979 if (requestId != null) {
980 execution.setVariable("mso-request-id", requestId)
982 requestId = execution.getVariable("mso-request-id")
984 execution.setVariable(Prefix + "requestId", requestId)
986 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
988 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
989 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
990 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
991 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
992 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
993 logger.debug(sndcTopologyDeleteRequesAsString)
994 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
995 logger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
996 logger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
999 } catch (Exception ex) {
1001 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
1002 logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
1003 "BPMN", ErrorCode.UnknownError.getValue(),
1004 "Exception is:\n" + ex);
1005 logger.debug(exceptionMessage)
1006 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
1012 public void setExceptionFlag(DelegateExecution execution){
1014 execution.setVariable("prefix",Prefix)
1016 logger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1020 execution.setVariable(Prefix + "isException", true)
1022 if (execution.getVariable("SavedWorkflowException1") != null) {
1023 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1025 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1027 logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1029 } catch(Exception ex){
1030 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1031 logger.debug(exceptionMessage)
1032 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1038 // *******************************
1039 // Build Error Section
1040 // *******************************
1042 public void processJavaException(DelegateExecution execution){
1044 execution.setVariable("prefix",Prefix)
1046 logger.debug("Caught a Java Exception")
1047 logger.debug("Started processJavaException Method")
1048 logger.debug("Variables List: " + execution.getVariables())
1049 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1050 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1052 }catch(Exception e){
1053 logger.debug("Caught Exception during processJavaException Method: " + e)
1054 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1055 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1057 logger.debug("Completed processJavaException Method of " + Prefix)