|
@@ -179,17 +179,49 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
*/
|
|
|
@Override
|
|
|
public ProcessInstance flowStart(Map<String, Object> map) {
|
|
|
- BasicSchool basicSchool = (BasicSchool) ServletUtil.getRequestSchool();
|
|
|
- ProcessInstance processInstance = null;
|
|
|
- Map<String, List<String>> flowSchoolCodeMap = SystemConstant.getFlowSchoolCodeMap();
|
|
|
- //广东医科大学
|
|
|
- if (flowSchoolCodeMap.get(SystemConstant.GDYKDX_FLOW_KEY).contains(basicSchool.getCode())) {
|
|
|
- processInstance = this.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
|
|
|
- } else if (flowSchoolCodeMap.get(SystemConstant.JXZYY_FLOW_KEY).contains(basicSchool.getCode())) {//江西中医药大学
|
|
|
- processInstance = this.startActivity(SystemConstant.JXZYY_FLOW_KEY, map);
|
|
|
- } else {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
|
|
|
+// BasicSchool basicSchool = (BasicSchool) ServletUtil.getRequestSchool();
|
|
|
+// ProcessInstance processInstance = null;
|
|
|
+// Map<String, List<String>> flowSchoolCodeMap = SystemConstant.getFlowSchoolCodeMap();
|
|
|
+// //广东医科大学
|
|
|
+// if (flowSchoolCodeMap.get(SystemConstant.GDYKDX_FLOW_KEY).contains(basicSchool.getCode())) {
|
|
|
+// processInstance = this.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
|
|
|
+// } else if (flowSchoolCodeMap.get(SystemConstant.JXZYY_FLOW_KEY).contains(basicSchool.getCode())) {//江西中医药大学
|
|
|
+// processInstance = this.startActivity(SystemConstant.JXZYY_FLOW_KEY, map);
|
|
|
+// } else {
|
|
|
+// throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
|
|
|
+// }
|
|
|
+ String id = (String) map.get(SystemConstant.ID);
|
|
|
+ BpmnModel model = (BpmnModel) map.get(SystemConstant.MODEL);
|
|
|
+ Map flowProcessVarMap = (Map) map.get(SystemConstant.FLOW_PROCESS_VAR_MAP);
|
|
|
+
|
|
|
+ //部署流程
|
|
|
+ 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 = flowProcessVarMap.size() > 0 ? runtimeService.startProcessInstanceByKey(id, flowProcessVarMap) : runtimeService.startProcessInstanceByKey(id);
|
|
|
+
|
|
|
+ //保存png图片和xml文件(这一步可做可不做)
|
|
|
+ InputStream processDiagram = repositoryService.getProcessDiagram(processInstance.getProcessDefinitionId());
|
|
|
+ try {
|
|
|
+ FileUtils.copyInputStreamToFile(processDiagram, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnPngName));
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+// 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"));
|
|
|
+
|
|
|
+ InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), bpmnName);
|
|
|
+ try {
|
|
|
+ FileUtils.copyInputStreamToFile(processBpmn, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnProcessName));
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
+ map.computeIfAbsent(SystemConstant.FLOW_START, v -> true);
|
|
|
return processInstance;
|
|
|
}
|
|
|
|
|
@@ -1430,11 +1462,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
*
|
|
|
* @param customFlowSaveDto
|
|
|
* @param id
|
|
|
+ * @return
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void dynamicBuildBpmn(CustomFlowSaveDto customFlowSaveDto, String id) throws IOException {
|
|
|
+ public Map<String, Object> dynamicBuildBpmn(CustomFlowSaveDto customFlowSaveDto, String id) throws IOException {
|
|
|
BpmnModel model = new BpmnModel();
|
|
|
Process process = new Process();
|
|
|
model.addProcess(process);
|
|
@@ -1444,7 +1477,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
List<CustomFlowDto> customFlowLists = customFlowSaveDto.getCustomFlowLists();
|
|
|
Map<CustomFlowTypeEnum, CustomFlowDto> customFlowTypeEnumCustomFlowDtoMap = new HashMap<>();
|
|
|
FlowTaskLink flowTaskLink = new FlowTaskLink();
|
|
|
- Map<String, Object> flowVarMap = new HashMap<>();
|
|
|
+ Map<String, Object> flowProcessVarMap = new HashMap<>();
|
|
|
for (int i = 0; i < customFlowLists.size(); i++) {
|
|
|
CustomFlowDto customFlowDto = customFlowLists.get(i);
|
|
|
FlowTaskNode node = new FlowTaskNode(customFlowDto);
|
|
@@ -1459,8 +1492,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
customFlowDto.setFlowTaskId(CustomFlowDynamicBuildEnum.START.getId());
|
|
|
process.addFlowElement(createStartEvent());
|
|
|
//默认在开始节点后新增一个审批节点
|
|
|
- flowTaskLink = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
|
- flowVarMap.computeIfAbsent(SystemConstant.APPROVE_ID, v -> sysUser.getId());
|
|
|
+ multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
|
|
|
+ flowProcessVarMap.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;
|
|
|
case PROCESS://过程节点
|
|
@@ -1489,7 +1522,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
switch (customFlowPropertyDto.getMultipleUserApproveType()) {
|
|
|
case ORDER://依次审批
|
|
|
case ALL://会签审批
|
|
|
- flowVarMap.computeIfAbsent(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, v -> approveUserIds);
|
|
|
+ flowProcessVarMap.computeIfAbsent(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, v -> approveUserIds);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -1545,25 +1578,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
//生成图像信息
|
|
|
new BpmnAutoLayout(model).execute();
|
|
|
|
|
|
- //部署流程
|
|
|
- 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);
|
|
|
-
|
|
|
- //保存png图片和xml文件(这一步可做可不做)
|
|
|
- InputStream processDiagram = repositoryService.getProcessDiagram(processInstance.getProcessDefinitionId());
|
|
|
- FileUtils.copyInputStreamToFile(processDiagram, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnPngName));
|
|
|
-
|
|
|
-// 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"));
|
|
|
-
|
|
|
- InputStream processBpmn = repositoryService.getResourceAsStream(deployment.getId(), bpmnName);
|
|
|
- FileUtils.copyInputStreamToFile(processBpmn, new File(SystemConstant.TEMP_FILES_DIR + File.separator + DefaultInstanceConvertToMultiInstance.BPMN_NAME + File.separator + bpmnProcessName));
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.computeIfAbsent(SystemConstant.ID, v -> id);
|
|
|
+ map.computeIfAbsent(SystemConstant.MODEL, v -> model);
|
|
|
+ map.computeIfAbsent(SystemConstant.FLOW_PROCESS_VAR_MAP, v -> flowProcessVarMap);
|
|
|
+ this.flowStart(map);
|
|
|
+ return map;
|
|
|
}
|
|
|
|
|
|
/**
|