JBPM 4基礎編07-リスニングイベントEventListener

3078 ワード

JBPMでリスニングを構成し、タスクノードの開始または終了をブロックできます.
  • event.jpdl.xmlデザイナの概略図:Sourceコード:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <process name="event" xmlns="http://jbpm.org/4.3/jpdl">
    
    	<on event="start">
    		<event-listener class="org.wxp.ProcessEventListener" />
    	</on>
    	<on event="end">
    		<event-listener class="org.wxp.ProcessEventListener" />
    	</on>
    
    	<start g="178,107,48,48" name="start1">
    		<on event="start">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    		<on event="end">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    		<transition name="to state1" to="state1" g="-59,-17" />
    	</start>
    	<end g="187,302,48,48" name="end1">
    		<on event="start">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    		<on event="end">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    	</end>
    	<state name="state1" g="207,222,92,52">
    		<on event="start">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    		<on event="end">
    			<event-listener class="org.wxp.ProcessEventListener" />
    		</on>
    		<transition name="to end1" to="end1" g="-47,-17" />
    	</state>
    </process>
  • を見てみましょう.
  • ProcessEventListenerこのクラスは、EventListenerインタフェースを実装する実装クラスとして定義されています.その方法では、いくつかの情報を出力して、その方法が実行されたかどうかをテストします.
    package org.wxp;
    
    import org.jbpm.api.listener.EventListener;
    import org.jbpm.api.listener.EventListenerExecution;
    
    public class ProcessEventListener implements EventListener {
    
    	@Override
    	public void notify(EventListenerExecution eventListenerExecution)
    			throws Exception {
    		System.out.println(eventListenerExecution);
    	}
    
    }
    
  • EventTestこれで、フローのstartおよびendイベントが
    package org.wxp;
    
    import junit.framework.TestCase;
    
    import org.jbpm.api.Configuration;
    import org.jbpm.api.ExecutionService;
    import org.jbpm.api.ProcessEngine;
    import org.jbpm.api.RepositoryService;
    
    /**
     *  Listener, start end 
     * 
     * 1. , , start 
     * 2.state , end 
     * @author Champion.Wong
     * 
     */
    public class EventTest extends TestCase {
    	ProcessEngine processEngine;
    
    	public EventTest() {
    		processEngine = Configuration.getProcessEngine();
    	}
    
    	public void test() {
    		RepositoryService repositoryService = processEngine
    				.getRepositoryService();
    		String deploymentId = repositoryService.createDeployment()
    				.addResourceFromClasspath("event.jpdl.xml").deploy();
    
    		ExecutionService executionService = processEngine.getExecutionService();
    		executionService.startProcessInstanceByKey("event");
    	}
    }
    
  • にキャプチャされたかどうかをテストする必要があります.