ITaskService.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. /* Copyright 2013-2015 www.snakerflow.com.
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. package org.snaker.engine;
  16. import java.util.List;
  17. import java.util.Map;
  18. import org.snaker.engine.core.Execution;
  19. import org.snaker.engine.entity.HistoryTask;
  20. import org.snaker.engine.entity.Task;
  21. import org.snaker.engine.model.CustomModel;
  22. import org.snaker.engine.model.ProcessModel;
  23. import org.snaker.engine.model.TaskModel;
  24. /**
  25. * 任务业务类,包括以下服务:
  26. * 1、创建任务
  27. * 2、添加、删除参与者
  28. * 3、完成任务
  29. * 4、撤回任务
  30. * 5、回退任务
  31. * 6、提取任务
  32. * @author yuqs
  33. * @since 1.0
  34. */
  35. public interface ITaskService {
  36. /**
  37. * 完成指定的任务,删除活动任务记录,创建历史任务
  38. * @param taskId 任务id
  39. * @return Task 任务对象
  40. */
  41. Task complete(String taskId);
  42. /**
  43. * 完成指定的任务,删除活动任务记录,创建历史任务
  44. * @param taskId 任务id
  45. * @param operator 操作人
  46. * @return Task 任务对象
  47. */
  48. Task complete(String taskId, String operator);
  49. /**
  50. * 根据任务主键ID,操作人ID完成任务
  51. * @param taskId 任务id
  52. * @param operator 操作人id
  53. * @param args 参数集合
  54. * @return Task 任务对象
  55. */
  56. Task complete(String taskId, String operator, Map<String, Object> args);
  57. /**
  58. * 更新任务对象
  59. * @param task 任务对象
  60. */
  61. void updateTask(Task task);
  62. /**
  63. * 根据执行对象、自定义节点模型创建历史任务记录
  64. * @param execution 执行对象
  65. * @param model 自定义节点模型
  66. * @return 历史任务
  67. */
  68. HistoryTask history(Execution execution, CustomModel model);
  69. /**
  70. * 根据任务主键ID,操作人ID提取任务
  71. * 提取任务相当于预受理操作,仅仅标识此任务只能由此操作人处理
  72. * @param taskId 任务id
  73. * @param operator 操作人id
  74. * @return Task 任务对象
  75. */
  76. Task take(String taskId, String operator);
  77. /**
  78. * 根据历史任务主键id,操作人唤醒历史任务
  79. * 该方法会导致流程状态不可控,请慎用
  80. * @param taskId 历史任务id
  81. * @param operator 操作人id
  82. * @return Task 唤醒后的任务对象
  83. */
  84. Task resume(String taskId, String operator);
  85. /**
  86. * 向指定的任务id添加参与者
  87. * @param taskId 任务id
  88. * @param actors 参与者
  89. */
  90. void addTaskActor(String taskId, String... actors);
  91. /**
  92. * 向指定的任务id添加参与者
  93. * @param taskId 任务id
  94. * @param performType 参与类型
  95. * @param actors 参与者
  96. */
  97. void addTaskActor(String taskId, Integer performType, String... actors);
  98. /**
  99. * 对指定的任务id删除参与者
  100. * @param taskId 任务id
  101. * @param actors 参与者
  102. */
  103. void removeTaskActor(String taskId, String... actors);
  104. /**
  105. * 根据任务主键id、操作人撤回任务
  106. * @param taskId 任务id
  107. * @param operator 操作人
  108. * @return Task 任务对象
  109. */
  110. Task withdrawTask(String taskId, String operator);
  111. /**
  112. * 根据当前任务对象驳回至上一步处理
  113. * @param model 流程定义模型,用以获取上一步模型对象
  114. * @param currentTask 当前任务对象
  115. * @return Task 任务对象
  116. */
  117. Task rejectTask(ProcessModel model, Task currentTask);
  118. /**
  119. * 根据taskId、operator,判断操作人operator是否允许执行任务
  120. * @param task 任务对象
  121. * @param operator 操作人
  122. * @return boolean 是否允许操作
  123. */
  124. boolean isAllowed(Task task, String operator);
  125. /**
  126. * 根据任务模型、执行对象创建新的任务
  127. * @param taskModel 任务模型
  128. * @param execution 执行对象
  129. * @return List<Task> 创建任务集合
  130. */
  131. List<Task> createTask(TaskModel taskModel, Execution execution);
  132. /**
  133. * 根据已有任务id、任务类型、参与者创建新的任务
  134. * @param taskId 主办任务id
  135. * @param taskType 任务类型
  136. * @param actors 参与者集合
  137. * @return List<Task> 创建任务集合
  138. */
  139. List<Task> createNewTask(String taskId, int taskType, String... actors);
  140. /**
  141. * 根据任务id获取任务模型
  142. * @param taskId 任务id
  143. * @return
  144. */
  145. TaskModel getTaskModel(String taskId);
  146. }