JBPM3.2学习1

最近维护一个项目,由于项目比较老了,所以用的jbpm3.2,自学了下:

1、创建jbpm数据库表:

JbpmConfiguration.getInstance().createSchema();

 

·2、部署流程(即把流程定义对象持久化到数据库中):

首先,创建JbpmConfiguration和JbpmContext对象,其中JbpmContext对象可以拿到是hibernate session的封装,提供了对jbpm对象的持久化操作。

JbpmConfiguration cf = JbpmConfiguration.getInstance();
JbpmContext context = cf.createJbpmContext();
ProcessDefinition pd = ProcessDefinition.parseXmlResource("test/prcessDefinition.xml");
try{
   context.deployProcessDefinition(pd);
}catch(Exception e){
   context.setRollbackOnly();
}finally{
   context.close();
}

 部署完成后,流程中的节点信息及任务信息以及transition都被啊到数据库 

3、创建流程实例:

Document doc  = new Document();

doc.setName("123");
context.getSession().save(doc);
//1、从数据库加载ProcessDefinition对象
ProcessDefinition pd = context.getGraphSession().findLatestProcessDefinition("test");
//2、根据ProcessDefinition,创建流程实例
ProcessInstance pi = new ProcessDefinition(pd);
context.save(pi);
//3、创建流程实例变量
pi.getContextInstance().setVariable("doc",doc.getId());

 4、将流程提交到第一个环节

 

pi.signal();

 5、查询当前所处的环节

pi.getRootToken().getNode().getName();

 6、任务分配

当流程进入一个任务节点,JBPM根据任务节点所定义的任务分配规则,创建TaskInstance对象,

并且建立TaskInstance对象和ProcessInstance对象之间的联系,设置 TaskInstance对象的actorId属性的值,这称为任务分配。

/*
*底层sql:select ti from TaskInstance as ti where ti.actorId=:actorId
*  and ti.isSuspended !=true and ti.isOpen=true;
*/
List tasks = context.getTaskMgmtSession().findTaskInstance(actorId);


for(Iterator iter = tasks.iterator();iter.hasNext();){
     TaskInstance ti = (TaskInstance )iter.next();
     
}

 7、通过TaskInstance流转到下一个节点

 

List tasks = context.getTaskMgmtSession().findTaskInstance(actorId);
for(Iterator iter = tasks.iterator();iter.hasNext();){
     TaskInstance ti = (TaskInstance )iter.next();
     ProcessInstance pi = ti.getProcessInstance();
     Integer docId = pi.getContextInstance().getVariable("docId");
     if(docId.equals(documentId)){
        //在缺省情况下,调用end方法有两个目的,1:结束TaskInstance 对象
        //2、触发当前token对象的signal方法,使得流程继续向下流转
          ti.end();
     }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值