From 1f54de46866b0d4fb2dcd8148f69a5285bd0fd6c Mon Sep 17 00:00:00 2001 From: yangqicheng Date: Tue, 1 Apr 2025 14:00:44 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3769=20=E8=B0=83=E6=95=B4=E5=88=86=E7=BB=84?= =?UTF-8?q?/=E5=8F=98=E9=87=8F=E4=BF=9D=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/manage/ProcessCategoryApi.java | 4 +- .../category/CategoryGroupVarSearchDto.java | 6 + .../category/CategoryGroupVarUpsertDto.java | 1 - .../web/manage/ProcessCategoryController.java | 4 +- .../starter/api/WorkflowCoreService.java | 260 +++--- .../starter/api/WorkflowManageService.java | 806 +++++++++--------- 6 files changed, 553 insertions(+), 528 deletions(-) diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessCategoryApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessCategoryApi.java index 1a329b446..b65095a8e 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessCategoryApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/ProcessCategoryApi.java @@ -174,7 +174,7 @@ public interface ProcessCategoryApi { */ @PostMapping("/api/process/category/group-with-vars/list") @InvokeMode(SYNC) - CommonResponse> configSearchGroupAndVars(@Validated @RequestBody CategoryGroupVarSearchDto dto); + CommonResponse> searchCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarSearchDto dto); /** * 新增或者更新分组或者变量 @@ -182,5 +182,5 @@ public interface ProcessCategoryApi { * @return 是否成功 */ @PostMapping("/api/process/category/group-with-vars/upsert") - CommonResponse upsertGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto); + CommonResponse upsertCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto); } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarSearchDto.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarSearchDto.java index f4277347c..0813c6a4a 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarSearchDto.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarSearchDto.java @@ -2,13 +2,19 @@ package cn.axzo.workflow.common.model.request.category; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; @ApiModel("业务分类分组和变量搜索入参模型") @Data +@AllArgsConstructor +@NoArgsConstructor +@Builder public class CategoryGroupVarSearchDto { @NotNull(message = "dictId 不允许为空") diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarUpsertDto.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarUpsertDto.java index ddd32843e..12bb62691 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarUpsertDto.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/category/CategoryGroupVarUpsertDto.java @@ -19,7 +19,6 @@ import java.util.List; @Builder public class CategoryGroupVarUpsertDto { - @ApiModelProperty(value = "字典id") @Min(value = 1, message = "字典id值必须大于等1") @NotNull(message = "字典id不能为空") diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/ProcessCategoryController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/ProcessCategoryController.java index 91fa7ebd5..bff88dd27 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/ProcessCategoryController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/manage/ProcessCategoryController.java @@ -229,7 +229,7 @@ public class ProcessCategoryController implements ProcessCategoryApi { @Operation(summary = "业务分类黑白名单查询") @PostMapping("/group-with-vars/list") @Override - public CommonResponse> configSearchGroupAndVars(@Validated @RequestBody CategoryGroupVarSearchDto dto) { + public CommonResponse> searchCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarSearchDto dto) { return success(categoryGroupService.searchGroupAndVarList(dto)); } @@ -241,7 +241,7 @@ public class ProcessCategoryController implements ProcessCategoryApi { @Operation(summary = "业务分类黑白名单查询") @PostMapping("/group-with-vars/upsert") @Override - public CommonResponse upsertGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto) { + public CommonResponse upsertCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto) { return success(categoryGroupService.upsertGroupAndVars(dto)); } } 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 cd5129f5c..ca70a0935 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 @@ -88,136 +88,6 @@ public interface WorkflowCoreService { @Operation(summary = "业务节点设置审批人,不支持重复调用设置审批人,需一次性传入所有审批人") Boolean setAssignee(@Validated @RequestBody BpmnActivitySetAssigneeDTO dto); - /** - * 创建流程前的节点列表 - * 用于发起人自选 - * - * @return - */ - @Operation(summary = "创建审批流程前,返回模型节点列表以及节点能否设置审批人") - @PostMapping("/api/process/instance/create/before") - @InvokeMode(SYNC) - List nodesBeforeCreateProcessInstance(@Validated @RequestBody BeforeProcessInstanceCreateDTO dto); - - /** - * 创建审批流程 - * - *
-     *   MQ 触发规则:
-     *     1. 当前流程实例会依次触发 process-instance-created 和 process-instance-started 事件
-     *     2. 第一个审批任务会依次触发 process-task-assigned 和 process-task-created 事件
-     * 
- * - * @param dto {@link BpmnProcessInstanceCreateDTO} - */ - @Operation(summary = "创建审批流程, MQ 触发规则:1. 当前流程实例会依次触发 process-instance-created 和 process-instance-started 事件,2. 第一个审批任务会依次触发 process-task-assigned 和 process-task-created 事件") - @PostMapping("/api/process/instance/create") - @InvokeMode(SYNC) - String createProcessInstance(@Validated @RequestBody BpmnProcessInstanceCreateDTO dto); - - /** - * 发起人主动撤回审核 - * - *
-     *   MQ 触发规则:
-     *     1. 当前流程实例中现存的任务会依次触发 process-task-deleted 事件
-     *     2. 当前流程实例会触发 process-instance-cancelled 事件
-     * 
- * - * @param dto {@link BpmnProcessInstanceCancelDTO} - * @return - */ - @Operation(summary = "发起人主动撤回审核,MQ 触发规则:1. 当前流程实例中现存的任务会依次触发 process-task-deleted 事件,2. 当前流程实例会触发 process-instance-cancelled 事件") - @DeleteMapping("/api/process/instance/cancel") - Boolean cancelProcessInstance(@Validated @RequestBody BpmnProcessInstanceCancelDTO dto); - - /** - * 中止流程实例 - * - * @param dto - * @return - */ - @Operation(summary = "中止流程实例") - @DeleteMapping("/api/process/instance/abort") - Boolean abortProcessInstance(@Validated @RequestBody BpmnProcessInstanceAbortDTO dto); - - /** - * 批量中止流程实例 - * - * @param dtos - * @return - */ - @Operation(summary = "批量中止流程实例") - @DeleteMapping("/api/process/instance/batch/abort") - BatchOperationResultVO batchAbortProcessInstance(@Validated @RequestBody List dtos); - - /** - * 抄送流程实例(未实现) - * - * @param dto - * @return - */ - @Operation(summary = "抄送流程实例") - @PostMapping("/api/process/instance/carbon-copy") - @Deprecated - Boolean carbonCopyProcessInstance(@Validated @RequestBody BpmnProcessInstanceCarbonCopyDTO dto); - - /** - * 获得流程实例 - * - * @param dto {@link BpmnProcessInstanceQueryDTO} 可根据 Id,BusinessKey进行查询 - * @return 流程实例, 租户Id不必传 - */ - @Operation(summary = "获得流程实例") - @GetMapping("/api/process/instance/get") - @InvokeMode(SYNC) - BpmnProcessInstanceVO getProcessInstanceVO(@Validated @RequestBody BpmnProcessInstanceQueryDTO dto); - - /** - * 获取指定流程实例的流程变量 - * - * @param processInstanceId - * @param tenantId - * @return - */ - @Operation(summary = "获取指定流程实例的流程变量") - @GetMapping("/api/process/instance/cooperation-org") - @InvokeMode(SYNC) - Map getProcessVariables(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId); - - /** - * 获取指定流程的日志 - * - * @param dto - * @return - */ - @Operation(summary = "获取指定流程的日志") - @PostMapping("/api/process/instance/logs") - @InvokeMode(SYNC) - BpmnProcessInstanceLogVO getProcessInstanceLogs(@Validated @RequestBody BpmnProcessInstanceLogQueryDTO dto); - - /** - * 根据任务id查询任务状态,按钮详情 - * - * @param taskButtonsSearchDTO 请求参数 - * @return - */ - @Operation(summary = "根据任务id查询任务状态,按钮详情") - @PostMapping("/api/process/instance/task/buttons/find") - @InvokeMode(SYNC) - BpmnTaskButtonVo findProcessSingleTaskButtons(@Validated @RequestBody BpmnTaskButtonSearchDTO taskButtonsSearchDTO); - - /** - * 更新指定流程表单最后一次编辑的内容 - * - * @param dto - * @return - */ - @Operation(summary = "更新指定流程表单最后一次编辑的内容") - @PostMapping("/api/process/instance/form/variable/update") - @InvokeMode(SYNC) - Boolean updateInstanceFormVariables(@Validated @RequestBody FormVariablesUpdateDTO dto); - /** * 同意 * @@ -364,6 +234,136 @@ public interface WorkflowCoreService { @PostMapping("/api/process/task/robot/complete") Boolean completeRobotTask(@Validated @RequestBody BpmnRobotTaskCompleteDTO dto); + /** + * 创建流程前的节点列表 + * 用于发起人自选 + * + * @return + */ + @Operation(summary = "创建审批流程前,返回模型节点列表以及节点能否设置审批人") + @PostMapping("/api/process/instance/create/before") + @InvokeMode(SYNC) + List nodesBeforeCreateProcessInstance(@Validated @RequestBody BeforeProcessInstanceCreateDTO dto); + + /** + * 创建审批流程 + * + *
+     *   MQ 触发规则:
+     *     1. 当前流程实例会依次触发 process-instance-created 和 process-instance-started 事件
+     *     2. 第一个审批任务会依次触发 process-task-assigned 和 process-task-created 事件
+     * 
+ * + * @param dto {@link BpmnProcessInstanceCreateDTO} + */ + @Operation(summary = "创建审批流程, MQ 触发规则:1. 当前流程实例会依次触发 process-instance-created 和 process-instance-started 事件,2. 第一个审批任务会依次触发 process-task-assigned 和 process-task-created 事件") + @PostMapping("/api/process/instance/create") + @InvokeMode(SYNC) + String createProcessInstance(@Validated @RequestBody BpmnProcessInstanceCreateDTO dto); + + /** + * 发起人主动撤回审核 + * + *
+     *   MQ 触发规则:
+     *     1. 当前流程实例中现存的任务会依次触发 process-task-deleted 事件
+     *     2. 当前流程实例会触发 process-instance-cancelled 事件
+     * 
+ * + * @param dto {@link BpmnProcessInstanceCancelDTO} + * @return + */ + @Operation(summary = "发起人主动撤回审核,MQ 触发规则:1. 当前流程实例中现存的任务会依次触发 process-task-deleted 事件,2. 当前流程实例会触发 process-instance-cancelled 事件") + @DeleteMapping("/api/process/instance/cancel") + Boolean cancelProcessInstance(@Validated @RequestBody BpmnProcessInstanceCancelDTO dto); + + /** + * 中止流程实例 + * + * @param dto + * @return + */ + @Operation(summary = "中止流程实例") + @DeleteMapping("/api/process/instance/abort") + Boolean abortProcessInstance(@Validated @RequestBody BpmnProcessInstanceAbortDTO dto); + + /** + * 批量中止流程实例 + * + * @param dtos + * @return + */ + @Operation(summary = "批量中止流程实例") + @DeleteMapping("/api/process/instance/batch/abort") + BatchOperationResultVO batchAbortProcessInstance(@Validated @RequestBody List dtos); + + /** + * 抄送流程实例(未实现) + * + * @param dto + * @return + */ + @Operation(summary = "抄送流程实例") + @PostMapping("/api/process/instance/carbon-copy") + @Deprecated + Boolean carbonCopyProcessInstance(@Validated @RequestBody BpmnProcessInstanceCarbonCopyDTO dto); + + /** + * 获得流程实例 + * + * @param dto {@link BpmnProcessInstanceQueryDTO} 可根据 Id,BusinessKey进行查询 + * @return 流程实例, 租户Id不必传 + */ + @Operation(summary = "获得流程实例") + @GetMapping("/api/process/instance/get") + @InvokeMode(SYNC) + BpmnProcessInstanceVO getProcessInstanceVO(@Validated @RequestBody BpmnProcessInstanceQueryDTO dto); + + /** + * 获取指定流程实例的流程变量 + * + * @param processInstanceId + * @param tenantId + * @return + */ + @Operation(summary = "获取指定流程实例的流程变量") + @GetMapping("/api/process/instance/cooperation-org") + @InvokeMode(SYNC) + Map getProcessVariables(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId); + + /** + * 获取指定流程的日志 + * + * @param dto + * @return + */ + @Operation(summary = "获取指定流程的日志") + @PostMapping("/api/process/instance/logs") + @InvokeMode(SYNC) + BpmnProcessInstanceLogVO getProcessInstanceLogs(@Validated @RequestBody BpmnProcessInstanceLogQueryDTO dto); + + /** + * 根据任务id查询任务状态,按钮详情 + * + * @param taskButtonsSearchDTO 请求参数 + * @return + */ + @Operation(summary = "根据任务id查询任务状态,按钮详情") + @PostMapping("/api/process/instance/task/buttons/find") + @InvokeMode(SYNC) + BpmnTaskButtonVo findProcessSingleTaskButtons(@Validated @RequestBody BpmnTaskButtonSearchDTO taskButtonsSearchDTO); + + /** + * 更新指定流程表单最后一次编辑的内容 + * + * @param dto + * @return + */ + @Operation(summary = "更新指定流程表单最后一次编辑的内容") + @PostMapping("/api/process/instance/form/variable/update") + @InvokeMode(SYNC) + Boolean updateInstanceFormVariables(@Validated @RequestBody FormVariablesUpdateDTO 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 891c9d707..5b3011d34 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
@@ -33,6 +33,8 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskRemindDTO;
 import cn.axzo.workflow.common.model.request.category.CategoryConfigCreateDTO;
 import cn.axzo.workflow.common.model.request.category.CategoryConfigSearchDTO;
 import cn.axzo.workflow.common.model.request.category.CategoryCreateDTO;
+import cn.axzo.workflow.common.model.request.category.CategoryGroupVarSearchDto;
+import cn.axzo.workflow.common.model.request.category.CategoryGroupVarUpsertDto;
 import cn.axzo.workflow.common.model.request.category.CategorySearchDTO;
 import cn.axzo.workflow.common.model.request.category.CategoryUpdateDTO;
 import cn.axzo.workflow.common.model.request.es.InstanceSearchReqDTO;
@@ -54,6 +56,7 @@ 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 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 cn.axzo.workflow.common.model.response.es.ProcessInstanceDocumentVO;
 import cn.axzo.workflow.common.model.response.form.FormVO;
@@ -93,229 +96,91 @@ import static cn.axzo.workflow.common.enums.RpcInvokeModeEnum.SYNC;
 @org.springframework.cloud.openfeign.FeignClient(name = "workflow-engine", url = "${axzo.service.workflow-engine:http://workflow-engine:8080}", configuration = WorkflowEngineStarterFeignConfiguration.class)
 public interface WorkflowManageService {
 
-    @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 管理员id
+     * 获取活跃的流程定义分页
      */
-    @PostMapping("/api/process/admin/query")
+    @GetMapping("/api/process/definition/page")
     @InvokeMode(SYNC)
-    List queryProcessAdmins(@RequestBody ProcessAdminQueryDTO dto);
+    BpmPageResult getProcessDefinitionPage(@Validated @RequestBody BpmnProcessDefinitionPageDTO 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)
-    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 时,将只查询该任务绑定的表单模型和数据。 + * 通过模型 ID 更新流程定义 * * @param dto * @return */ - @PostMapping("/api/form/admin/instance/render") + @PutMapping("/api/process/definition/update") @InvokeMode(SYNC) - FormInstanceVO getFormInstance(@Validated @RequestBody FormDetailDTO dto); + Boolean updateProcessDefinition(@Validated @RequestBody BpmnProcessDefinitionUpdateDTO dto); /** - * 从 ES 中搜索符合条件的实例纬度数据 + * 获得指定定义编号对应的流程定义内容 * - * @param 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); + + /** + * 挂起/激活流程, + * 激活: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 */ - @PostMapping("/api/es/instance/search") + @GetMapping("/api/process/definition/delete") @InvokeMode(SYNC) - BpmPageResult searchInstanceInEs(@Validated @RequestBody InstanceSearchReqDTO 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); + Void delete(@NotBlank(message = "流程定义部署 ID 不能为空") String deploymentId, @RequestParam(required = false) Boolean cascade); /** * 将死信队列中的任务转移到正常 JOB 队列中 @@ -349,6 +214,25 @@ 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); + /** * 获取指定业务分类 * @@ -487,13 +371,291 @@ public interface WorkflowManageService { Boolean checkCategoryStatus(@RequestParam Long tenantId, @RequestParam String categoryCode); /** - * 获取流程操作按钮列表 - * - * @return 流程操作按钮列表 + * 查询分类对应的分组以及分组下的变量 + * @param dto 请求参数 + * @return 分组以及分组下的变量 */ - @GetMapping("/api/process/config/button/list") + @PostMapping("/api/process/category/group-with-vars/list") @InvokeMode(SYNC) - List getDefaultButtons(); + List searchCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarSearchDto dto); + + /** + * 新增或者更新分组或者变量 + * @param dto 请求参数 + * @return 是否成功 + */ + @PostMapping("/api/process/category/group-with-vars/upsert") + Boolean upsertCategoryGroupAndVars(@Validated @RequestBody CategoryGroupVarUpsertDto dto); + + /** + * 该功能应该利用引擎的 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/process/variable/create/{executionId}") + @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); /** * 流程模型列表 @@ -736,209 +898,67 @@ public interface WorkflowManageService { Boolean orderDoc(@Validated @RequestBody DocOrderDTO dto); /** - * 为指定流程新增变量 + * 查询管理员 + * @param dto 管理员数据 + * @return 管理员id */ - @PostMapping("/api/process/variable/create/{executionId}") + @PostMapping("/api/process/admin/query") @InvokeMode(SYNC) - Void createVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable); + List queryProcessAdmins(@RequestBody ProcessAdminQueryDTO dto); /** - * 仅更新流程已存在的变量 - * - * @param executionId - * @param 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 * @return */ - @PostMapping("/api/process/variable/update/{executionId}") + @PostMapping("/api/process/admin/batch/create") @InvokeMode(SYNC) - Void updateVariable(@PathVariable @NotBlank(message = "流程实例 ID 不能为空") String executionId, @RequestBody @Validated RestBpmnProcessVariable restVariable); + Void batchCreateProcessAdmin(@RequestBody List dtos); /** - * 批量删除流程变量 - */ - @DeleteMapping("/api/process/variable/delete/{executionId}") - @InvokeMode(SYNC) - Void deleteVariables(@PathVariable("executionId") String executionId, @RequestParam String variableNames, @RequestParam(value = "scope", required = false) String scope); - - /** - * 催办 - * - * @param dto + * 删除管理员 + * @param id 配置表id * @return */ - @Operation(summary = "审批流程催办") - @PostMapping("/api/process/task/remind") - @Manageable + @DeleteMapping("/api/process/admin/delete") @InvokeMode(SYNC) - Boolean remindTask(@Validated @RequestBody BpmnTaskRemindDTO dto); + Integer deleteCommonProcessAdmin(@RequestParam Long id); /** - * 添加附件 - * - * @param 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 + @DeleteMapping("/api/process/admin/delete/criteria") @InvokeMode(SYNC) - BpmPageResult getTodoTaskPage(@Validated @RequestBody BpmnTaskPageSearchDTO dto); + Integer deleteProcessAdminCriteria(@RequestBody ProcessAdminDeleteDTO 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 - * + * 删除管理员 + * @param ids 管理员配置id列表 * @return */ - @Operation(summary = "根据实例 ID 和自然人 ID 查询对应待处理的任务 ID") - @GetMapping("/api/process/task/find") - @Manageable + @DeleteMapping("/api/process/admin/batch/delete") @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); - - /** - * 挂起/激活流程, - * 激活: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); + Integer batchDeleteProcessAdmin(@RequestBody List ids); /** * 强制使用‘同步’模式调用该方法,请在调用真实方法前调用该方法