DBAccess.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  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 org.snaker.engine.access.Page;
  18. import org.snaker.engine.access.QueryFilter;
  19. import org.snaker.engine.entity.CCOrder;
  20. import org.snaker.engine.entity.HistoryOrder;
  21. import org.snaker.engine.entity.HistoryTask;
  22. import org.snaker.engine.entity.HistoryTaskActor;
  23. import org.snaker.engine.entity.Order;
  24. import org.snaker.engine.entity.Process;
  25. import org.snaker.engine.entity.Surrogate;
  26. import org.snaker.engine.entity.Task;
  27. import org.snaker.engine.entity.TaskActor;
  28. import org.snaker.engine.entity.WorkItem;
  29. /**
  30. * 数据库访问接口
  31. * 主要提供保存、更新、查询流程的相关table
  32. * @author yuqs
  33. * @since 1.0
  34. */
  35. public interface DBAccess {
  36. /**
  37. * 根据访问对象,设置具体的实现类
  38. * @param accessObject 数据库访问对象(Connection等)
  39. */
  40. public void initialize(Object accessObject);
  41. /**
  42. * 保存任务对象
  43. * @param task 任务对象
  44. */
  45. public void saveTask(Task task);
  46. /**
  47. * 保存流程实例对象
  48. * @param order 流程实例对象
  49. */
  50. public void saveOrder(Order order);
  51. /**
  52. * 保存抄送实例
  53. * @param ccorder 抄送实体
  54. * @since 1.5
  55. */
  56. public void saveCCOrder(CCOrder ccorder);
  57. /**
  58. * 保存流程定义对象
  59. * @param process 流程定义对象
  60. */
  61. public void saveProcess(Process process);
  62. /**
  63. * 保存任务参与者对象
  64. * @param taskActor 任务参与者对象
  65. */
  66. public void saveTaskActor(TaskActor taskActor);
  67. /**
  68. * 更新任务对象
  69. * @param task 任务对象
  70. */
  71. public void updateTask(Task task);
  72. /**
  73. * 更新流程实例对象
  74. * @param order 流程实例对象
  75. */
  76. public void updateOrder(Order order);
  77. /**
  78. * 更新抄送状态
  79. * @param ccorder 抄送实体对象
  80. */
  81. public void updateCCOrder(CCOrder ccorder);
  82. /**
  83. * 更新流程定义对象
  84. * @param process 流程定义对象
  85. */
  86. public void updateProcess(Process process);
  87. /**
  88. * 删除流程定义对象
  89. * @param process 流程定义对象
  90. */
  91. public void deleteProcess(Process process);
  92. /**
  93. * 更新流程定义类别
  94. * @param type 类别
  95. * @since 1.5
  96. */
  97. public void updateProcessType(String id, String type);
  98. /**
  99. * 删除任务、任务参与者对象
  100. * @param task 任务对象
  101. */
  102. public void deleteTask(Task task);
  103. /**
  104. * 删除流程实例对象
  105. * @param order 流程实例对象
  106. */
  107. public void deleteOrder(Order order);
  108. /**
  109. * 删除抄送记录
  110. * @param ccorder 抄送实体对象
  111. */
  112. public void deleteCCOrder(CCOrder ccorder);
  113. /**
  114. * 删除参与者
  115. * @param taskId 任务id
  116. * @param actors 参与者集合
  117. */
  118. public void removeTaskActor(String taskId, String... actors);
  119. /**
  120. * 迁移活动实例
  121. * @param order 历史流程实例对象
  122. */
  123. public void saveHistory(HistoryOrder order);
  124. /**
  125. * 更新历史流程实例状态
  126. * @param order 历史流程实例对象
  127. */
  128. public void updateHistory(HistoryOrder order);
  129. /**
  130. * 迁移活动任务
  131. * @param task 历史任务对象
  132. */
  133. public void saveHistory(HistoryTask task);
  134. /**
  135. * 删除历史实例记录
  136. * @param historyOrder 历史实例
  137. */
  138. public void deleteHistoryOrder(HistoryOrder historyOrder);
  139. /**
  140. * 删除历史任务记录
  141. * @param historyTask 历史任务
  142. */
  143. public void deleteHistoryTask(HistoryTask historyTask);
  144. /**
  145. * 更新实例变量(包括历史实例表)
  146. * @param order 实例对象
  147. */
  148. public void updateOrderVariable(Order order);
  149. /**
  150. * 保存委托代理对象
  151. * @param surrogate 委托代理对象
  152. */
  153. public void saveSurrogate(Surrogate surrogate);
  154. /**
  155. * 更新委托代理对象
  156. * @param surrogate 委托代理对象
  157. */
  158. public void updateSurrogate(Surrogate surrogate);
  159. /**
  160. * 删除委托代理对象
  161. * @param surrogate 委托代理对象
  162. */
  163. public void deleteSurrogate(Surrogate surrogate);
  164. /**
  165. * 根据主键id查询委托代理对象
  166. * @param id 主键id
  167. * @return surrogate 委托代理对象
  168. */
  169. public Surrogate getSurrogate(String id);
  170. /**
  171. * 根据授权人、流程名称查询委托代理对象
  172. * @param page 分页对象
  173. * @param filter 查询过滤器
  174. * @return List<Surrogate> 委托代理对象集合
  175. */
  176. public List<Surrogate> getSurrogate(Page<Surrogate> page, QueryFilter filter);
  177. /**
  178. * 根据任务id查询任务对象
  179. * @param taskId 任务id
  180. * @return Task 任务对象
  181. */
  182. public Task getTask(String taskId);
  183. /**
  184. * 根据任务ID获取历史任务对象
  185. * @param taskId 历史任务id
  186. * @return 历史任务对象
  187. */
  188. HistoryTask getHistTask(String taskId);
  189. /**
  190. * 根据父任务id查询所有子任务
  191. * @param parentTaskId 父任务id
  192. * @return List<Task> 活动任务集合
  193. */
  194. public List<Task> getNextActiveTasks(String parentTaskId);
  195. /**
  196. * 根据流程实例id、任务名称获取
  197. * @param orderId 流程实例id
  198. * @param taskName 任务名称
  199. * @param parentTaskId 父任务id
  200. * @return List<Task> 活动任务集合
  201. */
  202. public List<Task> getNextActiveTasks(String orderId, String taskName, String parentTaskId);
  203. /**
  204. * 根据任务id查询所有活动任务参与者集合
  205. * @param taskId 活动任务id
  206. * @return List<TaskActor> 活动任务参与者集合
  207. */
  208. public List<TaskActor> getTaskActorsByTaskId(String taskId);
  209. /**
  210. * 根据任务id查询所有历史任务参与者集合
  211. * @param taskId 历史任务id
  212. * @return List<HistoryTaskActor> 历史任务参与者集合
  213. */
  214. public List<HistoryTaskActor> getHistTaskActorsByTaskId(String taskId);
  215. /**
  216. * 根据流程实例id查询实例对象
  217. * @param orderId 活动流程实例id
  218. * @return Order 活动流程实例对象
  219. */
  220. public Order getOrder(String orderId);
  221. /**
  222. * 根据流程实例id、参与者id获取抄送记录
  223. * @param orderId 活动流程实例id
  224. * @param actorIds 参与者id
  225. * @return 传送记录列表
  226. */
  227. public List<CCOrder> getCCOrder(String orderId, String... actorIds);
  228. /**
  229. * 根据流程实例ID获取历史流程实例对象
  230. * @param orderId 历史流程实例id
  231. * @return HistoryOrder 历史流程实例对象
  232. */
  233. HistoryOrder getHistOrder(String orderId);
  234. /**
  235. * 根据流程定义id查询流程定义对象
  236. * @param id 流程定义id
  237. * @return Process 流程定义对象
  238. */
  239. public Process getProcess(String id);
  240. /**
  241. * 根据流程名称查询最近的版本号
  242. * @param name 流程名称
  243. * @return Integer 流程定义版本号
  244. */
  245. public Integer getLatestProcessVersion(String name);
  246. /**
  247. * 根据查询的参数,分页对象,返回分页后的查询结果
  248. * @param page 分页对象
  249. * @param filter 查询过滤器
  250. * @return List<Process> 流程定义集合
  251. */
  252. public List<Process> getProcesss(Page<Process> page, QueryFilter filter);
  253. /**
  254. * 分页查询流程实例
  255. * @param page 分页对象
  256. * @param filter 查询过滤器
  257. * @return List<Order> 活动流程实例集合
  258. */
  259. public List<Order> getActiveOrders(Page<Order> page, QueryFilter filter);
  260. /**
  261. * 分页查询活动任务列表
  262. * @param page 分页对象
  263. * @param filter 查询过滤器
  264. * @return List<Task> 活动任务集合
  265. */
  266. public List<Task> getActiveTasks(Page<Task> page, QueryFilter filter);
  267. /**
  268. * 分页查询历史流程实例
  269. * @param page 分页对象
  270. * @param filter 查询过滤器
  271. * @return List<HistoryOrder> 历史流程实例集合
  272. */
  273. public List<HistoryOrder> getHistoryOrders(Page<HistoryOrder> page, QueryFilter filter);
  274. /**
  275. * 根据参与者分页查询已完成的历史任务
  276. * @param page 分页对象
  277. * @param filter 查询过滤器
  278. * @return List<HistoryTask> 历史任务集合
  279. */
  280. public List<HistoryTask> getHistoryTasks(Page<HistoryTask> page, QueryFilter filter);
  281. /**
  282. * 根据查询的参数,分页对象,返回分页后的活动工作项
  283. * @param page 分页对象
  284. * @param filter 查询过滤器
  285. * @return List<WorkItem> 活动工作项
  286. */
  287. public List<WorkItem> getWorkItems(Page<WorkItem> page, QueryFilter filter);
  288. /**
  289. * 根据查询的参数,分页对象,返回分页后的抄送任务项
  290. * @param page 分页对象
  291. * @param filter 查询过滤器
  292. * @return List<WorkItem> 活动工作项
  293. */
  294. public List<HistoryOrder> getCCWorks(Page<HistoryOrder> page, QueryFilter filter);
  295. /**
  296. * 根据流程定义ID、参与者分页查询已完成的历史任务项
  297. * @param page 分页对象
  298. * @param filter 查询过滤器
  299. * @return List<WorkItem> 历史工作项
  300. */
  301. public List<WorkItem> getHistoryWorkItems(Page<WorkItem> page, QueryFilter filter);
  302. /**
  303. * 根据类型clazz、Sql语句、参数查询单个对象
  304. * @param clazz 类型
  305. * @param sql sql语句
  306. * @param args 参数列表
  307. * @return 结果对象
  308. */
  309. public <T> T queryObject(Class<T> clazz, String sql, Object... args);
  310. /**
  311. * 根据类型clazz、Sql语句、参数查询列表对象
  312. * @param clazz 类型
  313. * @param sql sql语句
  314. * @param args 参数列表
  315. * @return 结果对象列表
  316. */
  317. public <T> List<T> queryList(Class<T> clazz, String sql, Object... args);
  318. /**
  319. * 根据类型clazz、Sql语句、参数分页查询列表对象
  320. * @param page 分页对象
  321. * @param filter 查询过滤器
  322. * @param clazz 类型
  323. * @param sql sql语句
  324. * @param args 参数列表
  325. * @return 结果对象列表
  326. */
  327. public <T> List<T> queryList(Page<T> page, QueryFilter filter, Class<T> clazz, String sql, Object... args);
  328. }