2016-07-08 3 views
1

Я написал следующий обработчик синтаксиса служебных задач, и мое требование заключается в добавлении обработчика завершения задачи для задачи обслуживания. Если я использую этот обработчик синтаксиса для пользовательской задачи, он работает нормально. Но когда я развертываю BPMN (мой сервер запускает этот обработчик синтаксического анализа), это дает мне исключения с нулевым указателем, поскольку для задач обслуживания нет задачи.Добавление слушателя завершения задачи для служебной задачи

(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

Посмотрите на службы по умолчанию Задача Разбор обработчика используется для почты, верблюдов, мулов и оболочки swrvice задач.

модули/Activiti двигатель/SRC/главная/Java/орг/Activiti/двигатель/осущ/BPMN/анализатор/обработчик/ServiceTaskParseHandler.java

Это должно указывать вам в правильном направлении.

Надеюсь, что это поможет, Greg