流程定义: <?xml version="1.0" encoding="UTF-8"?> <process-definition name='hello'> <start-state name='start'> <transition to='s' name="to_s"/> </start-state> <state name='s'> <event type="node-enter"> <action class="com.amway.handler.MyActionHandler"></action> </event> <event type="node-leave"> <action class="com.amway.handler.MyActionHandler"></action> </event> <transition to='end' name="to_end"></transition> </state> <end-state name='end' /> </process-definition> 测试代码: package com.amway.test; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; import com.amway.handler.MyActionHandler; import junit.framework.TestCase; public class TransitionActionTest extends TestCase { public void setUp() { MyActionHandler.isExecuted = false; } public void testTransitionAction() { ProcessDefinition processDefinition = ProcessDefinition .parseXmlInputStream(this.getClass().getClassLoader() .getResourceAsStream("TransitionAction.xml")); ProcessInstance instance = new ProcessInstance(processDefinition); instance.signal();//进入s节点,触发MyActionHandler this.assertTrue(MyActionHandler.isExecuted); MyActionHandler.isExecuted = false; instance.signal();//离开s节点,同样触发MyActionHandler,导致isExecuted = true this.assertTrue(MyActionHandler.isExecuted); } }