Support more Generic workflow for voLTE
[so.git] / bpmn / MSOInfrastructureBPMN / src / main / java / org / openecomp / mso / bpmn / infrastructure / workflow / serviceTask / AbstractSdncOperationTask.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask;
22
23 import com.fasterxml.jackson.annotation.JsonInclude;
24 import com.fasterxml.jackson.core.JsonProcessingException;
25 import com.fasterxml.jackson.databind.ObjectMapper;
26 import org.apache.commons.lang3.StringUtils;
27 import org.apache.http.client.ClientProtocolException;
28 import org.apache.http.client.methods.CloseableHttpResponse;
29 import org.apache.http.client.methods.HttpGet;
30 import org.apache.http.client.methods.HttpPost;
31 import org.apache.http.entity.ContentType;
32 import org.apache.http.entity.StringEntity;
33 import org.apache.http.impl.client.CloseableHttpClient;
34 import org.apache.http.impl.client.HttpClients;
35 import org.apache.http.util.EntityUtils;
36 import org.camunda.bpm.engine.delegate.DelegateExecution;
37 import org.json.JSONObject;
38 import org.onap.msb.sdk.discovery.common.RouteException;
39 import org.onap.msb.sdk.httpclient.RestServiceCreater;
40 import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
41 import org.openecomp.mso.bpmn.core.BaseTask;
42 import org.openecomp.mso.bpmn.core.PropertyConfiguration;
43 import org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.GenericResourceApi;
44 import org.openecomp.mso.logger.MessageEnum;
45 import org.openecomp.mso.logger.MsoLogger;
46 import org.openecomp.mso.requestsdb.RequestsDatabase;
47 import org.openecomp.mso.requestsdb.RequestsDbConstant;
48 import org.openecomp.mso.requestsdb.ResourceOperationStatus;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
51
52 import java.io.IOException;
53 import java.util.HashMap;
54 import java.util.Iterator;
55 import java.util.Map;
56
57 /**
58  * Created by 10112215 on 2017/9/16.
59  */
60 public abstract class AbstractSdncOperationTask extends BaseTask {
61
62     private static final Logger logger = LoggerFactory.getLogger(AbstractSdncOperationTask.class);
63
64     private static final String DEFAULT_MSB_IP = "127.0.0.1";
65     private static final int DEFAULT_MSB_Port = 80;
66     private static final String SDCADAPTOR_INPUTS = "resourceParameters";
67     public static final String ONAP_IP = "ONAP_IP";
68     private RequestsDatabase requestsDB = RequestsDatabase.getInstance();
69
70     private static final String postBodyTemplate = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns=\"http://org.openecomp.mso/requestsdb\"><soapenv:Header/><soapenv:Body>\n"+
71             "     <ns:updateResourceOperationStatus>\n"+
72             "                <errorCode>$errorCode</errorCode>\n"+
73             "                <jobId>$jobId</jobId>\n"+
74             "                <operType>$operType</operType>\n"+
75             "                <operationId>$operationId</operationId>\n"+
76             "                <progress>$progress</progress>\n"+
77             "                <resourceTemplateUUID>$resourceTemplateUUID</resourceTemplateUUID>\n"+
78             "                <serviceId>$serviceId</serviceId>\n"+
79             "                <status>$status</status>\n"+
80             "                <statusDescription>$statusDescription</statusDescription>\n"+
81             "     </ns:updateResourceOperationStatus></soapenv:Body></soapenv:Envelope>";
82
83     private static final String getBodyTemplate = " <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns=\"http://org.openecomp.mso/requestsdb\"><soapenv:Header/><soapenv:Body>\n" +
84             "     <ns:getResourceOperationStatus>\n" +
85             "                <operationId>$operationId</operationId>\n" +
86             "                <resourceTemplateUUID>$resourceTemplateUUID</resourceTemplateUUID>\n" +
87             "                <serviceId>$serviceId</serviceId>\n" +
88             "     </ns:getResourceOperationStatus></soapenv:Body></soapenv:Envelope>";
89
90
91     private void updateResOperStatus(ResourceOperationStatus resourceOperationStatus) throws RouteException {
92         logger.info("AbstractSdncOperationTask.updateResOperStatus begin!");
93         String url = "http://mso:8080/dbadapters/RequestsDbAdapter";
94         HttpPost httpPost = new HttpPost(url);
95         httpPost.addHeader("Authorization", "Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
96         httpPost.addHeader("Content-type", "application/soap+xml");
97         String postBody = getPostStringBody(resourceOperationStatus);
98         httpPost.setEntity(new StringEntity(postBody, ContentType.APPLICATION_XML));
99         httpPost(url, httpPost);
100         logger.info("AbstractSdncOperationTask.updateResOperStatus end!");
101         //requestsDB.updateResOperStatus(resourceOperationStatus);
102     }
103
104     protected String getPostbody(Object inputEntity) {
105         ObjectMapper objectMapper = new ObjectMapper();
106         String postBody = null;
107         try {
108             objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
109             postBody = objectMapper.writeValueAsString(inputEntity);
110         } catch (JsonProcessingException e) {
111             e.printStackTrace();
112         }
113         return postBody;
114     }
115
116     protected String httpPost(String url, HttpPost httpPost) throws RouteException {
117         logger.info("AbstractSdncOperationTask.httpPost begin!");
118         CloseableHttpClient httpClient = HttpClients.createDefault();
119         String result = null;
120         boolean var15 = false;
121
122         String errorMsg;
123         label91: {
124             try {
125                 var15 = true;
126                 CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpPost);
127                 result = EntityUtils.toString(closeableHttpResponse.getEntity());
128                 logger.info("result = {}", result);
129 //                LOGGER.info(MessageEnum.RA_RESPONSE_FROM_SDNC, result.toString(), "SDNC", "");
130                 if(closeableHttpResponse.getStatusLine().getStatusCode() != 200) {
131                     logger.info("exception: fail for status code = {}", closeableHttpResponse.getStatusLine().getStatusCode());
132                     throw new RouteException(result, "SERVICE_GET_ERR");
133                 }
134
135                 closeableHttpResponse.close();
136                 var15 = false;
137                 break label91;
138             } catch (IOException var19) {
139                 errorMsg = url + ":httpPostWithJSON connect faild";
140                 logger.info("exception: POST_CONNECT_FAILD : {}", errorMsg);
141                 throwsRouteException(errorMsg, var19, "POST_CONNECT_FAILD");
142                 var15 = false;
143             } finally {
144                 if(var15) {
145                     try {
146                         httpClient.close();
147                     } catch (IOException var16) {
148                         String errorMsg1 = url + ":close  httpClient faild";
149                         logger.info("exception: CLOSE_CONNECT_FAILD : {}", errorMsg1);
150                         throwsRouteException(errorMsg1, var16, "CLOSE_CONNECT_FAILD");
151                     }
152
153                 }
154             }
155
156             try {
157                 httpClient.close();
158             } catch (IOException var17) {
159                 errorMsg = url + ":close  httpClient faild";
160                 logger.info("exception: CLOSE_CONNECT_FAILD : {}", errorMsg);
161                 throwsRouteException(errorMsg, var17, "CLOSE_CONNECT_FAILD");
162             }
163         }
164
165         try {
166             httpClient.close();
167         } catch (IOException var18) {
168             errorMsg = url + ":close  httpClient faild";
169             logger.info("exception: CLOSE_CONNECT_FAILD : {}", errorMsg);
170             throwsRouteException(errorMsg, var18, "CLOSE_CONNECT_FAILD");
171         }
172         logger.info("AbstractSdncOperationTask.httpPost end!");
173         return result;
174     }
175
176     private static void throwsRouteException(String errorMsg, Exception e, String errorCode) throws RouteException {
177         String msg = errorMsg + ".errorMsg:" + e.getMessage();
178         logger.info("exception: {}", msg);
179         throw new RouteException(errorMsg, errorCode);
180     }
181
182     private String getPostStringBody(ResourceOperationStatus resourceOperationStatus) {
183         logger.info("AbstractSdncOperationTask.getPostStringBody begin!");
184         String postBody = new String(postBodyTemplate);
185         postBody = postBody.replace("$errorCode", resourceOperationStatus.getErrorCode());
186         postBody = postBody.replace("$jobId", resourceOperationStatus.getJobId());
187         postBody = postBody.replace("$operType", resourceOperationStatus.getOperType());
188         postBody = postBody.replace("$operationId", resourceOperationStatus.getOperationId());
189         postBody = postBody.replace("$progress", resourceOperationStatus.getProgress());
190         postBody = postBody.replace("$resourceTemplateUUID", resourceOperationStatus.getResourceTemplateUUID());
191         postBody = postBody.replace("$serviceId", resourceOperationStatus.getServiceId());
192         postBody = postBody.replace("$status", resourceOperationStatus.getStatus());
193         postBody = postBody.replace("$statusDescription", resourceOperationStatus.getStatusDescription());
194         logger.info("AbstractSdncOperationTask.getPostStringBody end!");
195         return postBody;
196     }
197
198     private String getGetStringBody(String serviceId, String operationId, String resourceTemplateUUID) {
199         logger.info("AbstractSdncOperationTask.getGetStringBody begin!");
200         String getBody = new String(getBodyTemplate);
201         getBody = getBody.replace("$operationId", operationId);
202         getBody = getBody.replace("$resourceTemplateUUID", resourceTemplateUUID);
203         getBody = getBody.replace("$serviceId", serviceId);
204         logger.info("AbstractSdncOperationTask.getGetStringBody end!");
205         return getBody;
206     }
207
208     private ResourceOperationStatus getResourceOperationStatus(String serviceId, String operationId, String resourceTemplateUUID) throws RouteException {
209         logger.info("AbstractSdncOperationTask.getResourceOperationStatus begin!");
210         String url = "http://mso:8080/dbadapters/RequestsDbAdapter";
211         HttpPost httpPost = new HttpPost(url);
212         httpPost.addHeader("Authorization", "Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
213         httpPost.addHeader("Content-type", "application/soap+xml");
214         String getBody = getGetStringBody(serviceId, operationId, resourceTemplateUUID);
215         httpPost.setEntity(new StringEntity(getBody, ContentType.APPLICATION_XML));
216         String result = httpPost(url, httpPost);
217         ResourceOperationStatus resourceOperationStatus = getResourceOperationStatusFromXmlString(result);
218         logger.info("AbstractSdncOperationTask.getResourceOperationStatus end!");
219         return resourceOperationStatus;
220
221         //return requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
222     }
223
224     private String httpGet(String url, HttpGet httpGet) throws RouteException {
225         logger.info("AbstractSdncOperationTask.httpGet begin!");
226         boolean var16 = false;
227         CloseableHttpClient httpClient = HttpClients.createDefault();
228         String result = "";
229         String errorMsg;
230         label109:
231         {
232             label110:
233             {
234                 try {
235                     var16 = true;
236                     CloseableHttpResponse e = httpClient.execute(httpGet);
237                     result = EntityUtils.toString(e.getEntity());
238                     logger.info("result = {}", result);
239                     if (e.getStatusLine().getStatusCode() != 200) {
240                         logger.info("exception: fail for status code = {}", e.getStatusLine().getStatusCode());
241                         throw new RouteException(result, "SERVICE_GET_ERR");
242                     }
243
244                     e.close();
245                     var16 = false;
246                     break label110;
247                 } catch (ClientProtocolException var21) {
248                     errorMsg = url + ":httpGetWithJSON connect faild";
249                     logger.info("exception: GET_CONNECT_FAILD {}", errorMsg);
250                     throwsRouteException(errorMsg, var21, "GET_CONNECT_FAILD");
251                     var16 = false;
252                 } catch (IOException var22) {
253                     errorMsg = url + ":httpGetWithJSON connect faild";
254                     logger.info("exception: GET_CONNECT_FAILD {}", errorMsg);
255                     throwsRouteException(errorMsg, var22, "GET_CONNECT_FAILD");
256                     var16 = false;
257                     break label109;
258                 } finally {
259                     if (var16) {
260                         try {
261                             httpClient.close();
262                         } catch (IOException var17) {
263                             String errorMsg1 = url + ":close  httpClient faild";
264                             logger.info("exception: CLOSE_CONNECT_FAILD {}", errorMsg1);
265                             throwsRouteException(errorMsg1, var17, "CLOSE_CONNECT_FAILD");
266                         }
267
268                     }
269                 }
270
271                 try {
272                     httpClient.close();
273                 } catch (IOException var19) {
274                     errorMsg = url + ":close  httpClient faild";
275                     logger.info("exception: CLOSE_CONNECT_FAILD {}", errorMsg);
276                     throwsRouteException(errorMsg, var19, "CLOSE_CONNECT_FAILD");
277                 }
278
279             }
280
281             try {
282                 httpClient.close();
283             } catch (IOException var20) {
284                 errorMsg = url + ":close  httpClient faild";
285                 logger.info("exception: CLOSE_CONNECT_FAILD {}", errorMsg);
286                 throwsRouteException(errorMsg, var20, "CLOSE_CONNECT_FAILD");
287             }
288
289         }
290
291         try {
292             httpClient.close();
293         } catch (IOException var18) {
294             errorMsg = url + ":close  httpClient faild";
295             logger.info("exception: CLOSE_CONNECT_FAILD {}", errorMsg);
296             throwsRouteException(errorMsg, var18, "CLOSE_CONNECT_FAILD");
297         }
298         logger.info("AbstractSdncOperationTask.httpGet end!");
299         return result;
300     }
301
302     private ResourceOperationStatus getResourceOperationStatusFromXmlString(String result) {
303         logger.info("AbstractSdncOperationTask.getResourceOperationStatusFromXmlString begin!");
304         ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
305         resourceOperationStatus.setErrorCode(getValueByName("errorCode", result));
306         resourceOperationStatus.setJobId(getValueByName("jobId", result));
307         resourceOperationStatus.setOperType(getValueByName("operType", result));
308         resourceOperationStatus.setOperationId(getValueByName("operationId", result));
309         resourceOperationStatus.setProgress(getValueByName("progress", result));
310         resourceOperationStatus.setResourceTemplateUUID(getValueByName("resourceTemplateUUID", result));
311         resourceOperationStatus.setServiceId(getValueByName("serviceId", result));
312         resourceOperationStatus.setStatus(getValueByName("status", result));
313         resourceOperationStatus.setStatusDescription(getValueByName("statusDescription", result));
314         logger.info("AbstractSdncOperationTask.getResourceOperationStatusFromXmlString end!");
315         return resourceOperationStatus;
316     }
317
318     private String getValueByName(String Name, String xml) {
319         if (!StringUtils.isBlank(xml) && xml.contains(Name)) {
320             String start = "<" + Name + ">";
321             String end = "</" + Name + ">";
322             return xml.substring(xml.indexOf(start), xml.indexOf(end)).replace(start, "");
323         }
324         return "";
325     }
326
327     protected static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
328
329     @Override
330     public void execute(DelegateExecution execution) {
331         logger.info("AbstractSdncOperationTask.execute begin!");
332         GenericResourceApi genericResourceApiClient = getGenericResourceApiClient(execution);
333 //        updateProgress(execution, RequestsDbConstant.Status.PROCESSING, null, "10", "execute begin!");
334         try {
335             Map<String, String> inputs = getInputs(execution);
336 //        updateProgress(execution, null, null, "30", "getGenericResourceApiClient finished!");
337
338             sendRestrequestAndHandleResponse(execution, inputs, genericResourceApiClient);
339             execution.setVariable("SDNCA_SuccessIndicator", true);
340 //            updateProgress(execution, RequestsDbConstant.Status.FINISHED, null, RequestsDbConstant.Progress.ONE_HUNDRED, "execute finished!");
341         } catch (Exception e) {
342             logger.info("exception: AbstractSdncOperationTask.fail!");
343             logger.error("exception: AbstractSdncOperationTask.fail!:", e);
344             e.printStackTrace();
345             execution.setVariable("SDNCA_SuccessIndicator", false);
346             updateProgress(execution, RequestsDbConstant.Status.ERROR, null, "100", "sendRestrequestAndHandleResponse finished!");
347
348         }
349         logger.info("AbstractSdncOperationTask.execute end!");
350     }
351
352     protected Map<String, String> getInputs(DelegateExecution execution) {
353         logger.info("AbstractSdncOperationTask.getInputs begin!");
354         Map<String, String> inputs = new HashMap<>();
355         String json = (String) execution.getVariable(SDCADAPTOR_INPUTS);
356         if (!StringUtils.isBlank(json)) {
357             JSONObject jsonObject = new JSONObject(json);
358             JSONObject paras = jsonObject.getJSONObject("additionalParamForNs");
359             Iterator<String> iterator = paras.keys();
360             while (iterator.hasNext()) {
361                 String key = iterator.next();
362                 inputs.put(key, paras.getString(key));
363             }
364 /*        if (paras.keys().hasNext()) {
365             paras.keySet().stream().forEach(key -> inputs.put(key, paras.getString((String) key)));
366         }*/
367         }
368         logger.info("AbstractSdncOperationTask.getInputs end!");
369         return inputs;
370     }
371
372     public abstract void sendRestrequestAndHandleResponse(DelegateExecution execution,
373                                                           Map<String, String> inputs,
374                                                           GenericResourceApi genericResourceApiClient) throws Exception;
375
376     public void updateProgress(DelegateExecution execution,
377                                String status,
378                                String errorCode,
379                                String progress,
380                                String statusDescription) {
381         logger.info("AbstractSdncOperationTask.updateProgress begin!");
382         String serviceId = (String) execution.getVariable("serviceId");
383         serviceId = StringUtils.isBlank(serviceId) ? (String) execution.getVariable("serviceInstanceId") : serviceId;
384         String operationId = (String) execution.getVariable("operationId");
385         String resourceTemplateUUID = (String) execution.getVariable("resourceUUID");
386         resourceTemplateUUID = StringUtils.isBlank(resourceTemplateUUID) ? (String) execution.getVariable("resourceTemplateId") : resourceTemplateUUID;
387         try {
388             ResourceOperationStatus resourceOperationStatus = getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
389             if (!StringUtils.isBlank(status)) {
390                 resourceOperationStatus.setStatus(status);
391             }
392             if (!StringUtils.isBlank(errorCode)) {
393                 resourceOperationStatus.setErrorCode(errorCode);
394             }
395             if (!StringUtils.isBlank(progress)) {
396                 resourceOperationStatus.setProgress(progress);
397             }
398             if (!StringUtils.isBlank(statusDescription)) {
399                 resourceOperationStatus.setStatusDescription(statusDescription);
400             }
401             updateResOperStatus(resourceOperationStatus);
402             logger.info("AbstractSdncOperationTask.updateProgress end!");
403         } catch (Exception exception) {
404             System.out.println(exception);
405             logger.info("exception: AbstractSdncOperationTask.updateProgress fail!");
406             logger.error("exception: AbstractSdncOperationTask.updateProgress fail:", exception);
407             LOGGER.error(MessageEnum.GENERAL_EXCEPTION, " updateProgress catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, exception.getClass().toString());
408         }
409     }
410
411
412     protected boolean isSend2SdncDirectly() {
413         logger.info("AbstractSdncOperationTask.isSend2SdncDirectly begin!");
414         Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("topology.properties");
415         if (properties != null) {
416             String sdncIp = properties.get("sdnc-ip");
417             String sdncPort = properties.get("sdnc-port");
418             if (!StringUtils.isBlank(sdncIp) && isIp(sdncIp) && !StringUtils.isBlank(sdncPort)) {
419                 logger.info("AbstractSdncOperationTask.isSend2SdncDirectly = true.");
420                 return true;
421             }
422         }
423         logger.info("AbstractSdncOperationTask.isSend2SdncDirectly = false.");
424         return false;
425     }
426
427     protected String getSdncIp() {
428         logger.info("AbstractSdncOperationTask.getSdncIp begin.");
429         String sdncIp = null;
430         Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("topology.properties");
431         if (properties != null) {
432             sdncIp = properties.get("sdnc-ip");
433         }
434         String returnIp = StringUtils.isBlank(sdncIp) || !isIp(sdncIp) ? null : sdncIp;
435         logger.info("AbstractSdncOperationTask.getSdncIp: sdncIp = {}", returnIp);
436         return returnIp;
437     }
438
439     protected String getSdncPort() {
440         logger.info("AbstractSdncOperationTask.getSdncPort begin.");
441         String sdncPort = null;
442         Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("topology.properties");
443         if (properties != null) {
444             sdncPort = properties.get("sdnc-port");
445         }
446         String returnPort = StringUtils.isBlank(sdncPort) ? null : sdncPort;
447         logger.info("AbstractSdncOperationTask.getSdncPort: returnPort = {}", sdncPort);
448         return returnPort;
449     }
450
451     private GenericResourceApi getGenericResourceApiClient(DelegateExecution execution) {
452         logger.info("AbstractSdncOperationTask.getGenericResourceApiClient begin!");
453 //        updateProgress(execution, null, null, "20", "getGenericResourceApiClient begin!");
454         String msbIp = System.getenv().get(ONAP_IP);
455         int msbPort = DEFAULT_MSB_Port;
456         Map<String, String> properties = PropertyConfiguration.getInstance().getProperties("topology.properties");
457         if (properties != null) {
458             if (StringUtils.isBlank(msbIp) || !isIp(msbIp)) {
459                 msbIp = properties.get("msb-ip");
460                 if (StringUtils.isBlank(msbIp)) {
461                     msbIp = getString(properties, "msb.address", DEFAULT_MSB_IP);
462                 }
463             }
464             String strMsbPort = properties.get("msb-port");
465             if (StringUtils.isBlank(strMsbPort)) {
466                 strMsbPort = getString(properties, "msb.port", String.valueOf(DEFAULT_MSB_Port));
467             }
468             msbPort = Integer.valueOf(strMsbPort);
469         }
470         logger.info("AbstractSdncOperationTask.getGenericResourceApiClient msbIp = " + msbIp + " msbPort = " + msbPort);
471         MSBServiceClient msbClient = new MSBServiceClient(msbIp, msbPort);
472         RestServiceCreater restServiceCreater = new RestServiceCreater(msbClient);
473         logger.info("AbstractSdncOperationTask.getGenericResourceApiClient end!");
474         return restServiceCreater.createService(GenericResourceApi.class);
475     }
476
477     protected boolean isIp(String msbIp) {
478         return !StringUtils.isBlank(msbIp) && msbIp.split("\\.").length == 4;
479     }
480
481     private String getString(Map<String, String> properties, String name, String defaultValue) {
482         String vlaue = properties.get(name);
483         try {
484             if (!StringUtils.isBlank(vlaue)) {
485                 return vlaue;
486             }
487         } catch (Exception e) {
488             System.out.println(e);
489             LOGGER.error(MessageEnum.GENERAL_EXCEPTION, " getMsbIp catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, e.getClass().toString());
490         }
491         return defaultValue;
492     }
493
494     private Integer getInteger(DelegateExecution execution, String name, Integer defaultValue) {
495         Integer vlaue = (Integer) execution.getVariable(name);
496         try {
497             if (vlaue != null) {
498                 return vlaue;
499             }
500         } catch (Exception e) {
501             System.out.println(e);
502             LOGGER.error(MessageEnum.GENERAL_EXCEPTION, " getMsbIp catch exception: ", "", this.getTaskName(), MsoLogger.ErrorCode.UnknownError, e.getClass().toString());
503         }
504         return defaultValue;
505     }
506
507     public String getProcessKey(DelegateExecution execution) {
508         return execution.getProcessEngineServices().getRepositoryService().getProcessDefinition(execution.getProcessDefinitionId()).getKey();
509     }
510 }