1. 程式人生 > >activiti6.0 提交流程至某節點 ,可用於實現駁回操作(未測試)

activiti6.0 提交流程至某節點 ,可用於實現駁回操作(未測試)

完成 activit sets exce condition d3d pri class mit

/**
* @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 提交流程至某節點 ,可用於實現駁回操作(未測試)