<process-definition name="process名称">
<start-state>
<transition to="s"/>
</start-state>
<state name="s">
<transition to="end"/>
</state>
<end-state name="end"/>
</process-definition>
posted @
2006-11-13 11:46 刘鑫铨 阅读(200) |
评论 (0) |
编辑 收藏
早先在公司是实习的时候做过一些工作流的东西,听说过jBpm,可惜一直无缘得见。
这回念研,总算有个机会好好了解一下jBpm
1、一个简单的例子:
//解析XML,生成定义
ProcessDefinition definition = ProcessDefinition.parseXmlString(String xmlString);
//建立一个过程,并把节点设置在开始节点
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//获得过程中记号的位置
Token token = processInstance.getRootToken();
这时候token.getNode()就应该位于过程当前运行的节点上
所以刚创建的时候 precessDefinition.getStartState()应该等于token.getNode();
调用token.signal()用于让过程继续下去,而且该方法会阻塞直到程序处于等待状态
这时token.getNode()应该与期望的processDefinition.getNode(节点名称)一致
2、配置环境与状态持久化
JbpmConfiguration configuration = JbmConfiguration.parseXmlString(String xml字符串);
configuration.createSchema();
configuration.dropSchema();
数据库记录当前状态
JbpmContext context = configuration.createJbpmContext();
//这句将ProcessDefinition持久化到数据库中
context.deployProcessDefinition(processDefinition);
context.close();
//读取的办法
GraphSession graphSession = context.getGraphSession();
processDefinition = graphSession.findLatestProcessDefinition("定义名");
List instances = graphSession.findProcessInstances(processDefinition.getId());
instance.signal();//继续执行的过程
instance.hasEnded();
context.save(instance);
3、变量操作
ContextInstance contextInstance = processInstance.getContextInstance();
contextInstance.setVariable("名",值);
posted @
2006-11-13 11:43 刘鑫铨 阅读(275) |
评论 (0) |
编辑 收藏