From b2801fbb8eaa629820c82d5204a08e1e81b082a5 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 28 Jun 2024 17:43:08 +0800
Subject: [PATCH 1/4] =?UTF-8?q?update=20-=20Client=20API=20Feign=20?=
=?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=A2=9E=E5=8A=A0=20header?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../WorkflowEngineClientAutoConfiguration.java | 5 +++--
.../client/config/WorkflowRequestInterceptor.java | 12 ++++++++----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowEngineClientAutoConfiguration.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowEngineClientAutoConfiguration.java
index 18029b184..abfde80e5 100644
--- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowEngineClientAutoConfiguration.java
+++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowEngineClientAutoConfiguration.java
@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
import javax.annotation.Nullable;
@@ -199,8 +200,8 @@ public class WorkflowEngineClientAutoConfiguration {
}
@Bean
- public RequestInterceptor workflowRequestInterceptor(String serviceVersion) {
- return new WorkflowRequestInterceptor(serviceVersion);
+ public RequestInterceptor workflowRequestInterceptor(String serviceVersion, Environment environment) {
+ return new WorkflowRequestInterceptor(serviceVersion, environment);
}
}
diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowRequestInterceptor.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowRequestInterceptor.java
index ea35fc79f..a5c831343 100644
--- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowRequestInterceptor.java
+++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/config/WorkflowRequestInterceptor.java
@@ -3,6 +3,7 @@ package cn.axzo.workflow.client.config;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import feign.Target;
+import org.springframework.core.env.Environment;
/**
* 通用的 Feign 请求拦截器
@@ -12,14 +13,16 @@ import feign.Target;
*/
public class WorkflowRequestInterceptor implements RequestInterceptor {
private final String serviceVersion;
+ private final Environment environment;
- public WorkflowRequestInterceptor(String serviceVersion) {
+ public WorkflowRequestInterceptor(String serviceVersion, Environment environment) {
this.serviceVersion = serviceVersion;
+ this.environment = environment;
}
- public static final String HEADER_HTTP_CLIENT = "http-client";
- public static final String HEADER_HTTP_CLIENT_VALUE = "workflowEngine-feign";
- public static final String HEADER_API_VERSION = "service-version";
+ public static final String HEADER_HTTP_CLIENT = "Http-Client";
+ public static final String HEADER_HTTP_CLIENT_VALUE = "WorkflowEngine-Feign";
+ public static final String HEADER_API_VERSION = "Service-Version";
public static final String HEADER_SERVER_NAME = "X-SERVER-NAME";
@@ -31,6 +34,7 @@ public class WorkflowRequestInterceptor implements RequestInterceptor {
|| apiClassPath.contains("cn.axzo.workflow.client.feign.manage")) {
requestTemplate.header(HEADER_HTTP_CLIENT, HEADER_HTTP_CLIENT_VALUE);
requestTemplate.header(HEADER_API_VERSION, serviceVersion);
+ requestTemplate.header(HEADER_SERVER_NAME, environment.getProperty("spring.application.name"));
}
}
}
From b4d0a53842c836505e63dc6f60162d0968b04c41 Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Fri, 9 May 2025 16:07:59 +0800
Subject: [PATCH 2/4] =?UTF-8?q?fix=20-=20=E5=A2=9E=E5=8A=A0=20BpmnFlowNode?=
=?UTF-8?q?Type=20=E6=9E=9A=E4=B8=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java
index 1dc7eb85d..c03147331 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnFlowNodeType.java
@@ -19,6 +19,7 @@ public enum BpmnFlowNodeType {
NODE_ROBOT("NODE_ROBOT", "机器人节点"),
NODE_COMMENT("NODE_COMMENT", "评论节点"),
NODE_ABORT("NODE_ABORT", "中止节点"),
+ NODE_ALTER("NODE_ALTER", "告警节点"),
NODE_CANCEL("NODE_CANCEL", "撤回节点"),
NODE_EMPTY("NODE_EMPTY", "空节点"),
;
From 207ab3aebf0051c94ffcc89d536a1202a05460ea Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Tue, 19 Aug 2025 14:18:29 +0800
Subject: [PATCH 3/4] =?UTF-8?q?fix=20-=20=E6=B7=BB=E5=8A=A0=E6=9E=9A?=
=?UTF-8?q?=E4=B8=BE=E5=80=BC=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../common/enums/BpmnProcessInstanceResultEnum.java | 2 ++
.../common/model/response/mq/ProcessInstanceDTO.java | 7 ++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java
index 81ba92e01..aa29c667a 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/BpmnProcessInstanceResultEnum.java
@@ -6,10 +6,12 @@ public enum BpmnProcessInstanceResultEnum {
PROCESSING("PROCESSING", "审批中"),
APPROVED("APPROVED", "已通过"),
REJECTED("REJECTED", "已驳回"),
+ BACKED("BACKED", "已回退"),
CANCELLED("CANCELLED", "已撤回"),
ABORTED("ABORTED", "已中止"),
TRANSFER("TRANSFER", "已转交"),
COUNTERSIGN("COUNTERSIGN", "已加签"),
+ UPGRADED("UPGRADED", "已提级"),
COMMENTED("COMMENTED", "已评论"),
DELETED("DELETED", "已删除"),
;
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java
index 4911cfbe7..f1e193c1a 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/mq/ProcessInstanceDTO.java
@@ -85,9 +85,14 @@ public class ProcessInstanceDTO implements Serializable {
*/
private BpmnTaskDelegateAssigner initiator;
+ /**
+ * 关闭审批实例前最后一个操作人
+ */
+ private BpmnTaskDelegateAssigner lastOperationAssigner;
+
/**
* 对流程实例做否定操作时的原因
- *
+ *
* 如: 中止/驳回/撤回功能
*/
private String reason;
From 6078dc36b1e0cf670bc63e274661d6472e54a7ab Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Wed, 20 Aug 2025 11:20:47 +0800
Subject: [PATCH 4/4] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=20common=20?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97=E7=89=88=E6=9C=AC=EF=BC=8C=E4=BF=9D=E8=AF=81?=
=?UTF-8?q?=E4=BB=A5=E5=90=8E=E6=9C=8D=E5=8A=A1=E7=89=88=E6=9C=AC=E5=8D=87?=
=?UTF-8?q?=E7=BA=A7=EF=BC=8C=E4=BD=8E=E7=89=88=E6=9C=AC=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E7=9A=84=20starter=20=E4=BB=8D=E8=83=BD=E6=8B=89=E5=8F=96?=
=?UTF-8?q?=E6=9C=80=E6=96=B0=E7=9A=84=E7=89=88=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 3 +-
workflow-engine-api/pom.xml | 2 +-
workflow-engine-axzo-ext/pom.xml | 2 +-
workflow-engine-common/pom.xml | 1 +
.../starter/api/WorkflowCoreService.java | 381 ++++----
.../starter/api/WorkflowManageService.java | 882 +++++++++---------
6 files changed, 651 insertions(+), 620 deletions(-)
diff --git a/pom.xml b/pom.xml
index fd3624845..d502d1d68 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,6 +31,7 @@
7.10.2
2.0.0
2.5.0
+ 0.0.1-SNAPSHOT
@@ -74,7 +75,7 @@
${project.groupId}
workflow-engine-common
- ${project.version}
+ ${workflow-engine-common.version}
${project.groupId}
diff --git a/workflow-engine-api/pom.xml b/workflow-engine-api/pom.xml
index 11ba8fffc..5bf3c9f5c 100644
--- a/workflow-engine-api/pom.xml
+++ b/workflow-engine-api/pom.xml
@@ -21,7 +21,7 @@
${project.groupId}
workflow-engine-common
- ${project.version}
+ ${workflow-engine-common.version}
io.github.openfeign
diff --git a/workflow-engine-axzo-ext/pom.xml b/workflow-engine-axzo-ext/pom.xml
index f59afb25c..059eddb85 100644
--- a/workflow-engine-axzo-ext/pom.xml
+++ b/workflow-engine-axzo-ext/pom.xml
@@ -14,7 +14,7 @@
cn.axzo.workflow
workflow-engine-common
- ${project.version}
+ ${workflow-engine-common.version}
cn.axzo.basics
diff --git a/workflow-engine-common/pom.xml b/workflow-engine-common/pom.xml
index f02bb046b..8b7641ac1 100644
--- a/workflow-engine-common/pom.xml
+++ b/workflow-engine-common/pom.xml
@@ -12,6 +12,7 @@
workflow-engine-common
jar
workflow Engine Common
+ ${workflow-engine-common.version}
diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowCoreService.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowCoreService.java
index 0ee910c9a..d44ce9b76 100644
--- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowCoreService.java
+++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowCoreService.java
@@ -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);
/**
- * 同意
- *
- *
- * 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 事件
- *
+ * 获取指定审批业务的流程表单设置,
+ * @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);
/**
- * 同意时并提交表单数据
+ * 查询指定审批实例的表单模型和数据
+ *
+ * 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 dtos);
-
- /**
- * 获取当前节点可回退节点选项列表
- *
- * @param taskId 当前任务id
- * @return 可以回退节点列表
- */
- @Operation(summary = "获取当前节点可回退节点选项列表")
- @GetMapping("/api/process/task/back/optional/nodes")
- List 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);
-
- /**
- * 驳回
- *
- *
- * MQ 触发规则:
- * 1. 当前审批任务会触发 process-task-deleted 事件
- * 2. 当前流程实例会触发 process-instance-rejected 事件
- *
- */
- @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 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 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 getProcessInstanceFinalDocs(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId);
+ /**
+ * 同意
+ *
+ *
+ * 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 事件
+ *
+ */
+ @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 dtos);
+
+ /**
+ * 获取当前节点可回退节点选项列表
+ *
+ * @param taskId 当前任务id
+ * @return 可以回退节点列表
+ */
+ @Operation(summary = "获取当前节点可回退节点选项列表")
+ @GetMapping("/api/process/task/back/optional/nodes")
+ List 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);
+
+ /**
+ * 驳回
+ *
+ *
+ * MQ 触发规则:
+ * 1. 当前审批任务会触发 process-task-deleted 事件
+ * 2. 当前流程实例会触发 process-instance-rejected 事件
+ *
+ */
+ @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 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 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);
+
/**
* 强制使用‘异步’模式调用该方法,请在调用真实方法前调用该方法
*
diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowManageService.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowManageService.java
index b435064bb..f10d3a464 100644
--- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowManageService.java
+++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/api/WorkflowManageService.java
@@ -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 getProcessDefinitionPage(@Validated @RequestBody BpmnProcessDefinitionPageDTO dto);
+ Boolean hasPrintTemplate(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
+
+ @Operation(summary = "获取打印模板中可打印的字段")
+ @PostMapping("/api/print/admin/fields")
+ @InvokeMode(SYNC)
+ List getPrintFields(@Validated @RequestBody PrintFieldQueryDTO dto);
+
+ @Operation(summary = "获取指定流程下用于替换打印的相关变量")
+ @GetMapping("/api/print/admin/field/variables")
+ @InvokeMode(SYNC)
+ Map getPrintFieldVariables(@NotBlank(message = "流程实例不能为空") @RequestParam String processInstanceId);
/**
- * 通过模型 ID 更新流程定义
+ * 查询管理员
+ * @param dto 管理员数据
+ * @return 管理员id
+ */
+ @PostMapping("/api/process/admin/query")
+ @InvokeMode(SYNC)
+ List 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 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 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 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 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 getAllProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceAdminPageReqVO dto);
+
+ /**
+ * 我发起的审批列表
+ */
+ @Operation(summary = "我发起的审批列表")
+ @PostMapping("/api/process/instance/page/my")
+ @Manageable
+ @InvokeMode(SYNC)
+ BpmPageResult 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 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 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 nodeDefinitionKeys);
+
+ /**
+ * 查询实例的租户集合
+ *
+ * @return
+ */
+ @Operation(summary = "查询实例的租户集合")
+ @GetMapping("/api/process/instance/tenant/ids")
+ @Manageable
+ @InvokeMode(SYNC)
+ List 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 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 getDefaultButtons();
-
- /**
- * 从 ES 中搜索符合条件的实例纬度数据
- *
- * @param dto
- * @return
- */
- @PostMapping("/api/es/instance/search")
- @InvokeMode(SYNC)
- BpmPageResult 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 getPrintFields(@Validated @RequestBody PrintFieldQueryDTO dto);
-
- @Operation(summary = "获取指定流程下用于替换打印的相关变量")
- @GetMapping("/api/print/admin/field/variables")
- @InvokeMode(SYNC)
- Map 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 getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
-
- /**
- * 已完成的审批列表
- */
- @Operation(summary = "已完成的审批列表")
- @GetMapping("/api/process/task/page/done")
- @Manageable
- @InvokeMode(SYNC)
- BpmPageResult getDoneTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
-
- /**
- * 获取指定流程实例的审批过程信息
- *
- * 同一层级结构
- */
- @Operation(summary = "获取指定流程实例的审批过程信息")
- @GetMapping("/api/process/task/list/flat")
- @Manageable
- @InvokeMode(SYNC)
- List getTaskListFlatByProcessInstanceId(@NotBlank(message = "流程实例 ID " + "不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
-
- /**
- * 获取指定流程实例的审批过程信息
- *
- * 分组结构
- */
- @Operation(summary = "获取指定流程实例的审批过程信息")
- @GetMapping("/api/process/task/list/group")
- @Manageable
- @InvokeMode(SYNC)
- List 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 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 findTaskIdByInstanceIdsAndPersonId(@RequestParam(required = false) @NotEmpty(message = "流程实例 ID列表 不能为空") List processInstanceIds, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
-
- @PostMapping("/api/form/admin/form/page")
- @InvokeMode(SYNC)
- List formPage(@Validated @RequestBody FormSearchDTO dto);
-
- @PostMapping("/api/form/admin/start/form")
- @InvokeMode(SYNC)
- FormDefinitionVO getFormDefinition(@Validated @RequestBody StartFormSearchDTO dto);
-
- /**
- * 查询指定审批实例的表单模型和数据
- *
- * 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 getAllProcessInstancePage(@Validated @RequestBody BpmnProcessInstanceAdminPageReqVO dto);
-
- /**
- * 我发起的审批列表
- */
- @Operation(summary = "我发起的审批列表")
- @PostMapping("/api/process/instance/page/my")
- @Manageable
- @InvokeMode(SYNC)
- BpmPageResult 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 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 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 nodeDefinitionKeys);
-
- /**
- * 查询实例的租户集合
- *
- * @return
- */
- @Operation(summary = "查询实例的租户集合")
- @GetMapping("/api/process/instance/tenant/ids")
- @Manageable
- @InvokeMode(SYNC)
- List getTenantIds();
-
- /**
- * 校验指定流程实例下,是否存在指定的审批人正处理待审批
- *
- * @return true 是在当前流程实例中,存在指定的审批人
- */
- @Operation(summary = "校验指定流程实例下,是否存在指定的审批人")
- @PostMapping("/api/process/instance/check/approver")
- @Manageable
- @InvokeMode(SYNC)
- Boolean checkInstanceApprover(@Validated @RequestBody BpmnProcessInstanceCheckApproverDTO dto);
+ List getDefaultButtons();
/**
* 流程模型列表
@@ -1009,67 +865,209 @@ public interface WorkflowManageService {
List hasFilesTenantIds(@Validated @RequestBody DocTenantQueryDTO dto);
/**
- * 查询管理员
- * @param dto 管理员数据
- * @return 管理员id
+ * 为指定流程新增变量
*/
- @PostMapping("/api/process/admin/query")
+ @PostMapping("/api/process/variable/create/{executionId}")
@InvokeMode(SYNC)
- List 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 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 ids);
+ BpmPageResult getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
+
+ /**
+ * 已完成的审批列表
+ */
+ @Operation(summary = "已完成的审批列表")
+ @GetMapping("/api/process/task/page/done")
+ @Manageable
+ @InvokeMode(SYNC)
+ BpmPageResult getDoneTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto);
+
+ /**
+ * 获取指定流程实例的审批过程信息
+ *
+ * 同一层级结构
+ */
+ @Operation(summary = "获取指定流程实例的审批过程信息")
+ @GetMapping("/api/process/task/list/flat")
+ @Manageable
+ @InvokeMode(SYNC)
+ List getTaskListFlatByProcessInstanceId(@NotBlank(message = "流程实例 ID " + "不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId);
+
+ /**
+ * 获取指定流程实例的审批过程信息
+ *
+ * 分组结构
+ */
+ @Operation(summary = "获取指定流程实例的审批过程信息")
+ @GetMapping("/api/process/task/list/group")
+ @Manageable
+ @InvokeMode(SYNC)
+ List 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 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 findTaskIdByInstanceIdsAndPersonId(@RequestParam(required = false) @NotEmpty(message = "流程实例 ID列表 不能为空") List processInstanceIds, @RequestParam(required = false) @NotBlank(message = "自然人 ID 不能为空") String personId);
+
+ /**
+ * 获取活跃的流程定义分页
+ */
+ @GetMapping("/api/process/definition/page")
+ @InvokeMode(SYNC)
+ BpmPageResult 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);
/**
* 强制使用‘同步’模式调用该方法,请在调用真实方法前调用该方法