驳回

@Test
public void rejectTask() {
 // TODO Auto-generated method stub
 //获得当前任务的对应实列
  String procInstId = "101";
  String destTaskKey ="usertask1";
  String rejectMessage = "zhangsan";
 Task task =  taskService.createTaskQuery().processInstanceId(procInstId).singleResult();
 //当前任务key
 String taskDefKey = task.getTaskDefinitionKey();
 //获得当前流程的定义模型
 
 ProcessDefinitionEntity  processDefinition  =(ProcessDefinitionEntity) ((RepositoryServiceImpl)repositoryService)
     .getDeployedProcessDefinition(task.getProcessDefinitionId()); 
 
 //获得当前流程定义模型的所有任务节点
 
 List<ActivityImpl> activitilist = processDefinition.getActivities();
 //获得当前活动节点和驳回的目标节点"draft"
 ActivityImpl currActiviti = null;//当前活动节点
 ActivityImpl destActiviti = null;//驳回目标节点
 int sign = 0;
 for(ActivityImpl activityImpl : activitilist){
  //确定当前活动activiti节点
  
  if(taskDefKey.equals(activityImpl.getId())){
   currActiviti = activityImpl;
   
   sign++;
  }else if(destTaskKey.equals(activityImpl.getId())){
   destActiviti = activityImpl;
   
   sign++;
  }
  System.out.println("//-->activityImpl.getId():"+activityImpl.getId());
  if(sign==2){
   break;//如果两个节点都获得,退出跳出循环
  }
 }
 System.out.println("//-->currActiviti activityImpl.getId():"+currActiviti.getId());
//  System.out.println("//-->destActiviti activityImpl.getId():"+destActiviti.getId());
 //保存当前活动节点的流程对象参数
 
 List<PvmTransition> hisPvmTransitionList = new ArrayList<PvmTransition>(0);
 
 for(PvmTransition pvmTransition:currActiviti.getOutgoingTransitions()){
  hisPvmTransitionList.add(pvmTransition);
 }
 //清空当前活动几点的所有流出项
 
 currActiviti.getOutgoingTransitions().clear();
 System.out.println("//-->currActiviti.getOutgoingTransitions().clear():"+currActiviti.getOutgoingTransitions().size());
 //为当前节点动态创建新的流出项
 
 TransitionImpl newTransitionImpl = currActiviti.createOutgoingTransition();
 //为当前活动节点新的流出目标指定流程目标
 newTransitionImpl.setDestination(destActiviti);
 //保存驳回意见
 
 task.setDescription(rejectMessage);//设置驳回意见
 taskService.saveTask(task);
 //设定驳回标志  
 
 Map<String, Object> variables = new HashMap<String, Object>();
//  variables.put(WfConstant.WF_VAR_IS_REJECTED.value(), WfConstant.IS_REJECTED.value());
 variables.put("mess",rejectMessage);
 //执行当前任务驳回到目标任务draft
 
 taskService.complete(task.getId(), variables);
 
 //清除目标节点的新流入项
 
//  destActiviti.getIncomingTransitions().remove(newTransitionImpl);
 //清除原活动节点的临时流程项
 
 currActiviti.getOutgoingTransitions().clear();
 //还原原活动节点流出项参数
 
 currActiviti.getOutgoingTransitions().addAll(hisPvmTransitionList);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值