星泉の编程
Java进行时
posts - 3,  comments - 0,  trackbacks - 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 on 2006-11-13 11:43 刘鑫铨 阅读(275) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜