As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
<br><process id="executionListenersProcess"><br> <br> <extensionElements><br> <activiti:executionListener class="org.activiti.examples.RecordProcessFinishedListener" event="end" /><br> </extensionElements><br>
<br>class JenkowEngine{<br><br> static ProcessEngine getEngine(){<br> if (engine == null){<br> …<br> ClassLoader peCL = JenkowEngine.class.getClassLoader();<br> Thread.currentThread().setContextClassLoader(peCL);<br><br> ProcessEngineConfigurationImpl peCfg = (ProcessEngineConfigurationImpl)cfg;<br> List<BpmnParseListener> preParseListeners = peCfg.getPreParseListeners();<br> if (preParseListeners == null){<br> preParseListeners = new ArrayList<BpmnParseListener>();<br> peCfg.setPreParseListeners(preParseListeners);<br> }<br> preParseListeners.add(new JenkowBpmnParseListener());<br> cfg.setClassLoader(peCL);<br><br> engine = cfg.buildProcessEngine(); <br> }<br> return engine;<br> }<br>}<br>
<br>class JenkowBpmnParseListener extends AbstractBpmnParseListener{<br> … <br> @Override<br> public void parseProcess(Element el, ProcessDefinitionEntity processDefinition) {<br> processDefinition.addExecutionListener("end",new ProcessExecLogger(el.attribute("id")));<br> }<br>}<br>
<br>public class ProcessExecLogger implements ExecutionListener{<br> private String name;<br> <br> ProcessExecLogger(String name) {<br> this.name = name;<br> }<br><br> @Override<br> public void notify(DelegateExecution exec) throws Exception {<br> System.out.println("name = "+name);<br> System.out.println("exec.getEventName() -> "+exec.getEventName());<br> System.out.println("exec.getId() -> "+exec.getId());<br> System.out.println("exec.getProcessBusinessKey() -> "+exec.getProcessBusinessKey());<br> System.out.println("exec.getProcessInstanceId() -> "+exec.getProcessInstanceId());<br> }<br>}<br>