|
@@ -2,13 +2,17 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.task.impl;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.controller.task.vo.instance.BpmProcessInstanceCreateReqVO;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.convert.task.BpmProcessInstanceConvert;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.task.BpmProcessInstanceExtDO;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.task.BpmProcessInstanceExtMapper;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceResultEnum;
|
|
|
+import cn.iocoder.yudao.adminserver.modules.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmProcessDefinitionService;
|
|
|
import cn.iocoder.yudao.adminserver.modules.bpm.service.task.BpmProcessInstanceService;
|
|
|
import cn.iocoder.yudao.adminserver.modules.system.service.user.SysUserService;
|
|
|
import cn.iocoder.yudao.coreservice.modules.system.dal.dataobject.user.SysUserDO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.activiti.engine.HistoryService;
|
|
|
-import org.activiti.engine.RepositoryService;
|
|
|
import org.activiti.engine.RuntimeService;
|
|
|
import org.activiti.engine.TaskService;
|
|
|
import org.activiti.engine.history.HistoricProcessInstance;
|
|
@@ -44,8 +48,6 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
|
|
|
@Slf4j
|
|
|
public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService {
|
|
|
|
|
|
- @Resource
|
|
|
- private RepositoryService repositoryService;
|
|
|
@Resource
|
|
|
private RuntimeService runtimeService;
|
|
|
@Resource
|
|
@@ -58,7 +60,11 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
@Resource
|
|
|
private BpmProcessDefinitionService processDefinitionService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private BpmProcessInstanceExtMapper processInstanceExtMapper;
|
|
|
+
|
|
|
@Override
|
|
|
+// @Transactional(rollbackFor = Exception.class)
|
|
|
public String createProcessInstance(Long userId, BpmProcessInstanceCreateReqVO createReqVO) {
|
|
|
// 校验流程定义
|
|
|
ProcessDefinition definition = processDefinitionService.getProcessDefinition(createReqVO.getProcessDefinitionId());
|
|
@@ -72,6 +78,10 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
// 创建流程实例
|
|
|
Map<String, Object> variables = createReqVO.getVariables();
|
|
|
ProcessInstance instance = runtimeService.startProcessInstanceById(createReqVO.getProcessDefinitionId(), variables);
|
|
|
+ // 设置流程名字
|
|
|
+ runtimeService.setProcessInstanceName(instance.getId(), definition.getName());
|
|
|
+ // 记录流程实例的拓展表
|
|
|
+ createProcessInstanceExt(instance, definition.getName());
|
|
|
|
|
|
// 添加初始的评论 TODO 芋艿:在思考下
|
|
|
Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult();
|
|
@@ -88,6 +98,20 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
return instance.getId();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 创建流程实例的拓展
|
|
|
+ *
|
|
|
+ * @param instance 流程实例
|
|
|
+ * @param name 实例名。此时,instance 的 name 为空,所以需要传递该参数
|
|
|
+ */
|
|
|
+ private void createProcessInstanceExt(ProcessInstance instance, String name) {
|
|
|
+ BpmProcessInstanceExtDO instanceExt = BpmProcessInstanceConvert.INSTANCE.convert(instance);
|
|
|
+ instanceExt.setName(name);
|
|
|
+ instanceExt.setStatus(BpmProcessInstanceStatusEnum.RUNNING.getStatus());
|
|
|
+ instanceExt.setResult(BpmProcessInstanceResultEnum.PROCESS.getResult());
|
|
|
+ processInstanceExtMapper.insert(instanceExt);
|
|
|
+ }
|
|
|
+
|
|
|
public void getMyProcessInstancePage(Long userId) {
|
|
|
// id title 所属流程 当前审批环节 状态 结果 创建时间 提交申请时间 【标题、状态】「ActBusiness」
|
|
|
// id title 流程类别 流程版本 提交时间 流程状态 耗时 当前节点 办理 【标题、提交时间】「HistoricProcessInstanceQuery」
|
|
@@ -103,4 +127,24 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获得流程实例
|
|
|
+ *
|
|
|
+ * @param id 流程实例的编号
|
|
|
+ * @return 流程实例
|
|
|
+ */
|
|
|
+ private ProcessInstance getProcessInstance(String id) {
|
|
|
+ return runtimeService.createProcessInstanceQuery().processInstanceId(id).singleResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得历史的流程实例
|
|
|
+ *
|
|
|
+ * @param id 流程实例的编号
|
|
|
+ * @return 历史的流程实例
|
|
|
+ */
|
|
|
+ private HistoricProcessInstance getHistoricProcessInstance(String id) {
|
|
|
+ return historyService.createHistoricProcessInstanceQuery().processInstanceId(id).singleResult();
|
|
|
+ }
|
|
|
+
|
|
|
}
|