2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
23 import org.camunda.bpm.engine.delegate.BpmnError
24 import org.camunda.bpm.engine.delegate.DelegateExecution
25 import org.onap.aai.domain.yang.L3Network
26 import org.onap.so.bpmn.common.scripts.AaiUtil
27 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
28 import org.onap.so.bpmn.common.scripts.ExceptionUtil
29 import org.onap.so.bpmn.common.scripts.MsoUtils
30 import org.onap.so.bpmn.common.scripts.NetworkUtils
31 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
32 import org.onap.so.bpmn.common.scripts.VidUtils
33 import org.onap.so.bpmn.core.UrnPropertiesReader
34 import org.onap.so.bpmn.core.WorkflowException
35 import org.onap.so.bpmn.core.json.JsonUtils
36 import org.onap.so.client.HttpClient
37 import org.onap.so.client.aai.AAIObjectType
38 import org.onap.so.client.aai.entities.AAIResultWrapper
39 import org.onap.so.client.aai.entities.Relationships
40 import org.onap.so.client.aai.entities.uri.AAIResourceUri
41 import org.onap.so.client.aai.entities.uri.AAIUriFactory
42 import org.onap.so.client.graphinventory.entities.uri.Depth
43 import org.onap.so.constants.Defaults
44 import org.onap.so.logger.MessageEnum
45 import org.onap.so.logger.MsoLogger
47 import org.springframework.web.util.UriUtils
48 import org.onap.so.utils.TargetEntity
50 import groovy.json.JsonOutput
51 import javax.ws.rs.core.Response
53 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
54 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class);
56 String Prefix= "DELNWKI_"
57 String groovyClassName = "DoDeleteNetworkInstance"
58 ExceptionUtil exceptionUtil = new ExceptionUtil()
59 JsonUtils jsonUtil = new JsonUtils()
60 VidUtils vidUtils = new VidUtils(this)
61 NetworkUtils networkUtils = new NetworkUtils()
62 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
64 public InitializeProcessVariables(DelegateExecution execution){
65 /* Initialize all the process variables in this block */
67 execution.setVariable(Prefix + "networkRequest", "")
68 execution.setVariable(Prefix + "isSilentSuccess", false)
69 execution.setVariable(Prefix + "Success", false)
71 execution.setVariable(Prefix + "requestId", "")
72 execution.setVariable(Prefix + "source", "")
73 execution.setVariable(Prefix + "lcpCloudRegion", "")
74 execution.setVariable(Prefix + "networkInputs", "")
75 execution.setVariable(Prefix + "tenantId", "")
77 execution.setVariable(Prefix + "queryAAIResponse", "")
78 execution.setVariable(Prefix + "aaiReturnCode", "")
79 execution.setVariable(Prefix + "isAAIGood", false)
80 execution.setVariable(Prefix + "isVfRelationshipExist", false)
82 // AAI query Cloud Region
83 execution.setVariable(Prefix + "queryCloudRegionRequest","")
84 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
85 execution.setVariable(Prefix + "queryCloudRegionResponse","")
86 execution.setVariable(Prefix + "cloudRegionPo","")
87 execution.setVariable(Prefix + "cloudRegionSdnc","")
89 execution.setVariable(Prefix + "deleteNetworkRequest", "")
90 execution.setVariable(Prefix + "deleteNetworkResponse", "")
91 execution.setVariable(Prefix + "networkReturnCode", "")
92 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
94 execution.setVariable(Prefix + "deleteSDNCRequest", "")
95 execution.setVariable(Prefix + "deleteSDNCResponse", "")
96 execution.setVariable(Prefix + "sdncReturnCode", "")
97 execution.setVariable(Prefix + "sdncResponseSuccess", false)
99 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
100 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
101 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
102 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
104 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
105 execution.setVariable(Prefix + "isException", false)
110 // **************************************************
111 // Pre or Prepare Request Section
112 // **************************************************
114 public void preProcessRequest (DelegateExecution execution) {
116 execution.setVariable("prefix",Prefix)
118 msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
120 // initialize flow variables
121 InitializeProcessVariables(execution)
124 // get incoming message/input
125 execution.setVariable("action", "DELETE")
126 String deleteNetwork = execution.getVariable("bpmnRequest")
127 if (deleteNetwork != null) {
128 if (deleteNetwork.contains("requestDetails")) {
129 // JSON format request is sent, create xml
131 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
132 msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
133 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
135 } catch (Exception ex) {
136 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
137 msoLogger.debug(dataErrorMessage)
138 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
141 // XML format request is sent
145 // vIPR format request is sent, create xml from individual variables
146 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
149 deleteNetwork = utils.formatXml(deleteNetwork)
150 msoLogger.debug(deleteNetwork)
151 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
152 msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
154 // validate 'backout-on-failure' to override 'mso.rollback'
155 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
156 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
157 msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
159 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
160 execution.setVariable(Prefix + "networkInputs", networkInputs)
163 String messageId = execution.getVariable("testMessageId") // for testing
164 if (messageId == null || messageId == "") {
165 messageId = UUID.randomUUID()
166 msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
168 msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
170 execution.setVariable(Prefix + "messageId", messageId)
172 String source = utils.getNodeText(deleteNetwork, "source")
173 execution.setVariable(Prefix + "source", source)
174 msoLogger.debug(Prefix + "source - " + source)
176 String networkId = ""
177 if (utils.nodeExists(networkInputs, "network-id")) {
178 networkId = utils.getNodeText(networkInputs, "network-id")
179 if (networkId == null || networkId == "" || networkId == 'null' ) {
180 sendSyncError(execution)
181 // missing value of network-id
182 String dataErrorMessage = "network-request has missing 'network-id' element/value."
183 msoLogger.debug(" Invalid Request - " + dataErrorMessage)
184 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
188 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
189 def lcpCloudRegion = null
190 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
191 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
192 if (lcpCloudRegion == 'null') {
193 lcpCloudRegion = null
196 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
197 msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion)
199 String tenantId = null
200 if (utils.nodeExists(networkInputs, "tenant-id")) {
201 tenantId = utils.getNodeText(networkInputs, "tenant-id")
202 if (tenantId == 'null') {
207 execution.setVariable(Prefix + "tenantId", tenantId)
208 msoLogger.debug("tenantId : " + tenantId)
210 String sdncVersion = execution.getVariable("sdncVersion")
211 msoLogger.debug("sdncVersion? : " + sdncVersion)
213 // PO Authorization Info / headers Authorization=
214 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
217 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
218 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
219 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
221 } catch (IOException ex) {
222 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
223 msoLogger.debug(dataErrorMessage )
224 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
227 } catch (BpmnError e) {
230 } catch (Exception ex){
232 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
233 msoLogger.debug(exceptionMessage)
234 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
241 public void callRESTQueryAAI (DelegateExecution execution) {
243 execution.setVariable("prefix",Prefix)
245 msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
248 String networkInputs = execution.getVariable(Prefix + "networkInputs")
249 String networkId = utils.getNodeText(networkInputs, "network-id")
250 networkId = UriUtils.encode(networkId,"UTF-8")
251 ExceptionUtil exceptionUtil = new ExceptionUtil()
252 Boolean isVfRelationshipExist = false
254 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
255 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
256 AAIResultWrapper wrapper = getAAIClient().get(uri);
257 Optional<Relationships> relationships = wrapper.getRelationships()
259 if (l3Network.isPresent()) {
260 execution.setVariable(Prefix + "aaiReturnCode", 200)
261 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
262 execution.setVariable(Prefix + "isAAIGood", true)
263 if (relationships.isPresent()){
264 if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
265 execution.setVariable(Prefix + "isVfRelationshipExist", true)
266 isVfRelationshipExist = true
267 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
268 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
270 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
271 for(AAIResourceUri tenantURI: tenantURIList){
272 if(execution.getVariable(Prefix + "tenantId") == null) {
273 String tenantId = tenantURI.getURIKeys().get("tenant-id")
274 execution.setVariable(Prefix + "tenantId", tenantId)
275 msoLogger.debug(" Get AAI getTenantId() : " + tenantId)
278 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
279 for(AAIResourceUri tenantURI: cloudRegionURIList){
280 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
281 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
282 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
283 msoLogger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
288 msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
290 // not found // empty aai response
291 execution.setVariable(Prefix + "aaiReturnCode", 404)
292 execution.setVariable(Prefix + "isAAIGood", false)
293 execution.setVariable(Prefix + "isSilentSuccess", true)
294 msoLogger.debug(" AAI Query is Silent Success")
296 msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
297 } catch (Exception ex) {
299 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
300 msoLogger.debug(exceptionMessage)
301 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
307 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
309 execution.setVariable("prefix", Prefix)
311 msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
314 String networkInputs = execution.getVariable(Prefix + "networkInputs")
315 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
316 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
318 AaiUtil aaiUtil = new AaiUtil(this)
320 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
321 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
323 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
325 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
326 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
328 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
329 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
330 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
333 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
334 msoLogger.debug(dataErrorMessage)
335 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
339 } catch (BpmnError e) {
342 } catch (Exception ex) {
344 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
345 msoLogger.debug(exceptionMessage)
346 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
352 public void prepareNetworkRequest (DelegateExecution execution) {
354 execution.setVariable("prefix", Prefix)
356 msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
357 ExceptionUtil exceptionUtil = new ExceptionUtil()
360 String networkRequest = execution.getVariable(Prefix + "networkRequest")
361 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
362 String tenantId = execution.getVariable(Prefix + "tenantId")
364 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
365 String networkType = l3Network.getNetworkType()
366 String networkId = l3Network.getNetworkId()
368 String networkStackId = ""
369 networkStackId = l3Network.getHeatStackId()
370 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
371 networkStackId = "force_delete"
374 String requestId = execution.getVariable("msoRequestId")
375 if (requestId != null) {
376 execution.setVariable("mso-request-id", requestId)
378 requestId = execution.getVariable("mso-request-id")
380 String serviceInstanceId = execution.getVariable("serviceInstanceId")
382 // Added new Elements
383 String messageId = execution.getVariable(Prefix + "messageId")
384 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
385 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
387 String modelCustomizationUuid = ""
388 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
389 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
390 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
392 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
395 String deleteNetworkRequest = """
396 <deleteNetworkRequest>
397 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
398 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
399 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
400 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
401 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
402 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
403 <skipAAI>true</skipAAI>
405 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
406 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
408 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
409 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
410 </deleteNetworkRequest>
413 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
415 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
416 msoLogger.debug(buildDeleteNetworkRequestAsString)
417 msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
419 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
420 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
421 msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
423 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
424 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
426 catch (Exception ex) {
428 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
429 msoLogger.debug(exceptionMessage)
430 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
436 * This method is used instead of an HTTP Connector task because the
437 * connector does not allow DELETE with a body.
439 public void sendRequestToVnfAdapter(DelegateExecution execution) {
440 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
441 'execution=' + execution.getId() +
444 msoLogger.trace('Entered ' + method)
448 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
449 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
451 URL url = new URL(vnfAdapterUrl)
452 HttpClient httpClient = new HttpClient(url, "application/xml", TargetEntity.OPENSTACK_ADAPTER)
453 httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
454 Response response = httpClient.delete(vnfAdapterRequest)
457 execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
459 } catch (Exception ex) {
461 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
462 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
463 msoLogger.debug(exceptionMessage)
464 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
470 public void prepareSDNCRequest (DelegateExecution execution) {
472 execution.setVariable("prefix", Prefix)
474 msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
478 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
479 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
481 String networkId = ""
482 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
483 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
485 if (networkId == 'null') {networkId = ""}
487 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
489 // get/set 'msoRequestId' and 'mso-request-id'
490 String requestId = execution.getVariable("msoRequestId")
491 if (requestId != null) {
492 execution.setVariable("mso-request-id", requestId)
494 requestId = execution.getVariable("mso-request-id")
496 execution.setVariable(Prefix + "requestId", requestId)
497 msoLogger.debug(Prefix + "requestId " + requestId)
498 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
500 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
501 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
502 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
503 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
504 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
505 msoLogger.debug(sndcTopologyDeleteRequesAsString)
506 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
507 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
509 } catch (Exception ex) {
511 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
512 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
513 msoLogger.debug(exceptionMessage)
514 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
520 public void prepareRpcSDNCRequest (DelegateExecution execution) {
522 execution.setVariable("prefix", Prefix)
524 msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
528 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
529 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
531 String networkId = ""
532 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
533 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
535 if (networkId == 'null') {networkId = ""}
537 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
539 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
540 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
541 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
542 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
543 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
544 msoLogger.debug(sndcTopologyDeleteRequesAsString)
545 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
546 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
548 } catch (Exception ex) {
550 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
551 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
552 msoLogger.debug(exceptionMessage)
553 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
560 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
562 execution.setVariable("prefix",Prefix)
564 msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
569 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
570 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
571 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
572 String networkId = ""
573 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
574 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
576 if (networkId == 'null') {networkId = ""}
577 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
579 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
580 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
581 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
582 msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
585 } catch (Exception ex) {
586 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
587 msoLogger.debug(exceptionMessage)
588 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
594 // **************************************************
595 // Post or Validate Response Section
596 // **************************************************
598 public void validateNetworkResponse (DelegateExecution execution) {
600 execution.setVariable("prefix", Prefix)
602 msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
605 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
606 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
608 msoLogger.debug(" Network Adapter responseCode: " + returnCode)
609 msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse)
610 msoLogger.debug(networkResponse)
612 String errorMessage = ""
613 if (returnCode == "200") {
614 msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
616 // prepare rollback data
617 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
618 if ((rollbackData == null) || (rollbackData.isEmpty())) {
619 msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
620 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
622 String rollbackNetwork =
623 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
625 </NetworkAdapter:rollbackNetwork>"""
626 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
627 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
628 msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
632 } else { // network error
633 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
634 if (networkResponse.contains("deleteNetworkError") ) {
635 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
636 errorMessage = utils.getNodeText(networkResponse, "message")
637 errorMessage = "Received error from Network Adapter: " + errorMessage
638 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
640 } else { // CatchAll exception
641 if (returnCode == "500") {
642 errorMessage = "JBWEB000065: HTTP Status 500."
644 errorMessage = "Return code is " + returnCode
646 errorMessage = "Received error from Network Adapter: " + errorMessage
647 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
651 } else { // CatchAll exception
652 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
653 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
659 } catch (BpmnError e) {
662 } catch (Exception ex) {
664 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
665 msoLogger.debug(exceptionMessage)
666 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
672 public void validateSDNCResponse (DelegateExecution execution) {
674 execution.setVariable("prefix", Prefix)
676 msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
678 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
679 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
680 WorkflowException workflowException = execution.getVariable("WorkflowException")
682 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
683 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
685 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
686 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
687 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
689 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
690 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
691 execution.setVariable(Prefix + "isPONR", true)
692 msoLogger.debug("Successfully Validated SDNC Response")
694 msoLogger.debug("Did NOT Successfully Validated SDNC Response")
695 throw new BpmnError("MSOWorkflowException")
700 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
702 execution.setVariable("prefix",Prefix)
704 msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
706 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
707 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
708 WorkflowException workflowException = execution.getVariable("WorkflowException")
710 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
711 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
713 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
714 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
715 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
717 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
718 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
719 msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
722 msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
723 throw new BpmnError("MSOWorkflowException")
728 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
730 execution.setVariable("prefix",Prefix)
732 msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
737 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
738 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
739 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
740 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
741 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
742 if (networkId == 'null') {networkId = ""}
743 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
745 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
746 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
747 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
748 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
749 msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
752 } catch (Exception ex) {
753 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
754 msoLogger.debug(exceptionMessage)
755 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
761 public void prepareRollbackData(DelegateExecution execution) {
763 execution.setVariable("prefix",Prefix)
765 msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
769 Map<String, String> rollbackData = new HashMap<String, String>();
770 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
771 if (rollbackNetworkRequest != null) {
772 if (rollbackNetworkRequest != "") {
773 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
776 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
777 if (rollbackDeactivateSDNCRequest != null) {
778 if (rollbackDeactivateSDNCRequest != "") {
779 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
782 execution.setVariable("rollbackData", rollbackData)
783 msoLogger.debug("** rollbackData : " + rollbackData)
785 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
786 msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
788 } catch (Exception ex) {
789 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
790 msoLogger.debug(exceptionMessage)
791 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
797 public void postProcessResponse (DelegateExecution execution) {
799 execution.setVariable("prefix", Prefix)
801 msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
805 msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
806 if (execution.getVariable(Prefix + "isException") == false) {
807 execution.setVariable(Prefix + "Success", true)
808 execution.setVariable("WorkflowException", null)
809 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
810 execution.setVariable("rolledBack", false)
812 execution.setVariable("rolledBack", true)
814 prepareSuccessRollbackData(execution) // populate rollbackData
817 execution.setVariable(Prefix + "Success", false)
818 execution.setVariable("rollbackData", null)
819 String exceptionMessage = " Exception encountered in MSO Bpmn. "
820 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
821 msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
822 WorkflowException wfex = execution.getVariable("workflowException")
823 exceptionMessage = wfex.getErrorMessage()
825 if (execution.getVariable(Prefix + "WorkflowException") != null) {
826 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
827 exceptionMessage = pwfex.getErrorMessage()
829 if (execution.getVariable("WorkflowException") != null) {
830 WorkflowException pwfex = execution.getVariable("WorkflowException")
831 exceptionMessage = pwfex.getErrorMessage()
836 // going to the Main flow: a-la-carte or macro
837 msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
838 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
839 throw new BpmnError("MSOWorkflowException")
843 } catch(BpmnError b){
844 msoLogger.debug("Rethrowing MSOWorkflowException")
847 } catch (Exception ex) {
849 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
850 msoLogger.debug(exceptionMessage)
851 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
852 throw new BpmnError("MSOWorkflowException")
858 public void prepareSuccessRollbackData(DelegateExecution execution) {
860 execution.setVariable("prefix",Prefix)
862 msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
866 if (execution.getVariable("sdncVersion") != '1610') {
867 prepareRpcSDNCDeactivateRollback(execution)
868 prepareRpcSDNCUnassignRollback(execution)
870 prepareSDNCRollback(execution)
873 Map<String, String> rollbackData = new HashMap<String, String>();
874 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
875 if (rollbackSDNCRequest != null) {
876 if (rollbackSDNCRequest != "") {
877 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
880 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
881 if (rollbackNetworkRequest != null) {
882 if (rollbackNetworkRequest != "") {
883 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
886 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
887 if (rollbackDeactivateSDNCRequest != null) {
888 if (rollbackDeactivateSDNCRequest != "") {
889 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
892 execution.setVariable("rollbackData", rollbackData)
894 msoLogger.debug("** rollbackData : " + rollbackData)
895 execution.setVariable("WorkflowException", null)
898 } catch (Exception ex) {
899 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
900 msoLogger.debug(exceptionMessage)
901 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
907 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
909 execution.setVariable("prefix",Prefix)
911 msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
916 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
917 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
919 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
920 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
921 if (networkId == 'null') {networkId = ""}
922 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
924 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
925 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
926 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
927 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
928 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
929 msoLogger.debug(sndcTopologyDeleteRequesAsString)
930 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
931 msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
932 msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
935 } catch (Exception ex) {
936 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
937 msoLogger.debug(exceptionMessage)
938 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
944 public void prepareSDNCRollback (DelegateExecution execution) {
946 execution.setVariable("prefix", Prefix)
948 msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
953 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
954 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
956 String networkId = ""
957 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
958 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
960 if (networkId == 'null') {networkId = ""}
962 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
964 // get/set 'msoRequestId' and 'mso-request-id'
965 String requestId = execution.getVariable("msoRequestId")
966 if (requestId != null) {
967 execution.setVariable("mso-request-id", requestId)
969 requestId = execution.getVariable("mso-request-id")
971 execution.setVariable(Prefix + "requestId", requestId)
973 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
975 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
976 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
977 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
978 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
979 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
980 msoLogger.debug(sndcTopologyDeleteRequesAsString)
981 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
982 msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
983 msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
986 } catch (Exception ex) {
988 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
989 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
990 msoLogger.debug(exceptionMessage)
991 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
997 public void setExceptionFlag(DelegateExecution execution){
999 execution.setVariable("prefix",Prefix)
1001 msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1005 execution.setVariable(Prefix + "isException", true)
1007 if (execution.getVariable("SavedWorkflowException1") != null) {
1008 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1010 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1012 msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1014 } catch(Exception ex){
1015 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1016 msoLogger.debug(exceptionMessage)
1017 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1023 // *******************************
1024 // Build Error Section
1025 // *******************************
1027 public void processJavaException(DelegateExecution execution){
1029 execution.setVariable("prefix",Prefix)
1031 msoLogger.debug("Caught a Java Exception")
1032 msoLogger.debug("Started processJavaException Method")
1033 msoLogger.debug("Variables List: " + execution.getVariables())
1034 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1035 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1037 }catch(Exception e){
1038 msoLogger.debug("Caught Exception during processJavaException Method: " + e)
1039 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1040 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1042 msoLogger.debug("Completed processJavaException Method of " + Prefix)