jbpm教程(六)继续提交公文

7 篇文章 0 订阅
package com.sxito.jbpm;
 
 import java.util.Iterator;
 import java.util.List;
 
 import junit.framework.TestCase;
 
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
 import org.jbpm.taskmgmt.exe.TaskInstance;
 
 
 public class Jbpm_07_NextNode extends TestCase {
 	//获取jbpm配置
 	static JbpmConfiguration jbpmConfiguration =  JbpmConfiguration.getInstance();
 	//某用户审批公文并继续向下流转
 	public void testNextNode(){
 		
 		//创建jbpm上下文对象
 		JbpmContext context = jbpmConfiguration.createJbpmContext();
 		try{
 			int documentId = 1;
 			nextNode(context,"张三",documentId);//某用户审批某个公文
 //			nextNode(context,"李四",documentId);
 //			nextNode(context,"王五",documentId);
 //			nextNode(context,"赵六",documentId);
 		}catch(Exception e){
 			e.printStackTrace();
 			context.setRollbackOnly();
 		}finally{
 			context.close();
 		}
 	}
 	/**
 	 * 
 	 * @param context 
 	 * @param actorId
 	 * @param documentId
 	 * 
 	 * 根据用户找到他的所有任务实例(TaskInstance)对象
 	 * 遍历任务实例(TaskInstance)对象找到与该任务实例(TaskInstance)对应的流程实例(ProcessInstance)对象
 	 * 并获得该流程实例(ProcessInstance)对象相关的公文id(documentId)
 	 * 如果该公文就是要提交的公文即提交
 	 */
 	private void nextNode(JbpmContext context,String actorId,int documentId){
 		@SuppressWarnings("unchecked")
 		List<TaskInstance>  task = 	context.getTaskMgmtSession().findTaskInstances(actorId);
 		for (Iterator<TaskInstance> iterator = task.iterator(); iterator.hasNext();) {
 			TaskInstance t1 = (TaskInstance) iterator.next();
 			Integer docId = (Integer) t1.getProcessInstance().getContextInstance().getVariable("documentId");
 			if(docId.equals(documentId)){
 //				缺省情况下调用end()方法有两个目的:
 //				1.结束TaskInstace对象
 //				2.调用token对象的signal()方法
 //				如果有多条离开的线他会随机选取一条
 				t1.end();
 			}
 			Document doc = (Document)context.getSession().load(Document.class, docId);
 			System.err.println("公文【"+doc.getTitle()+"】已被【"+actorId+"】审批完毕,现在继续往下流转");
 		}
 	}
 	
 }
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值