bee9ad260bf986c21f013d72c4be9ab0cbad997f
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
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=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.scripts
24
25 import javax.ws.rs.core.Response
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.aaiclient.client.aai.AAIObjectType
30 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
31 import org.onap.aaiclient.client.aai.entities.Relationships
32 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
33 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
34 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
35 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth
36 import org.onap.logging.filter.base.ErrorCode
37 import org.onap.logging.filter.base.ONAPComponents;
38 import org.onap.so.bpmn.common.scripts.AaiUtil
39 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
40 import org.onap.so.bpmn.common.scripts.ExceptionUtil
41 import org.onap.so.bpmn.common.scripts.MsoUtils
42 import org.onap.so.bpmn.common.scripts.NetworkUtils
43 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
44 import org.onap.so.bpmn.common.scripts.VidUtils
45 import org.onap.so.bpmn.core.UrnPropertiesReader
46 import org.onap.so.bpmn.core.WorkflowException
47 import org.onap.so.bpmn.core.json.JsonUtils
48 import org.onap.so.client.HttpClient
49 import org.onap.so.client.HttpClientFactory
50 import org.onap.so.constants.Defaults
51 import org.onap.so.logger.LoggingAnchor
52 import org.onap.so.logger.MessageEnum
53 import org.slf4j.Logger
54 import org.slf4j.LoggerFactory
55 import org.springframework.web.util.UriUtils
56 import groovy.json.JsonOutput
57
58 public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
59     private static final Logger logger = LoggerFactory.getLogger( DoDeleteNetworkInstance.class);
60
61     String Prefix= "DELNWKI_"
62     String groovyClassName = "DoDeleteNetworkInstance"
63     ExceptionUtil exceptionUtil = new ExceptionUtil()
64     JsonUtils jsonUtil = new JsonUtils()
65     VidUtils vidUtils = new VidUtils(this)
66     NetworkUtils networkUtils = new NetworkUtils()
67     SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
68
69     public InitializeProcessVariables(DelegateExecution execution){
70         /* Initialize all the process variables in this block */
71
72         execution.setVariable(Prefix + "networkRequest", "")
73         execution.setVariable(Prefix + "isSilentSuccess", false)
74         execution.setVariable(Prefix + "Success", false)
75
76         execution.setVariable(Prefix + "requestId", "")
77         execution.setVariable(Prefix + "source", "")
78         execution.setVariable(Prefix + "lcpCloudRegion", "")
79         execution.setVariable(Prefix + "networkInputs", "")
80         execution.setVariable(Prefix + "tenantId", "")
81
82         execution.setVariable(Prefix + "queryAAIResponse", "")
83         execution.setVariable(Prefix + "aaiReturnCode", "")
84         execution.setVariable(Prefix + "isAAIGood", false)
85         execution.setVariable(Prefix + "isVfRelationshipExist", false)
86
87         // AAI query Cloud Region
88         execution.setVariable(Prefix + "queryCloudRegionRequest","")
89         execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
90         execution.setVariable(Prefix + "queryCloudRegionResponse","")
91         execution.setVariable(Prefix + "cloudRegionPo","")
92         execution.setVariable(Prefix + "cloudRegionSdnc","")
93
94         execution.setVariable(Prefix + "deleteNetworkRequest", "")
95         execution.setVariable(Prefix + "deleteNetworkResponse", "")
96         execution.setVariable(Prefix + "networkReturnCode", "")
97         execution.setVariable(Prefix + "rollbackNetworkRequest", "")
98
99         execution.setVariable(Prefix + "deleteSDNCRequest", "")
100         execution.setVariable(Prefix + "deleteSDNCResponse", "")
101         execution.setVariable(Prefix + "sdncReturnCode", "")
102         execution.setVariable(Prefix + "sdncResponseSuccess", false)
103
104         execution.setVariable(Prefix + "deactivateSDNCRequest", "")
105         execution.setVariable(Prefix + "deactivateSDNCResponse", "")
106         execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
107         execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
108
109         execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
110         execution.setVariable(Prefix + "isException", false)
111
112
113     }
114
115     // **************************************************
116     //     Pre or Prepare Request Section
117     // **************************************************
118
119     public void preProcessRequest (DelegateExecution execution) {
120
121         execution.setVariable("prefix",Prefix)
122
123         logger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
124
125         // initialize flow variables
126         InitializeProcessVariables(execution)
127
128         try {
129             // get incoming message/input
130             execution.setVariable("action", "DELETE")
131             String deleteNetwork = execution.getVariable("bpmnRequest")
132             if (deleteNetwork != null) {
133                 if (deleteNetwork.contains("requestDetails")) {
134                     // JSON format request is sent, create xml
135                     try {
136                         def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
137                         logger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
138                         deleteNetwork =  vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
139
140                     } catch (Exception ex) {
141                         String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
142                         logger.debug(dataErrorMessage)
143                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
144                     }
145                 } else {
146                     // XML format request is sent
147
148                 }
149             } else {
150                 // vIPR format request is sent, create xml from individual variables
151                 deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
152             }
153
154             deleteNetwork = utils.formatXml(deleteNetwork)
155             logger.debug(deleteNetwork)
156             execution.setVariable(Prefix + "networkRequest", deleteNetwork)
157             logger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
158
159             // validate 'backout-on-failure' to override 'mso.rollback'
160             boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
161             execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
162             logger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
163
164             String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
165             execution.setVariable(Prefix + "networkInputs", networkInputs)
166
167             // prepare messageId
168             String messageId = execution.getVariable("testMessageId")  // for testing
169             if (messageId == null || messageId == "") {
170                 messageId = UUID.randomUUID()
171                 logger.debug(Prefix + "messageId, random generated: " + messageId)
172             } else {
173                 logger.debug(Prefix + "messageId, pre-assigned: " + messageId)
174             }
175             execution.setVariable(Prefix + "messageId", messageId)
176
177             String source = utils.getNodeText(deleteNetwork, "source")
178             execution.setVariable(Prefix + "source", source)
179             logger.debug(Prefix + "source - " + source)
180
181             String networkId = ""
182             if (utils.nodeExists(networkInputs, "network-id")) {
183                 networkId = utils.getNodeText(networkInputs, "network-id")
184                 if (networkId == null || networkId == "" || networkId == 'null' ) {
185                     sendSyncError(execution)
186                     // missing value of network-id
187                     String dataErrorMessage = "network-request has missing 'network-id' element/value."
188                     logger.debug(" Invalid Request - " + dataErrorMessage)
189                     exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
190                 }
191             }
192
193             // lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
194             def lcpCloudRegion = null
195             if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
196                 lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
197                 if (lcpCloudRegion == 'null') {
198                     lcpCloudRegion = null
199                 }
200             }
201             execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
202             logger.debug("lcpCloudRegion : " + lcpCloudRegion)
203
204             String tenantId = null
205             if (utils.nodeExists(networkInputs, "tenant-id")) {
206                 tenantId = utils.getNodeText(networkInputs, "tenant-id")
207                 if (tenantId == 'null') {
208                     tenantId = null
209                 }
210
211             }
212             execution.setVariable(Prefix + "tenantId", tenantId)
213             logger.debug("tenantId : " + tenantId)
214
215             String sdncVersion = execution.getVariable("sdncVersion")
216             logger.debug("sdncVersion? : " + sdncVersion)
217
218             // PO Authorization Info / headers Authorization=
219             String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
220
221             try {
222                 def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
223                 execution.setVariable("BasicAuthHeaderValuePO",encodedString)
224                 execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
225
226             } catch (IOException ex) {
227                 String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
228                 logger.debug(dataErrorMessage )
229                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
230             }
231
232         } catch (BpmnError e) {
233             throw e;
234
235         } catch (Exception ex){
236             // caught exception
237             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
238             logger.debug(exceptionMessage)
239             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
240
241         }
242
243     }
244
245
246     public void callRESTQueryAAI (DelegateExecution execution) {
247
248         execution.setVariable("prefix",Prefix)
249
250         logger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
251
252         // get variables
253         String networkInputs  = execution.getVariable(Prefix + "networkInputs")
254         String networkId   = utils.getNodeText(networkInputs, "network-id")
255         networkId = UriUtils.encode(networkId,"UTF-8")
256         ExceptionUtil exceptionUtil = new ExceptionUtil()
257         Boolean isVfRelationshipExist = false
258         try {
259             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL)
260             Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri);
261             AAIResultWrapper wrapper = getAAIClient().get(uri);
262             Optional<Relationships> relationships = wrapper.getRelationships()
263
264             if (l3Network.isPresent()) {
265                 execution.setVariable(Prefix + "aaiReturnCode", 200)
266                 execution.setVariable(Prefix + "queryAAIResponse", l3Network.get())
267                 execution.setVariable(Prefix + "isAAIGood", true)
268                 if (relationships.isPresent()){
269                     if(!relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){
270                         execution.setVariable(Prefix + "isVfRelationshipExist", true)
271                         isVfRelationshipExist = true
272                         String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
273                         exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
274                     }else{
275                         List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)
276                         for(AAIResourceUri tenantURI: tenantURIList){
277                             if(execution.getVariable(Prefix + "tenantId") == null) {
278                                 String tenantId = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId)
279                                 execution.setVariable(Prefix + "tenantId", tenantId)
280                                 logger.debug(" Get AAI getTenantId()  : " + tenantId)
281                             }
282                         }
283                         List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
284                         for(AAIResourceUri tenantURI: cloudRegionURIList){
285                             if(execution.getVariable(Prefix + "lcpCloudRegion") == null) {
286                                 String lcpCloudRegion = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.CLOUD_REGION.getUriParams().cloudRegionId)
287                                 execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
288                                 logger.debug(" Get AAI getCloudRegion()  : " + lcpCloudRegion)
289                             }
290                         }
291                     }
292                 }
293                 logger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
294             } else {
295                 // not found // empty aai response
296                 execution.setVariable(Prefix + "aaiReturnCode", 404)
297                 execution.setVariable(Prefix + "isAAIGood", false)
298                 execution.setVariable(Prefix + "isSilentSuccess", true)
299                 logger.debug(" AAI Query is Silent Success")
300             }
301             logger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
302         } catch (Exception ex) {
303             // caught exception
304             String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
305             logger.debug(exceptionMessage)
306             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
307
308         }
309
310     }
311
312     public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
313
314         execution.setVariable("prefix", Prefix)
315
316         logger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
317
318         try {
319             String networkInputs  = execution.getVariable(Prefix + "networkInputs")
320             // String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
321             String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
322             // Prepare AA&I url
323             AaiUtil aaiUtil = new AaiUtil(this)
324
325             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion)
326             def queryCloudRegionRequest = aaiUtil.createAaiUri(uri)
327
328             execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
329
330             String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
331             String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
332
333             if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
334                 execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
335                 execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
336
337             } else {
338                 String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
339                 logger.debug(dataErrorMessage)
340                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
341
342             }
343
344         } catch (BpmnError e) {
345             throw e;
346
347         } catch (Exception ex) {
348             // caught exception
349             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
350             logger.debug(exceptionMessage)
351             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
352
353         }
354
355     }
356
357     public void prepareNetworkRequest (DelegateExecution execution) {
358
359         execution.setVariable("prefix", Prefix)
360
361         logger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
362         ExceptionUtil exceptionUtil = new ExceptionUtil()
363         try {
364             // get variables
365             String networkRequest = execution.getVariable(Prefix + "networkRequest")
366             String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
367             String tenantId = execution.getVariable(Prefix + "tenantId")
368
369             L3Network l3Network = execution.getVariable(Prefix + "queryAAIResponse")
370             String networkType = l3Network.getNetworkType()
371             String networkId = l3Network.getNetworkId()
372
373             String networkStackId = ""
374             networkStackId = l3Network.getHeatStackId()
375             if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
376                 networkStackId = "force_delete"
377             }
378
379             String requestId = execution.getVariable("msoRequestId")
380             if (requestId != null) {
381                 execution.setVariable("mso-request-id", requestId)
382             } else {
383                 requestId = execution.getVariable("mso-request-id")
384             }
385             String serviceInstanceId = execution.getVariable("serviceInstanceId")
386
387             // Added new Elements
388             String messageId = execution.getVariable(Prefix + "messageId")
389             String notificationUrl = ""                                   //TODO - is this coming from URN? What variable/value to use?
390             //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
391
392             String modelCustomizationUuid = ""
393             if (utils.nodeExists(networkRequest, "networkModelInfo")) {
394                 String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
395                 modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
396             } else {
397                 modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
398             }
399
400             String deleteNetworkRequest = """
401                                           <deleteNetworkRequest>
402                                             <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
403                                             <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
404                                             <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
405                                                 <networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
406                                             <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
407                                                 <modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
408                                                 <skipAAI>true</skipAAI>
409                                             <msoRequest>
410                                                <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
411                                                <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
412                                             </msoRequest>
413                                                 <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
414                                                 <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
415                                           </deleteNetworkRequest>
416                                                 """.trim()
417
418             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  deleteNetworkRequest)
419             // Format Response
420             String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
421             logger.debug(buildDeleteNetworkRequestAsString)
422             logger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" +  buildDeleteNetworkRequestAsString)
423
424             String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
425             execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
426             logger.debug("mso.adapters.network.rest.endpoint - " + "\n" +  restURL + "/" + networkId)
427
428             execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
429             logger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
430         }
431         catch (Exception ex) {
432             // caught exception
433             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
434             logger.debug(exceptionMessage)
435             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
436
437         }
438     }
439
440     /**
441      * This method is used instead of an HTTP Connector task because the
442      * connector does not allow DELETE with a body.
443      */
444     public void sendRequestToVnfAdapter(DelegateExecution execution) {
445         def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
446                 'execution=' + execution.getId() +
447                 ')'
448
449         logger.trace('Entered ' + method)
450
451         try {
452
453             String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
454             String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
455
456             URL url = new URL(vnfAdapterUrl)
457             HttpClient httpClient = new HttpClientFactory().newXmlClient(url, ONAPComponents.OPENSTACK_ADAPTER)
458             httpClient.accept = "application/xml"
459             httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
460             Response response = httpClient.delete(vnfAdapterRequest)
461
462             execution.setVariable(Prefix + "deleteNetworkResponse", response.readEntity(String.class))
463             execution.setVariable(Prefix + "networkReturnCode", response.getStatus())
464
465         } catch (Exception ex) {
466             // caught exception
467             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
468             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
469                     "BPMN", ErrorCode.UnknownError.getValue(),
470                     "Exception is:\n" + ex);
471             logger.debug(exceptionMessage)
472             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
473
474         }
475     }
476
477
478     public void prepareSDNCRequest (DelegateExecution execution) {
479
480         execution.setVariable("prefix", Prefix)
481
482         logger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
483
484         try {
485             // get variables
486             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
487             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
488
489             String networkId = ""
490             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
491                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
492             }
493             if (networkId == 'null') {networkId = ""}
494
495             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
496
497             // get/set 'msoRequestId' and 'mso-request-id'
498             String requestId = execution.getVariable("msoRequestId")
499             if (requestId != null) {
500                 execution.setVariable("mso-request-id", requestId)
501             } else {
502                 requestId = execution.getVariable("mso-request-id")
503             }
504             execution.setVariable(Prefix + "requestId", requestId)
505             logger.debug(Prefix + "requestId " + requestId)
506             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
507
508             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
509             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
510             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
511             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
512             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
513             logger.debug(sndcTopologyDeleteRequesAsString)
514             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
515             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
516
517         } catch (Exception ex) {
518             // caught exception
519             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
520             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
521                     "BPMN", ErrorCode.UnknownError.getValue(),
522                     "Exception is:\n" + ex);
523             logger.debug(exceptionMessage)
524             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
525
526         }
527
528     }
529
530     public void prepareRpcSDNCRequest (DelegateExecution execution) {
531
532         execution.setVariable("prefix", Prefix)
533
534         logger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
535
536         try {
537             // get variables
538             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
539             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
540
541             String networkId = ""
542             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
543                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
544             }
545             if (networkId == 'null') {networkId = ""}
546
547             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
548
549             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
550             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
551             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
552             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
553             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
554             logger.debug(sndcTopologyDeleteRequesAsString)
555             execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
556             logger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
557
558         } catch (Exception ex) {
559             // caught exception
560             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
561             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
562                     "BPMN", ErrorCode.UnknownError.getValue(),
563                     "Exception is:\n" + ex);
564             logger.debug(exceptionMessage)
565             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
566
567         }
568
569     }
570
571
572     public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
573
574         execution.setVariable("prefix",Prefix)
575
576         logger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
577
578         try {
579
580             // get variables
581             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
582             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
583             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
584             String networkId = ""
585             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
586                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
587             }
588             if (networkId == 'null') {networkId = ""}
589             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
590
591             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
592             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
593             execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
594             logger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
595
596
597         } catch (Exception ex) {
598             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
599             logger.debug(exceptionMessage)
600             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
601
602         }
603
604     }
605
606     public void validateSDNCResponse (DelegateExecution execution) {
607
608         execution.setVariable("prefix", Prefix)
609
610         logger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
611
612         String response = execution.getVariable(Prefix + "deleteSDNCResponse")
613         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
614         WorkflowException workflowException = execution.getVariable("WorkflowException")
615
616         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
617         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
618         // reset variable
619         String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
620         deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
621         execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
622
623         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, prefix+'sdncResponseSuccess'
624             execution.setVariable(Prefix + "isSdncRollbackNeeded", true)      //
625             execution.setVariable(Prefix + "isPONR", true)
626             logger.debug("Successfully Validated SDNC Response")
627         } else {
628             logger.debug("Did NOT Successfully Validated SDNC Response")
629             throw new BpmnError("MSOWorkflowException")
630         }
631
632     }
633
634     public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
635
636         execution.setVariable("prefix",Prefix)
637
638         logger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
639
640         String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
641         boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
642         WorkflowException workflowException = execution.getVariable("WorkflowException")
643
644         SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
645         sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
646         // reset variable
647         String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
648         assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
649         execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
650
651         if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
652             execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
653             logger.debug("Successfully Validated Rpc SDNC Activate Response")
654
655         } else {
656             logger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
657             throw new BpmnError("MSOWorkflowException")
658         }
659
660     }
661
662     public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
663
664         execution.setVariable("prefix",Prefix)
665
666         logger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
667
668         try {
669
670             // get variables
671             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
672             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
673             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
674             String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
675             String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
676             if (networkId == 'null') {networkId = ""}
677             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
678
679             // 2. prepare rollback topology via SDNC Adapter SUBFLOW call
680             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
681             String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
682             execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
683             logger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
684
685
686         } catch (Exception ex) {
687             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
688             logger.debug(exceptionMessage)
689             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
690
691         }
692
693     }
694
695     public void prepareRollbackData(DelegateExecution execution) {
696
697         execution.setVariable("prefix",Prefix)
698
699         logger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
700
701         try {
702
703             Map<String, String> rollbackData = new HashMap<String, String>();
704             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
705             if (rollbackNetworkRequest != null) {
706                 if (rollbackNetworkRequest != "") {
707                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
708                 }
709             }
710             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
711             if (rollbackDeactivateSDNCRequest != null) {
712                 if (rollbackDeactivateSDNCRequest != "") {
713                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
714                 }
715             }
716             execution.setVariable("rollbackData", rollbackData)
717             logger.debug("** rollbackData : " + rollbackData)
718
719             execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
720             logger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
721
722         } catch (Exception ex) {
723             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
724             logger.debug(exceptionMessage)
725             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
726
727         }
728
729     }
730
731     public void postProcessResponse (DelegateExecution execution) {
732
733         execution.setVariable("prefix", Prefix)
734
735         logger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
736
737         try {
738
739             logger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
740             if (execution.getVariable(Prefix + "isException") == false) {
741                 execution.setVariable(Prefix + "Success", true)
742                 execution.setVariable("WorkflowException", null)
743                 if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
744                     execution.setVariable("rolledBack", false)
745                 } else {
746                     execution.setVariable("rolledBack", true)
747                 }
748                 prepareSuccessRollbackData(execution) // populate rollbackData
749
750             } else {
751                 execution.setVariable(Prefix + "Success", false)
752                 execution.setVariable("rollbackData", null)
753                 String exceptionMessage = " Exception encountered in MSO Bpmn. "
754                 if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
755                     logger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
756                     WorkflowException wfex = execution.getVariable("workflowException")
757                     exceptionMessage = wfex.getErrorMessage()
758                 } else {
759                     if (execution.getVariable(Prefix + "WorkflowException") != null) {
760                         WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
761                         exceptionMessage = pwfex.getErrorMessage()
762                     } else {
763                         if (execution.getVariable("WorkflowException") != null) {
764                             WorkflowException pwfex = execution.getVariable("WorkflowException")
765                             exceptionMessage = pwfex.getErrorMessage()
766                         }
767                     }
768                 }
769
770                 // going to the Main flow: a-la-carte or macro
771                 logger.debug(" ***** postProcessResponse(), BAD !!!")
772                 exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
773                 throw new BpmnError("MSOWorkflowException")
774
775             }
776
777         } catch(BpmnError b){
778             logger.debug("Rethrowing MSOWorkflowException")
779             throw b
780
781         } catch (Exception ex) {
782             // caught exception
783             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
784             logger.debug(exceptionMessage)
785             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
786             throw new BpmnError("MSOWorkflowException")
787
788         }
789
790     }
791
792     public void prepareSuccessRollbackData(DelegateExecution execution) {
793
794         execution.setVariable("prefix",Prefix)
795
796         logger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
797
798         try {
799
800             if (execution.getVariable("sdncVersion") != '1610') {
801                 prepareRpcSDNCDeactivateRollback(execution)
802                 prepareRpcSDNCUnassignRollback(execution)
803             } else {
804                 prepareSDNCRollback(execution)
805             }
806
807             Map<String, String> rollbackData = new HashMap<String, String>();
808             String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
809             if (rollbackSDNCRequest != null) {
810                 if (rollbackSDNCRequest != "") {
811                     rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
812                 }
813             }
814             String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
815             if (rollbackNetworkRequest != null) {
816                 if (rollbackNetworkRequest != "") {
817                     rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
818                 }
819             }
820             String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
821             if (rollbackDeactivateSDNCRequest != null) {
822                 if (rollbackDeactivateSDNCRequest != "") {
823                     rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
824                 }
825             }
826             execution.setVariable("rollbackData", rollbackData)
827
828             logger.debug("** rollbackData : " + rollbackData)
829             execution.setVariable("WorkflowException", null)
830
831
832         } catch (Exception ex) {
833             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
834             logger.debug(exceptionMessage)
835             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
836
837         }
838
839     }
840
841     public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
842
843         execution.setVariable("prefix",Prefix)
844
845         logger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
846
847         try {
848
849             // get variables
850             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
851             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
852
853             String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
854             String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
855             if (networkId == 'null') {networkId = ""}
856             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
857
858             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
859             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
860             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
861             String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
862             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
863             logger.debug(sndcTopologyDeleteRequesAsString)
864             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
865             logger.debug(Prefix + "rollbackSDNCRequest" + "\n" +  sndcTopologyDeleteRequesAsString)
866             logger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
867
868
869         } catch (Exception ex) {
870             String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
871             logger.debug(exceptionMessage)
872             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
873
874         }
875
876     }
877
878     public void prepareSDNCRollback (DelegateExecution execution) {
879
880         execution.setVariable("prefix", Prefix)
881
882         logger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
883
884         try {
885
886             // get variables
887             String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
888             String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
889
890             String networkId = ""
891             if (utils.nodeExists(deleteNetworkInput, "network-id")) {
892                 networkId = utils.getNodeText(deleteNetworkInput, "network-id")
893             }
894             if (networkId == 'null') {networkId = ""}
895
896             String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
897
898             // get/set 'msoRequestId' and 'mso-request-id'
899             String requestId = execution.getVariable("msoRequestId")
900             if (requestId != null) {
901                 execution.setVariable("mso-request-id", requestId)
902             } else {
903                 requestId = execution.getVariable("mso-request-id")
904             }
905             execution.setVariable(Prefix + "requestId", requestId)
906
907             L3Network queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
908
909             SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
910             String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
911             // 1. prepare delete topology via SDNC Adapter SUBFLOW call
912             String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
913             String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
914             logger.debug(sndcTopologyDeleteRequesAsString)
915             execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
916             logger.debug(Prefix + "rollbackSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
917             logger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
918
919
920         } catch (Exception ex) {
921             // caught exception
922             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
923             logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), exceptionMessage,
924                     "BPMN", ErrorCode.UnknownError.getValue(),
925                     "Exception is:\n" + ex);
926             logger.debug(exceptionMessage)
927             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
928
929         }
930
931     }
932
933     public void setExceptionFlag(DelegateExecution execution){
934
935         execution.setVariable("prefix",Prefix)
936
937         logger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
938
939         try {
940
941             execution.setVariable(Prefix + "isException", true)
942
943             if (execution.getVariable("SavedWorkflowException1") != null) {
944                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
945             } else {
946                 execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
947             }
948             logger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
949
950         } catch(Exception ex){
951             String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
952             logger.debug(exceptionMessage)
953             exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
954         }
955
956     }
957
958
959     // *******************************
960     //     Build Error Section
961     // *******************************
962
963     public void processJavaException(DelegateExecution execution){
964
965         execution.setVariable("prefix",Prefix)
966         try{
967             logger.debug("Caught a Java Exception")
968             logger.debug("Started processJavaException Method")
969             logger.debug("Variables List: " + execution.getVariables())
970             execution.setVariable("UnexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
971             exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
972
973         }catch(Exception e){
974             logger.debug("Caught Exception during processJavaException Method: " + e)
975             execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
976             exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
977         }
978         logger.debug("Completed processJavaException Method of " + Prefix)
979     }
980
981 }