2016-07-08 7 views
1

다음 서비스 태스크 구문 분석기를 작성했으며 서비스 태스크에 태스크 완료 핸들러를 추가해야합니다. 사용자 작업에이 구문 분석기를 사용하면 정상적으로 작동합니다. 그러나 BPMN (내 서버에서이 구문 분석기를 실행)을 배포하면 서비스 작업에 대한 작업 정의가 없으므로 null 포인터 예외가 발생합니다.서비스 태스크에 대한 태스크 완료 리스너 추가

(TaskDefinition) bpmnParse.getCurrentActivity().getProperty("taskDefinition") 

올바른 방법은 무엇입니까?

public class MyServiceTaskParseHandler extends AbstractBpmnParseHandler { 

private static final Log log = 

LogFactory.getLog(ServiceTskParseHandler.class); 

    @Override 
    protected Class<? extends BaseElement> getHandledType() {return ServiceTask.class; 
    } 

    @Override 
    protected void executeParse(BpmnParse bpmnParse, BaseElement element) { 

     TaskDefinition taskDefinition = (TaskDefinition) bpmnParse.getCurrentActivity().getProperty("taskDefinition"); 

     // We have to check if data publishing listener has already been associated at server startup 
     TaskListener taskCompletionListener = null; 
     List<TaskListener> completionListeners = taskDefinition.getTaskListener(TaskListener.EVENTNAME_COMPLETE); 
     if (completionListeners != null) { 
      for (TaskListener listener : completionListeners) { 
       if (listener instanceof TaskCompletionListener) { 
        taskCompletionListener = listener; 
       } 
      } 
     } 
     if (taskCompletionListener == null) { 
      if (log.isDebugEnabled()) { 
       log.debug("Adding data publishing listener to task: " + taskDefinition.getKey()); 
      } 
      taskDefinition.addTaskListener(TaskListener.EVENTNAME_COMPLETE, new TaskCompletionListener()); 
     } 
    } 
} 

답변

0

mail, camel, mule 및 shell swrvice 작업에 사용되는 기본 서비스 작업 구문 분석기를 살펴보십시오.

모듈/activiti - 엔진/SRC/메인/자바/조직/activiti/엔진/IMPL/BPMN/파서/핸들러/ServiceTaskParseHandler.java는

이 올바른 방향을 가리켜 야합니다.

도움이 되었으면 그렉