类 TaskServiceImpl

java.lang.Object
net.sohelp.boot.engine.workflow.impl.TaskServiceImpl
所有已实现的接口:
TaskService

public class TaskServiceImpl extends Object implements TaskService
任务执行业务类
从以下版本开始:
1.0
  • 字段详细资料

  • 构造器详细资料

  • 方法详细资料

    • updateCurrentNode

      protected void updateCurrentNode(FlwTask flwTask, InstanceState instanceState)
      更新当前执行节点信息
      参数:
      flwTask - 当前所在执行任务
    • executeTask

      public FlwTask executeTask(Long taskId, FlowCreator flowCreator, Map<String,Object> args, TaskState taskState, TaskEventType eventType)
      执行任务
      指定者:
      executeTask 在接口中 TaskService
      参数:
      taskId - 任务ID
      flowCreator - 任务创建者
      args - 执行参数
      taskState - 任务状态
      eventType - 执行事件
      返回:
      FlwTask
    • forceCompleteAllTask

      public boolean forceCompleteAllTask(Long instanceId, FlwTask currentFlwTask, FlowCreator flowCreator, InstanceState instanceState, TaskEventType eventType)
      强制完成所有任务
      指定者:
      forceCompleteAllTask 在接口中 TaskService
      参数:
      instanceId - 流程实例ID
      currentFlwTask - 当前任务
      flowCreator - 处理人员
      instanceState - 流程实例最终状态
      eventType - 监听事件类型
      返回:
      true 成功 false 失败
    • forceCompleteTask

      public boolean forceCompleteTask(FlwTask flwTask, FlowCreator flowCreator, TaskState taskState, TaskEventType eventType)
      从接口复制的说明: TaskService
      强制完成某个任务
      指定者:
      forceCompleteTask 在接口中 TaskService
      参数:
      flwTask - 审批任务
      flowCreator - 处理人员
      taskState - 流任务状态
      eventType - 监听事件类型
      返回:
      true 成功 false 失败
    • executeJumpTask

      public Optional<List<FlwTask>> executeJumpTask(Long taskId, String nodeKey, FlowCreator flowCreator, Map<String,Object> args, Function<FlwTask,Execution> executionFunction, TaskType taskType)
      执行节点跳转任务
      指定者:
      executeJumpTask 在接口中 TaskService
      参数:
      taskId - 任务ID
      nodeKey - 跳转至目标节点key
      flowCreator - 任务创建者
      args - 任务参数
      executionFunction - 执行函数
      taskType - 任务类型,仅支持 jump rejectJump routeJump
      返回:
      当前 flowCreator 所在的任务
    • getAllowedFlwTask

      protected FlwTask getAllowedFlwTask(Long taskId, FlowCreator flowCreator, Map<String,Object> args, TaskState taskState)
      获取执行任务并验证合法性
      参数:
      taskId - 任务ID
      flowCreator - 任务创建者
      args - 执行参数
      taskState - TaskState
      返回:
      流程任务
    • moveToHisTask

      protected boolean moveToHisTask(FlwTask flwTask, TaskState taskState, FlowCreator flowCreator)
      迁移任务至历史表
      参数:
      flwTask - 执行任务
      taskState - 任务状态
      flowCreator - 任务创建者
      返回:
      true 成功 false 失败
    • moveToHisTaskActor

      protected void moveToHisTaskActor(List<FlwTaskActor> taskActors)
      迁移任务参与者至历史表
      参数:
      taskActors - 任务参与者列表
    • taskNotify

      protected void taskNotify(TaskEventType eventType, Supplier<FlwTask> supplier, List<FlwTaskActor> taskActors, NodeModel nodeModel, FlowCreator flowCreator)
    • executeTaskTrigger

      public boolean executeTaskTrigger(Execution execution, FlwTask flwTask)
      从接口复制的说明: TaskService
      执行触发器任务
      指定者:
      executeTaskTrigger 在接口中 TaskService
      参数:
      execution - Execution
      flwTask - 触发器任务
      返回:
      true 成功 false 失败
    • completeActiveTasksByInstanceId

      public boolean completeActiveTasksByInstanceId(Long instanceId, FlowCreator flowCreator)
      完成指定实例ID活动任务
      指定者:
      completeActiveTasksByInstanceId 在接口中 TaskService
      参数:
      instanceId - 实例ID
      flowCreator - 处理人员
      返回:
      true 成功 false 失败
    • updateTaskById

      public void updateTaskById(FlwTask flwTask, FlowCreator flowCreator)
      更新任务对象的 finishTime、createBy、expireTime、version、variable
      指定者:
      updateTaskById 在接口中 TaskService
      参数:
      flwTask - 任务对象
      flowCreator - 处理人员
    • viewTask

      public boolean viewTask(Long taskId, FlowCreator flowCreator)
      查看任务设置为已阅状态
      指定者:
      viewTask 在接口中 TaskService
      参数:
      taskId - 任务ID
      flowCreator - 处理人员
      返回:
      true 成功 false 失败
    • claimRole

      public FlwTask claimRole(Long taskId, FlowCreator flowCreator)
      从接口复制的说明: TaskService
      角色根据 任务ID 认领任务,删除其它任务参与者
      指定者:
      claimRole 在接口中 TaskService
      参数:
      taskId - 任务ID
      flowCreator - 任务认领者
      返回:
      Task 任务对象
    • claimDepartment

      public FlwTask claimDepartment(Long taskId, FlowCreator flowCreator)
      从接口复制的说明: TaskService
      部门根据 任务ID 认领任务,删除其它任务参与者
      指定者:
      claimDepartment 在接口中 TaskService
      参数:
      taskId - 任务ID
      flowCreator - 任务认领者
      返回:
      Task 任务对象
    • claim

      protected FlwTask claim(Long taskId, AgentType agentType, TaskEventType eventType, FlowCreator flowCreator)
      根据 任务ID 认领任务,删除其它任务参与者
      参数:
      taskId - 任务ID
      agentType - 代理人类型
      eventType - 流程引擎监听类型
      flowCreator - 任务认领者
      返回:
      Task 任务对象
    • transferTask

      public boolean transferTask(FlowCreator flowCreator, FlowCreator assigneeFlowCreator)
      从接口复制的说明: TaskService
      参与者的所有任务【离职转办】给指定办理人

      用于任务参与者离职

      指定者:
      transferTask 在接口中 TaskService
      参数:
      flowCreator - 任务参与者
      assigneeFlowCreator - 指定办理人
      返回:
      true 成功 false 失败
    • assigneeTask

      public boolean assigneeTask(Long taskId, TaskType taskType, TaskEventType taskEventType, FlowCreator flowCreator, List<FlowCreator> assigneeFlowCreators, Map<String,Object> args, Function<FlwTask,Boolean> check)
      根据 任务ID 分配任务给指定办理人、重置任务类型
      指定者:
      assigneeTask 在接口中 TaskService
      参数:
      taskId - 任务ID
      taskType - 任务类型
      taskEventType - 任务事件类型
      flowCreator - 任务参与者
      assigneeFlowCreators - 指定办理人列表
      args - 任务参数
      check - 校验函数,可以根据 dbFlwTask.getAssignorId() 是否存在判断为重发分配
      返回:
      true 成功 false 失败
    • getAllowedFlwTaskActor

      protected FlwTaskActor getAllowedFlwTaskActor(Long taskId, FlowCreator flowCreator)
      获取指定 任务ID 合法参与者对象
      参数:
      taskId - 任务ID
      flowCreator - 任务参与者
      返回:
      任务参与者
    • resolveTask

      public boolean resolveTask(Long taskId, FlowCreator flowCreator)
      根据 任务ID 解决委派任务
      指定者:
      resolveTask 在接口中 TaskService
      参数:
      taskId - 任务ID
      flowCreator - 任务参与者
      返回:
      true 成功 false 失败
    • reclaimTaskAssert

      protected void reclaimTaskAssert(BiConsumer<FlwHisTask,Integer> assertConsumer, FlwHisTask fht, Integer code, String errorMessage)
      拿回任务异常断言
    • reclaimTask

      public Optional<List<FlwTask>> reclaimTask(Long taskId, FlowCreator flowCreator, BiConsumer<FlwHisTask,Integer> assertConsumer)
      拿回任务、根据历史任务ID撤回下一个节点的任务、恢复历史任务
      指定者:
      reclaimTask 在接口中 TaskService
      参数:
      taskId - 任务ID(当前节点的父任务ID属于历史任务)
      flowCreator - 任务创建者
      assertConsumer - 断言处理函数
      返回:
      拿回任务
    • resume

      public boolean resume(Long instanceId, FlowCreator flowCreator, BiFunction<FlwInstance,String,Boolean> execFunc)
      唤醒撤回或拒绝终止历史任务
      指定者:
      resume 在接口中 TaskService
      参数:
      instanceId - 历史实例ID
      flowCreator - 任务唤醒者
      execFunc - 执行函数
      返回:
      true 成功 false 失败
    • withdrawTask

      public Optional<List<FlwTask>> withdrawTask(Long taskId, FlowCreator flowCreator)
      撤回指定的任务
      指定者:
      withdrawTask 在接口中 TaskService
      参数:
      taskId - 待撤回历史任务ID
      flowCreator - 任务创建者
      返回:
      Task 任务对象
    • rejectTask

      public Optional<List<FlwTask>> rejectTask(FlwTask currentFlwTask, FlowCreator flowCreator, Map<String,Object> args, TaskState taskState, TaskEventType eventType)
      从接口复制的说明: TaskService
      根据当前任务对象驳回至上一步处理
      指定者:
      rejectTask 在接口中 TaskService
      参数:
      currentFlwTask - 当前任务对象
      flowCreator - 任务创建者
      args - 任务参数
      taskState - 任务状态
      eventType - 任务执行事件类型
      返回:
      Task 任务对象
    • undoHisTask

      protected Optional<List<FlwTask>> undoHisTask(Long hisTaskId, FlowCreator flowCreator, TaskType taskType, Consumer<FlwHisTask> hisTaskConsumer)
      撤回历史任务
      参数:
      hisTaskId - 历史任务ID
      flowCreator - 任务创建者
      taskType - 任务类型
      hisTaskConsumer - 历史任务业务处理
      返回:
      任务参与者
    • assignTask

      protected void assignTask(Long instanceId, Long taskId, int actorType, FlwTaskActor taskActor)
      对指定的任务分配参与者。参与者可以为用户、部门、角色
      参数:
      instanceId - 实例ID
      taskId - 任务ID
      actorType - 参与者类型 0,用户 1,角色 2,部门
      taskActor - 任务参与者
    • createNewTask

      public List<FlwTask> createNewTask(Long taskId, TaskType taskType, PerformType performType, List<FlwTaskActor> taskActors, FlowCreator flowCreator, Function<FlwTask,Execution> executionFunction)
      根据已有任务、参与者创建新的任务

      适用于动态转派,动态协办等处理且流程图中不体现节点情况

      指定者:
      createNewTask 在接口中 TaskService
      参数:
      taskId - 主办任务ID
      taskType - 任务类型
      performType - 参与类型
      taskActors - 参与者集合
      flowCreator - 任务创建者
      executionFunction - 执行函数
      返回:
      创建任务集合
    • createCcTask

      public boolean createCcTask(NodeModel taskModel, FlwTask flwTask, List<NodeAssignee> ccUserList, FlowCreator flowCreator)
      创建抄送任务

      默认不校验是否重复抄送

      指定者:
      createCcTask 在接口中 TaskService
      参数:
      taskModel - 任务模型
      flwTask - 当前任务
      ccUserList - 抄送任务分配到任务的人或角色列表
      flowCreator - 任务创建者
    • getTimeoutOrRemindTasks

      public List<FlwTask> getTimeoutOrRemindTasks()
      获取超时或者提醒的任务
      指定者:
      getTimeoutOrRemindTasks 在接口中 TaskService
      返回:
      任务列表
    • getTaskModel

      public NodeModel getTaskModel(Long taskId)
      获取任务模型
      指定者:
      getTaskModel 在接口中 TaskService
      参数:
      taskId - 任务ID
      返回:
      节点模型
    • createTask

      public List<FlwTask> createTask(NodeModel nodeModel, Execution execution, Function<FlwTask,FlwTask> taskFunction)
      创建 task 根据 model 决定是否分配参与者
      指定者:
      createTask 在接口中 TaskService
      参数:
      nodeModel - 节点模型
      execution - 执行对象
      taskFunction - 任务处理函数,如果自定义 CreateTaskHandler 可用于控制任务创建属性设置
      返回:
      任务列表
    • executeTaskTrigger

      protected void executeTaskTrigger(NodeModel nodeModel, Execution execution, List<FlwTask> flwTasks, FlwTask flwTask, List<FlwTaskActor> taskActors)
      执行任务触发器
    • executeFinishTrigger

      public boolean executeFinishTrigger(NodeModel nodeModel, Execution execution, FlowCreator flowCreator)
      从接口复制的说明: TaskService
      执行完成触发器操作流程继续往下执行
      指定者:
      executeFinishTrigger 在接口中 TaskService
      参数:
      nodeModel - 节点模型 NodeModel
      execution - 执行对象 Execution
      flowCreator - 任务创建者
      返回:
      true 成功 false 失败
    • moveToHisTaskTrigger

      protected boolean moveToHisTaskTrigger(FlwTask flwTask, FlowCreator flowCreator)
      触发器任务归档
    • createTaskBase

      protected FlwTask createTaskBase(NodeModel nodeModel, Execution execution)
      根据模型、执行对象、任务类型构建基本的task对象
      参数:
      nodeModel - 节点模型
      execution - 执行对象
      返回:
      Task任务对象
    • saveTask

      protected List<FlwTask> saveTask(FlwTask flwTask, PerformType performType, List<FlwTaskActor> taskActors, Execution execution, NodeModel nodeModel)
      保存任务及参与者信息
      参数:
      flwTask - 流程任务对象
      performType - 参与类型 PerformType
      taskActors - 参与者ID集合
      execution - 流程执行处理类 Execution
      nodeModel - 流程节点模型对象 NodeModel
      返回:
      流程任务列表
    • assignActorType

      protected int assignActorType(int actorType, Integer dbActorType)
      优先使用数据库参与者类型
    • isAllowed

      public FlwTaskActor isAllowed(FlwTask flwTask, String userId)
      根据 taskId、createId 判断创建人是否允许执行任务
      指定者:
      isAllowed 在接口中 TaskService
      参数:
      flwTask - 流程任务
      userId - 用户ID
      返回:
      true 允许 false 不允许
    • addTaskActor

      public boolean addTaskActor(Long taskId, PerformType performType, List<FlwTaskActor> taskActors, FlowCreator flowCreator)
      向指定的任务ID添加参与者
      指定者:
      addTaskActor 在接口中 TaskService
      参数:
      taskId - 任务ID
      performType - 参与类型 PerformType
      taskActors - 参与者列表
      flowCreator - 执行操作人员
      返回:
      true 成功 false 失败
    • getTaskActorsByTaskId

      protected List<FlwTaskActor> getTaskActorsByTaskId(Long taskId)
    • removeTaskActor

      public boolean removeTaskActor(Long taskId, List<String> actorIds, FlowCreator flowCreator)
      从接口复制的说明: TaskService
      对指定的任务ID删除参与者【减签】
      指定者:
      removeTaskActor 在接口中 TaskService
      参数:
      taskId - 任务ID
      actorIds - 参与者ID列表
      flowCreator - 执行操作人员
      返回:
      true 成功 false 失败
    • changeTaskActor

      public boolean changeTaskActor(Long taskId, FlwTaskActor taskActor)
      从接口复制的说明: TaskService
      修改 taskId 任务办理人为指定 taskActor 参与者
      指定者:
      changeTaskActor 在接口中 TaskService
      参数:
      taskId - 任务ID
      taskActor - 参与者
      返回:
      true 成功 false 失败
    • endCallProcessTask

      public void endCallProcessTask(Long callProcessId, Long callInstanceId)
      从接口复制的说明: TaskService
      结束调用外部流程任务
      指定者:
      endCallProcessTask 在接口中 TaskService
      参数:
      callProcessId - 调用外部流程定义ID
      callInstanceId - 调用外部流程实例ID
    • cascadeRemoveByInstanceIds

      public boolean cascadeRemoveByInstanceIds(List<Long> instanceIds)
      级联删除表 flw_his_task_actor, flw_his_task, flw_task_actor, flw_task
      指定者:
      cascadeRemoveByInstanceIds 在接口中 TaskService
      参数:
      instanceIds - 流程实例ID列表