From 16a952ac7cc5e36a12bb5641d7af168237ecd0fd Mon Sep 17 00:00:00 2001 From: yangqicheng Date: Fri, 11 Oct 2024 18:16:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REQ-2752-=E8=BD=AC=E4=BA=A4=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A2=9D=E5=A4=96=E5=A4=87=E6=B3=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/bpmn/ProcessTaskApi.java | 1 + .../bpmn/task/BpmnTaskTransferDTO.java | 6 ++++++ .../engine/cmd/CustomTransferUserTaskCmd.java | 20 +++++++++++-------- .../job/AsyncTransferUserTaskJobHandler.java | 2 +- .../impl/BpmnProcessTaskServiceImpl.java | 2 +- .../starter/api/WorkflowCoreService.java | 8 -------- .../starter/api/WorkflowManageService.java | 9 +++++++++ 7 files changed, 30 insertions(+), 18 deletions(-) diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java index 2a7624137..e311d8c1a 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessTaskApi.java @@ -243,6 +243,7 @@ public interface ProcessTaskApi { */ @Operation(summary = "获取实例正在审核的人列表") @GetMapping("/api/process/task/active/list") + @Manageable @InvokeMode(SYNC) CommonResponse> getActiveTasksByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @NotBlank(message = "租户不能为空") @RequestParam String tenantId); diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskTransferDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskTransferDTO.java index 16d7db6a5..31571edb0 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskTransferDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskTransferDTO.java @@ -56,6 +56,12 @@ public class BpmnTaskTransferDTO { @ApiModelProperty(value = "审批任务转交给谁", notes = "可以为空,意义在于如果分配给某离职的人,可能需要置为空") private BpmnTaskDelegateAssigner targetAssigner; + /** + * 转交描述 + */ + @ApiModelProperty(value = "转交描述", notes = "正常是'xx转交给xx',该字段值追加在后面") + private String additionalOpeDesc; + /** * 是否异步执行 */ diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java index 770238200..213f2c1dd 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java @@ -46,19 +46,23 @@ import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.validTask */ public class CustomTransferUserTaskCmd extends AbstractCommand implements Serializable { + private static final long serialVersionUID = -8011156125774066571L; private final String originTaskId; private final BpmnTaskDelegateAssigner originTaskAssignee; private final String advice; private final List attachmentList; private final BpmnTaskDelegateAssigner targetTaskAssignee; + private final String additionalOpeDesc; public CustomTransferUserTaskCmd(String originTaskId, BpmnTaskDelegateAssigner originTaskAssignee, String advice, - List attachmentList, BpmnTaskDelegateAssigner targetTaskAssignee) { + List attachmentList, BpmnTaskDelegateAssigner targetTaskAssignee, + String additionalOpeDesc) { this.originTaskId = originTaskId; this.originTaskAssignee = originTaskAssignee; this.advice = advice; this.attachmentList = attachmentList; this.targetTaskAssignee = targetTaskAssignee; + this.additionalOpeDesc = additionalOpeDesc; } @Override @@ -75,9 +79,9 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements @Override public Void execute(CommandContext commandContext) { ProcessEngineConfigurationImpl processEngineConfiguration = - CommandContextUtil.getProcessEngineConfiguration(commandContext); + CommandContextUtil.getProcessEngineConfiguration(commandContext); HistoricTaskInstanceQuery taskQuery = - processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery(); + processEngineConfiguration.getHistoryService().createHistoricTaskInstanceQuery(); HistoricTaskInstance historicTaskInstance = taskQuery.taskId(originTaskId).singleResult(); TaskService taskService = processEngineConfiguration.getTaskService(); @@ -93,7 +97,7 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements // 对被转交的任务进行建议和附件的处理 resolveOriginTask(commandContext, taskService, task); batchAddAttachment(commandContext, task.getProcessInstanceId(), task, attachmentList, - originTaskAssignee); + originTaskAssignee); // 生成转交任务 addMultiTask(commandContext, task, targetTaskAssignee); @@ -120,9 +124,9 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements public void processAssignee(ProcessEngineConfigurationImpl processEngineConfiguration, Task task) { RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); List originAssingeeList = runtimeService.getVariable(task.getProcessInstanceId(), - INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class); + INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), List.class); Optional exists = originAssingeeList.stream() - .filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny(); + .filter(i -> Objects.equals(i.buildAssigneeId(), targetTaskAssignee.buildAssigneeId())).findAny(); if (exists.isPresent()) { throw new WorkflowEngineException(ASSIGNEE_HAS_BEEN_EXISTS); } @@ -135,8 +139,8 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements } originAssingeeList.add(targetTaskAssignee); runtimeService.setVariable(task.getProcessInstanceId(), - INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), - originAssingeeList); + INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + task.getTaskDefinitionKey(), + originAssingeeList); } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/job/AsyncTransferUserTaskJobHandler.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/job/AsyncTransferUserTaskJobHandler.java index 8e5c7270a..f424cd2ae 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/job/AsyncTransferUserTaskJobHandler.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/job/AsyncTransferUserTaskJobHandler.java @@ -29,6 +29,6 @@ public class AsyncTransferUserTaskJobHandler extends AbstractJobHandler implemen CommandContextUtil.getProcessEngineConfiguration(commandContext); BpmnTaskTransferDTO dto = JSONUtil.toBean(job.getCustomValues(), BpmnTaskTransferDTO.class); processEngineConfiguration.getCommandExecutor().execute(new CustomTransferUserTaskCmd(dto.getTaskId(), - dto.getOriginAssigner(), dto.getAdvice(), dto.getAttachmentList(), dto.getTargetAssigner())); + dto.getOriginAssigner(), dto.getAdvice(), dto.getAttachmentList(), dto.getTargetAssigner(), dto.getAdditionalOpeDesc())); } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index 8930b24a0..e686ae274 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -684,7 +684,7 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { commandExecutor.execute(new CustomTransferUserTaskAsyncCmd(dto)); } else { commandExecutor.execute(new CustomTransferUserTaskCmd(dto.getTaskId(), - dto.getOriginAssigner(), dto.getAdvice(), dto.getAttachmentList(), dto.getTargetAssigner())); + dto.getOriginAssigner(), dto.getAdvice(), dto.getAttachmentList(), dto.getTargetAssigner(), dto.getAdditionalOpeDesc())); } } 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 f78823051..7caeb007b 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 @@ -196,14 +196,6 @@ public interface WorkflowCoreService { @PostMapping("/api/process/task/robot/complete") Boolean completeRobotTask(@Validated @RequestBody BpmnRobotTaskCompleteDTO dto); - /** - * 获取实例正在审核的人列表 - */ - @Operation(summary = "获取实例正在审核的人列表") - @GetMapping("/api/process/task/active/list") - @InvokeMode(SYNC) - List getActiveTasksByProcessInstanceId(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @NotBlank(message = "租户不能为空") @RequestParam String tenantId); - /** * 创建审批流程 * 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 58f947876..f2462350e 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 @@ -277,6 +277,15 @@ public interface WorkflowManageService { @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 * From 23846f89606f5211f1e9536eb574789b02d8ff54 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 11 Oct 2024 18:22:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(REQ-2752)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=88=86=E8=AF=8D=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/workflow/es/model/ProcessTaskDocument.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java index 40447643c..33942c2d1 100644 --- a/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java +++ b/workflow-engine-elasticsearch/src/main/java/cn/axzo/workflow/es/model/ProcessTaskDocument.java @@ -88,7 +88,7 @@ public class ProcessTaskDocument { /** * 审批人姓名 */ - @IndexField(fieldType = FieldType.KEYWORD) + @IndexField(fieldType = FieldType.KEYWORD, searchAnalyzer = "ngram_analyzer") private String assigneeName; /**