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
>
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("刚开始前途未卜...");
}
}
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("努力学习本领...");
}
}
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("努力工作赚钱...");
}
}
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("善哉,终成正果,往生极乐!");
}
}
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());
}
}
更多资源:
本文介绍了一个使用JBPM 3.1.4版本的工作流框架示例,通过定义简单的开始、工作、学习及结束状态,展示了如何创建并运行一个基本的流程定义。
290

被折叠的 条评论
为什么被折叠?



