WFRuntimeBLL.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. using LeaRun.Application.Code;
  2. using LeaRun.Application.Entity.FlowManage;
  3. using LeaRun.Application.IService.FlowManage;
  4. using LeaRun.Application.Service.FlowManage;
  5. using LeaRun.Util;
  6. using LeaRun.Util.WebControl;
  7. using System;
  8. using System.Data;
  9. namespace LeaRun.Application.Busines.FlowManage
  10. {
  11. /// <summary>
  12. /// 版 本 6.1
  13. /// Copyright (c) 2013-2016 上海力软信息技术有限公司
  14. /// 创建人:陈彬彬
  15. /// 日 期:2016.03.19 13:57
  16. /// 描 述:工作流实例操作(支持:SqlServer)
  17. /// </summary>
  18. public class WFRuntimeBLL
  19. {
  20. private WFProcessInstanceIService wfProcessInstanceService = new WFProcessInstanceService();
  21. private WFProcessSchemeIService wfProcessSchemeService = new WFProcessSchemeService();
  22. private WFRuntimeIService wfRuntimeService = new WFRuntimeService();
  23. #region 获取数据
  24. /// <summary>
  25. /// 获取流程实例分页数据
  26. /// </summary>
  27. /// <param name="pagination">分页参数</param>
  28. /// <param name="queryJson">查询条件</param>
  29. /// <returns></returns>
  30. public DataTable GetPageList(Pagination pagination, string queryJson)
  31. {
  32. return wfProcessInstanceService.GetPageList(pagination, queryJson);
  33. }
  34. /// <summary>
  35. /// 获取流程实例分页数据
  36. /// </summary>
  37. /// <param name="pagination">分页参数</param>
  38. /// <param name="queryJson">查询条件</param>
  39. /// <param name="type">3草稿</param>
  40. /// <returns></returns>
  41. public DataTable GetPageList(Pagination pagination, string queryJson, string type)
  42. {
  43. return wfProcessInstanceService.GetPageList(pagination, queryJson, type);
  44. }
  45. /// <summary>
  46. /// 获取登录者需要处理的流程
  47. /// </summary>
  48. /// <param name="pagination"></param>
  49. /// <param name="queryJson"></param>
  50. /// <returns></returns>
  51. public DataTable GetToMeBeforePageList(Pagination pagination, string queryJson)
  52. {
  53. return wfProcessInstanceService.GetToMeBeforePageList(pagination, queryJson);
  54. }
  55. /// <summary>
  56. /// 获取登录者已经处理的流程
  57. /// </summary>
  58. /// <param name="pagination"></param>
  59. /// <param name="queryJson"></param>
  60. /// <returns></returns>
  61. public DataTable GetToMeAfterPageList(Pagination pagination, string queryJson)
  62. {
  63. return wfProcessInstanceService.GetToMeAfterPageList(pagination, queryJson);
  64. }
  65. /// <summary>
  66. /// 获取实例进程模板的实体
  67. /// </summary>
  68. /// <param name="keyValue"></param>
  69. /// <returns></returns>
  70. public WFProcessSchemeEntity GetProcessSchemeEntity(string keyValue)
  71. {
  72. return wfProcessSchemeService.GetEntity(keyValue);
  73. }
  74. /// <summary>
  75. /// 已办流程进度查看,根据当前访问人的权限查看表单内容
  76. /// </summary>
  77. /// <param name="keyValue"></param>
  78. /// <returns></returns>
  79. public WFProcessSchemeEntity GetProcessSchemeEntityByUserId(string keyValue)
  80. {
  81. try
  82. {
  83. WFProcessSchemeEntity entity = wfProcessSchemeService.GetEntity(keyValue);
  84. entity.SchemeContent = wfRuntimeService.GetProcessSchemeContentByUserId(entity.SchemeContent, OperatorProvider.Provider.Current().UserId);
  85. return entity;
  86. }
  87. catch
  88. {
  89. throw;
  90. }
  91. }
  92. /// <summary>
  93. /// 已办流程进度查看,根据当前节点的权限查看表单内容
  94. /// </summary>
  95. /// <param name="keyValue"></param>
  96. /// <param name="isPermission"></param>
  97. /// <returns></returns>
  98. public WFProcessSchemeEntity GetProcessSchemeEntityByNodeId(string keyValue, string nodeId)
  99. {
  100. try
  101. {
  102. WFProcessSchemeEntity entity = wfProcessSchemeService.GetEntity(keyValue);
  103. entity.SchemeContent = wfRuntimeService.GetProcessSchemeContentByNodeId(entity.SchemeContent, nodeId);
  104. return entity;
  105. }
  106. catch
  107. {
  108. throw;
  109. }
  110. }
  111. /// <summary>
  112. /// 获取实例进程信息的实体
  113. /// </summary>
  114. /// <param name="keyValue"></param>
  115. /// <returns></returns>
  116. public WFProcessInstanceEntity GetProcessInstanceEntity(string keyValue)
  117. {
  118. return wfProcessInstanceService.GetEntity(keyValue);
  119. }
  120. #endregion
  121. #region 提交数据
  122. /// <summary>
  123. /// 创建实例
  124. /// </summary>
  125. /// <param name="WFSchemeInfoId">流程模板表Id</param>
  126. /// <param name="Data">表单数据</param>
  127. /// <param name="Type">1正常,3草稿</param>
  128. /// <returns></returns>
  129. public int CreateProcess(string wfSchemeInfoId, WFProcessInstanceEntity wfProcessInstanceEntity, string frmData)
  130. {
  131. try
  132. {
  133. if (wfProcessInstanceEntity.EnabledMark == 1)//发起流程
  134. {
  135. wfRuntimeService.CreateInstance(Guid.NewGuid(), wfSchemeInfoId, wfProcessInstanceEntity, frmData);
  136. }
  137. else if (wfProcessInstanceEntity.EnabledMark == 3)//草稿
  138. {
  139. wfRuntimeService.CreateRoughdraft(Guid.NewGuid(), wfSchemeInfoId, wfProcessInstanceEntity, frmData);
  140. }
  141. return 1;
  142. }
  143. catch
  144. {
  145. throw;
  146. }
  147. }
  148. /// <summary>
  149. /// 编辑草稿实例
  150. /// </summary>
  151. /// <param name="keyVlaue">实例信息Id(主键)</param>
  152. /// <param name="frmData">表单数据</param>
  153. /// <returns></returns>
  154. public int EditionRoughdraftProcess(string keyVlaue, WFProcessInstanceEntity wfProcessInstanceEntity, string frmData)
  155. {
  156. try {
  157. wfProcessInstanceEntity.Id = keyVlaue;
  158. if (wfProcessInstanceEntity.EnabledMark == 1)
  159. {
  160. wfRuntimeService.CreateInstance(wfProcessInstanceEntity, frmData);
  161. }
  162. else if (wfProcessInstanceEntity.EnabledMark == 3)//继续保存为草稿
  163. {
  164. wfRuntimeService.EditionRoughdraft(wfProcessInstanceEntity, frmData);
  165. }
  166. return 1;
  167. }
  168. catch {
  169. throw;
  170. }
  171. }
  172. /// <summary>
  173. /// 审核流程
  174. /// </summary>
  175. /// <param name="ProcessId">审核的流程Id</param>
  176. /// <param name="verificationData">审核内容</param>
  177. /// <returns></returns>
  178. public void VerificationProcess(string processId, string verificationData)
  179. {
  180. try
  181. {
  182. dynamic verificationDataJson = verificationData.ToJson();
  183. //驳回
  184. if (verificationDataJson.VerificationFinally.Value == "3")
  185. {
  186. string _nodeId = "";
  187. if (verificationDataJson.NodeRejectStep != null)
  188. {
  189. _nodeId = verificationDataJson.NodeRejectStep.Value;
  190. }
  191. wfRuntimeService.NodeReject(processId, _nodeId, verificationDataJson.VerificationOpinion.Value);
  192. }
  193. else if (verificationDataJson.VerificationFinally.Value == "2")//表示不同意
  194. {
  195. wfRuntimeService.NodeVerification(processId,false, verificationDataJson.VerificationOpinion.Value);
  196. }
  197. else if (verificationDataJson.VerificationFinally.Value == "1")//表示同意
  198. {
  199. wfRuntimeService.NodeVerification(processId,true, verificationDataJson.VerificationOpinion.Value);
  200. }
  201. }
  202. catch
  203. {
  204. throw;
  205. }
  206. }
  207. /// <summary>
  208. /// 流程指派
  209. /// </summary>
  210. /// <param name="processId"></param>
  211. /// <param name="makeLists"></param>
  212. public void DesignateProcess(string processId, string makeLists)
  213. {
  214. wfProcessInstanceService.DesignateProcess(processId, makeLists);
  215. }
  216. /// <summary>
  217. /// 删除工作流实例进程
  218. /// </summary>
  219. /// <param name="keyValue">主键</param>
  220. /// <returns></returns>
  221. public int DeleteProcess(string keyValue)
  222. {
  223. return wfProcessInstanceService.DeleteProcess(keyValue);
  224. }
  225. /// <summary>
  226. /// 虚拟操作实例
  227. /// </summary>
  228. /// <param name="keyValue"></param>
  229. /// <param name="state">0暂停,1启用,2取消(召回)</param>
  230. /// <returns></returns>
  231. public int OperateVirtualProcess(string keyValue,int state)
  232. {
  233. return wfProcessInstanceService.OperateVirtualProcess(keyValue, state);
  234. }
  235. #endregion
  236. }
  237. }