| | |
| | | import com.iailab.framework.common.pojo.PageResult; |
| | | import com.iailab.framework.common.util.collection.CollectionUtils; |
| | | import com.iailab.module.bpm.controller.admin.task.vo.task.*; |
| | | import com.iailab.module.bpm.enums.definition.BpmUserTaskTimeoutHandlerTypeEnum; |
| | | import org.flowable.bpmn.model.UserTask; |
| | | import org.flowable.engine.history.HistoricActivityInstance; |
| | | import org.flowable.task.api.Task; |
| | | import org.flowable.task.api.TaskInfo; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | |
| | | import javax.validation.Valid; |
| | |
| | | * 流程任务实例 Service 接口 |
| | | * |
| | | * @author jason |
| | | * @author iailab |
| | | * @author 芋道源码 |
| | | */ |
| | | public interface BpmTaskService { |
| | | |
| | | // ========== Query 查询相关方法 ========== |
| | | |
| | | /** |
| | | * 获得待办的流程任务分页 |
| | |
| | | * @return 流程任务分页 |
| | | */ |
| | | PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageReqVO); |
| | | |
| | | /** |
| | | * 获得用户在指定流程下,首个需要处理(待办)的任务 |
| | | * |
| | | * @param userId 用户编号 |
| | | * @param processInstanceId 流程实例编号 |
| | | * @return 待办任务 |
| | | */ |
| | | BpmTaskRespVO getFirstTodoTask(Long userId, String processInstanceId); |
| | | |
| | | /** |
| | | * 获得已办的流程任务分页 |
| | |
| | | * 获得指定流程实例的流程任务列表,包括所有状态的 |
| | | * |
| | | * @param processInstanceId 流程实例的编号 |
| | | * @param asc 是否升序 |
| | | * @return 流程任务列表 |
| | | */ |
| | | List<HistoricTaskInstance> getTaskListByProcessInstanceId(String processInstanceId); |
| | | List<HistoricTaskInstance> getTaskListByProcessInstanceId(String processInstanceId, Boolean asc); |
| | | |
| | | /** |
| | | * 获取任务 |
| | | * |
| | | * @param id 任务编号 |
| | | * @return 任务 |
| | | */ |
| | | Task getTask(String id); |
| | | |
| | | /** |
| | | * 获取历史任务 |
| | | * |
| | | * @param id 任务编号 |
| | | * @return 历史任务 |
| | | */ |
| | | HistoricTaskInstance getHistoricTask(String id); |
| | | |
| | | /** |
| | | * 获取历史任务列表 |
| | | * |
| | | * @param taskIds 任务编号集合 |
| | | * @return 历史任务列表 |
| | | */ |
| | | List<HistoricTaskInstance> getHistoricTasks(Collection<String> taskIds); |
| | | |
| | | /** |
| | | * 根据条件查询正在进行中的任务 |
| | | * |
| | | * @param processInstanceId 流程实例编号,不允许为空 |
| | | * @param assigned 是否分配了审批人,允许空 |
| | | * @param taskDefineKey 任务定义 Key,允许空 |
| | | */ |
| | | List<Task> getRunningTaskListByProcessInstanceId(String processInstanceId, |
| | | Boolean assigned, |
| | | String taskDefineKey); |
| | | |
| | | /** |
| | | * 获取当前任务的可退回的 UserTask 集合 |
| | | * |
| | | * @param id 当前的任务 ID |
| | | * @return 可以退回的节点列表 |
| | | */ |
| | | List<UserTask> getUserTaskListByReturn(String id); |
| | | |
| | | /** |
| | | * 获取指定任务的子任务列表(多层) |
| | | * |
| | | * @param parentTaskId 父任务 ID |
| | | * @param tasks 任务列表 |
| | | * @return 子任务列表 |
| | | */ |
| | | <T extends TaskInfo> List<T> getAllChildrenTaskListByParentTaskId(String parentTaskId, List<T> tasks); |
| | | |
| | | /** |
| | | * 获取指定任务的子任务列表 |
| | | * |
| | | * @param parentTaskId 父任务ID |
| | | * @return 子任务列表 |
| | | */ |
| | | List<Task> getTaskListByParentTaskId(String parentTaskId); |
| | | |
| | | /** |
| | | * 获得指定流程实例的活动实例列表 |
| | | * |
| | | * @param processInstanceId 流程实例的编号 |
| | | * @return 活动实例列表 |
| | | */ |
| | | List<HistoricActivityInstance> getActivityListByProcessInstanceId(String processInstanceId); |
| | | |
| | | /** |
| | | * 获得执行编号对应的活动实例 |
| | | * |
| | | * @param executionId 执行编号 |
| | | * @return 活动实例 |
| | | */ |
| | | List<HistoricActivityInstance> getHistoricActivityListByExecutionId(String executionId); |
| | | |
| | | // ========== Update 写入相关方法 ========== |
| | | |
| | | /** |
| | | * 通过任务 |
| | |
| | | void transferTask(Long userId, BpmTaskTransferReqVO reqVO); |
| | | |
| | | /** |
| | | * 更新 Task 状态,在创建时 |
| | | * 将指定流程实例的、进行中的流程任务,移动到结束节点 |
| | | * |
| | | * @param task 任务实体 |
| | | * @param processInstanceId 流程编号 |
| | | */ |
| | | void updateTaskStatusWhenCreated(Task task); |
| | | void moveTaskToEnd(String processInstanceId); |
| | | |
| | | /** |
| | | * 更新 Task 状态,在取消时 |
| | | * |
| | | * @param taskId 任务的编号 |
| | | */ |
| | | void updateTaskStatusWhenCanceled(String taskId); |
| | | |
| | | /** |
| | | * 更新 Task 拓展记录,并发送通知 |
| | | * |
| | | * @param task 任务实体 |
| | | */ |
| | | void updateTaskExtAssign(Task task); |
| | | |
| | | /** |
| | | * 获取任务 |
| | | * |
| | | * @param id 任务编号 |
| | | * @return 任务 |
| | | */ |
| | | Task getTask(String id); |
| | | |
| | | /** |
| | | * 获取当前任务的可回退的 UserTask 集合 |
| | | * |
| | | * @param id 当前的任务 ID |
| | | * @return 可以回退的节点列表 |
| | | */ |
| | | List<UserTask> getUserTaskListByReturn(String id); |
| | | |
| | | /** |
| | | * 将任务回退到指定的 targetDefinitionKey 位置 |
| | | * 将任务退回到指定的 targetDefinitionKey 位置 |
| | | * |
| | | * @param userId 用户编号 |
| | | * @param reqVO 回退的任务key和当前所在的任务ID |
| | | * @param reqVO 退回的任务key和当前所在的任务ID |
| | | */ |
| | | void returnTask(Long userId, BpmTaskReturnReqVO reqVO); |
| | | |
| | |
| | | void deleteSignTask(Long userId, BpmTaskSignDeleteReqVO reqVO); |
| | | |
| | | /** |
| | | * 获取指定任务的子任务列表 |
| | | * 抄送任务 |
| | | * |
| | | * @param parentTaskId 父任务ID |
| | | * @return 子任务列表 |
| | | * @param userId 用户编号 |
| | | * @param reqVO 通过请求 |
| | | */ |
| | | List<Task> getTaskListByParentTaskId(String parentTaskId); |
| | | void copyTask(Long userId, @Valid BpmTaskCopyReqVO reqVO); |
| | | |
| | | // ========== Event 事件相关方法 ========== |
| | | |
| | | /** |
| | | * 通过任务 ID,查询任务名 Map |
| | | * 处理 Task 创建事件,目前是 |
| | | * <p> |
| | | * 1. 更新它的状态为审批中 |
| | | * 2. 处理自动通过的情况,例如说:1)无审批人时,是否自动通过、不通过;2)非【人工审核】时,是否自动通过、不通过 |
| | | * <p> |
| | | * 注意:它的触发时机,晚于 {@link #processTaskAssigned(Task)} 之后 |
| | | * |
| | | * @param taskIds 任务 ID |
| | | * @return 任务 ID 与名字的 Map |
| | | * @param task 任务实体 |
| | | */ |
| | | Map<String, String> getTaskNameByTaskIds(Collection<String> taskIds); |
| | | void processTaskCreated(Task task); |
| | | |
| | | /** |
| | | * 处理 Task 取消事件,目前是更新它的状态为已取消 |
| | | * |
| | | * @param taskId 任务的编号 |
| | | */ |
| | | void processTaskCanceled(String taskId); |
| | | |
| | | /** |
| | | * 处理 Task 设置审批人事件,目前是发送审批消息 |
| | | * |
| | | * @param task 任务实体 |
| | | */ |
| | | void processTaskAssigned(Task task); |
| | | |
| | | /** |
| | | * 处理 Task 审批超时事件,可能会处理多个当前审批中的任务 |
| | | * |
| | | * @param processInstanceId 流程示例编号 |
| | | * @param taskDefineKey 任务 Key |
| | | * @param handlerType 处理类型,参见 {@link BpmUserTaskTimeoutHandlerTypeEnum} |
| | | */ |
| | | void processTaskTimeout(String processInstanceId, String taskDefineKey, Integer handlerType); |
| | | |
| | | } |