|
@@ -1440,6 +1440,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
model.addProcess(process);
|
|
model.addProcess(process);
|
|
process.setId(id);
|
|
process.setId(id);
|
|
|
|
|
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
List<CustomFlowDto> customFlowLists = customFlowSaveDto.getCustomFlowLists();
|
|
List<CustomFlowDto> customFlowLists = customFlowSaveDto.getCustomFlowLists();
|
|
Map<CustomFlowTypeEnum, CustomFlowDto> customFlowTypeEnumCustomFlowDtoMap = new HashMap<>();
|
|
Map<CustomFlowTypeEnum, CustomFlowDto> customFlowTypeEnumCustomFlowDtoMap = new HashMap<>();
|
|
FlowTaskLink flowTaskLink = new FlowTaskLink();
|
|
FlowTaskLink flowTaskLink = new FlowTaskLink();
|
|
@@ -1457,6 +1458,10 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
customFlowDto.setFlowTaskId(CustomFlowDynamicBuildEnum.START.getId());
|
|
customFlowDto.setFlowTaskId(CustomFlowDynamicBuildEnum.START.getId());
|
|
process.addFlowElement(createStartEvent());
|
|
process.addFlowElement(createStartEvent());
|
|
|
|
+ //默认在开始节点后新增一个审批节点
|
|
|
|
+ flowTaskLink = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
|
|
+ flowVarMap.computeIfAbsent(SystemConstant.APPROVE_ID, v -> sysUser.getId());
|
|
|
|
+ process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, Objects.nonNull(flowTaskLink.getLast().getTask().getContent()) && !Objects.equals(flowTaskLink.getLast().getTask().getContent(), "") ? flowTaskLink.getLast().getTask().getContent() : DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK_NAME, DefaultInstanceConvertToMultiInstance.APPROVE_ID_EXP));
|
|
break;
|
|
break;
|
|
case PROCESS://过程节点
|
|
case PROCESS://过程节点
|
|
customFlowDto.setFlowTaskId(CustomFlowDynamicBuildEnum.USER_TASK.getId() + i);
|
|
customFlowDto.setFlowTaskId(CustomFlowDynamicBuildEnum.USER_TASK.getId() + i);
|
|
@@ -1514,8 +1519,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
copyUserIds.addAll(customFlowPropertyDto.getCopyForUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
copyUserIds.addAll(customFlowPropertyDto.getCopyForUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-// process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + i, customFlowDto.getContent(), null));
|
|
|
|
- process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + i, "审批人", approveUserIds, customFlowPropertyDto.getMultipleUserApproveType()));
|
|
|
|
|
|
+ process.addFlowElement(createUserTask(CustomFlowDynamicBuildEnum.USER_TASK.getId() + i, Objects.nonNull(customFlowDto.getContent()) && !Objects.equals(customFlowDto.getContent(), "") ? customFlowDto.getContent() : DefaultInstanceConvertToMultiInstance.USER_TASK_APPROVE_NAME, approveUserIds, customFlowPropertyDto.getMultipleUserApproveType()));
|
|
//提取过程节点属性
|
|
//提取过程节点属性
|
|
break;
|
|
break;
|
|
case END://结束节点
|
|
case END://结束节点
|
|
@@ -1540,23 +1544,26 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
|
|
|
//生成图像信息
|
|
//生成图像信息
|
|
new BpmnAutoLayout(model).execute();
|
|
new BpmnAutoLayout(model).execute();
|
|
|
|
+
|
|
//部署流程
|
|
//部署流程
|
|
- Deployment deployment = repositoryService.createDeployment().addBpmnModel(id + "-dynamic-model.bpmn", model)
|
|
|
|
- .name(id + "-multiple process deployment").deploy();
|
|
|
|
|
|
+ String bpmnName = id + DefaultInstanceConvertToMultiInstance.FLOW_BPMN_MODEL_NAME;
|
|
|
|
+ String bpmnPngName = id + DefaultInstanceConvertToMultiInstance.FLOW_BPMN_PNG_NAME;
|
|
|
|
+ String bpmnProcessName = id + DefaultInstanceConvertToMultiInstance.FLOW_BPMN_PROCESS_NAME;
|
|
|
|
+ String bpmnDeploymentName = id + DefaultInstanceConvertToMultiInstance.FLOW_BPMN_DEPLOYMENT_NAME;
|
|
|
|
+ Deployment deployment = repositoryService.createDeployment().addBpmnModel(bpmnName, model).name(bpmnDeploymentName).deploy();
|
|
|
|
|
|
//启动流程
|
|
//启动流程
|
|
ProcessInstance processInstance = flowVarMap.size() > 0 ? runtimeService.startProcessInstanceByKey(id, flowVarMap) : runtimeService.startProcessInstanceByKey(id);
|
|
ProcessInstance processInstance = flowVarMap.size() > 0 ? runtimeService.startProcessInstanceByKey(id, flowVarMap) : runtimeService.startProcessInstanceByKey(id);
|
|
|
|
|
|
//保存png图片和xml文件(这一步可做可不做)
|
|
//保存png图片和xml文件(这一步可做可不做)
|
|
InputStream processDiagram = repositoryService.getProcessDiagram(processInstance.getProcessDefinitionId());
|
|
InputStream processDiagram = repositoryService.getProcessDiagram(processInstance.getProcessDefinitionId());
|
|
- FileUtils.copyInputStreamToFile(processDiagram, new File("target" + File.separator + id + "-multiple-process-diagram.png"));
|
|
|
|
|
|
+ FileUtils.copyInputStreamToFile(processDiagram, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnPngName));
|
|
|
|
|
|
-// InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), id + "-dynamic-model.bpmn");
|
|
|
|
-// FileUtils.copyInputStreamToFile(processBpmn, new File("target" + File.separator + id + "-multiple-process.bpmn20.xml"));
|
|
|
|
|
|
+// InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), bpmnName);
|
|
|
|
+// FileUtils.copyInputStreamToFile(processBpmn, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + id + "-multiple-process.bpmn20.xml"));
|
|
|
|
|
|
- File file = new File("target" + File.separator + id + "-multiple-process.bpmn");
|
|
|
|
- InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), id + "-dynamic-model.bpmn");
|
|
|
|
- FileUtils.copyInputStreamToFile(processBpmn, file);
|
|
|
|
|
|
+ InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), bpmnName);
|
|
|
|
+ FileUtils.copyInputStreamToFile(processBpmn, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnProcessName));
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1608,30 +1615,6 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
UserTask userTask = new UserTask();
|
|
UserTask userTask = new UserTask();
|
|
userTask.setName(name);
|
|
userTask.setName(name);
|
|
userTask.setId(id);
|
|
userTask.setId(id);
|
|
-// userTask.setAssignee("${assignee}");
|
|
|
|
-
|
|
|
|
-// // 多实例
|
|
|
|
-// MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
|
|
|
|
-//// multiInstanceLoopCharacteristics.setSequential(false);
|
|
|
|
-// multiInstanceLoopCharacteristics.setSequential(true);
|
|
|
|
-// multiInstanceLoopCharacteristics.setInputDataItem("${assigneeList}");
|
|
|
|
-// multiInstanceLoopCharacteristics.setElementVariable("assignee");
|
|
|
|
-//
|
|
|
|
-// // 注入循环控制
|
|
|
|
-// userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
|
|
|
|
-//
|
|
|
|
-// ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration();
|
|
|
|
-// // 创建任务实例
|
|
|
|
-// UserTaskActivityBehavior userTaskActivityBehavior = processEngineConfiguration.getActivityBehaviorFactory().createUserTaskActivityBehavior(userTask);
|
|
|
|
-// // 创建behavior
|
|
|
|
-//// ParallelMultiInstanceBehavior behavior = new ParallelMultiInstanceBehavior(userTask, userTaskActivityBehavior);
|
|
|
|
-// SequentialMultiInstanceBehavior behavior = new SequentialMultiInstanceBehavior(userTask, userTaskActivityBehavior);
|
|
|
|
-// // 获取表达式解析工具
|
|
|
|
-// behavior.setCollectionElementVariable("assignee");
|
|
|
|
-//
|
|
|
|
-// // 注入表达式
|
|
|
|
-// ExpressionManager expressionManager = processEngineConfiguration.getExpressionManager();
|
|
|
|
-// behavior.setCollectionExpression(expressionManager.createExpression("${assigneeList}"));
|
|
|
|
|
|
|
|
boolean isSequential = false;
|
|
boolean isSequential = false;
|
|
if (customFlowMultipleUserApproveTypeEnum == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
|
|
if (customFlowMultipleUserApproveTypeEnum == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
|
|
@@ -1644,40 +1627,6 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
return userTask;
|
|
return userTask;
|
|
}
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
|
-// * @param id 对应我们画流程图中节点任务id
|
|
|
|
-// * @param name 节点任务名称
|
|
|
|
-// * @param assignees
|
|
|
|
-// * @param customFlowMultipleUserApproveTypeEnum
|
|
|
|
-// * @return
|
|
|
|
-// */
|
|
|
|
-// protected UserTask createUserTask(String id, String name, List<String> assignees, CustomFlowMultipleUserApproveTypeEnum customFlowMultipleUserApproveTypeEnum) {
|
|
|
|
-// UserTask userTask = new UserTask();
|
|
|
|
-// userTask.setName(name);
|
|
|
|
-// userTask.setId(id);
|
|
|
|
-// switch (customFlowMultipleUserApproveTypeEnum) {
|
|
|
|
-// case ORDER:
|
|
|
|
-// case ALL:
|
|
|
|
-// MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = new MultiInstanceLoopCharacteristics();
|
|
|
|
-// multiInstanceLoopCharacteristics.setLoopCardinality(String.valueOf(assignees.size()));
|
|
|
|
-//// multiInstanceLoopCharacteristics.setInputDataItem(assignees.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
|
|
|
|
-// multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfActiveInstances == nrOfInstances}");
|
|
|
|
-//// multiInstanceLoopCharacteristics.setElementVariable("assignee");
|
|
|
|
-// if (customFlowMultipleUserApproveTypeEnum == CustomFlowMultipleUserApproveTypeEnum.ORDER) {
|
|
|
|
-// multiInstanceLoopCharacteristics.setSequential(true);
|
|
|
|
-// } else {
|
|
|
|
-// multiInstanceLoopCharacteristics.setSequential(false);
|
|
|
|
-// }
|
|
|
|
-// userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
|
|
|
|
-// break;
|
|
|
|
-// default:
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-// //设置审批人
|
|
|
|
-//// userTask.setCandidateUsers(assignees);
|
|
|
|
-// return userTask;
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* @param id 网关id
|
|
* @param id 网关id
|
|
* @return
|
|
* @return
|
|
@@ -1705,4 +1654,4 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
}
|
|
}
|
|
return flow;
|
|
return flow;
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|