diff --git a/src/main/java/com/inteligr8/activiti/mq/MQProcessDefinitionMonitor.java b/src/main/java/com/inteligr8/activiti/mq/MQProcessDefinitionMonitor.java index 0d227b8..c9457f9 100644 --- a/src/main/java/com/inteligr8/activiti/mq/MQProcessDefinitionMonitor.java +++ b/src/main/java/com/inteligr8/activiti/mq/MQProcessDefinitionMonitor.java @@ -24,6 +24,7 @@ import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; import org.activiti.engine.delegate.event.ActivitiEventType; import org.activiti.engine.impl.bpmn.behavior.NoneStartEventActivityBehavior; +import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.persistence.entity.DeploymentEntity; import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.impl.util.ProcessDefinitionUtil; @@ -268,9 +269,18 @@ public class MQProcessDefinitionMonitor implements ActivitiEventListener, Applic return true; } + private BpmnModel getBpmnModel(String processDefId) { + if (Context.getProcessDefinitionHelper() == null) { + // typically during initial startup + return this.services.getRepositoryService().getBpmnModel(processDefId); + } else { + // we cannot use the RepositoryService to get the BpmnModel as it is not yet cached in TX + return ProcessDefinitionUtil.getBpmnModel(processDefId); + } + } + protected ServiceTask findMqStartSubscribeTask(String processDefId) { - // we cannot use the RepositoryService to get the BpmnModel as it is not yet cached in TX - BpmnModel model = ProcessDefinitionUtil.getBpmnModel(processDefId); + BpmnModel model = this.getBpmnModel(processDefId); StartEvent startElement = this.findMqPlainStartEvent(processDefId, model); if (startElement == null) return null;