jbpm与ssh完整示例(四)

 

本部分为对流程节点的控制和查看。

1 submitDoc公文创建者提交公文  

 

public void submitDoc() {

       Document doc = (Document) getJbpmContext().getSession().load(

              Document.class, 3);

 

       ProcessInstance processInstance = getJbpmContext().getProcessInstance(

              doc.getProcessIntanceId());

 

       // 触发流程实例走向下一步

       processInstance.getRootToken().signal();

 

       getJbpmContext().close();

       log.info("____________________公文创建者提交公文!");

    }

  

2 getNode当前所处的节点

public void getNode() {

       Document doc = (Document) getJbpmContext().getSession().load(

              Document.class, 3);

 

       ProcessInstance processInstance = getJbpmContext().getProcessInstance(

              doc.getProcessIntanceId());

 

       // 当前节点?

       log.error(processInstance.getRootToken().getNode().getName());

 

       getJbpmContext().close();

       log.info("____________________公文在流程中的节点!");

    }

 

3 getTask某用户的是否有公文等待其审批

public void getTask() {

 

       List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "张三");

       System.err.println("张三的文档有:");

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           System.err.println(taskInstance.getId());

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId);

       }

 

       List tasks1 = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "李四");

       System.err.println("李四的文档有:");

       for (Iterator iter = tasks1.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           System.err.println(taskInstance.getId());

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId);

       }

 

       List tasks2 = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "王五");

       System.err.println("王五的文档有:");

       for (Iterator iter = tasks2.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           System.err.println(taskInstance.getId());

 

           Integer docId = (Integer) taskInstance.getVariable("document");

 

           System.err.println(docId);

       }

 

       getJbpmContext().close();

       log.info("____________________某用户的是否有公文等待其审批!");

    }

 

4 goNext查找到当前的任务对应的公文之后,即可对其审批,并继续流转

因为本示例程序当中有三个节点,要分别执行testFlowNextNode();testFlowNextNode2();testFlowNextNode3();三个方法到下一级节点。

public void goNext() {

 

        testFlowNextNode();

 

        //testFlowNextNode2();

 

       //testFlowNextNode3();

       log.info("____________________查找到当前的任务对应的公文之后,即可对其审批,并继续流转!");

    }

/** *********************不同角色人员进行审批公文******************************************** */

    // 张三审批

    public void testFlowNextNode() {

 

       List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "张三");

       System.err.println("张三的文档有:");

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId);

       }

 

       // 依次对张三的公文进行提交

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

 

           // 张三已经审批结束,继续提交,这将触发流程继续向下流动!

           taskInstance.end();

 

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId + "已被审批完成");

       }

 

       getJbpmContext().close();

    }

 

    // 李四审批

    public void testFlowNextNode2() {

 

       List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "李四");

       System.err.println("李四的文档有:");

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId);

       }

 

       // 依次对李四的公文进行提交

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

 

           // 李四已经审批结束,继续提交,这将触发流程继续向下流动!

           taskInstance.end();

 

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId + "已被审批完成");

       }

 

       getJbpmContext().close();

    }

 

    // 王五审批

    public void testFlowNextNode3() {

 

       List tasks = getJbpmContext().getTaskMgmtSession().findTaskInstances(

              "王五");

       System.err.println("王五的文档有:");

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId);

       }

 

       // 依次对王五的公文进行提交

       for (Iterator iter = tasks.iterator(); iter.hasNext();) {

           TaskInstance taskInstance = (TaskInstance) iter.next();

 

           // 王五已经审批结束,继续提交,这将触发流程继续向下流动!

           taskInstance.end();

 

           Integer docId = (Integer) taskInstance.getVariable("document");

           System.err.println(docId + "已被审批完成");

       }

 

       getJbpmContext().close();

    }

 

 

5 isFinish到达终点

判断流程是否结束

    public void isFinish() {

       Document doc = (Document) getJbpmContext().getSession().load(

              Document.class, 3);

 

       ProcessInstance processInstance = getJbpmContext().getProcessInstance(

              doc.getProcessIntanceId());

 

        System.err.println("流程已结束? - " + processInstance.hasEnded());

 

       getJbpmContext().close();

       log.info("____________________到达终点!");

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值