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);
}
posted @ 2018-02-25 19:33  毛贼贼  阅读(6058)  评论(5编辑  收藏  举报