@ -6,43 +6,10 @@ 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.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.annotation.InvokeMode ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCarbonCopyDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceLogQueryDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceMyPageReqVO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO ;
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.ProcessNodeDetailVO ;
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.List ;
import java.util.Map ;
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 ;
@ -54,12 +21,45 @@ 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.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 io.swagger.v3.oas.annotations.Operation ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.web.bind.annotation.PostMapping ;
import org.springframework.web.bind.annotation.RequestBody ;
import javax.annotation.Nullable ;
import javax.validation.constraints.NotBlank ;
import javax.validation.constraints.NotEmpty ;
import java.util.List ;
import java.util.Map ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAdminPageReqVO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCarbonCopyDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCheckApproverDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceLogQueryDTO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceMyPageReqVO ;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO ;
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.ProcessNodeDetailVO ;
import com.fasterxml.jackson.databind.node.ObjectNode ;
import org.springframework.web.bind.annotation.DeleteMapping ;
import org.springframework.web.bind.annotation.PutMapping ;
import javax.validation.constraints.NotNull ;
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 ;
/ * *
* Workflow Engine Starter Core Service
@ -71,135 +71,6 @@ import javax.validation.constraints.NotEmpty;
@org.springframework.cloud.openfeign.FeignClient ( name = " workflow-engine-starter-core " , url = " ${axzo.service.workflow-engine:http://workflow-engine:8080} " , configuration = WorkflowEngineStarterFeignConfiguration . class )
public interface WorkflowCoreService {
/ * *
* 业务节点唤醒 , 该节点废弃 , 请换成 { @link ProcessActivityApi # trigger ( cn . axzo . workflow . common . model . request . bpmn . task . BpmnActivityTriggerDTO ) } 接口
* < p >
* 当模型中使用了 “ 业务节点 ” , 且设置了 “ 不设置审批人 ” 模式 , 则当业务监听到 PROCESS_ACTIVITY_START 事件时 , 可通过该接口推动流程继续运行
* /
@Deprecated
@GetMapping ( " /api/process/activity/trigger " )
Boolean trigger ( @NotBlank ( message = " 触发 ID 不能为空 " ) @RequestParam String triggerId ) ;
/ * *
* 业务节点唤醒
*
* @param dto
* @return
* /
@PostMapping ( " /api/process/activity/trigger " )
Boolean trigger ( @Validated @RequestBody BpmnActivityTriggerDTO dto ) ;
/ * *
* 业务节点设置审批人 , 不支持重复设置
* < p >
* 当模型中使用了 “ 业务节点 ” , 且设置了 “ 业务指定审批人 ” 模式 , 则当业务监听到 PROCESS_ACTIVITY_WAIT_ASSIGNEE 事件时 , 可通过该接口设置动态设置审批人
* < p >
* < strong color = orange > 注意 : 如果调用接口时 , 传入的审批人集合为空 , 流程引擎将对该审批流程实例自动中止 。 < / strong >
*
* @param dto
* @return
* /
@PostMapping ( " /api/process/activity/assignee/set " )
@Operation ( summary = " 业务节点设置审批人,不支持重复调用设置审批人,需一次性传入所有审批人 " )
Boolean setAssignee ( @Validated @RequestBody BpmnActivitySetAssigneeDTO dto ) ;
/ * *
* 创建审批流程
*
* < pre >
* MQ 触发规则 :
* 1 . 当前流程实例会依次触发 process - instance - created 和 process - instance - started 事件
* 2 . 第一个审批任务会依次触发 process - task - assigned 和 process - task - created 事件
* < / pre >
*
* @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 ) ;
/ * *
* 发起人主动撤回审核
*
* < pre >
* MQ 触发规则 :
* 1 . 当前流程实例中现存的任务会依次触发 process - task - deleted 事件
* 2 . 当前流程实例会触发 process - instance - cancelled 事件
* < / pre >
*
* @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 < BpmnProcessInstanceAbortDTO > 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 < String , Object > 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 ) ;
/ * *
* 同意
*
@ -325,6 +196,143 @@ 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 < BpmnTaskInstanceVO > getActiveTasksByProcessInstanceId ( @NotBlank ( message = " 流程实例 ID 不能为空 " ) @RequestParam String processInstanceId , @NotBlank ( message = " 租户不能为空 " ) @RequestParam String tenantId ) ;
/ * *
* 创建审批流程
*
* < pre >
* MQ 触发规则 :
* 1 . 当前流程实例会依次触发 process - instance - created 和 process - instance - started 事件
* 2 . 第一个审批任务会依次触发 process - task - assigned 和 process - task - created 事件
* < / pre >
*
* @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 ) ;
/ * *
* 发起人主动撤回审核
*
* < pre >
* MQ 触发规则 :
* 1 . 当前流程实例中现存的任务会依次触发 process - task - deleted 事件
* 2 . 当前流程实例会触发 process - instance - cancelled 事件
* < / pre >
*
* @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 < BpmnProcessInstanceAbortDTO > 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 < String , Object > 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 ) ;
/ * *
* 业务节点唤醒 , 该节点废弃 , 请换成 { @link ProcessActivityApi # trigger ( cn . axzo . workflow . common . model . request . bpmn . task . BpmnActivityTriggerDTO ) } 接口
* < p >
* 当模型中使用了 “ 业务节点 ” , 且设置了 “ 不设置审批人 ” 模式 , 则当业务监听到 PROCESS_ACTIVITY_START 事件时 , 可通过该接口推动流程继续运行
* /
@Deprecated
@GetMapping ( " /api/process/activity/trigger " )
Boolean trigger ( @NotBlank ( message = " 触发 ID 不能为空 " ) @RequestParam String triggerId ) ;
/ * *
* 业务节点唤醒
*
* @param dto
* @return
* /
@PostMapping ( " /api/process/activity/trigger " )
Boolean trigger ( @Validated @RequestBody BpmnActivityTriggerDTO dto ) ;
/ * *
* 业务节点设置审批人 , 不支持重复设置
* < p >
* 当模型中使用了 “ 业务节点 ” , 且设置了 “ 业务指定审批人 ” 模式 , 则当业务监听到 PROCESS_ACTIVITY_WAIT_ASSIGNEE 事件时 , 可通过该接口设置动态设置审批人
* < p >
* < strong color = orange > 注意 : 如果调用接口时 , 传入的审批人集合为空 , 流程引擎将对该审批流程实例自动中止 。 < / strong >
*
* @param dto
* @return
* /
@PostMapping ( " /api/process/activity/assignee/set " )
@Operation ( summary = " 业务节点设置审批人,不支持重复调用设置审批人,需一次性传入所有审批人 " )
Boolean setAssignee ( @Validated @RequestBody BpmnActivitySetAssigneeDTO dto ) ;
/ * *
* 强制使用 ‘ 异步 ’ 模式调用该方法 , 请在调用真实方法前调用该方法
* < pre >