update 发送消息
This commit is contained in:
+2
@@ -15,4 +15,6 @@ public class ProcessDefinitionKey {
|
||||
|
||||
public static final String FB_STANDARD_PURCHASE = "fb-standard-purchase"; // 法规采购流程
|
||||
|
||||
public static final String FB_STANDARD_COMPLIANCE_ASSESSMENT = "fb-standard-compliance-assessment"; // 法规合规评估流程
|
||||
|
||||
}
|
||||
|
||||
+72
-11
@@ -13,12 +13,19 @@ import com.jero.modules.activiti.process.common.entity.ProcessDraft;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
import com.spire.ms.System.Collections.ArrayList;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.HistoryService;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.activiti.engine.history.HistoricProcessInstance;
|
||||
import org.activiti.engine.runtime.Execution;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
import org.activiti.engine.task.Task;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -28,8 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
@@ -48,6 +54,12 @@ public class ProcessFbInfoController {
|
||||
private IProcessHandleService processHandleService;
|
||||
@Resource
|
||||
private ProcessDraftService processDraftService;
|
||||
@Resource
|
||||
private RuntimeService runtimeService;
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private HistoryService historyService;
|
||||
|
||||
@DictPoint
|
||||
@GetMapping("/getNodeList")
|
||||
@@ -79,16 +91,65 @@ public class ProcessFbInfoController {
|
||||
@ApiOperation(value = "测试")
|
||||
@GetMapping("/test")
|
||||
public Result<T> test() {
|
||||
List<ProcessInstance> subProcessInstanceList = processHandleService
|
||||
.subProcessList("20231114120041259", "Activity_0mj9ddw");
|
||||
System.out.println("================================测试开始=================================");
|
||||
subProcessInstanceList.forEach(subProcessInstance -> {
|
||||
System.out.println("Sub Process Instance ID: " + subProcessInstance.getId());
|
||||
System.out.println("Sub Process Definition Key: " + subProcessInstance.getProcessDefinitionKey());
|
||||
// 其他子流程实例信息
|
||||
System.out.println(subProcessInstance.toString());
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("creator", "tom");
|
||||
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("test_countersign", variables);
|
||||
String processInstanceId = processInstance.getId();
|
||||
System.out.println("流程实例Id: " + processInstanceId);
|
||||
|
||||
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
|
||||
System.out.println("============== 提出申请 ============");
|
||||
taskList.forEach(task -> {
|
||||
System.out.println("任务Id: " + task.getId());
|
||||
System.out.println("任务名称: " + task.getName());
|
||||
System.out.println("执行实例Id: " + task.getExecutionId());
|
||||
System.out.println("任务处理人: " + task.getAssignee());
|
||||
});
|
||||
System.out.println("=======================================================================");
|
||||
System.out.println("==========================");
|
||||
|
||||
List<String> leaderList = Arrays.asList(new String[] {"aaa", "bbb", "ccc"});
|
||||
variables.put("leaderList", leaderList);
|
||||
runtimeService.setVariables(processInstanceId, variables);
|
||||
|
||||
Task tomTask = taskList.get(0);
|
||||
taskService.complete(tomTask.getId());
|
||||
System.out.println("完成任务: " + tomTask.getId());
|
||||
System.out.println("任务名称: " + tomTask.getName());
|
||||
System.out.println("完成人: " + tomTask.getAssignee());
|
||||
|
||||
taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
|
||||
System.out.println("============== 多人会签 ============");
|
||||
taskList.forEach(task -> {
|
||||
System.out.println("任务Id: " + task.getId());
|
||||
System.out.println("任务名称: " + task.getName());
|
||||
System.out.println("执行实例Id: " + task.getExecutionId());
|
||||
System.out.println("任务处理人: " + task.getAssignee());
|
||||
});
|
||||
System.out.println("==========================");
|
||||
|
||||
System.out.println("============= 多人会签 =============");
|
||||
taskList.forEach(task -> {
|
||||
taskService.claim(task.getId(), task.getAssignee());
|
||||
taskService.complete(task.getId());
|
||||
System.out.println("完成任务: " + task.getId());
|
||||
});
|
||||
System.out.println("==========================");
|
||||
|
||||
taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
|
||||
System.out.println("============== 汇总 ============");
|
||||
taskList.forEach(task -> {
|
||||
System.out.println("任务Id: " + task.getId());
|
||||
System.out.println("任务名称: " + task.getName());
|
||||
System.out.println("执行实例Id: " + task.getExecutionId());
|
||||
System.out.println("任务处理人: " + task.getAssignee());
|
||||
});
|
||||
System.out.println("==========================");
|
||||
tomTask = taskList.get(0);
|
||||
taskService.complete(tomTask.getId());
|
||||
System.out.println("完成任务: " + tomTask.getId());
|
||||
System.out.println("任务名称: " + tomTask.getName());
|
||||
System.out.println("完成人: " + tomTask.getAssignee());
|
||||
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import java.util.List;
|
||||
*/
|
||||
@Api(tags="法规采购流程表")
|
||||
@RestController
|
||||
@RequestMapping("/activiti.process.fb/processFbStandardPurchase")
|
||||
@RequestMapping("/process/fb/processFbStandardPurchase")
|
||||
@Slf4j
|
||||
public class ProcessFbStandardPurchaseController extends JeroController<ProcessFbStandardPurchase, IProcessFbStandardPurchaseService> {
|
||||
@Autowired
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public interface IProcessHandleService {
|
||||
* @Date: 2023/11/10 9:44
|
||||
* @Description: 设置流程变量
|
||||
**/
|
||||
void setProcessVariables(String processInstanceId, Map<String, Object> userInfoMap);
|
||||
Map<String, Object> setProcessVariables(Map<String, Object> userInfoMap);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
|
||||
+32
-6
@@ -28,10 +28,7 @@ import com.jero.common.exception.JeroBootException;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
/**
|
||||
@@ -135,17 +132,22 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
ProcessFbStandardConsultationVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); // 全部业务信息
|
||||
ProcessFbConsultationUserLink userLink = businessInfoDTO.getProcessFbConsultationUserLink(); // 业务分派信息
|
||||
|
||||
String taskId = processInfoVO.getBasicTaskInfoDTO().getTaskId();
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
String taskProcessInstanceId = task.getProcessInstanceId();
|
||||
|
||||
LambdaQueryWrapper<ProcessFbConsultationUserLink> removeWrapper = new LambdaQueryWrapper<>();
|
||||
removeWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, processInfoVO.getBusinessId());
|
||||
removeWrapper.eq(ProcessFbConsultationUserLink::getDepartLeaderId, CurrentUserUtil.getId());
|
||||
processFbConsultationUserLinkService.remove(removeWrapper); // 删除原先存储的关联
|
||||
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
List<ProcessFbConsultationUserLink> linkList = new ArrayList<>();
|
||||
if ("1".equals(userLink.getUserType())) { // 模块负责人
|
||||
if (StringUtils.isBlank(userLink.getModuleOwnerId())) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "moduleOwnerId");
|
||||
}
|
||||
List<String> moduleOwnerIds = Arrays.asList(userLink.getModuleOwnerId().split(","));
|
||||
List<ProcessFbConsultationUserLink> linkList = new ArrayList<>();
|
||||
moduleOwnerIds.forEach(moduleOwnerId -> {
|
||||
ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink();
|
||||
link.setBusinessId(processInfoVO.getBusinessId());
|
||||
@@ -154,8 +156,32 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
linkList.add(link);
|
||||
});
|
||||
processFbConsultationUserLinkService.saveBatch(linkList, linkList.size());
|
||||
variables.put("passFirst", true);
|
||||
variables.put("moduleOwnerList", moduleOwnerIds);
|
||||
} else { // 设计工程师
|
||||
|
||||
if (StringUtils.isBlank(userLink.getDesignEngineerId())) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "designEngineerId");
|
||||
}
|
||||
List<String> designEngineerIds = Arrays.asList(userLink.getDesignEngineerId().split(","));
|
||||
designEngineerIds.forEach(designEngineerId -> {
|
||||
ProcessFbConsultationUserLink link = new ProcessFbConsultationUserLink();
|
||||
link.setBusinessId(processInfoVO.getBusinessId());
|
||||
link.setDepartLeaderId(CurrentUserUtil.getId());
|
||||
link.setDesignEngineerId(designEngineerId);
|
||||
linkList.add(link);
|
||||
});
|
||||
processFbConsultationUserLinkService.saveBatch(linkList, linkList.size());
|
||||
variables.put("passFirst", false);
|
||||
variables.put("designEngineerList", designEngineerIds);
|
||||
}
|
||||
|
||||
// 完成任务
|
||||
taskService.complete(taskId, variables);
|
||||
|
||||
System.out.println("================================启动流程=================================");
|
||||
System.out.println("processInstanceId: " + processInfoVO.getBasicProcessInfoDTO().getProcessInstanceId());
|
||||
System.out.println("taskProcessInstanceId: " + taskProcessInstanceId);
|
||||
System.out.println("taskId: " + taskId);
|
||||
System.out.println("=======================================================================");
|
||||
}
|
||||
}
|
||||
|
||||
+20
-12
@@ -80,7 +80,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
updateProcessAll(processInfoVO);
|
||||
|
||||
// 保存选人信息
|
||||
setProcessVariables(processInstanceId, userInfoMap);
|
||||
Map<String, Object> variables = setProcessVariables(userInfoMap);
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
|
||||
|
||||
// 根据流程实例id和任务处理人查询任务
|
||||
@@ -95,11 +95,11 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
updateApprovalRecord(processInfoVO);
|
||||
|
||||
// 完成任务
|
||||
taskService.complete(taskId);
|
||||
taskService.complete(taskId, variables);
|
||||
|
||||
System.out.println("================================流程信息=================================");
|
||||
System.out.println("================================启动流程=================================");
|
||||
System.out.println("流程定义id: " + processDefinitionId);
|
||||
System.out.println("流程实例id: " + processInstanceId);
|
||||
System.out.println("流程实例name: " + processInstance.getName());
|
||||
System.out.println("=======================================================================");
|
||||
}
|
||||
|
||||
@@ -122,22 +122,28 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
String processInstanceId = processDTO.getProcessInstanceId();
|
||||
String processDefinitionId = processDTO.getProcessDefinitionId();
|
||||
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
|
||||
Map<String, Object> variables = setProcessVariables(userInfoMap);
|
||||
if (!Objects.isNull(userInfoMap) && !userInfoMap.isEmpty()) {
|
||||
// 保存选人信息
|
||||
setProcessVariables(processInstanceId, userInfoMap);
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
|
||||
}
|
||||
if (pass) { // 通过
|
||||
runtimeService.setVariableLocal(processInstanceId, "pass", true);
|
||||
variables.put("pass", true);
|
||||
basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.PASS.getValue());
|
||||
} else { // 驳回
|
||||
runtimeService.setVariableLocal(processInstanceId, "pass", false);
|
||||
variables.put("pass", false);
|
||||
basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.REJECT.getValue());
|
||||
}
|
||||
// 更新审批记录表
|
||||
updateApprovalRecord(processInfoVO);
|
||||
// 完成任务
|
||||
taskService.complete(taskId);
|
||||
taskService.complete(taskId, variables);
|
||||
|
||||
System.out.println("================================启动流程=================================");
|
||||
System.out.println("流程定义id: " + processDefinitionId);
|
||||
System.out.println("流程实例id: " + processInstanceId);
|
||||
System.out.println("任务id: " + taskId);
|
||||
System.out.println("=======================================================================");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,16 +152,18 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
* @Description: 设置流程变量
|
||||
**/
|
||||
@Override
|
||||
public void setProcessVariables(String processInstanceId, Map<String, Object> userInfoMap) {
|
||||
public Map<String, Object> setProcessVariables(Map<String, Object> userInfoMap) {
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
userInfoMap.forEach((k, v) -> {
|
||||
String value = (String) v;
|
||||
if (k.contains("List") && StringUtils.isNotBlank(value)) { // 会签节点
|
||||
List<String> userList = Arrays.asList(value.split(","));
|
||||
runtimeService.setVariable(processInstanceId, k, userList);
|
||||
} else { // 普通节点
|
||||
runtimeService.setVariable(processInstanceId, k, v);
|
||||
variables.put(k, userList);
|
||||
} else if (StringUtils.isNotBlank(value)) { // 普通节点
|
||||
variables.put(k, v);
|
||||
}
|
||||
});
|
||||
return variables;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+8
@@ -9,6 +9,7 @@ import com.jero.common.util.MessageUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||
import com.jero.modules.laws.common.vo.LawsDictModel;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
|
||||
@@ -26,6 +27,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
@@ -69,6 +71,12 @@ public class LawsCommonController {
|
||||
return Result.OK(lawsCommonService.getManyStandardSelectionBox(selectionBoxVO, pageNo, pageSize));
|
||||
}
|
||||
|
||||
@ApiOperation(value="分标委下拉列表", notes="分标委下拉列表")
|
||||
@GetMapping(value = "/getBiddingCommittee")
|
||||
public Result<List<LawsDictModel>> getBiddingCommittee() {
|
||||
return Result.OK(lawsCommonService.getBiddingCommittee());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 下载带水印的PDF文件
|
||||
|
||||
+8
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.laws.common.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jero.modules.laws.common.vo.LawsDictModel;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
@@ -183,4 +184,11 @@ public interface ILawsCommonService {
|
||||
* @Description: 将标准编号集合中的标准改成废止状态
|
||||
**/
|
||||
void updateToAbolish(List<String> standardNumbers);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/16 9:50
|
||||
* @Description: 分标委下拉列表
|
||||
**/
|
||||
List<LawsDictModel> getBiddingCommittee();
|
||||
}
|
||||
|
||||
+26
@@ -18,6 +18,7 @@ import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||
import com.jero.modules.laws.common.util.ImportUtil;
|
||||
import com.jero.modules.laws.common.vo.LawsDictModel;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
||||
@@ -29,6 +30,8 @@ import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
|
||||
import com.jero.modules.laws.standard.entity.*;
|
||||
import com.jero.modules.laws.standard.service.*;
|
||||
import com.jero.modules.laws.standardization.entity.LawsStandardization;
|
||||
import com.jero.modules.laws.standardization.service.ILawsStandardizationService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.personal.entity.LawsBrowsingHistory;
|
||||
@@ -117,6 +120,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
private ILawsTreeNodeService lawsTreeNodeService;
|
||||
@Autowired
|
||||
private ILawsBrowsingHistoryService lawsBrowsingHistoryService;
|
||||
@Resource
|
||||
private ILawsStandardizationService lawsStandardizationService;
|
||||
|
||||
@Resource
|
||||
private EnterpriseStandardInspectContentService esInspectContentService;
|
||||
@@ -2099,6 +2104,27 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
lawsEnterpriseStandardService.update(qbUpdateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/16 9:51
|
||||
* @Description: 分标委下拉列表
|
||||
**/
|
||||
@Override
|
||||
public List<LawsDictModel> getBiddingCommittee() {
|
||||
LawsStandardization parent = lawsStandardizationService.getById("0");
|
||||
LambdaQueryWrapper<LawsStandardization> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(LawsStandardization::getPid, parent.getId());
|
||||
List<LawsStandardization> standardizationList = lawsStandardizationService.list(queryWrapper);
|
||||
List<LawsDictModel> lawsDictModelList = new ArrayList<>();
|
||||
standardizationList.forEach(standardization -> {
|
||||
LawsDictModel lawsDictModel = new LawsDictModel();
|
||||
lawsDictModel.setValue(standardization.getId());
|
||||
lawsDictModel.setText(standardization.getName());
|
||||
lawsDictModelList.add(lawsDictModel);
|
||||
});
|
||||
return lawsDictModelList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建企标导入模板的Workbook
|
||||
*
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.jero.modules.laws.common.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/16 9:46
|
||||
* @Description: 字典模型
|
||||
*/
|
||||
@Data
|
||||
public class LawsDictModel {
|
||||
|
||||
/**
|
||||
* 字典value
|
||||
*/
|
||||
private String value;
|
||||
|
||||
/**
|
||||
* 字典文本
|
||||
*/
|
||||
private String text;
|
||||
|
||||
}
|
||||
@@ -29,11 +29,11 @@
|
||||
<bpmn:outgoing>Flow_1ezcutn</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0hpm8eq" sourceRef="depart_leader_start" targetRef="Gateway_0mogtm0" />
|
||||
<bpmn:userTask id="design_engineer_2" name="填写征求意见,到期不填视为无意见">
|
||||
<bpmn:userTask id="design_engineer_2" name="填写征求意见,到期不填视为无意见" activiti:assignee="${designEngineer}">
|
||||
<bpmn:incoming>Flow_05oz1ja</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_09jjte7</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_05oz1ja" name="否" sourceRef="Gateway_0mogtm0" targetRef="design_engineer_2">
|
||||
@@ -49,7 +49,7 @@
|
||||
<bpmn:incoming>Flow_1ezcutn</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0oc8671</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="moduleOwnerList" activiti:elementVariable="moduleOwner">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
<bpmn:startEvent id="Event_15afvr9">
|
||||
<bpmn:outgoing>Flow_13krhma</bpmn:outgoing>
|
||||
@@ -59,11 +59,11 @@
|
||||
<bpmn:outgoing>Flow_0e4x3wm</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_13krhma" sourceRef="Event_15afvr9" targetRef="module_owner_start" />
|
||||
<bpmn:userTask id="design_engineer_1" name="填写征求意见,到期不填视为无意见">
|
||||
<bpmn:userTask id="design_engineer_1" name="填写征求意见,到期不填视为无意见" activiti:assignee="${designEngineer}">
|
||||
<bpmn:incoming>Flow_0e4x3wm</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0vnqotz</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="designEngineerList" activiti:elementVariable="designEngineer">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0e4x3wm" sourceRef="module_owner_start" targetRef="design_engineer_1" />
|
||||
@@ -102,11 +102,11 @@
|
||||
<bpmn:outgoing>Flow_0qai32h</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0qai32h" sourceRef="depart_leader_end_2" targetRef="Event_0r7jsfk" />
|
||||
<bpmn:userTask id="module_owner_end_2" name="汇总全部分发人审批意见-修改/通过">
|
||||
<bpmn:userTask id="module_owner_end_2" name="汇总全部分发人审批意见-修改/通过" activiti:assignee="${moduleOwner}">
|
||||
<bpmn:incoming>Flow_0f48izh</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_14aeapm</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="moduleOwnerList" activiti:elementVariable="moduleOwner">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances== nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances == nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_14aeapm" sourceRef="module_owner_end_2" targetRef="depart_leader_end_1" />
|
||||
@@ -196,13 +196,6 @@
|
||||
<dc:Bounds x="160" y="360" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_0k4hx5w" bpmnElement="depart_leader_end_3">
|
||||
<dc:Bounds x="1780" y="430" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_07yr7ob_di" bpmnElement="Event_07yr7ob">
|
||||
<dc:Bounds x="1492" y="502" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0mj9ddw_di" bpmnElement="Activity_0mj9ddw" isExpanded="true">
|
||||
<dc:Bounds x="320" y="40" width="1120" height="690" />
|
||||
</bpmndi:BPMNShape>
|
||||
@@ -223,16 +216,6 @@
|
||||
<dc:Bounds x="730" y="360" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0r7jsfk_di" bpmnElement="Event_0r7jsfk">
|
||||
<dc:Bounds x="1252" y="552" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_18s4mik" bpmnElement="module_owner_end_2">
|
||||
<dc:Bounds x="1090" y="340" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1xd2kp3_di" bpmnElement="Gateway_1xd2kp3" isMarkerVisible="true">
|
||||
<dc:Bounds x="1245" y="435" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0gcol5c_di" bpmnElement="depart_leader_end_1">
|
||||
<dc:Bounds x="890" y="420" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
@@ -274,10 +257,20 @@
|
||||
<di:waypoint x="1220" y="210" />
|
||||
<di:waypoint x="1282" y="210" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Gateway_1xd2kp3_di" bpmnElement="Gateway_1xd2kp3" isMarkerVisible="true">
|
||||
<dc:Bounds x="1245" y="435" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0r7jsfk_di" bpmnElement="Event_0r7jsfk">
|
||||
<dc:Bounds x="1252" y="552" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_1qjvmbo" bpmnElement="depart_leader_end_2">
|
||||
<dc:Bounds x="730" y="530" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_18s4mik" bpmnElement="module_owner_end_2">
|
||||
<dc:Bounds x="1090" y="340" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1gv6jmb_di" bpmnElement="Flow_1gv6jmb">
|
||||
<di:waypoint x="378" y="400" />
|
||||
<di:waypoint x="430" y="400" />
|
||||
@@ -344,6 +337,13 @@
|
||||
<bpmndi:BPMNShape id="Gateway_0pd0196_di" bpmnElement="Gateway_0pd0196" isMarkerVisible="true">
|
||||
<dc:Bounds x="1585" y="495" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_07yr7ob_di" bpmnElement="Event_07yr7ob">
|
||||
<dc:Bounds x="1492" y="502" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_0k4hx5w" bpmnElement="depart_leader_end_3">
|
||||
<dc:Bounds x="1780" y="430" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0qqp5sb_di" bpmnElement="Activity_0qqp5sb" isExpanded="true">
|
||||
<dc:Bounds x="1492" y="600" width="528" height="240" />
|
||||
</bpmndi:BPMNShape>
|
||||
@@ -354,16 +354,16 @@
|
||||
<dc:Bounds x="1590" y="680" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_035drax" bpmnElement="depart_leader_end_4">
|
||||
<dc:Bounds x="1730" y="680" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1pq4fen_di" bpmnElement="Gateway_1pq4fen" isMarkerVisible="true">
|
||||
<dc:Bounds x="1865" y="695" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_07vxc54_di" bpmnElement="Event_07vxc54">
|
||||
<dc:Bounds x="1952" y="702" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="BPMNShape_035drax" bpmnElement="depart_leader_end_4">
|
||||
<dc:Bounds x="1730" y="680" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1bfoa9n_di" bpmnElement="Flow_1bfoa9n">
|
||||
<di:waypoint x="1548" y="720" />
|
||||
<di:waypoint x="1590" y="720" />
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
|
||||
<bpmn:process id="test_countersign" name="测试会签流程" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_11ole3t</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:userTask id="start_process" name="提出申请" activiti:assignee="${creator}">
|
||||
<bpmn:incoming>Flow_11ole3t</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_14ls1wj</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_11ole3t" sourceRef="StartEvent_1" targetRef="start_process" />
|
||||
<bpmn:userTask id="countersign" name="多人会签" activiti:assignee="${leader}">
|
||||
<bpmn:incoming>Flow_14ls1wj</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1lnd67n</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics activiti:collection="leaderList" activiti:elementVariable="leader">
|
||||
<bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfInstances==nrOfCompletedInstances}</bpmn:completionCondition>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_14ls1wj" sourceRef="start_process" targetRef="countersign" />
|
||||
<bpmn:userTask id="end_process" name="汇总" activiti:assignee="${creator}">
|
||||
<bpmn:incoming>Flow_1lnd67n</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1sn8gxp</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1lnd67n" sourceRef="countersign" targetRef="end_process" />
|
||||
<bpmn:endEvent id="Event_1tpa9t3">
|
||||
<bpmn:incoming>Flow_1sn8gxp</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1sn8gxp" sourceRef="end_process" targetRef="Event_1tpa9t3" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="test_countersign">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="79" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1mn9ou0_di" bpmnElement="start_process">
|
||||
<dc:Bounds x="270" y="57" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_182083l_di" bpmnElement="countersign">
|
||||
<dc:Bounds x="430" y="57" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0g2pw4w_di" bpmnElement="end_process">
|
||||
<dc:Bounds x="590" y="57" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1tpa9t3_di" bpmnElement="Event_1tpa9t3">
|
||||
<dc:Bounds x="752" y="79" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_11ole3t_di" bpmnElement="Flow_11ole3t">
|
||||
<di:waypoint x="215" y="97" />
|
||||
<di:waypoint x="270" y="97" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_14ls1wj_di" bpmnElement="Flow_14ls1wj">
|
||||
<di:waypoint x="370" y="97" />
|
||||
<di:waypoint x="430" y="97" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1lnd67n_di" bpmnElement="Flow_1lnd67n">
|
||||
<di:waypoint x="530" y="97" />
|
||||
<di:waypoint x="590" y="97" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1sn8gxp_di" bpmnElement="Flow_1sn8gxp">
|
||||
<di:waypoint x="690" y="97" />
|
||||
<di:waypoint x="752" y="97" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</definitions>
|
||||
Reference in New Issue
Block a user