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.aai.AAIObjectType
37 import org.onap.so.client.aai.entities.AAIResultWrapper
38 import org.onap.so.client.aai.entities.Relationships
39 import org.onap.so.client.aai.entities.uri.AAIResourceUri
40 import org.onap.so.client.aai.entities.uri.AAIUriFactory
41 import org.onap.so.client.graphinventory.entities.uri.Depth
42 import org.onap.so.constants.Defaults
43 import org.onap.so.logger.MessageEnum
44 import org.onap.so.logger.MsoLogger
45 import org.onap.so.rest.APIResponse
46 import org.onap.so.rest.RESTClient
47 import org.onap.so.rest.RESTConfig
48 import org.springframework.web.util.UriUtils
50 import groovy.json.JsonOutput
52 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
53 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class);
55 String Prefix= "DELNWKI_"
56 String groovyClassName = "DoDeleteNetworkInstance"
57 ExceptionUtil exceptionUtil = new ExceptionUtil()
58 JsonUtils jsonUtil = new JsonUtils()
59 VidUtils vidUtils = new VidUtils(this)
60 NetworkUtils networkUtils = new NetworkUtils()
61 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
63 public InitializeProcessVariables(DelegateExecution execution){
64 /* Initialize all the process variables in this block */
66 execution.setVariable(Prefix + "networkRequest", "")
67 execution.setVariable(Prefix + "isSilentSuccess", false)
68 execution.setVariable(Prefix + "Success", false)
70 execution.setVariable(Prefix + "requestId", "")
71 execution.setVariable(Prefix + "source", "")
72 execution.setVariable(Prefix + "lcpCloudRegion", "")
73 execution.setVariable(Prefix + "networkInputs", "")
74 execution.setVariable(Prefix + "tenantId", "")
76 execution.setVariable(Prefix + "queryAAIResponse", "")
77 execution.setVariable(Prefix + "aaiReturnCode", "")
78 execution.setVariable(Prefix + "isAAIGood", false)
79 execution.setVariable(Prefix + "isVfRelationshipExist", false)
81 // AAI query Cloud Region
82 execution.setVariable(Prefix + "queryCloudRegionRequest","")
83 execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
84 execution.setVariable(Prefix + "queryCloudRegionResponse","")
85 execution.setVariable(Prefix + "cloudRegionPo","")
86 execution.setVariable(Prefix + "cloudRegionSdnc","")
88 execution.setVariable(Prefix + "deleteNetworkRequest", "")
89 execution.setVariable(Prefix + "deleteNetworkResponse", "")
90 execution.setVariable(Prefix + "networkReturnCode", "")
91 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
93 execution.setVariable(Prefix + "deleteSDNCRequest", "")
94 execution.setVariable(Prefix + "deleteSDNCResponse", "")
95 execution.setVariable(Prefix + "sdncReturnCode", "")
96 execution.setVariable(Prefix + "sdncResponseSuccess", false)
98 execution.setVariable(Prefix + "deactivateSDNCRequest", "")
99 execution.setVariable(Prefix + "deactivateSDNCResponse", "")
100 execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
101 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
103 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
104 execution.setVariable(Prefix + "isException", false)
109 // **************************************************
110 // Pre or Prepare Request Section
111 // **************************************************
113 public void preProcessRequest (DelegateExecution execution) {
115 execution.setVariable("prefix",Prefix)
117 msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
119 // initialize flow variables
120 InitializeProcessVariables(execution)
123 // get incoming message/input
124 execution.setVariable("action", "DELETE")
125 String deleteNetwork = execution.getVariable("bpmnRequest")
126 if (deleteNetwork != null) {
127 if (deleteNetwork.contains("requestDetails")) {
128 // JSON format request is sent, create xml
130 def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
131 msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
132 deleteNetwork = vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
134 } catch (Exception ex) {
135 String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
136 msoLogger.debug(dataErrorMessage)
137 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
140 // XML format request is sent
144 // vIPR format request is sent, create xml from individual variables
145 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
148 deleteNetwork = utils.formatXml(deleteNetwork)
149 msoLogger.debug(deleteNetwork)
150 execution.setVariable(Prefix + "networkRequest", deleteNetwork)
151 msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
153 // validate 'backout-on-failure' to override 'mso.rollback'
154 boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
155 execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
156 msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
158 String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
159 execution.setVariable(Prefix + "networkInputs", networkInputs)
162 String messageId = execution.getVariable("testMessageId") // for testing
163 if (messageId == null || messageId == "") {
164 messageId = UUID.randomUUID()
165 msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
167 msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
169 execution.setVariable(Prefix + "messageId", messageId)
171 String source = utils.getNodeText(deleteNetwork, "source")
172 execution.setVariable(Prefix + "source", source)
173 msoLogger.debug(Prefix + "source - " + source)
175 String networkId = ""
176 if (utils.nodeExists(networkInputs, "network-id")) {
177 networkId = utils.getNodeText(networkInputs, "network-id")
178 if (networkId == null || networkId == "" || networkId == 'null' ) {
179 sendSyncError(execution)
180 // missing value of network-id
181 String dataErrorMessage = "network-request has missing 'network-id' element/value."
182 msoLogger.debug(" Invalid Request - " + dataErrorMessage)
183 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
187 // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
188 def lcpCloudRegion = null
189 if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
190 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
191 if (lcpCloudRegion == 'null') {
192 lcpCloudRegion = null
195 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
196 msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion)
198 String tenantId = null
199 if (utils.nodeExists(networkInputs, "tenant-id")) {
200 tenantId = utils.getNodeText(networkInputs, "tenant-id")
201 if (tenantId == 'null') {
206 execution.setVariable(Prefix + "tenantId", tenantId)
207 msoLogger.debug("tenantId : " + tenantId)
209 String sdncVersion = execution.getVariable("sdncVersion")
210 msoLogger.debug("sdncVersion? : " + sdncVersion)
212 // PO Authorization Info / headers Authorization=
213 String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
216 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
217 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
218 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
220 } catch (IOException ex) {
221 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
222 msoLogger.debug(dataErrorMessage )
223 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
226 } catch (BpmnError e) {
229 } catch (Exception ex){
231 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
232 msoLogger.debug(exceptionMessage)
233 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
240 public void callRESTQueryAAI (DelegateExecution execution) {
242 execution.setVariable("prefix",Prefix)
244 msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
247 String networkInputs = execution.getVariable(Prefix + "networkInputs")
248 String networkId = utils.getNodeText(networkInputs, "network-id")
249 networkId = UriUtils.encode(networkId,"UTF-8")
250 ExceptionUtil exceptionUtil = new ExceptionUtil()
251 Boolean isVfRelationshipExist = false
253 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
254 Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
255 AAIResultWrapper wrapper = getAAIClient().get(uri);
256 Optional<Relationships> relationships = wrapper.getRelationships()
258 if (l3Network.isPresent()) {
259 execution.setVariable(Prefix + "aaiReturnCode", 200)
260 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
261 execution.setVariable(Prefix + "isAAIGood", true)
262 if (relationships.isPresent()){
263 if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
264 execution.setVariable(Prefix + "isVfRelationshipExist", true)
265 isVfRelationshipExist = true
266 String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
267 exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
269 List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
270 for(AAIResourceUri tenantURI: tenantURIList){
271 if(execution.getVariable(Prefix + "tenantId") == null) {
272 String tenantId = tenantURI.getURIKeys().get("tenant-id")
273 execution.setVariable(Prefix + "tenantId", tenantId)
274 msoLogger.debug(" Get AAI getTenantId() : " + tenantId)
277 List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
278 for(AAIResourceUri tenantURI: cloudRegionURIList){
279 if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
280 String lcpCloudRegion = tenantURI.getURIKeys().get("cloud-region-id")
281 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
282 msoLogger.debug(" Get AAI getCloudRegion() : " + lcpCloudRegion)
287 msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
289 // not found // empty aai response
290 execution.setVariable(Prefix + "aaiReturnCode", 404)
291 execution.setVariable(Prefix + "isAAIGood", false)
292 execution.setVariable(Prefix + "isSilentSuccess", true)
293 msoLogger.debug(" AAI Query is Silent Success")
295 msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
296 } catch (Exception ex) {
298 String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
299 msoLogger.debug(exceptionMessage)
300 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
306 public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
308 execution.setVariable("prefix", Prefix)
310 msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
313 String networkInputs = execution.getVariable(Prefix + "networkInputs")
314 // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
315 String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
317 AaiUtil aaiUtil = new AaiUtil(this)
319 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
320 def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
322 execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
324 String cloudRegionPo = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
325 String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "SDNC", cloudRegion)
327 if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
328 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
329 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
332 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
333 msoLogger.debug(dataErrorMessage)
334 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
338 } catch (BpmnError e) {
341 } catch (Exception ex) {
343 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
344 msoLogger.debug(exceptionMessage)
345 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
351 public void prepareNetworkRequest (DelegateExecution execution) {
353 execution.setVariable("prefix", Prefix)
355 msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
356 ExceptionUtil exceptionUtil = new ExceptionUtil()
359 String networkRequest = execution.getVariable(Prefix + "networkRequest")
360 String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
361 String tenantId = execution.getVariable(Prefix + "tenantId")
363 L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
364 String networkType = l3Network.getNetworkType()
365 String networkId = l3Network.getNetworkId()
367 String networkStackId = ""
368 networkStackId = l3Network.getHeatStackId()
369 if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
370 networkStackId = "force_delete"
373 String requestId = execution.getVariable("msoRequestId")
374 if (requestId != null) {
375 execution.setVariable("mso-request-id", requestId)
377 requestId = execution.getVariable("mso-request-id")
379 String serviceInstanceId = execution.getVariable("serviceInstanceId")
381 // Added new Elements
382 String messageId = execution.getVariable(Prefix + "messageId")
383 String notificationUrl = "" //TODO - is this coming from URN? What variable/value to use?
384 //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
386 String modelCustomizationUuid = ""
387 if (utils.nodeExists(networkRequest, "networkModelInfo")) {
388 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
389 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
391 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
394 String deleteNetworkRequest = """
395 <deleteNetworkRequest>
396 <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
397 <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
398 <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
399 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
400 <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
401 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
402 <skipAAI>true</skipAAI>
404 <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
405 <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
407 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
408 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
409 </deleteNetworkRequest>
412 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + deleteNetworkRequest)
414 String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
415 msoLogger.debug(buildDeleteNetworkRequestAsString)
416 msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" + buildDeleteNetworkRequestAsString)
418 String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
419 execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
420 msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" + restURL + "/" + networkId)
422 execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
423 msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" + buildDeleteNetworkRequestAsString)
425 catch (Exception ex) {
427 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
428 msoLogger.debug(exceptionMessage)
429 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
435 * This method is used instead of an HTTP Connector task because the
436 * connector does not allow DELETE with a body.
438 public void sendRequestToVnfAdapter(DelegateExecution execution) {
439 def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
440 'execution=' + execution.getId() +
443 msoLogger.trace('Entered ' + method)
447 String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
448 String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
450 RESTConfig config = new RESTConfig(vnfAdapterUrl)
451 RESTClient client = new RESTClient(config).
452 addHeader("Content-Type", "application/xml").
453 addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO"));
455 APIResponse response;
457 response = client.httpDelete(vnfAdapterRequest)
459 execution.setVariable(Prefix + "networkReturnCode", response.getStatusCode())
460 execution.setVariable(Prefix + "deleteNetworkResponse", response.getResponseBodyAsString())
462 } catch (Exception ex) {
464 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
465 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
466 msoLogger.debug(exceptionMessage)
467 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
473 public void prepareSDNCRequest (DelegateExecution execution) {
475 execution.setVariable("prefix", Prefix)
477 msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
481 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
482 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
484 String networkId = ""
485 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
486 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
488 if (networkId == 'null') {networkId = ""}
490 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
492 // get/set 'msoRequestId' and 'mso-request-id'
493 String requestId = execution.getVariable("msoRequestId")
494 if (requestId != null) {
495 execution.setVariable("mso-request-id", requestId)
497 requestId = execution.getVariable("mso-request-id")
499 execution.setVariable(Prefix + "requestId", requestId)
500 msoLogger.debug(Prefix + "requestId " + requestId)
501 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
503 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
504 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
505 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
506 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
507 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
508 msoLogger.debug(sndcTopologyDeleteRequesAsString)
509 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
510 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
512 } catch (Exception ex) {
514 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
515 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
516 msoLogger.debug(exceptionMessage)
517 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
523 public void prepareRpcSDNCRequest (DelegateExecution execution) {
525 execution.setVariable("prefix", Prefix)
527 msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
531 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
532 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
534 String networkId = ""
535 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
536 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
538 if (networkId == 'null') {networkId = ""}
540 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
542 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
543 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
544 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
545 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
546 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
547 msoLogger.debug(sndcTopologyDeleteRequesAsString)
548 execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
549 msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
551 } catch (Exception ex) {
553 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
554 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
555 msoLogger.debug(exceptionMessage)
556 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
563 public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
565 execution.setVariable("prefix",Prefix)
567 msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
572 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
573 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
574 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
575 String networkId = ""
576 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
577 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
579 if (networkId == 'null') {networkId = ""}
580 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
582 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
583 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
584 execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
585 msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
588 } catch (Exception ex) {
589 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
590 msoLogger.debug(exceptionMessage)
591 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
597 // **************************************************
598 // Post or Validate Response Section
599 // **************************************************
601 public void validateNetworkResponse (DelegateExecution execution) {
603 execution.setVariable("prefix", Prefix)
605 msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
608 String returnCode = execution.getVariable(Prefix + "networkReturnCode")
609 String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
611 msoLogger.debug(" Network Adapter responseCode: " + returnCode)
612 msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse)
613 msoLogger.debug(networkResponse)
615 String errorMessage = ""
616 if (returnCode == "200") {
617 msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
619 // prepare rollback data
620 String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
621 if ((rollbackData == null) || (rollbackData.isEmpty())) {
622 msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
623 execution.setVariable(Prefix + "rollbackNetworkRequest", "")
625 String rollbackNetwork =
626 """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
628 </NetworkAdapter:rollbackNetwork>"""
629 String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
630 execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
631 msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
635 } else { // network error
636 if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) { //4xx, 5xx
637 if (networkResponse.contains("deleteNetworkError") ) {
638 networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
639 errorMessage = utils.getNodeText(networkResponse, "message")
640 errorMessage = "Received error from Network Adapter: " + errorMessage
641 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
643 } else { // CatchAll exception
644 if (returnCode == "500") {
645 errorMessage = "JBWEB000065: HTTP Status 500."
647 errorMessage = "Return code is " + returnCode
649 errorMessage = "Received error from Network Adapter: " + errorMessage
650 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
654 } else { // CatchAll exception
655 String dataErrorMessage = "Received error from Network Adapter. Return code is: " + returnCode
656 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
662 } catch (BpmnError e) {
665 } catch (Exception ex) {
667 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
668 msoLogger.debug(exceptionMessage)
669 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
675 public void validateSDNCResponse (DelegateExecution execution) {
677 execution.setVariable("prefix", Prefix)
679 msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
681 String response = execution.getVariable(Prefix + "deleteSDNCResponse")
682 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
683 WorkflowException workflowException = execution.getVariable("WorkflowException")
685 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
686 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
688 String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
689 deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
690 execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
692 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, prefix+'sdncResponseSuccess'
693 execution.setVariable(Prefix + "isSdncRollbackNeeded", true) //
694 execution.setVariable(Prefix + "isPONR", true)
695 msoLogger.debug("Successfully Validated SDNC Response")
697 msoLogger.debug("Did NOT Successfully Validated SDNC Response")
698 throw new BpmnError("MSOWorkflowException")
703 public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
705 execution.setVariable("prefix",Prefix)
707 msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
709 String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
710 boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
711 WorkflowException workflowException = execution.getVariable("WorkflowException")
713 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
714 sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
716 String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
717 assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
718 execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
720 if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) { // from sdnc util, Prefix+'sdncResponseSuccess'
721 execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
722 msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
725 msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
726 throw new BpmnError("MSOWorkflowException")
731 public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
733 execution.setVariable("prefix",Prefix)
735 msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
740 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
741 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
742 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
743 String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
744 String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
745 if (networkId == 'null') {networkId = ""}
746 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
748 // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
749 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
750 String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
751 execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
752 msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyRollbackRpcRequestAsString)
755 } catch (Exception ex) {
756 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
757 msoLogger.debug(exceptionMessage)
758 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
764 public void prepareRollbackData(DelegateExecution execution) {
766 execution.setVariable("prefix",Prefix)
768 msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
772 Map<String, String> rollbackData = new HashMap<String, String>();
773 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
774 if (rollbackNetworkRequest != null) {
775 if (rollbackNetworkRequest != "") {
776 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
779 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
780 if (rollbackDeactivateSDNCRequest != null) {
781 if (rollbackDeactivateSDNCRequest != "") {
782 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
785 execution.setVariable("rollbackData", rollbackData)
786 msoLogger.debug("** rollbackData : " + rollbackData)
788 execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
789 msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
791 } catch (Exception ex) {
792 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
793 msoLogger.debug(exceptionMessage)
794 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
800 public void postProcessResponse (DelegateExecution execution) {
802 execution.setVariable("prefix", Prefix)
804 msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
808 msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
809 if (execution.getVariable(Prefix + "isException") == false) {
810 execution.setVariable(Prefix + "Success", true)
811 execution.setVariable("WorkflowException", null)
812 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
813 execution.setVariable("rolledBack", false)
815 execution.setVariable("rolledBack", true)
817 prepareSuccessRollbackData(execution) // populate rollbackData
820 execution.setVariable(Prefix + "Success", false)
821 execution.setVariable("rollbackData", null)
822 String exceptionMessage = " Exception encountered in MSO Bpmn. "
823 if (execution.getVariable("workflowException") != null) { // Output of Rollback flow.
824 msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
825 WorkflowException wfex = execution.getVariable("workflowException")
826 exceptionMessage = wfex.getErrorMessage()
828 if (execution.getVariable(Prefix + "WorkflowException") != null) {
829 WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
830 exceptionMessage = pwfex.getErrorMessage()
832 if (execution.getVariable("WorkflowException") != null) {
833 WorkflowException pwfex = execution.getVariable("WorkflowException")
834 exceptionMessage = pwfex.getErrorMessage()
839 // going to the Main flow: a-la-carte or macro
840 msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
841 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
842 throw new BpmnError("MSOWorkflowException")
846 } catch(BpmnError b){
847 msoLogger.debug("Rethrowing MSOWorkflowException")
850 } catch (Exception ex) {
852 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
853 msoLogger.debug(exceptionMessage)
854 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
855 throw new BpmnError("MSOWorkflowException")
861 public void prepareSuccessRollbackData(DelegateExecution execution) {
863 execution.setVariable("prefix",Prefix)
865 msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
869 if (execution.getVariable("sdncVersion") != '1610') {
870 prepareRpcSDNCDeactivateRollback(execution)
871 prepareRpcSDNCUnassignRollback(execution)
873 prepareSDNCRollback(execution)
876 Map<String, String> rollbackData = new HashMap<String, String>();
877 String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
878 if (rollbackSDNCRequest != null) {
879 if (rollbackSDNCRequest != "") {
880 rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
883 String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
884 if (rollbackNetworkRequest != null) {
885 if (rollbackNetworkRequest != "") {
886 rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
889 String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
890 if (rollbackDeactivateSDNCRequest != null) {
891 if (rollbackDeactivateSDNCRequest != "") {
892 rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
895 execution.setVariable("rollbackData", rollbackData)
897 msoLogger.debug("** rollbackData : " + rollbackData)
898 execution.setVariable("WorkflowException", null)
901 } catch (Exception ex) {
902 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
903 msoLogger.debug(exceptionMessage)
904 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
910 public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
912 execution.setVariable("prefix",Prefix)
914 msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
919 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
920 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
922 String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
923 String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
924 if (networkId == 'null') {networkId = ""}
925 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
927 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
928 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
929 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
930 String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
931 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
932 msoLogger.debug(sndcTopologyDeleteRequesAsString)
933 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
934 msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" + sndcTopologyDeleteRequesAsString)
935 msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
938 } catch (Exception ex) {
939 String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
940 msoLogger.debug(exceptionMessage)
941 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
947 public void prepareSDNCRollback (DelegateExecution execution) {
949 execution.setVariable("prefix", Prefix)
951 msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
956 String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
957 String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
959 String networkId = ""
960 if (utils.nodeExists(deleteNetworkInput, "network-id")) {
961 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
963 if (networkId == 'null') {networkId = ""}
965 String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
967 // get/set 'msoRequestId' and 'mso-request-id'
968 String requestId = execution.getVariable("msoRequestId")
969 if (requestId != null) {
970 execution.setVariable("mso-request-id", requestId)
972 requestId = execution.getVariable("mso-request-id")
974 execution.setVariable(Prefix + "requestId", requestId)
976 L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
978 SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
979 String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
980 // 1. prepare delete topology via SDNC Adapter SUBFLOW call
981 String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
982 String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
983 msoLogger.debug(sndcTopologyDeleteRequesAsString)
984 execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
985 msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" + sndcTopologyDeleteRequesAsString)
986 msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" + sndcTopologyDeleteRequesAsString)
989 } catch (Exception ex) {
991 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
992 msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
993 msoLogger.debug(exceptionMessage)
994 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
1000 public void setExceptionFlag(DelegateExecution execution){
1002 execution.setVariable("prefix",Prefix)
1004 msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
1008 execution.setVariable(Prefix + "isException", true)
1010 if (execution.getVariable("SavedWorkflowException1") != null) {
1011 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
1013 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
1015 msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
1017 } catch(Exception ex){
1018 String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
1019 msoLogger.debug(exceptionMessage)
1020 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
1026 // *******************************
1027 // Build Error Section
1028 // *******************************
1030 public void processJavaException(DelegateExecution execution){
1032 execution.setVariable("prefix",Prefix)
1034 msoLogger.debug("Caught a Java Exception")
1035 msoLogger.debug("Started processJavaException Method")
1036 msoLogger.debug("Variables List: " + execution.getVariables())
1037 execution.setVariable("UnexpectedError", "Caught a Java Lang Exception") // Adding this line temporarily until this flows error handling gets updated
1038 exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
1040 }catch(Exception e){
1041 msoLogger.debug("Caught Exception during processJavaException Method: " + e)
1042 execution.setVariable("UnexpectedError", "Exception in processJavaException method") // Adding this line temporarily until this flows error handling gets updated
1043 exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
1045 msoLogger.debug("Completed processJavaException Method of " + Prefix)