关闭

工作流应用之jBpm(一)

595人阅读 评论(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("名",值);

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1350757次
    • 积分:19027
    • 等级:
    • 排名:第457名
    • 原创:583篇
    • 转载:87篇
    • 译文:1篇
    • 评论:609条
    最新评论