jbpm是一个工作流框架,现已加入了Jboss组织。
下载地址:http://labs.jboss.com/projects/download/
下面是一个网上收罗过来的个人感觉非常简单的例子,在这里做一个笔记。
本文使用的jbpm版本:3.1.4。
文件结构如下:
processdefinition.xml文件:
<?
xml version="1.0" encoding="UTF-8"
?>
< process-definition xmlns ="urn:jbpm.org:jpdl-3.1" name ="example_5" >
< start-state name ="开始" >
< event type ="node-leave" >
< action name ="action1" ></ action >
</ event >
< transition name ="tr1" to ="工作中" ></ transition >
< transition name ="tr2" to ="求学中" ></ transition >
</ start-state >
< state name ="工作中" >
< event type ="node-enter" >
< action name ="工作" class ="com.wide.example5.WorkAction" ></ action >
</ event >
< transition name ="" to ="终成正果" ></ transition >
</ state >
< state name ="求学中" >
< event type ="node-enter" >
< action name ="学习" class ="com.wide.example5.StudyAction" ></ action >
</ event >
< transition name ="" to ="终成正果" ></ transition >
</ state >
< end-state name ="终成正果" >
< event type ="node-enter" >
< action name ="圆满" class ="com.wide.example5.EndAction" ></ action >
</ event >
</ end-state >
</ process-definition >
< process-definition xmlns ="urn:jbpm.org:jpdl-3.1" name ="example_5" >
< start-state name ="开始" >
< event type ="node-leave" >
< action name ="action1" ></ action >
</ event >
< transition name ="tr1" to ="工作中" ></ transition >
< transition name ="tr2" to ="求学中" ></ transition >
</ start-state >
< state name ="工作中" >
< event type ="node-enter" >
< action name ="工作" class ="com.wide.example5.WorkAction" ></ action >
</ event >
< transition name ="" to ="终成正果" ></ transition >
</ state >
< state name ="求学中" >
< event type ="node-enter" >
< action name ="学习" class ="com.wide.example5.StudyAction" ></ action >
</ event >
< transition name ="" to ="终成正果" ></ transition >
</ state >
< end-state name ="终成正果" >
< event type ="node-enter" >
< action name ="圆满" class ="com.wide.example5.EndAction" ></ action >
</ event >
</ end-state >
</ process-definition >
StartAction.java文件:
package
com.wide.example5;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class StartAction implements ActionHandler ... {
private static final long serialVersionUID = 7004254907848592166L;
private static final Log logger = LogFactory.getLog(StartAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("刚开始前途未卜...");
}
}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class StartAction implements ActionHandler ... {
private static final long serialVersionUID = 7004254907848592166L;
private static final Log logger = LogFactory.getLog(StartAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("刚开始前途未卜...");
}
}
StudyAction.java文件:
package
com.wide.example5;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class StudyAction implements ActionHandler ... {
private static final long serialVersionUID = -4927790934014966410L;
private static final Log logger = LogFactory.getLog(StudyAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("努力学习本领...");
}
}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class StudyAction implements ActionHandler ... {
private static final long serialVersionUID = -4927790934014966410L;
private static final Log logger = LogFactory.getLog(StudyAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("努力学习本领...");
}
}
WorkAction.java文件:
package
com.wide.example5;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class WorkAction implements ActionHandler ... {
private static final long serialVersionUID = 9112792586877839879L;
private static final Log logger = LogFactory.getLog(WorkAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("努力工作赚钱...");
}
}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class WorkAction implements ActionHandler ... {
private static final long serialVersionUID = 9112792586877839879L;
private static final Log logger = LogFactory.getLog(WorkAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("努力工作赚钱...");
}
}
EndAction.java文件:
package
com.wide.example5;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class EndAction implements ActionHandler ... {
private static final long serialVersionUID = -3161235991642461706L;
private static final Log logger = LogFactory.getLog(EndAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("善哉,终成正果,往生极乐!");
}
}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
public class EndAction implements ActionHandler ... {
private static final long serialVersionUID = -3161235991642461706L;
private static final Log logger = LogFactory.getLog(EndAction.class);
public void execute(ExecutionContext executionContext) throws Exception ...{
logger.info("善哉,终成正果,往生极乐!");
}
}
Example5.java测试代码:
package
com.wide;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
public class Example5 ... {
public static void main(String[] argv)...{
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("processdefinition.xml");
ProcessInstance ProcessInstance = new ProcessInstance(processDefinition);
Token token = ProcessInstance.getRootToken();
System.out.println(token.getNode().getName());
token.signal("tr2");
System.out.println(token.getNode().getName());
token.signal();
System.out.println(token.getNode().getName());
}
}
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
public class Example5 ... {
public static void main(String[] argv)...{
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("processdefinition.xml");
ProcessInstance ProcessInstance = new ProcessInstance(processDefinition);
Token token = ProcessInstance.getRootToken();
System.out.println(token.getNode().getName());
token.signal("tr2");
System.out.println(token.getNode().getName());
token.signal();
System.out.println(token.getNode().getName());
}
}
更多资源: