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