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());
}
}
}