fix - 调整 common 模块版本,保证以后服务版本升级,低版本使用的 starter 仍能拉取最新的版本

This commit is contained in:
wangli 2025-08-20 11:20:47 +08:00
parent e4f564dff1
commit 6078dc36b1
6 changed files with 651 additions and 620 deletions

View File

@ -31,6 +31,7 @@
<elasticsearch.version>7.10.2</elasticsearch.version>
<easy-es.version>2.0.0</easy-es.version>
<xxl-job.version>2.5.0</xxl-job.version>
<workflow-engine-common.version>0.0.1-SNAPSHOT</workflow-engine-common.version>
</properties>
<dependencyManagement>
@ -74,7 +75,7 @@
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>workflow-engine-common</artifactId>
<version>${project.version}</version>
<version>${workflow-engine-common.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>

View File

@ -21,7 +21,7 @@
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>workflow-engine-common</artifactId>
<version>${project.version}</version>
<version>${workflow-engine-common.version}</version>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>

View File

@ -14,7 +14,7 @@
<dependency>
<groupId>cn.axzo.workflow</groupId>
<artifactId>workflow-engine-common</artifactId>
<version>${project.version}</version>
<version>${workflow-engine-common.version}</version>
</dependency>
<dependency>
<groupId>cn.axzo.basics</groupId>

View File

@ -12,6 +12,7 @@
<artifactId>workflow-engine-common</artifactId>
<packaging>jar</packaging>
<name>workflow Engine Common</name>
<version>${workflow-engine-common.version}</version>
<dependencies>
<dependency>

View File

@ -5,47 +5,30 @@ import cn.axzo.workflow.common.util.ThreadUtil;
import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.ASYNC;
import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.SYNC;
import cn.axzo.workflow.client.annotation.WorkflowEngineFeignClient;
import cn.axzo.workflow.common.annotation.Manageable;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import cn.axzo.workflow.common.annotation.InvokeMode;
import cn.axzo.workflow.common.annotation.Manageable;
import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutCallbackDTO;
import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutTriggerDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;
import cn.azxo.framework.common.model.CommonResponse;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditWithFormDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskBackAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCountersignDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskResetApproversDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskTransferDTO;
import cn.axzo.workflow.common.model.response.BpmPageResult;
import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO;
import javax.annotation.Nullable;
import javax.validation.constraints.NotEmpty;
import cn.axzo.workflow.common.model.request.form.definition.StartFormSearchDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormDetailDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormSearchDTO;
import cn.axzo.workflow.common.model.response.form.FormVO;
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO;
import java.util.List;
import java.util.Map;
import cn.axzo.workflow.common.model.dto.SignFileDTO;
import cn.axzo.workflow.common.model.dto.SimpleDocDTO;
import cn.axzo.workflow.common.model.request.bpmn.log.LogApproveSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BeforeProcessInstanceCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO;
@ -62,10 +45,13 @@ import cn.axzo.workflow.common.model.request.bpmn.process.doc.ChangeApproverRead
import cn.axzo.workflow.common.model.request.bpmn.process.doc.ProcessDocQueryDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO;
import cn.axzo.workflow.common.model.response.BpmPageResult;
import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceAdminPageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceLogVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstancePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.process.ExtProcessLogVO;
import cn.axzo.workflow.common.model.response.bpmn.process.NodesByModelVO;
import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO;
import cn.axzo.workflow.common.model.response.bpmn.process.doc.DocPendingVO;
@ -73,7 +59,29 @@ import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping;
import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import java.util.Map;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditWithFormDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskBackAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCountersignDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskResetApproversDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskTransferDTO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO;
import javax.validation.constraints.NotEmpty;
/**
* Workflow Engine Starter Core Service
@ -119,160 +127,26 @@ public interface WorkflowCoreService {
Boolean setAssignee(@Validated @RequestBody BpmnActivitySetAssigneeDTO dto);
/**
* 同意
*
* <pre>
* MQ 触发规则:
* 1. 当前审批任务会依次触发 process-task-completed process-task-deleted 事件(如果有下一级审批,则会触发第 2.1 点中的事件,
* 如果当前审核任务最后一级审批,则会触发第 2.2 点中的事件)
* 2.1. 下一级审批任务会依次触发 process-task-assigned process-task-created 事件
* 2.2. 流程实例正常结束会触发 process-instance-completed 事件
* </pre>
* 获取指定审批业务的流程表单设置
* @param dto
* @return
*/
@Operation(summary = "同意MQ 触发规则:1. 当前审批任务会依次触发 process-task-completed 和 process-task-deleted 事件(如果有下一级审批,则会触发第 2.1 点中的事件,如果当前审核任务最后一级审批,则会触发第 2.2 点中的事件)2.1. 下一级审批任务会依次触发 process-task-assigned 和 process-task-created 事件2.2. 流程实例正常结束会触发 process-instance-completed 事件")
@PostMapping("/api/process/task/approve")
Boolean approveTask(@Validated @RequestBody BpmnTaskAuditDTO dto);
@PostMapping("/api/form/admin/start/form")
@InvokeMode(SYNC)
FormDefinitionVO getFormDefinition(@Validated @RequestBody StartFormSearchDTO dto);
/**
* 同意时并提交表单数据
* 查询指定审批实例的表单模型和数据
* <p>
* dto 中的 processInstanceId taskId至少有一个属性有值一般建议直接使用实例 ID
* 当传入 taskId 将只查询该任务绑定的表单模型和数据
*
* @param dto
* @return
*/
@Operation(summary = "同意时并提交表单")
@PostMapping("/api/process/task/form/approve")
Boolean approveTaskWithForm(@Validated @RequestBody BpmnTaskAuditWithFormDTO dto);
/**
* 批量同意
*
* @param dtos
* @return
*/
@Operation(summary = "批量同意")
@PostMapping("/api/process/task/batch/approve")
BatchOperationResultVO batchApproveTask(@Validated @RequestBody List<BpmnTaskAuditDTO> dtos);
/**
* 获取当前节点可回退节点选项列表
*
* @param taskId 当前任务id
* @return 可以回退节点列表
*/
@Operation(summary = "获取当前节点可回退节点选项列表")
@GetMapping("/api/process/task/back/optional/nodes")
List<BpmnOptionalNodeDTO> getBackOptionalNodes(@RequestParam @NotBlank(message = "任务id不能为空") String taskId);
/**
* 回退到指定节点
*
* @param dto
* @return
*/
@Operation(summary = "回退")
@PostMapping("/api/process/task/back")
Boolean backTask(@Validated @RequestBody BpmnTaskBackAuditDTO dto);
/**
* 用于系统内部操作跳转到指定节点
* @param dto 请求参数
* @return 是否成功
*/
@Operation(summary = "系统操作回退任务到指定节点")
@PostMapping("/api/process/task/system/back")
Boolean systemBackTask(@Validated @RequestBody BpmnNodeBackSystemOperateDTO dto);
/**
* 驳回
*
* <pre>
* MQ 触发规则:
* 1. 当前审批任务会触发 process-task-deleted 事件
* 2. 当前流程实例会触发 process-instance-rejected 事件
* </pre>
*/
@Operation(summary = "驳回MQ 触发规则1. 当前审批任务会触发 process-task-deleted 事件, 2. 当前流程实例会触发 process-instance-rejected 事件")
@PostMapping("/api/process/task/reject")
Boolean rejectTask(@Validated @RequestBody BpmnTaskAuditDTO dto);
/**
* 批量驳回
*
* @param dtos 批量请求参数
* @return
*/
@PostMapping("/api/process/task/batch/reject")
BatchOperationResultVO batchRejectTask(@Validated @RequestBody List<BpmnTaskAuditDTO> dtos);
/**
* 转交
*
* @param dto
* @return
*/
@Operation(summary = "直接修改审批任务的审批人")
@PostMapping("/api/process/task/transfer")
Boolean transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto);
/**
* 批量转交
*
* @param dtos
* @return
*/
@Operation(summary = "批量修改审批任务的审批人")
@PostMapping("/api/process/task/batch/transfer")
BatchOperationResultVO batchTransferTask(@Validated @RequestBody List<BpmnTaskTransferDTO> dtos);
/**
* 评论
*
* @param dto 评论请求参数
* @return
*/
@Operation(summary = "审批流程评论")
@PostMapping("/api/process/task/comment")
Boolean commentTask(@Validated @RequestBody BpmnTaskCommentDTO dto);
/**
* 加签
*
* @param dto 加签请求参数
* @return
*/
@Operation(summary = "审批流程加签")
@PostMapping("/api/process/task/countersign")
Boolean countersignTask(@Validated @RequestBody BpmnTaskCountersignDTO dto);
/**
* 重置节点审批人提级审批
*
* @param dto
* @return
*/
@Operation(summary = "重置节点审批人(提级审批)")
@PostMapping("/api/process/task/approvers/reset")
Boolean resetTaskApprovers(@Validated @RequestBody BpmnTaskResetApproversDTO dto);
/**
* 暂停流程任务,并创建机器人节点,等待业务推动
*
* @param dto
* @return 返回机器人节点任务 ID
*/
@Operation(summary = "创建机器人节点, 暂停流程任务")
@PostMapping("/api/process/task/robot/create")
String createRobotTask(@Validated @RequestBody BpmnRobotTaskCreateDTO dto);
/**
* 完成机器人节点
*
* @param dto
* @return
*/
@Operation(summary = "完成机器人节点, 继续流程任务")
@PostMapping("/api/process/task/robot/complete")
Boolean completeRobotTask(@Validated @RequestBody BpmnRobotTaskCompleteDTO dto);
@PostMapping("/api/form/admin/instance/render")
@InvokeMode(SYNC)
FormInstanceVO getFormInstance(@Validated @RequestBody FormDetailDTO dto);
/**
* 创建流程前的节点列表
@ -442,6 +316,163 @@ public interface WorkflowCoreService {
@InvokeMode(SYNC)
List<SignFileDTO> getProcessInstanceFinalDocs(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId);
/**
* 同意
*
* <pre>
* MQ 触发规则:
* 1. 当前审批任务会依次触发 process-task-completed process-task-deleted 事件(如果有下一级审批,则会触发第 2.1 点中的事件,
* 如果当前审核任务最后一级审批,则会触发第 2.2 点中的事件)
* 2.1. 下一级审批任务会依次触发 process-task-assigned process-task-created 事件
* 2.2. 流程实例正常结束会触发 process-instance-completed 事件
* </pre>
*/
@Operation(summary = "同意MQ 触发规则:1. 当前审批任务会依次触发 process-task-completed 和 process-task-deleted 事件(如果有下一级审批,则会触发第 2.1 点中的事件,如果当前审核任务最后一级审批,则会触发第 2.2 点中的事件)2.1. 下一级审批任务会依次触发 process-task-assigned 和 process-task-created 事件2.2. 流程实例正常结束会触发 process-instance-completed 事件")
@PostMapping("/api/process/task/approve")
Boolean approveTask(@Validated @RequestBody BpmnTaskAuditDTO dto);
/**
* 同意时并提交表单数据
*
* @param dto
* @return
*/
@Operation(summary = "同意时并提交表单")
@PostMapping("/api/process/task/form/approve")
Boolean approveTaskWithForm(@Validated @RequestBody BpmnTaskAuditWithFormDTO dto);
/**
* 批量同意
*
* @param dtos
* @return
*/
@Operation(summary = "批量同意")
@PostMapping("/api/process/task/batch/approve")
BatchOperationResultVO batchApproveTask(@Validated @RequestBody List<BpmnTaskAuditDTO> dtos);
/**
* 获取当前节点可回退节点选项列表
*
* @param taskId 当前任务id
* @return 可以回退节点列表
*/
@Operation(summary = "获取当前节点可回退节点选项列表")
@GetMapping("/api/process/task/back/optional/nodes")
List<BpmnOptionalNodeDTO> getBackOptionalNodes(@RequestParam @NotBlank(message = "任务id不能为空") String taskId);
/**
* 回退到指定节点
*
* @param dto
* @return
*/
@Operation(summary = "回退")
@PostMapping("/api/process/task/back")
Boolean backTask(@Validated @RequestBody BpmnTaskBackAuditDTO dto);
/**
* 用于系统内部操作跳转到指定节点
*
* @param dto 请求参数
* @return 是否成功
*/
@Operation(summary = "系统操作回退任务到指定节点")
@PostMapping("/api/process/task/system/back")
Boolean systemBackTask(@Validated @RequestBody BpmnNodeBackSystemOperateDTO dto);
/**
* 驳回
*
* <pre>
* MQ 触发规则:
* 1. 当前审批任务会触发 process-task-deleted 事件
* 2. 当前流程实例会触发 process-instance-rejected 事件
* </pre>
*/
@Operation(summary = "驳回MQ 触发规则1. 当前审批任务会触发 process-task-deleted 事件, 2. 当前流程实例会触发 process-instance-rejected 事件")
@PostMapping("/api/process/task/reject")
Boolean rejectTask(@Validated @RequestBody BpmnTaskAuditDTO dto);
/**
* 批量驳回
*
* @param dtos 批量请求参数
* @return
*/
@PostMapping("/api/process/task/batch/reject")
BatchOperationResultVO batchRejectTask(@Validated @RequestBody List<BpmnTaskAuditDTO> dtos);
/**
* 转交
*
* @param dto
* @return
*/
@Operation(summary = "直接修改审批任务的审批人")
@PostMapping("/api/process/task/transfer")
Boolean transferTask(@Validated @RequestBody BpmnTaskTransferDTO dto);
/**
* 批量转交
*
* @param dtos
* @return
*/
@Operation(summary = "批量修改审批任务的审批人")
@PostMapping("/api/process/task/batch/transfer")
BatchOperationResultVO batchTransferTask(@Validated @RequestBody List<BpmnTaskTransferDTO> dtos);
/**
* 评论
*
* @param dto 评论请求参数
* @return
*/
@Operation(summary = "审批流程评论")
@PostMapping("/api/process/task/comment")
Boolean commentTask(@Validated @RequestBody BpmnTaskCommentDTO dto);
/**
* 加签
*
* @param dto 加签请求参数
* @return
*/
@Operation(summary = "审批流程加签")
@PostMapping("/api/process/task/countersign")
Boolean countersignTask(@Validated @RequestBody BpmnTaskCountersignDTO dto);
/**
* 重置节点审批人提级审批
*
* @param dto
* @return
*/
@Operation(summary = "重置节点审批人(提级审批)")
@PostMapping("/api/process/task/approvers/reset")
Boolean resetTaskApprovers(@Validated @RequestBody BpmnTaskResetApproversDTO dto);
/**
* 暂停流程任务,并创建机器人节点,等待业务推动
*
* @param dto
* @return 返回机器人节点任务 ID
*/
@Operation(summary = "创建机器人节点, 暂停流程任务")
@PostMapping("/api/process/task/robot/create")
String createRobotTask(@Validated @RequestBody BpmnRobotTaskCreateDTO dto);
/**
* 完成机器人节点
*
* @param dto
* @return
*/
@Operation(summary = "完成机器人节点, 继续流程任务")
@PostMapping("/api/process/task/robot/complete")
Boolean completeRobotTask(@Validated @RequestBody BpmnRobotTaskCompleteDTO dto);
/**
* 强制使用异步模式调用该方法请在调用真实方法前调用该方法
* <pre>

View File

@ -5,65 +5,34 @@ import cn.axzo.workflow.common.util.ThreadUtil;
import cn.axzo.workflow.client.annotation.WorkflowEngineFeignClient;
import cn.axzo.workflow.common.annotation.InvokeMode;
import cn.axzo.workflow.common.annotation.Manageable;
import cn.axzo.workflow.common.model.request.bpmn.definition.BpmnProcessDefinitionUpdateDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelUpdateDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessDefinitionPageDTO;
import cn.axzo.workflow.common.model.response.BpmPageResult;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO;
import cn.axzo.workflow.common.model.request.bpmn.print.PrintFieldQueryDTO;
import cn.azxo.framework.common.model.CommonResponse;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_TENANT_ID;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import java.util.List;
import cn.axzo.workflow.common.model.request.es.InstanceSearchReqDTO;
import cn.axzo.workflow.common.model.response.es.ProcessInstanceDocumentVO;
import cn.axzo.workflow.common.model.request.category.*;
import cn.axzo.workflow.common.model.response.category.CategoryConfigItemVO;
import cn.axzo.workflow.common.model.response.category.CategoryGroupVarItemVo;
import cn.axzo.workflow.common.model.response.category.CategoryItemVO;
import org.springframework.web.bind.annotation.*;
import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.*;
import java.util.Map;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminCreateDTO;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminDeleteDTO;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminQueryDTO;
import cn.axzo.workflow.common.model.response.admin.ProcessAdminVo;
import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutCallbackDTO;
import cn.axzo.workflow.common.model.request.bpmn.activity.BpmnActivityTimeoutTriggerDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivityTriggerDTO;
import io.swagger.v3.oas.annotations.Operation;
import cn.axzo.workflow.common.model.request.bpmn.RestBpmnProcessVariable;
import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO;
import cn.axzo.workflow.common.model.request.bpmn.print.PrintFieldQueryDTO;
import java.util.Map;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditWithFormDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskBackAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCountersignDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskResetApproversDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskTransferDTO;
import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO;
import javax.annotation.Nullable;
import javax.validation.constraints.NotEmpty;
import cn.axzo.workflow.common.model.request.form.definition.StartFormSearchDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormDetailDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormSearchDTO;
import cn.axzo.workflow.common.model.response.form.FormVO;
import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO;
import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO;
import cn.axzo.workflow.common.model.request.es.InstanceSearchReqDTO;
import cn.axzo.workflow.common.model.response.BpmPageResult;
import cn.axzo.workflow.common.model.response.es.ProcessInstanceDocumentVO;
import cn.axzo.workflow.common.model.dto.SignFileDTO;
import cn.axzo.workflow.common.model.dto.SimpleDocDTO;
import cn.axzo.workflow.common.model.request.bpmn.log.LogApproveSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BeforeProcessInstanceCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO;
@ -80,17 +49,29 @@ import cn.axzo.workflow.common.model.request.bpmn.process.doc.ChangeApproverRead
import cn.axzo.workflow.common.model.request.bpmn.process.doc.ProcessDocQueryDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO;
import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO;
import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceAdminPageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceLogVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstancePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.process.ExtProcessLogVO;
import cn.axzo.workflow.common.model.response.bpmn.process.NodesByModelVO;
import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO;
import cn.axzo.workflow.common.model.response.bpmn.process.doc.DocPendingVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import com.fasterxml.jackson.databind.node.ObjectNode;
import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import cn.axzo.workflow.common.model.request.category.*;
import cn.axzo.workflow.common.model.response.category.CategoryConfigItemVO;
import cn.axzo.workflow.common.model.response.category.CategoryGroupVarItemVo;
import cn.axzo.workflow.common.model.response.category.CategoryItemVO;
import org.springframework.web.bind.annotation.*;
import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.*;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.BpmnModelUpdateDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocByIdDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.model.doc.DocOrderDTO;
@ -107,10 +88,31 @@ import cn.axzo.workflow.common.model.response.bpmn.model.BpmnModelDetailVO;
import cn.axzo.workflow.common.model.response.bpmn.model.BpmnModelExtVO;
import cn.axzo.workflow.common.model.response.bpmn.model.doc.DocBaseVO;
import cn.axzo.workflow.common.model.response.print.PrintModelDTO;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminCreateDTO;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminDeleteDTO;
import cn.axzo.workflow.common.model.request.admin.ProcessAdminQueryDTO;
import cn.axzo.workflow.common.model.response.admin.ProcessAdminVo;
import cn.axzo.workflow.common.model.request.bpmn.RestBpmnProcessVariable;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnNodeBackSystemOperateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnOptionalNodeDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCompleteDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnRobotTaskCreateDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAttachmentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditWithFormDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskBackAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCommentDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskCountersignDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskPageSearchDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskResetApproversDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskTransferDTO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceGroupVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnHistoricTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskDonePageItemVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskInstanceVO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskTodoPageItemVO;
import javax.validation.constraints.NotEmpty;
import cn.axzo.workflow.common.model.request.bpmn.definition.BpmnProcessDefinitionUpdateDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessDefinitionPageDTO;
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_TENANT_ID;
/**
* Workflow Engine Starter Management Service
@ -122,91 +124,225 @@ import cn.axzo.workflow.common.model.response.admin.ProcessAdminVo;
@org.springframework.cloud.openfeign.FeignClient(name = "workflow-engine", url = "${axzo.service.workflow-engine:http://workflow-engine:8080}", configuration = WorkflowEngineStarterFeignConfiguration.class)
public interface WorkflowManageService {
/**
* 获取活跃的流程定义分页
*/
@GetMapping("/api/process/definition/page")
@Operation(summary = "查询指定审批流程是否能打印,打印开关是否开启,是否存在打印模板")
@GetMapping("/api/print/admin/template/exists")
@InvokeMode(SYNC)
BpmPageResult<BpmnProcessDefinitionVO> getProcessDefinitionPage(@Validated @RequestBody BpmnProcessDefinitionPageDTO dto);
Boolean hasPrintTemplate(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
@Operation(summary = "获取打印模板中可打印的字段")
@PostMapping("/api/print/admin/fields")
@InvokeMode(SYNC)
List<PrintFieldDTO> getPrintFields(@Validated @RequestBody PrintFieldQueryDTO dto);
@Operation(summary = "获取指定流程下用于替换打印的相关变量")
@GetMapping("/api/print/admin/field/variables")
@InvokeMode(SYNC)
Map<String, Object> getPrintFieldVariables(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
/**
* 通过模型 ID 更新流程定义
* 查询管理员
* @param dto 管理员数据
* @return 管理员id
*/
@PostMapping("/api/process/admin/query")
@InvokeMode(SYNC)
List<ProcessAdminVo> queryProcessAdmins(@RequestBody ProcessAdminQueryDTO dto);
/**
* 查询管理员
* @param dto 管理员数据
* @return 管理员id
*/
@PostMapping("/api/process/admin/query/count")
@InvokeMode(SYNC)
Integer queryProcessAdminsCount(@RequestBody ProcessAdminQueryDTO dto);
/**
* 添加管理员
* @param dto 管理员数据
* @return 管理员id
*/
@PostMapping("/api/process/admin/create")
@InvokeMode(SYNC)
Long createProcessAdmin(@RequestBody ProcessAdminCreateDTO dto);
/**
* 批量添加管理员
* @param dtos
* @return
*/
@PostMapping("/api/process/admin/batch/create")
@InvokeMode(SYNC)
Void batchCreateProcessAdmin(@RequestBody List<ProcessAdminCreateDTO> dtos);
/**
* 删除管理员
* @param id 配置表id
* @return
*/
@DeleteMapping("/api/process/admin/delete")
@InvokeMode(SYNC)
Integer deleteCommonProcessAdmin(@RequestParam Long id);
/**
* 根据条件删除管理员
* @param dto 删除条件
* @return
*/
@DeleteMapping("/api/process/admin/delete/criteria")
@InvokeMode(SYNC)
Integer deleteProcessAdminCriteria(@RequestBody ProcessAdminDeleteDTO dto);
/**
* 删除管理员
* @param ids 管理员配置id列表
* @return
*/
@DeleteMapping("/api/process/admin/batch/delete")
@InvokeMode(SYNC)
Integer batchDeleteProcessAdmin(@RequestBody List<Long> ids);
/**
* 该功能应该利用引擎的 TimerBoundaryEvent 来实现但为了简便先利用引擎的任务调度来实现
*
* @return
*/
@PostMapping("/api/process/activity/timeout/trigger")
@Manageable
@Operation(summary = "设置指定业务节点定时继续往下执行")
Boolean setTimeoutTrigger(@Validated @RequestBody BpmnActivityTimeoutTriggerDTO dto);
/**
* 为指定业务节点设置定时回调
*
* @return
*/
@Manageable
@PostMapping("/api/process/activity/timeout/callback")
@Operation(summary = "设置指定业务节点定时回调")
Boolean setTimeoutCallback(@Validated @RequestBody BpmnActivityTimeoutCallbackDTO dto);
@PostMapping("/api/form/admin/form/page")
@InvokeMode(SYNC)
@Manageable
List<FormVO> formPage(@Validated @RequestBody FormSearchDTO dto);
/**
* ES 中搜索符合条件的实例纬度数据
*
* @param dto
* @return
*/
@PutMapping("/api/process/definition/update")
@PostMapping("/api/es/instance/search")
@InvokeMode(SYNC)
Boolean updateProcessDefinition(@Validated @RequestBody BpmnProcessDefinitionUpdateDTO dto);
BpmPageResult<ProcessInstanceDocumentVO> searchInstanceInEs(@Validated @RequestBody InstanceSearchReqDTO dto);
@DeleteMapping("/api/process/instance/super/cancel")
@Manageable
Boolean superCancelProcessInstance(@Validated @RequestBody SuperBpmnProcessInstanceCancelDTO dto);
/**
* 获得指定定义编号对应的流程定义内容
* 查询所有的审批流
*
* @param processDefinitionId 编号
* @return 流程定义
*/
@GetMapping("/api/process/definition/get")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getProcessDefinition(@NotBlank(message = "流程定义 ID 不能为空") @RequestParam String processDefinitionId);
/**
* 获得 deploymentId 对应的 ProcessDefinition
*
* @param deploymentId 部署编号
* @return 流程定义
*/
@GetMapping("/api/process/definition/getByDeploymentId")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getProcessDefinitionByDeploymentId(@NotBlank(message = "流程部署 ID 不能为空") @RequestParam String deploymentId);
/**
* 获得流程定义标识对应的激活的流程定义
*
* @param key 流程定义的标识
* @return 流程定义
*/
@GetMapping("/api/process/definition/active/getByKey")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getActiveProcessDefinitionByKey(@NotBlank(message = "模型定义KEY不能为空") @RequestParam String key, @RequestParam(required = false, defaultValue = NO_TENANT_ID) String tenantId);
/**
* 挂起/激活流程
* 激活SuspensionState.ACTIVE.getStateCode()
* 挂起SuspensionState.SUSPENDED.getStateCode()
* {@see SuspensionState}
*/
@PutMapping("/api/process/definition/state/update")
@InvokeMode(SYNC)
Boolean getActiveProcessDefinitionByKey(@NotBlank(message = "流程定义ID不能为空") @RequestParam String processDefinitionId, @NotNull(message = "状态不能为空") @RequestParam Integer state);
/**
* 获取指定模型的定义 ID
*
* @return 流程定义ID
*/
@GetMapping("/api/process/definition/active/getByCategory")
@InvokeMode(SYNC)
String getActiveProcessDefinitionId(@RequestParam(required = false) String tenantId, @NotBlank(message = "分类不能为空") @RequestParam(required = false) String category);
/**
* 获取指定模型激活的流程定义 JSON 模型
*
* @return 流程定义ID
*/
@GetMapping("/api/process/definition/active/json/model")
@InvokeMode(SYNC)
BpmnModelUpdateDTO getActiveProcessDefinitionJsonModel(@NotBlank(message = "模型 ID 不能为空") @RequestParam(required = false) String modelId, @NotBlank(message = "分类不能为空") @RequestParam(required = false) String key, @RequestParam(required = false) String tenantId);
/**
* 删除流程部署及定义
*
* @param deploymentId 流程定义部署 ID
* @param cascade 是否级联参数定义对应的流程实例及 job 等管理内容
* @return
*/
@GetMapping("/api/process/definition/delete")
@Operation(summary = "查询所有的审批流")
@PostMapping("/api/process/instance/page/all")
@Manageable
@InvokeMode(SYNC)
Void delete(@NotBlank(message = "流程定义部署 ID 不能为空") String deploymentId, @RequestParam(required = false) Boolean cascade);
BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAllProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceAdminPageReqVO dto);
/**
* 我发起的审批列表
*/
@Operation(summary = "我发起的审批列表")
@PostMapping("/api/process/instance/page/my")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnProcessInstancePageItemVO> getMyProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceMyPageReqVO dto);
/**
* 更新流程定义的状态
*
* @param processDefinitionId 流程定义的编号
* @param status 1, "active"; 2, "suspended"
*/
@Operation(summary = "更新指定流程定义的版本的状态, 处于 suspended 状态的流程模型将不能再发起实例")
@PutMapping("/api/process/instance/status/update")
@Manageable
@InvokeMode(SYNC)
Boolean updateProcessStatus(@NotBlank(message = "流程定义 ID 不能为空") @RequestParam String processDefinitionId, @NotNull(message = "状态不能为空") @RequestParam Integer status);
/**
* 获取审批流程实例的运行图
*
* @param processInstanceId
* @param tenantId
* @return
*/
@Operation(summary = "获取审批流程实例的运行图")
@GetMapping("/api/process/instance/graphical")
@Manageable
@InvokeMode(SYNC)
ObjectNode processInstanceGraphical(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 推断指定流程实例的所有节点执行顺序
*
* @return
*/
@Operation(summary = "推断指定流程实例的所有节点执行顺序")
@GetMapping("/api/process/instance/node/forecasting")
@Manageable
@InvokeMode(SYNC)
List<ProcessNodeDetailVO> processInstanceNodeForecast(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 推断指定流程实例的过滤掉部分节点执行顺序
*
* @param allNode 如果为真时,相当于调用 {@link ProcessInstanceApi#processInstanceNodeForecast(String, String)} 方法,切会直接丢弃 nodeDefinitionKeys 参数
* 如果为假时,才结合 nodeDefinitionKeys 过滤掉传入的节点
* @return
*/
@Operation(summary = "推断指定流程实例的过滤掉部分节点执行顺序")
@GetMapping("/api/process/instance/node/filter/forecasting")
@Manageable
@InvokeMode(SYNC)
List<ProcessNodeDetailVO> processInstanceFilterNodeForecast(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId, @Nullable @RequestParam(required = false) String tenantId, @RequestParam(required = false, defaultValue = "false") Boolean allNode, @Nullable @RequestParam(required = false) List<String> nodeDefinitionKeys);
/**
* 查询实例的租户集合
*
* @return
*/
@Operation(summary = "查询实例的租户集合")
@GetMapping("/api/process/instance/tenant/ids")
@Manageable
@InvokeMode(SYNC)
List<String> getTenantIds();
/**
* 校验指定流程实例下,是否存在指定的审批人正处理待审批
*
* @return true 是在当前流程实例中,存在指定的审批人
*/
@Operation(summary = "校验指定流程实例下,是否存在指定的审批人")
@PostMapping("/api/process/instance/check/approver")
@Manageable
@InvokeMode(SYNC)
Boolean checkInstanceApprover(@Validated @RequestBody BpmnProcessInstanceCheckApproverDTO dto);
/**
* 查询 ExtAxProcessLog 表中审批人的冗余信息
*
* @param dto
* @return
*/
@Operation(summary = "查询 ExtAxProcessLog 表中审批人的冗余信息")
@GetMapping("/api/process/instance/log/approve/ext")
@Manageable
@InvokeMode(SYNC)
List<ExtProcessLogVO> getProcessLogByInstanceIdAndPersonId(@Validated @RequestBody LogApproveSearchDTO dto);
/**
* 将死信队列中的任务转移到正常 JOB 队列中
@ -240,25 +376,6 @@ public interface WorkflowManageService {
@Manageable
String getDeadLetterJobExceptionStacktraceByJobId(@RequestParam String jobId);
/**
* 获取流程操作按钮列表
*
* @return 流程操作按钮列表
*/
@GetMapping("/api/process/config/button/list")
@InvokeMode(SYNC)
List<BpmnButtonMetaInfo> getDefaultButtons();
/**
* ES 中搜索符合条件的实例纬度数据
*
* @param dto
* @return
*/
@PostMapping("/api/es/instance/search")
@InvokeMode(SYNC)
BpmPageResult<ProcessInstanceDocumentVO> searchInstanceInEs(@Validated @RequestBody InstanceSearchReqDTO dto);
/**
* 获取指定业务分类
*
@ -414,274 +531,13 @@ public interface WorkflowManageService {
Boolean upsertCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto);
/**
* 该功能应该利用引擎的 TimerBoundaryEvent 来实现但为了简便先利用引擎的任务调度来实现
* 获取流程操作按钮列表
*
* @return
* @return 流程操作按钮列表
*/
@PostMapping("/api/process/activity/timeout/trigger")
@Manageable
@Operation(summary = "设置指定业务节点定时继续往下执行")
Boolean setTimeoutTrigger(@Validated @RequestBody BpmnActivityTimeoutTriggerDTO dto);
/**
* 为指定业务节点设置定时回调
*
* @return
*/
@Manageable
@PostMapping("/api/process/activity/timeout/callback")
@Operation(summary = "设置指定业务节点定时回调")
Boolean setTimeoutCallback(@Validated @RequestBody BpmnActivityTimeoutCallbackDTO dto);
/**
* 为指定流程新增变量
*/
@PostMapping("/api/process/variable/create/{executionId}")
@GetMapping("/api/process/config/button/list")
@InvokeMode(SYNC)
Void createVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable);
/**
* 仅更新流程已存在的变量
*
* @param executionId
* @param restVariable
* @return
*/
@PostMapping("/api/process/variable/update/{executionId}")
@InvokeMode(SYNC)
Void updateVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable);
/**
* 批量删除流程变量
*/
@DeleteMapping("/api/process/variable/delete/{executionId}")
@InvokeMode(SYNC)
Void deleteVariables(@PathVariable("executionId") String executionId, @RequestParam String variableNames, @RequestParam(value = "scope", required = false) String scope);
@Operation(summary = "查询指定审批流程是否能打印,打印开关是否开启,是否存在打印模板")
@GetMapping("/api/print/admin/template/exists")
@InvokeMode(SYNC)
Boolean hasPrintTemplate(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
@Operation(summary = "获取打印模板中可打印的字段")
@PostMapping("/api/print/admin/fields")
@InvokeMode(SYNC)
List<PrintFieldDTO> getPrintFields(@Validated @RequestBody PrintFieldQueryDTO dto);
@Operation(summary = "获取指定流程下用于替换打印的相关变量")
@GetMapping("/api/print/admin/field/variables")
@InvokeMode(SYNC)
Map<String, Object> getPrintFieldVariables(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
/**
* 催办
*
* @param dto
* @return
*/
@Operation(summary = "审批流程催办")
@PostMapping("/api/process/task/remind")
@Manageable
@InvokeMode(SYNC)
Boolean remindTask(@Validated @RequestBody BpmnTaskRemindDTO dto);
/**
* 添加附件
*
* @param dto
* @return
*/
@Operation(summary = "添加附件")
@PostMapping("/api/process/task/attachment")
@Manageable
Void addAttachment(@Validated @RequestBody BpmnTaskAttachmentDTO dto);
/**
* 待审核列表
*/
@Operation(summary = "待审核列表")
@GetMapping("/api/process/task/page/todo")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnTaskTodoPageItemVO> getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
/**
* 已完成的审批列表
*/
@Operation(summary = "已完成的审批列表")
@GetMapping("/api/process/task/page/done")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnTaskDonePageItemVO> getDoneTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
/**
* 获取指定流程实例的审批过程信息
* <p>
* 同一层级结构
*/
@Operation(summary = "获取指定流程实例的审批过程信息")
@GetMapping("/api/process/task/list/flat")
@Manageable
@InvokeMode(SYNC)
List<BpmnHistoricTaskInstanceVO> getTaskListFlatByProcessInstanceId(@NotBlank(message = "流程实例 ID " + "不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 获取指定流程实例的审批过程信息
* <p>
* 分组结构
*/
@Operation(summary = "获取指定流程实例的审批过程信息")
@GetMapping("/api/process/task/list/group")
@Manageable
@InvokeMode(SYNC)
List<BpmnHistoricTaskInstanceGroupVO> getTaskListGroupByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 获取实例正在审核的人列表
*/
@Operation(summary = "获取实例正在审核的人列表")
@GetMapping("/api/process/task/active/list")
@Manageable
@InvokeMode(SYNC)
List<BpmnTaskInstanceVO> getActiveTasksByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @NotBlank(message = "租户不能为空") @RequestParam String tenantId);
/**
* 根据实例 ID 和自然人 ID 查询对应待处理的任务 ID
*
* @return
*/
@Operation(summary = "根据实例 ID 和自然人 ID 查询对应待处理的任务 ID")
@GetMapping("/api/process/task/find")
@Manageable
@InvokeMode(SYNC)
String findTaskIdByInstanceIdAndPersonId(@RequestParam(required = false) @NotBlank(message = "流程实例 ID 不能为空") String processInstanceId, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
/**
* 根据实例 ID列表 和自然人 ID 查询对应待处理的任务 ID
*
* @return
*/
@Operation(summary = "根据实例 ID列表 和自然人 ID 查询对应待处理的任务 ID")
@GetMapping("/api/process/task/batch/find")
@Manageable
@InvokeMode(SYNC)
Map<String, String> findTaskIdByInstanceIdsAndPersonId(@RequestParam(required = false) @NotEmpty(message = "流程实例 ID列表 不能为空") List<String> processInstanceIds, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
@PostMapping("/api/form/admin/form/page")
@InvokeMode(SYNC)
List<FormVO> formPage(@Validated @RequestBody FormSearchDTO dto);
@PostMapping("/api/form/admin/start/form")
@InvokeMode(SYNC)
FormDefinitionVO getFormDefinition(@Validated @RequestBody StartFormSearchDTO dto);
/**
* 查询指定审批实例的表单模型和数据
* <p>
* dto 中的 processInstanceId taskId至少有一个属性有值一般建议直接使用实例 ID
* 当传入 taskId 将只查询该任务绑定的表单模型和数据
*
* @param dto
* @return
*/
@PostMapping("/api/form/admin/instance/render")
@InvokeMode(SYNC)
FormInstanceVO getFormInstance(@Validated @RequestBody FormDetailDTO dto);
@DeleteMapping("/api/process/instance/super/cancel")
@Manageable
Boolean superCancelProcessInstance(@Validated @RequestBody SuperBpmnProcessInstanceCancelDTO dto);
/**
* 查询所有的审批流
*
* @return
*/
@Operation(summary = "查询所有的审批流")
@PostMapping("/api/process/instance/page/all")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnProcessInstanceAdminPageItemVO> getAllProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceAdminPageReqVO dto);
/**
* 我发起的审批列表
*/
@Operation(summary = "我发起的审批列表")
@PostMapping("/api/process/instance/page/my")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnProcessInstancePageItemVO> getMyProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceMyPageReqVO dto);
/**
* 更新流程定义的状态
*
* @param processDefinitionId 流程定义的编号
* @param status 1, "active"; 2, "suspended"
*/
@Operation(summary = "更新指定流程定义的版本的状态, 处于 suspended 状态的流程模型将不能再发起实例")
@PutMapping("/api/process/instance/status/update")
@Manageable
@InvokeMode(SYNC)
Boolean updateProcessStatus(@NotBlank(message = "流程定义 ID 不能为空") @RequestParam String processDefinitionId, @NotNull(message = "状态不能为空") @RequestParam Integer status);
/**
* 获取审批流程实例的运行图
*
* @param processInstanceId
* @param tenantId
* @return
*/
@Operation(summary = "获取审批流程实例的运行图")
@GetMapping("/api/process/instance/graphical")
@Manageable
@InvokeMode(SYNC)
ObjectNode processInstanceGraphical(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 推断指定流程实例的所有节点执行顺序
*
* @return
*/
@Operation(summary = "推断指定流程实例的所有节点执行顺序")
@GetMapping("/api/process/instance/node/forecasting")
@Manageable
@InvokeMode(SYNC)
List<ProcessNodeDetailVO> processInstanceNodeForecast(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 推断指定流程实例的过滤掉部分节点执行顺序
*
* @param allNode 如果为真时,相当于调用 {@link ProcessInstanceApi#processInstanceNodeForecast(String, String)} 方法,切会直接丢弃 nodeDefinitionKeys 参数
* 如果为假时,才结合 nodeDefinitionKeys 过滤掉传入的节点
* @return
*/
@Operation(summary = "推断指定流程实例的过滤掉部分节点执行顺序")
@GetMapping("/api/process/instance/node/filter/forecasting")
@Manageable
@InvokeMode(SYNC)
List<ProcessNodeDetailVO> processInstanceFilterNodeForecast(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId, @Nullable @RequestParam(required = false) String tenantId, @RequestParam(required = false, defaultValue = "false") Boolean allNode, @Nullable @RequestParam(required = false) List<String> nodeDefinitionKeys);
/**
* 查询实例的租户集合
*
* @return
*/
@Operation(summary = "查询实例的租户集合")
@GetMapping("/api/process/instance/tenant/ids")
@Manageable
@InvokeMode(SYNC)
List<String> getTenantIds();
/**
* 校验指定流程实例下,是否存在指定的审批人正处理待审批
*
* @return true 是在当前流程实例中,存在指定的审批人
*/
@Operation(summary = "校验指定流程实例下,是否存在指定的审批人")
@PostMapping("/api/process/instance/check/approver")
@Manageable
@InvokeMode(SYNC)
Boolean checkInstanceApprover(@Validated @RequestBody BpmnProcessInstanceCheckApproverDTO dto);
List<BpmnButtonMetaInfo> getDefaultButtons();
/**
* 流程模型列表
@ -1009,67 +865,209 @@ public interface WorkflowManageService {
List<Long> hasFilesTenantIds(@Validated @RequestBody DocTenantQueryDTO dto);
/**
* 查询管理员
* @param dto 管理员数据
* @return 管理员id
* 为指定流程新增变量
*/
@PostMapping("/api/process/admin/query")
@PostMapping("/api/process/variable/create/{executionId}")
@InvokeMode(SYNC)
List<ProcessAdminVo> queryProcessAdmins(@RequestBody ProcessAdminQueryDTO dto);
Void createVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable);
/**
* 查询管理员
* @param dto 管理员数据
* @return 管理员id
*/
@PostMapping("/api/process/admin/query/count")
@InvokeMode(SYNC)
Integer queryProcessAdminsCount(@RequestBody ProcessAdminQueryDTO dto);
/**
* 添加管理员
* @param dto 管理员数据
* @return 管理员id
*/
@PostMapping("/api/process/admin/create")
@InvokeMode(SYNC)
Long createProcessAdmin(@RequestBody ProcessAdminCreateDTO dto);
/**
* 批量添加管理员
* @param dtos
* 仅更新流程已存在的变量
*
* @param executionId
* @param restVariable
* @return
*/
@PostMapping("/api/process/admin/batch/create")
@PostMapping("/api/process/variable/update/{executionId}")
@InvokeMode(SYNC)
Void batchCreateProcessAdmin(@RequestBody List<ProcessAdminCreateDTO> dtos);
Void updateVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable);
/**
* 删除管理员
* @param id 配置表id
* @return
* 批量删除流程变量
*/
@DeleteMapping("/api/process/admin/delete")
@DeleteMapping("/api/process/variable/delete/{executionId}")
@InvokeMode(SYNC)
Integer deleteCommonProcessAdmin(@RequestParam Long id);
Void deleteVariables(@PathVariable("executionId") String executionId, @RequestParam String variableNames, @RequestParam(value = "scope", required = false) String scope);
/**
* 根据条件删除管理员
* @param dto 删除条件
* 催办
*
* @param dto
* @return
*/
@DeleteMapping("/api/process/admin/delete/criteria")
@Operation(summary = "审批流程催办")
@PostMapping("/api/process/task/remind")
@Manageable
@InvokeMode(SYNC)
Integer deleteProcessAdminCriteria(@RequestBody ProcessAdminDeleteDTO dto);
Boolean remindTask(@Validated @RequestBody BpmnTaskRemindDTO dto);
/**
* 删除管理员
* @param ids 管理员配置id列表
* 添加附件
*
* @param dto
* @return
*/
@DeleteMapping("/api/process/admin/batch/delete")
@Operation(summary = "添加附件")
@PostMapping("/api/process/task/attachment")
@Manageable
Void addAttachment(@Validated @RequestBody BpmnTaskAttachmentDTO dto);
/**
* 待审核列表
*/
@Operation(summary = "待审核列表")
@GetMapping("/api/process/task/page/todo")
@Manageable
@InvokeMode(SYNC)
Integer batchDeleteProcessAdmin(@RequestBody List<Long> ids);
BpmPageResult<BpmnTaskTodoPageItemVO> getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
/**
* 已完成的审批列表
*/
@Operation(summary = "已完成的审批列表")
@GetMapping("/api/process/task/page/done")
@Manageable
@InvokeMode(SYNC)
BpmPageResult<BpmnTaskDonePageItemVO> getDoneTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
/**
* 获取指定流程实例的审批过程信息
* <p>
* 同一层级结构
*/
@Operation(summary = "获取指定流程实例的审批过程信息")
@GetMapping("/api/process/task/list/flat")
@Manageable
@InvokeMode(SYNC)
List<BpmnHistoricTaskInstanceVO> getTaskListFlatByProcessInstanceId(@NotBlank(message = "流程实例 ID " + "不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 获取指定流程实例的审批过程信息
* <p>
* 分组结构
*/
@Operation(summary = "获取指定流程实例的审批过程信息")
@GetMapping("/api/process/task/list/group")
@Manageable
@InvokeMode(SYNC)
List<BpmnHistoricTaskInstanceGroupVO> getTaskListGroupByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
/**
* 获取实例正在审核的人列表
*/
@Operation(summary = "获取实例正在审核的人列表")
@GetMapping("/api/process/task/active/list")
@Manageable
@InvokeMode(SYNC)
List<BpmnTaskInstanceVO> getActiveTasksByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @NotBlank(message = "租户不能为空") @RequestParam String tenantId);
/**
* 根据实例 ID 和自然人 ID 查询对应待处理的任务 ID
*
* @return
*/
@Operation(summary = "根据实例 ID 和自然人 ID 查询对应待处理的任务 ID")
@GetMapping("/api/process/task/find")
@Manageable
@InvokeMode(SYNC)
String findTaskIdByInstanceIdAndPersonId(@RequestParam(required = false) @NotBlank(message = "流程实例 ID 不能为空") String processInstanceId, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
/**
* 根据实例 ID列表 和自然人 ID 查询对应待处理的任务 ID
*
* @return
*/
@Operation(summary = "根据实例 ID列表 和自然人 ID 查询对应待处理的任务 ID")
@GetMapping("/api/process/task/batch/find")
@Manageable
@InvokeMode(SYNC)
Map<String, String> findTaskIdByInstanceIdsAndPersonId(@RequestParam(required = false) @NotEmpty(message = "流程实例 ID列表 不能为空") List<String> processInstanceIds, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
/**
* 获取活跃的流程定义分页
*/
@GetMapping("/api/process/definition/page")
@InvokeMode(SYNC)
BpmPageResult<BpmnProcessDefinitionVO> getProcessDefinitionPage(@Validated @RequestBody BpmnProcessDefinitionPageDTO dto);
/**
* 通过模型 ID 更新流程定义
*
* @param dto
* @return
*/
@PutMapping("/api/process/definition/update")
@InvokeMode(SYNC)
Boolean updateProcessDefinition(@Validated @RequestBody BpmnProcessDefinitionUpdateDTO dto);
/**
* 获得指定定义编号对应的流程定义内容
*
* @param processDefinitionId 编号
* @return 流程定义
*/
@GetMapping("/api/process/definition/get")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getProcessDefinition(@NotBlank(message = "流程定义 ID 不能为空") @RequestParam String processDefinitionId);
/**
* 获得 deploymentId 对应的 ProcessDefinition
*
* @param deploymentId 部署编号
* @return 流程定义
*/
@GetMapping("/api/process/definition/getByDeploymentId")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getProcessDefinitionByDeploymentId(@NotBlank(message = "流程部署 ID 不能为空") @RequestParam String deploymentId);
/**
* 获得流程定义标识对应的激活的流程定义
*
* @param key 流程定义的标识
* @return 流程定义
*/
@GetMapping("/api/process/definition/active/getByKey")
@InvokeMode(SYNC)
BpmnProcessDefinitionVO getActiveProcessDefinitionByKey(@NotBlank(message = "模型定义KEY不能为空") @RequestParam String key, @RequestParam(required = false, defaultValue = NO_TENANT_ID) String tenantId);
/**
* 挂起/激活流程
* 激活SuspensionState.ACTIVE.getStateCode()
* 挂起SuspensionState.SUSPENDED.getStateCode()
* {@see SuspensionState}
*/
@PutMapping("/api/process/definition/state/update")
@InvokeMode(SYNC)
Boolean getActiveProcessDefinitionByKey(@NotBlank(message = "流程定义ID不能为空") @RequestParam String processDefinitionId, @NotNull(message = "状态不能为空") @RequestParam Integer state);
/**
* 获取指定模型的定义 ID
*
* @return 流程定义ID
*/
@GetMapping("/api/process/definition/active/getByCategory")
@InvokeMode(SYNC)
String getActiveProcessDefinitionId(@RequestParam(required = false) String tenantId, @NotBlank(message = "分类不能为空") @RequestParam(required = false) String category);
/**
* 获取指定模型激活的流程定义 JSON 模型
*
* @return 流程定义ID
*/
@GetMapping("/api/process/definition/active/json/model")
@InvokeMode(SYNC)
BpmnModelUpdateDTO getActiveProcessDefinitionJsonModel(@NotBlank(message = "模型 ID 不能为空") @RequestParam(required = false) String modelId, @NotBlank(message = "分类不能为空") @RequestParam(required = false) String key, @RequestParam(required = false) String tenantId);
/**
* 删除流程部署及定义
*
* @param deploymentId 流程定义部署 ID
* @param cascade 是否级联参数定义对应的流程实例及 job 等管理内容
* @return
*/
@GetMapping("/api/process/definition/delete")
@InvokeMode(SYNC)
Void delete(@NotBlank(message = "流程定义部署 ID 不能为空") String deploymentId, @RequestParam(required = false) Boolean cascade);
/**
* 强制使用同步模式调用该方法请在调用真实方法前调用该方法