jbpm4.4 实现撤回功能

环境:spring jbpm

主要实现类:

//撤回
	private void cancelApply(ApplyForCard applyForCard) {
		//撤回流程
		 //1、获取当前流程执行的节点任务
		TaskService taskService = processEngine.getTaskService();
		Task task = taskService.createTaskQuery().processInstanceId(ProvideUtils.AppcardJbpm+"."+applyForCard.getId()).uniqueResult();
		//2、创建一个指向行业科员的流程
		RepositoryService repositoryService = processEngine.getRepositoryService();  
		ExecutionService executionService = processEngine.getExecutionService();
		ProcessInstance processInstance = executionService.findProcessInstanceById(ProvideUtils.AppcardJbpm+"."+applyForCard.getId());
		String processDefinitionId = processInstance.getProcessDefinitionId();
		 ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).uniqueResult();  
		 ProcessDefinitionImpl pdi = (ProcessDefinitionImpl)pd; 
		 ActivityImpl sourceActivity =  pdi.findActivity(task.getActivityName());
		 //撤回的目标
		 ActivityImpl destActivity=pdi.findActivity("行业科员");  
		 //创建连接
		 TransitionImpl transition = sourceActivity.createOutgoingTransition();  
		 transition.setName("to"+"行业科员");
		 transition.setDestination(destActivity);
		 //添加
		 sourceActivity.addOutgoingTransition(transition);
		 //执行撤回
		 taskService.completeTask(task.getId(),transition.getName());  
	}



说明:参数ApplyForCard是业务对象,绑定在某个流程实例中;

产生流程实例的方式:

ProcessInstance processInstance = processEngine.getExecutionService()
				.startProcessInstanceByKey(ProvideUtils.AppcardJbpm, ProvideUtils.getApplyRoles(), entity.getId());



说明:ProvideUtils.AppcardJbpm是常量,保存的是流程图xml文件的key值;

转载于:https://my.oschina.net/u/782865/blog/179336

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值