activiti6.0 提交流程至某节点 ,可用于实现驳回操作(未测试)

Posted 毛贼贼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activiti6.0 提交流程至某节点 ,可用于实现驳回操作(未测试)相关的知识,希望对你有一定的参考价值。

/**
* @param task 任务Id
* @param variables ...
* @param targetActivityId 节点ID
* @throws Exception ...
* @creator 毛志涛
* @date 2018/2/25
* @描述 提交流程至某节点
*/
private void commitProcess(Task task, Map<String, Object> variables, String targetActivityId) {
// TODO: 2018/2/25 未测试
//获取当前节点Id
String currentActivityId = task.getTaskDefinitionKey();
//获取模型实体
String processDefinitionId = task.getProcessDefinitionId();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
//获取当前节点
FlowElement currentFlow = bpmnModel.getFlowElement(currentActivityId);
//获取目标节点
FlowElement targetFlow = bpmnModel.getFlowElement(targetActivityId);
//创建连线
String uuid = UUID.randomUUID().toString().replace("-", "");
SequenceFlow newSequenceFlow = new SequenceFlow();
newSequenceFlow.setId(uuid);
newSequenceFlow.setSourceFlowElement(currentFlow);
newSequenceFlow.setTargetFlowElement(targetFlow);
//设置条件
newSequenceFlow.setConditionExpression("${\"+uuid+\"==\"" + uuid + "\"}");
//添加连线至bpmn
bpmnModel.getMainProcess().addFlowElement(newSequenceFlow);
//添加变量(保证这根线独一无二)
variables.clear();//清空变量,防止干扰
variables.put(uuid, uuid);
//提交
taskService.addComment(task.getId(), task.getProcessInstanceId(), "撤回");
//完成任务
taskService.complete(task.getId(), variables);
//删除连线
bpmnModel.getMainProcess().removeFlowElement(uuid);
}

以上是关于activiti6.0 提交流程至某节点 ,可用于实现驳回操作(未测试)的主要内容,如果未能解决你的问题,请参考以下文章

Activiti6.0 动态改变流程节点类型(普通-> 会签)

activiti6.0源码剖析之使用图片生成器设置流程图高亮显示

activiti动态获取当前流程节点的操作按钮

java Activiti6.0 后台 框架 spring5 SSM 工作流引擎 审批流程

Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架

Activiti6.0工作流如何获取上一个节点信息?