update 优化 封装 QueryUtils 查询工具 简化工作流业务查询代码

This commit is contained in:
疯狂的狮子Li 2024-03-06 23:56:43 +08:00
parent 234d8989d7
commit acc7f3dfe5
11 changed files with 259 additions and 326 deletions

View File

@ -2,6 +2,7 @@ package org.dromara.workflow.flowable.config;
import cn.hutool.core.collection.CollUtil;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.utils.QueryUtils;
import org.flowable.bpmn.model.BoundaryEvent;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
@ -78,7 +79,7 @@ public class GlobalFlowableListener implements FlowableEventListener {
String attachedToRefId = ((BoundaryEvent) flowElement).getAttachedToRefId();
List<Execution> list = runtimeService.createExecutionQuery().activityId(attachedToRefId).list();
for (Execution ex : list) {
Task task = taskService.createTaskQuery().executionId(ex.getId()).singleResult();
Task task = QueryUtils.taskQuery().executionId(ex.getId()).singleResult();
if (task != null) {
List<Comment> taskComments = taskService.getTaskComments(task.getId());
if (CollUtil.isEmpty(taskComments)) {

View File

@ -2,6 +2,7 @@ package org.dromara.workflow.listener;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.workflow.utils.QueryUtils;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
@ -19,11 +20,9 @@ import org.springframework.stereotype.Component;
@Component("testLeaveExecutionListener")
public class TestLeaveExecutionListener implements ExecutionListener {
private final TaskService taskService;
@Override
public void notify(DelegateExecution execution) {
Task task = taskService.createTaskQuery().executionId(execution.getId()).singleResult();
Task task = QueryUtils.taskQuery().executionId(execution.getId()).singleResult();
log.info("执行监听【" + task.getName() + "");
}
}

View File

@ -22,6 +22,7 @@ import org.dromara.workflow.domain.bo.ModelBo;
import org.dromara.workflow.domain.vo.ModelVo;
import org.dromara.workflow.service.IActModelService;
import org.dromara.workflow.utils.ModelUtils;
import org.dromara.workflow.utils.QueryUtils;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.*;
@ -35,7 +36,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@ -59,10 +60,7 @@ public class ActModelServiceImpl implements IActModelService {
*/
@Override
public TableDataInfo<Model> page(ModelBo modelBo) {
ModelQuery query = repositoryService.createModelQuery();
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
ModelQuery query = QueryUtils.modelQuery();
if (StringUtils.isNotEmpty(modelBo.getName())) {
query.modelNameLike("%" + modelBo.getName() + "%");
}
@ -98,12 +96,7 @@ public class ActModelServiceImpl implements IActModelService {
String description = modelBo.getDescription();
String categoryCode = modelBo.getCategoryCode();
String xml = modelBo.getXml();
ModelQuery query = repositoryService.createModelQuery();
query.modelKey(key);
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
Model checkModel = query.singleResult();
Model checkModel = QueryUtils.modelQuery().modelKey(key).singleResult();
if (ObjectUtil.isNotNull(checkModel)) {
throw new ServiceException("模型key已存在");
}
@ -114,9 +107,7 @@ public class ActModelServiceImpl implements IActModelService {
model.setVersion(version);
model.setCategory(categoryCode);
model.setMetaInfo(description);
if (TenantHelper.isEnable()) {
model.setTenantId(TenantHelper.getTenantId());
}
model.setTenantId(TenantHelper.getTenantId());
//保存初始化的模型基本信息数据
repositoryService.saveModel(model);
repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml));
@ -164,11 +155,7 @@ public class ActModelServiceImpl implements IActModelService {
public boolean update(ModelBo modelBo) {
try {
Model model = repositoryService.getModel(modelBo.getId());
ModelQuery query = repositoryService.createModelQuery();
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
List<Model> list = query.modelKey(modelBo.getKey()).list();
List<Model> list = QueryUtils.modelQuery().modelKey(modelBo.getKey()).list();
list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> {
throw new ServiceException("模型KEY已存在");
});
@ -199,11 +186,7 @@ public class ActModelServiceImpl implements IActModelService {
BpmnModel bpmnModel = ModelUtils.xmlToBpmnModel(xml);
ModelUtils.checkBpmnModel(bpmnModel);
Model model = repositoryService.getModel(modelId);
ModelQuery query = repositoryService.createModelQuery();
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
List<Model> list = query.modelKey(key).list();
List<Model> list = QueryUtils.modelQuery().modelKey(key).list();
list.stream().filter(e -> !e.getId().equals(model.getId())).findFirst().ifPresent(e -> {
throw new ServiceException("模型KEY已存在");
});
@ -268,11 +251,7 @@ public class ActModelServiceImpl implements IActModelService {
// xml资源的名称 对应act_ge_bytearray表中的name_字段
String processName = model.getName() + ".bpmn20.xml";
// 调用部署相关的api方法进行部署流程定义
DeploymentBuilder builder = repositoryService.createDeployment();
if (TenantHelper.isEnable()) {
builder.tenantId(TenantHelper.getTenantId());
}
Deployment deployment = builder
Deployment deployment = repositoryService.createDeployment()
// 部署名称
.name(model.getName())
// 部署标识key
@ -281,13 +260,15 @@ public class ActModelServiceImpl implements IActModelService {
.category(model.getCategory())
// bpmn20.xml资源
.addBytes(processName, xmlBytes)
// 租户id
.tenantId(TenantHelper.getTenantId())
.deploy();
// 更新 部署id 到流程定义模型数据表中
model.setDeploymentId(deployment.getId());
repositoryService.saveModel(model);
// 更新分类
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
ProcessDefinition definition = QueryUtils.definitionQuery().deploymentId(deployment.getId()).singleResult();
repositoryService.setProcessDefinitionCategory(definition.getId(), model.getCategory());
return true;
} catch (Exception e) {

View File

@ -20,7 +20,7 @@ import org.dromara.workflow.domain.bo.ProcessDefinitionBo;
import org.dromara.workflow.domain.vo.ProcessDefinitionVo;
import org.dromara.workflow.service.IActProcessDefinitionService;
import org.dromara.workflow.service.IWfCategoryService;
import org.flowable.engine.HistoryService;
import org.dromara.workflow.utils.QueryUtils;
import org.flowable.engine.ProcessMigrationService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.impl.bpmn.deployer.ResourceNameUtil;
@ -47,11 +47,7 @@ import java.util.zip.ZipInputStream;
public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionService {
private final RepositoryService repositoryService;
private final HistoryService historyService;
private final ProcessMigrationService processMigrationService;
private final IWfCategoryService wfCategoryService;
/**
@ -62,10 +58,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
*/
@Override
public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo processDefinitionBo) {
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
if (TenantHelper.isEnable()) {
query.processDefinitionTenantId(TenantHelper.getTenantId());
}
ProcessDefinitionQuery query = QueryUtils.definitionQuery();
if (StringUtils.isNotEmpty(processDefinitionBo.getKey())) {
query.processDefinitionKey(processDefinitionBo.getKey());
}
@ -82,7 +75,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
List<Deployment> deploymentList = null;
if (CollUtil.isNotEmpty(definitionList)) {
List<String> deploymentIds = StreamUtils.toList(definitionList, ProcessDefinition::getDeploymentId);
deploymentList = repositoryService.createDeploymentQuery().deploymentIds(deploymentIds).list();
deploymentList = QueryUtils.deploymentQuery(deploymentIds).list();
}
for (ProcessDefinition processDefinition : definitionList) {
ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
@ -108,16 +101,12 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
@Override
public List<ProcessDefinitionVo> getProcessDefinitionListByKey(String key) {
List<ProcessDefinitionVo> processDefinitionVoList = new ArrayList<>();
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
if (TenantHelper.isEnable()) {
query.processDefinitionTenantId(TenantHelper.getTenantId());
}
ProcessDefinitionQuery query = QueryUtils.definitionQuery();
List<ProcessDefinition> definitionList = query.processDefinitionKey(key).list();
List<Deployment> deploymentList = null;
if (CollUtil.isNotEmpty(definitionList)) {
List<String> deploymentIds = definitionList.stream().map(ProcessDefinition::getDeploymentId).collect(Collectors.toList());
deploymentList = repositoryService.createDeploymentQuery()
.deploymentIds(deploymentIds).list();
deploymentList = QueryUtils.deploymentQuery(deploymentIds).list();
}
for (ProcessDefinition processDefinition : definitionList) {
ProcessDefinitionVo processDefinitionVo = BeanUtil.toBean(processDefinition, ProcessDefinitionVo.class);
@ -172,7 +161,7 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
@Override
public boolean deleteDeployment(String deploymentId, String processDefinitionId) {
try {
List<HistoricTaskInstance> taskInstanceList = historyService.createHistoricTaskInstanceQuery()
List<HistoricTaskInstance> taskInstanceList = QueryUtils.hisTaskInstanceQuery()
.processDefinitionId(processDefinitionId).list();
if (CollectionUtil.isNotEmpty(taskInstanceList)) {
throw new ServiceException("当前流程定义已被使用不可删除!");
@ -194,11 +183,8 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
@Override
public boolean updateProcessDefState(String processDefinitionId) {
try {
ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
if (TenantHelper.isEnable()) {
query.processDefinitionTenantId(TenantHelper.getTenantId());
}
ProcessDefinition processDefinition = query.processDefinitionId(processDefinitionId).singleResult();
ProcessDefinition processDefinition = QueryUtils.definitionQuery()
.processDefinitionId(processDefinitionId).singleResult();
//将当前为挂起状态更新为激活状态
//参数说明参数1流程定义id,参数2是否激活true是否级联对应流程实例激活了则对应流程实例都可以审批
//参数3什么时候激活如果为null则立即激活如果为具体时间则到达此时间后激活
@ -249,13 +235,10 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
*/
@Override
public boolean convertToModel(String processDefinitionId) {
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
ProcessDefinition pd = QueryUtils.definitionQuery()
.processDefinitionId(processDefinitionId).singleResult();
InputStream inputStream = repositoryService.getResourceAsStream(pd.getDeploymentId(), pd.getResourceName());
ModelQuery query = repositoryService.createModelQuery();
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
ModelQuery query = QueryUtils.modelQuery();
Model model = query.modelKey(pd.getKey()).singleResult();
try {
if (ObjectUtil.isNotNull(model)) {
@ -304,11 +287,9 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
InputStream inputStream = file.getInputStream();
Deployment deployment;
if (FlowConstant.ZIP.equals(suffix)) {
DeploymentBuilder query = repositoryService.createDeployment();
if (TenantHelper.isEnable()) {
query.tenantId(TenantHelper.getTenantId());
}
deployment = query.addZipInputStream(new ZipInputStream(inputStream))
DeploymentBuilder builder = repositoryService.createDeployment();
deployment = builder.addZipInputStream(new ZipInputStream(inputStream))
.tenantId(TenantHelper.getTenantId())
.name(processName).key(processKey).category(categoryCode).deploy();
} else {
String[] list = ResourceNameUtil.BPMN_RESOURCE_SUFFIXES;
@ -320,18 +301,16 @@ public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionSer
}
}
if (flag) {
DeploymentBuilder query = repositoryService.createDeployment();
if (TenantHelper.isEnable()) {
query.tenantId(TenantHelper.getTenantId());
}
deployment = query.addInputStream(filename, inputStream)
DeploymentBuilder builder = repositoryService.createDeployment();
deployment = builder.addInputStream(filename, inputStream)
.tenantId(TenantHelper.getTenantId())
.name(processName).key(processKey).category(categoryCode).deploy();
} else {
throw new ServiceException("文件类型上传错误!");
}
}
// 更新分类
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
ProcessDefinition definition = QueryUtils.definitionQuery().deploymentId(deployment.getId()).singleResult();
repositoryService.setProcessDefinitionCategory(definition.getId(), categoryCode);
return true;

View File

@ -13,7 +13,6 @@ import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.common.enums.BusinessStatusEnum;
import org.dromara.workflow.common.enums.TaskStatusEnum;
@ -26,12 +25,13 @@ import org.dromara.workflow.domain.vo.GraphicInfoVo;
import org.dromara.workflow.domain.vo.ProcessInstanceVo;
import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator;
import org.dromara.workflow.flowable.strategy.FlowEventStrategy;
import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd;
import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd;
import org.dromara.workflow.flowable.strategy.FlowEventStrategy;
import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.bpmn.model.*;
import org.flowable.engine.*;
@ -45,9 +45,7 @@ import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.engine.task.Attachment;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -97,10 +95,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Override
public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) {
List<ProcessInstanceVo> list = new ArrayList<>();
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
ProcessInstanceQuery query = QueryUtils.instanceQuery();
if (StringUtils.isNotBlank(processInstanceBo.getName())) {
query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
}
@ -136,11 +131,8 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Override
public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) {
List<ProcessInstanceVo> list = new ArrayList<>();
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().finished()
.orderByProcessInstanceEndTime().desc();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery()
.finished().orderByProcessInstanceEndTime().desc();
if (StringUtils.isNotEmpty(processInstanceBo.getName())) {
query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
}
@ -176,19 +168,19 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
public String getHistoryProcessImage(String processInstanceId) {
String processDefinitionId;
// 获取当前的流程实例
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();
// 如果流程已经结束则得到结束节点
if (Objects.isNull(processInstance)) {
HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
HistoricProcessInstance pi = QueryUtils.hisInstanceQuery(processInstanceId).singleResult();
processDefinitionId = pi.getProcessDefinitionId();
} else {
// 根据流程实例ID获得当前处于活动状态的ActivityId合集
ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
ProcessInstance pi = QueryUtils.instanceQuery(processInstanceId).singleResult();
processDefinitionId = pi.getProcessDefinitionId();
}
// 获得活动的节点
List<HistoricActivityInstance> highLightedFlowList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<HistoricActivityInstance> highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<String> highLightedFlows = new ArrayList<>();
List<String> highLightedNodes = new ArrayList<>();
@ -231,11 +223,11 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
public Map<String, Object> getHistoryProcessList(String processInstanceId) {
Map<String, Object> map = new HashMap<>();
List<Map<String, Object>> taskList = new ArrayList<>();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult();
StringBuilder xml = new StringBuilder();
ProcessDefinition processDefinition = repositoryService.getProcessDefinition(historicProcessInstance.getProcessDefinitionId());
// 获取节点
List<HistoricActivityInstance> highLightedFlowList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
List<HistoricActivityInstance> highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();
for (HistoricActivityInstance tempActivity : highLightedFlowList) {
Map<String, Object> task = new HashMap<>();
if (!FlowConstant.SEQUENCE_FLOW.equals(tempActivity.getActivityType()) &&
@ -249,7 +241,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
taskList.add(task);
}
}
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();
if (processInstance != null) {
taskList = taskList.stream().filter(e -> !e.get("activityType").equals(FlowConstant.END_EVENT)).collect(Collectors.toList());
}
@ -283,7 +275,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
*/
private List<ActHistoryInfoVo> getHistoryTaskList(String processInstanceId) {
//查询任务办理记录
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>();
for (HistoricTaskInstance historicTaskInstance : list) {
@ -321,11 +313,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
public Map<String, Object> getHistoryRecord(String processInstanceId) {
Map<String, Object> map = new HashMap<>();
// 查询任务办理记录
HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
List<HistoricTaskInstance> list = query.processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>();
List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId);
@ -463,11 +451,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class)
public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) {
try {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query.processInstanceId(processInvalidBo.getProcessInstanceId()).list();
List<Task> list = QueryUtils.taskQuery(processInvalidBo.getProcessInstanceId()).list();
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
if (CollUtil.isNotEmpty(subTasks)) {
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
@ -479,11 +463,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) {
taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason);
}
HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query1.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstance historicProcessInstance = query1.processInstanceId(processInvalidBo.getProcessInstanceId()).singleResult();
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult();
if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.FINISH.getStatus().equals(historicProcessInstance.getBusinessStatus())) {
throw new ServiceException("该单据已完成申请!");
}
@ -510,22 +490,14 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) {
try {
// 1.删除运行中流程实例
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query.processInstanceIdIn(processInstanceIds).list();
List<Task> list = QueryUtils.taskQuery(processInstanceIds).list();
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
if (CollUtil.isNotEmpty(subTasks)) {
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
}
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
// 2.删除历史记录
HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query1.processInstanceTenantId(TenantHelper.getTenantId());
}
List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list();
List<HistoricProcessInstance> historicProcessInstanceList = QueryUtils.hisInstanceQuery(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
}
@ -552,22 +524,14 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
return false;
}
List<String> processInstanceIds = StreamUtils.toList(actHiProcinsts, ActHiProcinst::getId);
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query.processInstanceIdIn(processInstanceIds).list();
List<Task> list = QueryUtils.taskQuery(processInstanceIds).list();
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
if (CollUtil.isNotEmpty(subTasks)) {
subTasks.forEach(e -> taskService.deleteTask(e.getId()));
}
runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "删除了当前流程申请");
// 2.删除历史记录
HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query1.processInstanceTenantId(TenantHelper.getTenantId());
}
List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list();
List<HistoricProcessInstance> historicProcessInstanceList = QueryUtils.hisInstanceQuery(new HashSet<>(processInstanceIds)).list();
if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) {
historyService.bulkDeleteHistoricProcessInstances(processInstanceIds);
}
@ -604,11 +568,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class)
public boolean cancelProcessApply(String processInstanceId) {
try {
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
ProcessInstance processInstance = query.processInstanceId(processInstanceId)
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId)
.startedBy(String.valueOf(LoginHelper.getUserId())).singleResult();
if (ObjectUtil.isNull(processInstance)) {
throw new ServiceException("您不是流程发起人,撤销失败!");
@ -619,25 +579,17 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) {
throw new ServiceException("该单据已撤销!");
}
TaskQuery query1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskList = query1.processInstanceId(processInstanceId).list();
List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list();
for (Task task : taskList) {
taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId()));
taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.CANCEL.getStatus(), LoginHelper.getLoginUser().getNickname() + ":撤销申请");
}
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
List<String> nodeIds = StreamUtils.toList(taskList, Task::getTaskDefinitionKey);
runtimeService.createChangeActivityStateBuilder()
.processInstanceId(processInstanceId)
.moveActivityIdsToSingleActivityId(nodeIds, historicTaskInstance.getTaskDefinitionKey()).changeState();
TaskQuery query2 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query2.taskTenantId(TenantHelper.getTenantId());
}
Task task = query2.processInstanceId(processInstanceId).list().get(0);
Task task = QueryUtils.taskQuery(processInstanceId).list().get(0);
taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee());
//获取并行网关执行后保留的执行实例数据
ExecutionChildByExecutionIdCmd childByExecutionIdCmd = new ExecutionChildByExecutionIdCmd(task.getExecutionId());
@ -667,10 +619,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Override
public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) {
List<ProcessInstanceVo> list = new ArrayList<>();
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery();
query.startedBy(processInstanceBo.getStartUserId());
if (StringUtils.isNotBlank(processInstanceBo.getName())) {
query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%");
@ -689,11 +638,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
List<TaskVo> taskVoList = new ArrayList<>();
if (CollUtil.isNotEmpty(historicProcessInstanceList)) {
List<String> processInstanceIds = StreamUtils.toList(historicProcessInstanceList, HistoricProcessInstance::getId);
TaskQuery query1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskList = query1.processInstanceIdIn(processInstanceIds).list();
List<Task> taskList = QueryUtils.taskQuery(processInstanceIds).list();
for (Task task : taskList) {
taskVoList.add(BeanUtil.toBean(task, TaskVo.class));
}
@ -720,11 +665,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
@Transactional(rollbackFor = Exception.class)
public boolean taskUrging(TaskUrgingBo taskUrgingBo) {
try {
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
ProcessInstance processInstance = query.processInstanceId(taskUrgingBo.getProcessInstanceId()).singleResult();
ProcessInstance processInstance = QueryUtils.instanceQuery(taskUrgingBo.getProcessInstanceId()).singleResult();
if (processInstance == null) {
throw new ServiceException("任务已结束!");
}
@ -732,7 +673,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
if (StringUtils.isBlank(message)) {
message = "您的【" + processInstance.getName() + "】单据还未审批,请您及时处理。";
}
List<Task> list = taskService.createTaskQuery().processInstanceId(taskUrgingBo.getProcessInstanceId()).list();
List<Task> list = QueryUtils.taskQuery(taskUrgingBo.getProcessInstanceId()).list();
WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message);
} catch (ServiceException e) {
throw new ServiceException(e.getMessage());

View File

@ -24,12 +24,13 @@ import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.MultiInstanceVo;
import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.domain.vo.WfCopy;
import org.dromara.workflow.flowable.strategy.FlowEventStrategy;
import org.dromara.workflow.flowable.cmd.*;
import org.dromara.workflow.flowable.strategy.FlowEventStrategy;
import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler;
import org.dromara.workflow.flowable.strategy.FlowTaskEventHandler;
import org.dromara.workflow.mapper.ActTaskMapper;
import org.dromara.workflow.service.IActTaskService;
import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
import org.flowable.common.engine.impl.identity.Authentication;
@ -40,7 +41,6 @@ import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
@ -86,19 +86,12 @@ public class ActTaskServiceImpl implements IActTaskService {
throw new ServiceException("启动工作流时必须包含业务ID");
}
// 判断当前业务是否启动过流程
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery();
HistoricProcessInstance historicProcessInstance = query.processInstanceBusinessKey(startProcessBo.getBusinessKey()).singleResult();
if (ObjectUtil.isNotEmpty(historicProcessInstance)) {
BusinessStatusEnum.checkStartStatus(historicProcessInstance.getBusinessStatus());
}
TaskQuery taskQuery = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
taskQuery.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskResult = taskQuery.processInstanceBusinessKey(startProcessBo.getBusinessKey()).list();
List<Task> taskResult = QueryUtils.taskQuery().processInstanceBusinessKey(startProcessBo.getBusinessKey()).list();
if (CollUtil.isNotEmpty(taskResult)) {
if (CollUtil.isNotEmpty(startProcessBo.getVariables())) {
taskService.setVariables(taskResult.get(0).getId(), startProcessBo.getVariables());
@ -129,11 +122,7 @@ public class ActTaskServiceImpl implements IActTaskService {
// 将流程定义名称 作为 流程实例名称
runtimeService.setProcessInstanceName(pi.getProcessInstanceId(), pi.getProcessDefinitionName());
// 申请人执行流程
TaskQuery taskQuery1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
taskQuery.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskList = taskQuery1.processInstanceId(pi.getId()).list();
List<Task> taskList = QueryUtils.taskQuery(pi.getId()).list();
if (taskList.size() > 1) {
throw new ServiceException("请检查流程第一个环节是否为申请人!");
}
@ -157,10 +146,7 @@ public class ActTaskServiceImpl implements IActTaskService {
try {
List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles();
String userId = String.valueOf(LoginHelper.getUserId());
TaskQuery taskQuery = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
taskQuery.taskTenantId(TenantHelper.getTenantId());
}
TaskQuery taskQuery = QueryUtils.taskQuery();
taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId);
if (CollUtil.isNotEmpty(roles)) {
List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId()));
@ -173,7 +159,7 @@ public class ActTaskServiceImpl implements IActTaskService {
if (task.isSuspended()) {
throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED);
}
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
ProcessInstance processInstance = QueryUtils.instanceQuery(task.getProcessInstanceId()).singleResult();
//办理委托任务
if (ObjectUtil.isNotEmpty(task.getDelegationState()) && FlowConstant.PENDING.equals(task.getDelegationState().name())) {
taskService.resolveTask(completeTaskBo.getTaskId());
@ -206,11 +192,7 @@ public class ActTaskServiceImpl implements IActTaskService {
} else {
taskService.complete(completeTaskBo.getTaskId());
}
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
ProcessInstance pi = query.processInstanceId(task.getProcessInstanceId()).singleResult();
ProcessInstance pi = QueryUtils.instanceQuery(task.getProcessInstanceId()).singleResult();
if (pi == null) {
UpdateBusinessStatusCmd updateBusinessStatusCmd = new UpdateBusinessStatusCmd(task.getProcessInstanceId(), BusinessStatusEnum.FINISH.getStatus());
managementService.executeCommand(updateBusinessStatusCmd);
@ -218,17 +200,13 @@ public class ActTaskServiceImpl implements IActTaskService {
processHandler.handleProcess(processInstance.getBusinessKey(), BusinessStatusEnum.FINISH.getStatus(), false);
}
} else {
TaskQuery query1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query1.processInstanceId(task.getProcessInstanceId()).list();
List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list();
if (CollUtil.isNotEmpty(list) && CollUtil.isNotEmpty(completeTaskBo.getWfCopyList())) {
TaskEntity newTask = WorkflowUtils.createNewTask(task);
taskService.addComment(newTask.getId(), task.getProcessInstanceId(), TaskStatusEnum.COPY.getStatus(),
LoginHelper.getLoginUser().getNickname() + "【抄送】给" + String.join(",", StreamUtils.toList(completeTaskBo.getWfCopyList(), WfCopy::getUserName)));
taskService.complete(newTask.getId());
List<Task> taskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
List<Task> taskList = QueryUtils.taskQuery(task.getProcessInstanceId()).list();
WorkflowUtils.createCopyTask(taskList, StreamUtils.toList(completeTaskBo.getWfCopyList(), WfCopy::getUserId));
}
sendMessage(list, processInstance.getName(), completeTaskBo.getMessageType(), null);
@ -299,10 +277,7 @@ public class ActTaskServiceImpl implements IActTaskService {
*/
@Override
public TableDataInfo<TaskVo> getAllTaskWaitByPage(TaskBo taskBo) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
TaskQuery query = QueryUtils.taskQuery();
if (StringUtils.isNotBlank(taskBo.getName())) {
query.taskNameLike("%" + taskBo.getName() + "%");
}
@ -317,7 +292,7 @@ public class ActTaskServiceImpl implements IActTaskService {
List<ProcessInstance> processInstanceList = null;
if (CollUtil.isNotEmpty(taskList)) {
Set<String> processInstanceIds = StreamUtils.toSet(taskList, Task::getProcessInstanceId);
processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIds).list();
processInstanceList = QueryUtils.instanceQuery(processInstanceIds).list();
}
List<TaskVo> list = new ArrayList<>();
for (Task task : taskList) {
@ -347,10 +322,7 @@ public class ActTaskServiceImpl implements IActTaskService {
@Override
public TableDataInfo<TaskVo> getTaskFinishByPage(TaskBo taskBo) {
String userId = String.valueOf(LoginHelper.getUserId());
HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
HistoricTaskInstanceQuery query = QueryUtils.hisTaskInstanceQuery();
query.taskAssignee(userId).finished().orderByHistoricTaskInstanceStartTime().desc();
if (StringUtils.isNotBlank(taskBo.getName())) {
query.taskNameLike("%" + taskBo.getName() + "%");
@ -365,7 +337,7 @@ public class ActTaskServiceImpl implements IActTaskService {
List<HistoricProcessInstance> historicProcessInstanceList = null;
if (CollUtil.isNotEmpty(taskInstanceList)) {
Set<String> processInstanceIds = StreamUtils.toSet(taskInstanceList, HistoricTaskInstance::getProcessInstanceId);
historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceIds(processInstanceIds).list();
historicProcessInstanceList = QueryUtils.hisInstanceQuery(processInstanceIds).list();
}
List<TaskVo> list = new ArrayList<>();
for (HistoricTaskInstance task : taskInstanceList) {
@ -424,10 +396,7 @@ public class ActTaskServiceImpl implements IActTaskService {
*/
@Override
public TableDataInfo<TaskVo> getAllTaskFinishByPage(TaskBo taskBo) {
HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
HistoricTaskInstanceQuery query = QueryUtils.hisTaskInstanceQuery();
query.finished().orderByHistoricTaskInstanceStartTime().desc();
if (StringUtils.isNotBlank(taskBo.getName())) {
query.taskNameLike("%" + taskBo.getName() + "%");
@ -442,7 +411,7 @@ public class ActTaskServiceImpl implements IActTaskService {
List<HistoricProcessInstance> historicProcessInstanceList = null;
if (CollUtil.isNotEmpty(taskInstanceList)) {
Set<String> processInstanceIds = StreamUtils.toSet(taskInstanceList, HistoricTaskInstance::getProcessInstanceId);
historicProcessInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceIds(processInstanceIds).list();
historicProcessInstanceList = QueryUtils.hisInstanceQuery(processInstanceIds).list();
}
List<TaskVo> list = new ArrayList<>();
for (HistoricTaskInstance task : taskInstanceList) {
@ -470,10 +439,7 @@ public class ActTaskServiceImpl implements IActTaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean delegateTask(DelegateBo delegateBo) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
TaskQuery query = QueryUtils.taskQuery();
TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
if (ObjectUtil.isEmpty(task)) {
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
@ -503,10 +469,7 @@ public class ActTaskServiceImpl implements IActTaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean terminationTask(TerminationBo terminationBo) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
TaskQuery query = QueryUtils.taskQuery();
Task task = query.taskId(terminationBo.getTaskId()).singleResult();
if (ObjectUtil.isEmpty(task)) {
@ -515,11 +478,8 @@ public class ActTaskServiceImpl implements IActTaskService {
if (task.isSuspended()) {
throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED);
}
HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query1.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstance historicProcessInstance = query1.processInstanceBusinessKey(task.getProcessInstanceId()).singleResult();
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery()
.processInstanceBusinessKey(task.getProcessInstanceId()).singleResult();
if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.TERMINATION.getStatus().equals(historicProcessInstance.getBusinessStatus())) {
throw new ServiceException("该单据已终止!");
}
@ -530,11 +490,7 @@ public class ActTaskServiceImpl implements IActTaskService {
terminationBo.setComment(LoginHelper.getLoginUser().getNickname() + "终止了申请:" + terminationBo.getComment());
}
taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.TERMINATION.getStatus(), terminationBo.getComment());
TaskQuery query2 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query2.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query2.processInstanceId(task.getProcessInstanceId()).list();
List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list();
if (CollectionUtil.isNotEmpty(list)) {
List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId()));
if (CollectionUtil.isNotEmpty(subTasks)) {
@ -560,11 +516,8 @@ public class ActTaskServiceImpl implements IActTaskService {
*/
@Override
public boolean transferTask(TransmitBo transmitBo) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
Task task = query.taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
Task task = QueryUtils.taskQuery().taskId(transmitBo.getTaskId())
.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult();
if (ObjectUtil.isEmpty(task)) {
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
}
@ -590,11 +543,8 @@ public class ActTaskServiceImpl implements IActTaskService {
*/
@Override
public boolean addMultiInstanceExecution(AddMultiBo addMultiBo) {
TaskQuery taskQuery = taskService.createTaskQuery();
TaskQuery taskQuery = QueryUtils.taskQuery();
taskQuery.taskId(addMultiBo.getTaskId());
if (TenantHelper.isEnable()) {
taskQuery.taskTenantId(TenantHelper.getTenantId());
}
if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
}
@ -641,11 +591,8 @@ public class ActTaskServiceImpl implements IActTaskService {
*/
@Override
public boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo) {
TaskQuery taskQuery = taskService.createTaskQuery();
TaskQuery taskQuery = QueryUtils.taskQuery();
taskQuery.taskId(deleteMultiBo.getTaskId());
if (TenantHelper.isEnable()) {
taskQuery.taskTenantId(TenantHelper.getTenantId());
}
if (!LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin()) {
taskQuery.taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId()));
}
@ -695,10 +642,7 @@ public class ActTaskServiceImpl implements IActTaskService {
@Override
@Transactional(rollbackFor = Exception.class)
public String backProcess(BackProcessBo backProcessBo) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
TaskQuery query = QueryUtils.taskQuery();
Task task = query.taskId(backProcessBo.getTaskId()).taskAssignee(String.valueOf(LoginHelper.getUserId())).singleResult();
if (ObjectUtil.isEmpty(task)) {
throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL);
@ -708,7 +652,7 @@ public class ActTaskServiceImpl implements IActTaskService {
}
try {
String processInstanceId = task.getProcessInstanceId();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
ProcessInstance processInstance = QueryUtils.instanceQuery(task.getProcessInstanceId()).singleResult();
//获取并行网关执行后保留的执行实例数据
ExecutionChildByExecutionIdCmd childByExecutionIdCmd = new ExecutionChildByExecutionIdCmd(task.getExecutionId());
List<ExecutionEntity> executionEntities = managementService.executeCommand(childByExecutionIdCmd);
@ -717,13 +661,9 @@ public class ActTaskServiceImpl implements IActTaskService {
throw new ServiceException("该单据已退回!");
}
//判断是否有多个任务
TaskQuery query1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskList = query.processInstanceId(processInstanceId).list();
List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list();
//申请人节点
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery(processInstanceId).finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0);
String backTaskDefinitionKey = historicTaskInstance.getTaskDefinitionKey();
taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.BACK.getStatus(), StringUtils.isNotBlank(backProcessBo.getMessage()) ? backProcessBo.getMessage() : "退回");
if (taskList.size() > 1) {
@ -733,11 +673,7 @@ public class ActTaskServiceImpl implements IActTaskService {
//当前单个节点驳回单个节点
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInstanceId).moveActivityIdTo(task.getTaskDefinitionKey(), backTaskDefinitionKey).changeState();
}
TaskQuery query2 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query2.processInstanceId(processInstanceId).list();
List<Task> list = QueryUtils.taskQuery(processInstanceId).list();
for (Task t : list) {
taskService.setAssignee(t.getId(), historicTaskInstance.getAssignee());
}
@ -770,11 +706,7 @@ public class ActTaskServiceImpl implements IActTaskService {
@Transactional(rollbackFor = Exception.class)
public boolean updateAssignee(String[] taskIds, String userId) {
try {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
List<Task> list = query.taskIds(Arrays.asList(taskIds)).list();
List<Task> list = QueryUtils.taskQuery().taskIds(Arrays.asList(taskIds)).list();
for (Task task : list) {
taskService.setAssignee(task.getId(), userId);
}

View File

@ -10,6 +10,7 @@ import org.dromara.workflow.domain.bo.WfCategoryBo;
import org.dromara.workflow.domain.vo.WfCategoryVo;
import org.dromara.workflow.mapper.WfCategoryMapper;
import org.dromara.workflow.service.IWfCategoryService;
import org.dromara.workflow.utils.QueryUtils;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.Model;
@ -82,15 +83,15 @@ public class WfCategoryServiceImpl implements IWfCategoryService {
WfCategory update = MapstructUtils.convert(bo, WfCategory.class);
validEntityBeforeSave(update);
WfCategoryVo wfCategoryVo = baseMapper.selectVoById(bo.getId());
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().processDefinitionCategory(wfCategoryVo.getCategoryCode()).list();
List<ProcessDefinition> processDefinitionList = QueryUtils.definitionQuery().processDefinitionCategory(wfCategoryVo.getCategoryCode()).list();
for (ProcessDefinition processDefinition : processDefinitionList) {
repositoryService.setProcessDefinitionCategory(processDefinition.getId(), bo.getCategoryCode());
}
List<Deployment> deploymentList = repositoryService.createDeploymentQuery().deploymentCategory(wfCategoryVo.getCategoryCode()).list();
List<Deployment> deploymentList = QueryUtils.deploymentQuery().deploymentCategory(wfCategoryVo.getCategoryCode()).list();
for (Deployment deployment : deploymentList) {
repositoryService.setDeploymentCategory(deployment.getId(), bo.getCategoryCode());
}
List<Model> modelList = repositoryService.createModelQuery().modelCategory(wfCategoryVo.getCategoryCode()).list();
List<Model> modelList = QueryUtils.modelQuery().modelCategory(wfCategoryVo.getCategoryCode()).list();
for (Model model : modelList) {
model.setCategory(bo.getCategoryCode());
repositoryService.saveModel(model);

View File

@ -12,7 +12,6 @@ import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.SysUserRole;
import org.dromara.system.domain.bo.SysUserBo;
@ -23,13 +22,12 @@ import org.dromara.workflow.domain.bo.SysUserMultiBo;
import org.dromara.workflow.domain.vo.MultiInstanceVo;
import org.dromara.workflow.domain.vo.TaskVo;
import org.dromara.workflow.service.IWorkflowUserService;
import org.dromara.workflow.utils.QueryUtils;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -47,7 +45,6 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
private final SysUserMapper sysUserMapper;
private final SysUserRoleMapper sysUserRoleMapper;
private final TaskService taskService;
private final RuntimeService runtimeService;
/**
@ -58,7 +55,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
@Override
@SuppressWarnings("unchecked")
public TableDataInfo<SysUserVo> getWorkflowAddMultiInstanceByPage(SysUserMultiBo sysUserMultiBo) {
Task task = taskService.createTaskQuery().taskId(sysUserMultiBo.getTaskId()).singleResult();
Task task = QueryUtils.taskQuery().taskId(sysUserMultiBo.getTaskId()).singleResult();
if (task == null) {
throw new ServiceException("任务不存在");
}
@ -74,7 +71,7 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
List<Long> assigneeList = (List<Long>) runtimeService.getVariable(task.getExecutionId(), multiInstance.getAssigneeList());
queryWrapper.notIn(CollectionUtil.isNotEmpty(assigneeList), SysUser::getUserId, assigneeList);
} else {
List<Task> list = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
List<Task> list = QueryUtils.taskQuery(task.getProcessInstanceId()).list();
List<Long> userIds = StreamUtils.toList(list, e -> Long.valueOf(e.getAssignee()));
queryWrapper.notIn(CollectionUtil.isNotEmpty(userIds), SysUser::getUserId, userIds);
}
@ -93,16 +90,8 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
@Override
@SuppressWarnings("unchecked")
public List<TaskVo> getWorkflowDeleteMultiInstanceList(String taskId) {
TaskQuery query = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
Task task = query.taskId(taskId).singleResult();
TaskQuery query1 = taskService.createTaskQuery();
if (TenantHelper.isEnable()) {
query1.taskTenantId(TenantHelper.getTenantId());
}
List<Task> taskList = query1.processInstanceId(task.getProcessInstanceId()).list();
Task task = QueryUtils.taskQuery().taskId(taskId).singleResult();
List<Task> taskList = QueryUtils.taskQuery(task.getProcessInstanceId()).list();
MultiInstanceVo multiInstance = WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey());
List<TaskVo> taskListVo = new ArrayList<>();
if (multiInstance == null) {

View File

@ -7,6 +7,8 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
@ -32,9 +34,8 @@ import java.util.stream.Collectors;
*
* @author may
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ModelUtils {
public ModelUtils() {
}
public static BpmnModel xmlToBpmnModel(String xml) throws IOException {
if (xml == null) {

View File

@ -0,0 +1,134 @@
package org.dromara.workflow.utils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.history.HistoricActivityInstanceQuery;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.repository.DeploymentQuery;
import org.flowable.engine.repository.ModelQuery;
import org.flowable.engine.repository.ProcessDefinitionQuery;
import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* 查询工具
*
* @author Lion Li
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class QueryUtils {
private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class);
public static ModelQuery modelQuery() {
ModelQuery query = PROCESS_ENGINE.getRepositoryService().createModelQuery();
if (TenantHelper.isEnable()) {
query.modelTenantId(TenantHelper.getTenantId());
}
return query;
}
public static ProcessDefinitionQuery definitionQuery() {
ProcessDefinitionQuery query = PROCESS_ENGINE.getRepositoryService().createProcessDefinitionQuery();
if (TenantHelper.isEnable()) {
query.processDefinitionTenantId(TenantHelper.getTenantId());
}
return query;
}
public static DeploymentQuery deploymentQuery() {
DeploymentQuery query = PROCESS_ENGINE.getRepositoryService().createDeploymentQuery();
if (TenantHelper.isEnable()) {
query.deploymentTenantId(TenantHelper.getTenantId());
}
return query;
}
public static DeploymentQuery deploymentQuery(String deploymentId) {
return deploymentQuery().deploymentId(deploymentId);
}
public static DeploymentQuery deploymentQuery(List<String> deploymentIds) {
return deploymentQuery().deploymentIds(deploymentIds);
}
public static HistoricTaskInstanceQuery hisTaskInstanceQuery() {
HistoricTaskInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
return query;
}
public static HistoricTaskInstanceQuery hisTaskInstanceQuery(String processInstanceId) {
return hisTaskInstanceQuery().processInstanceId(processInstanceId);
}
public static ProcessInstanceQuery instanceQuery() {
ProcessInstanceQuery query = PROCESS_ENGINE.getRuntimeService().createProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
return query;
}
public static ProcessInstanceQuery instanceQuery(String processInstanceId) {
return instanceQuery().processInstanceId(processInstanceId);
}
public static ProcessInstanceQuery instanceQuery(Set<String> processInstanceIds) {
return instanceQuery().processInstanceIds(processInstanceIds);
}
public static HistoricProcessInstanceQuery hisInstanceQuery() {
HistoricProcessInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
return query;
}
public static HistoricProcessInstanceQuery hisInstanceQuery(String processInstanceId) {
return hisInstanceQuery().processInstanceId(processInstanceId);
}
public static HistoricProcessInstanceQuery hisInstanceQuery(Set<String> processInstanceIds) {
return hisInstanceQuery().processInstanceIds(processInstanceIds);
}
public static HistoricActivityInstanceQuery hisActivityInstanceQuery() {
HistoricActivityInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricActivityInstanceQuery();
if (TenantHelper.isEnable()) {
query.activityTenantId(TenantHelper.getTenantId());
}
return query;
}
public static HistoricActivityInstanceQuery hisActivityInstanceQuery(String processInstanceId) {
return hisActivityInstanceQuery().processInstanceId(processInstanceId);
}
public static TaskQuery taskQuery() {
TaskQuery query = PROCESS_ENGINE.getTaskService().createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
return query;
}
public static TaskQuery taskQuery(String processInstanceId) {
return taskQuery().processInstanceId(processInstanceId);
}
public static TaskQuery taskQuery(Collection<String> processInstanceIds) {
return taskQuery().processInstanceIdIn(processInstanceIds);
}
}

View File

@ -5,6 +5,8 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
@ -28,38 +30,33 @@ import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
import org.dromara.workflow.mapper.ActHiTaskinstMapper;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IWorkflowUserService;
import org.dromara.workflow.service.impl.WorkflowUserServiceImpl;
import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowNode;
import org.flowable.common.engine.api.delegate.Expression;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
import org.flowable.identitylink.api.history.HistoricIdentityLink;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import java.util.*;
import static org.dromara.workflow.common.constant.FlowConstant.*;
import static org.dromara.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO;
/**
* 工作流工具
*
* @author may
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class WorkflowUtils {
public WorkflowUtils() {
}
private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class);
private static final IWorkflowUserService I_WORKFLOW_USER_SERVICE = SpringUtils.getBean(WorkflowUserServiceImpl.class);
private static final IActHiProcinstService I_ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class);
private static final IWorkflowUserService WORKFLOW_USER_SERVICE = SpringUtils.getBean(IWorkflowUserService.class);
private static final IActHiProcinstService ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class);
private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class);
/**
@ -81,9 +78,7 @@ public class WorkflowUtils {
task.setTaskDefinitionKey(currentTask.getTaskDefinitionKey());
task.setPriority(currentTask.getPriority());
task.setCreateTime(new Date());
if (TenantHelper.isEnable()) {
task.setTenantId(TenantHelper.getTenantId());
}
task.setTenantId(TenantHelper.getTenantId());
PROCESS_ENGINE.getTaskService().saveTask(task);
}
if (ObjectUtil.isNotNull(task)) {
@ -110,9 +105,7 @@ public class WorkflowUtils {
newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId());
newTask.setProcessInstanceId(parentTask.getProcessInstanceId());
newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
if (TenantHelper.isEnable()) {
newTask.setTenantId(TenantHelper.getTenantId());
}
newTask.setTenantId(TenantHelper.getTenantId());
list.add(newTask);
}
}
@ -125,9 +118,7 @@ public class WorkflowUtils {
actHiTaskinst.setProcDefId(processDefinitionId);
actHiTaskinst.setProcInstId(processInstanceId);
actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus());
if (TenantHelper.isEnable()) {
actHiTaskinst.setTenantId(TenantHelper.getTenantId());
}
actHiTaskinst.setTenantId(TenantHelper.getTenantId());
LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(ActHiTaskinst::getId, taskIds);
ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper);
@ -145,20 +136,16 @@ public class WorkflowUtils {
public static ParticipantVo getCurrentTaskParticipant(String taskId) {
ParticipantVo participantVo = new ParticipantVo();
List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId);
TaskQuery query = PROCESS_ENGINE.getTaskService().createTaskQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
Task task = query.taskId(taskId).singleResult();
Task task = QueryUtils.taskQuery().taskId(taskId).singleResult();
if (task != null && CollUtil.isNotEmpty(linksForTask)) {
List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
if (CollUtil.isNotEmpty(groupList)) {
List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId()));
List<SysUserRole> sysUserRoles = I_WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds);
List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds);
if (CollUtil.isNotEmpty(sysUserRoles)) {
participantVo.setGroupIds(groupIds);
List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId);
List<SysUserVo> sysUsers = I_WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
@ -177,7 +164,7 @@ public class WorkflowUtils {
}
}
List<SysUserVo> sysUsers = I_WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
@ -233,16 +220,8 @@ public class WorkflowUtils {
* @param taskId 任务id
*/
public static String getBusinessStatusByTaskId(String taskId) {
HistoricTaskInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery();
if (TenantHelper.isEnable()) {
query.taskTenantId(TenantHelper.getTenantId());
}
HistoricTaskInstance historicTaskInstance = query.taskId(taskId).singleResult();
HistoricProcessInstanceQuery query1 = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query1.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstance historicProcessInstance = query1.processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult();
HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().taskId(taskId).singleResult();
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(historicTaskInstance.getProcessInstanceId()).singleResult();
return historicProcessInstance.getBusinessStatus();
}
@ -252,11 +231,7 @@ public class WorkflowUtils {
* @param processInstanceId 流程实例id
*/
public static String getBusinessStatus(String processInstanceId) {
HistoricProcessInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
if (TenantHelper.isEnable()) {
query.processInstanceTenantId(TenantHelper.getTenantId());
}
HistoricProcessInstance historicProcessInstance = query.processInstanceId(processInstanceId).singleResult();
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult();
return historicProcessInstance.getBusinessStatus();
}
@ -270,7 +245,7 @@ public class WorkflowUtils {
if (StringUtils.isBlank(businessKey)) {
return;
}
ActHiProcinst actHiProcinst = I_ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey);
ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey);
if (actHiProcinst == null) {
ProcessInstanceVo processInstanceVo = new ProcessInstanceVo();
processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
@ -293,7 +268,7 @@ public class WorkflowUtils {
if (CollUtil.isEmpty(idList)) {
return;
}
List<ActHiProcinst> actHiProcinstList = I_ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList);
List<ActHiProcinst> actHiProcinstList = ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList);
if (obj instanceof Collection<?> collection) {
for (Object o : collection) {
String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString();
@ -335,7 +310,7 @@ public class WorkflowUtils {
for (Task t : list) {
ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId());
if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) {
List<SysUserRole> sysUserRoles = I_WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds());
List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds());
if (CollUtil.isNotEmpty(sysUserRoles)) {
userIds.addAll(StreamUtils.toList(sysUserRoles, SysUserRole::getUserId));
}
@ -346,7 +321,7 @@ public class WorkflowUtils {
}
}
if (CollUtil.isNotEmpty(userIds)) {
List<SysUserVo> sysUserVoList = I_WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds));
List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds));
for (String code : messageType) {
if (code.equals(MessageTypeEnum.SYSTEM_MESSAGE.getCode())) {
WebSocketMessageDto dto = new WebSocketMessageDto();