




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
叮叮小文库activiti5学习笔记(二)伪审批汇总流程伪汇总审批,就是每一条流程都是独立的,这些独立的流程在走到某个节点的时候,这个节点的审批人可以一次性进行多个任务的审批。开发环境JDK1.6Activiti5.13EclipseMYSQL5简单起见,这里没有做一个web的项目,只是一个Java程序。业务场景预算填报员填写本单位的预算,预算提交到本单位的上级进行审批,上级审批后提交到总公司进行审批。有多少个预算到了总公司审批人处,就可以对多少的预算同时进行审批,这些流程都是相对独立的。业务数据存储在单独的报表系统中,节点可以配置打开报表的方式,表单ID,及节点是否汇总审批。程序模拟为方便起见1)所有单位的预算员,审批人,汇总审批人都用三个人,kermit, fozzie,admin直接配在流程图中,实际上kermit和fozzie应会是不同的人,可以动态传入流程启动流程2)节点是否需要汇总,可以根据在节点的参数isSum来进行动态的判定,是否执行汇总审批,程序只是展示效果,具体没有实现动态的,实现起来并不困难。3)为了直观,节点参数都使用了中文,实际开发中肯定是编码形式流程参数说明:流程实例级别的参数有两个,一个填报期间period一个填报单位fillAccount节点级别的配置参数有四个,三个固定的报表唯一编码sheetId,报表打开方式fillType和是否汇总isSum,一个在流程实例中动态生成的,当前节点的操作单位accountCode1. 绘制流程图总体配置填写预算配置审批预算配置汇总审批预算配置2. 测试程序javaview plaincopy1. importjava.util.ArrayList;2. importjava.util.HashMap;3. importjava.util.List;4. importjava.util.Map;5. importorg.activiti.engine.FormService;6. importorg.activiti.engine.ProcessEngine;7. importorg.activiti.engine.RepositoryService;8. importorg.activiti.engine.RuntimeService;9. importorg.activiti.engine.TaskService;10. importorg.activiti.engine.form.FormProperty;11. importorg.activiti.engine.task.Task;12. importorg.springframework.context.support.ClassPathXmlApplicationContext;13. publicclassTestFormData14. /*15. *paramargs16. */17. publicstaticvoidmain(Stringargs)18. /加载spring配置19. ClassPathXmlApplicationContextctx=newClassPathXmlApplicationContext(20. applicationContext.xml);21. RuntimeServiceruntimeService=(RuntimeService)ctx22. .getBean(runtimeService);23. ProcessEngineprocessEngine=(ProcessEngine)ctx24. .getBean(processEngine);25. FormServiceformService=(FormService)ctx.getBean(formService);26. TaskServicetaskService=(TaskService)ctx.getBean(taskService);27. /发布流程28. RepositoryServicerepositoryService=processEngine29. .getRepositoryService();30. repositoryService.createDeployment()31. .addClasspathResource(diagrams/formDataTest.bpmn).deploy();32. fill(runtimeService,formService,taskService);33. singleCheck(formService,taskService);34. sum(taskService,formService);35. 36. /*37. *填报预算38. *39. *paramruntimeService40. *paramformService41. *paramtaskService42. */43. privatestaticvoidfill(RuntimeServiceruntimeService,44. FormServiceformService,TaskServicetaskService)45. /流程开始参数,设置填报期间46. Mapp=newHashMap();47. p.put(period,2013-07);48. /生成3家单位填报49. for(inti=0;i3;i+)50. /开始流程51. runtimeService.startProcessInstanceByKey(formDataTest,p);52. System.out53. .println(=kermit开始填报=);54. /querykermitstasks;55. Listtasks=taskService.createTaskQuery()56. .taskAssignee(kermit).list();57. for(Tasktask:tasks)58. if(fill.equals(task.getTaskDefinitionKey()59. /设置填报人单位编码记录在节点60. taskService.setVariableLocal(task.getId(),accoutCode,61. A110+i);62. /设置该流程实例的填报单位63. taskService.setVariable(task.getId(),fillAccount,A11064. +i);65. MappropMap=createMap(formService66. .getTaskFormData(task.getId().getFormProperties();67. /获取节点报表打开类型68. StringfillType=(String)propMap.get(fillType)69. .getValue();70. /获取节点报表表单ID71. StringsheetId=(String)propMap.get(sheetId).getValue();72. /获取节点是否需要汇总参数73. StringisSum=(String)propMap.get(isSum).getValue();74. /获取节点填报单位编码75. StringaccoutCode=(String)taskService.getVariableLocal(76. task.getId(),accoutCode);77. /获取流程填报单位编码78. StringfillAccount=(String)taskService.getVariable(79. task.getId(),fillAccount);80. /获取流程填报期间81. Stringperiod=(String)taskService.getVariable(82. task.getId(),period);83. /打印填报信息84. System.out.println(t打开报表类型:+fillType);85. System.out.println(t填报表单:+sheetId);86. System.out.println(t填报期间:+period);87. System.out.println(t是否汇总:+isSum);88. System.out.println(t当前节点账号:+accoutCode);89. System.out.println(t提交审批表单填报单位:+fillAccount);90. /节点任务结束91. taskSplete(task.getId();92. System.out93. .println(=kermit填写预算单任务已完成=);94. System.out.println();95. 96. 97. 98. 99. /*100. *单个审核101. *102. *paramformService103. *paramtaskService104. */105. privatestaticvoidsingleCheck(FormServiceformService,106. TaskServicetaskService)107. System.out108. .println(=fozzie开始单个审核=);109. /queryfozziestasks;110. Listtasks2=taskService.createTaskQuery()111. .taskAssignee(fozzie)112. .processVariableValueEquals(period,2013-07)113. .processDefinitionKey(formDataTest).list();114. intcount=1;115. for(Tasktask:tasks2)116. if(check.equals(task.getTaskDefinitionKey()117. System.out.println(t审核第+count+个);118. /设置节点审批人单位编码119. taskService.setVariableLocal(task.getId(),accoutCode,120. A1199);121. MappropMap=createMap(formService122. .getTaskFormData(task.getId().getFormProperties();123. /获取节点报表打开类型124. StringfillType=(String)propMap.get(fillType).getValue();125. /获取节点报表表单ID126. StringsheetId=(String)propMap.get(sheetId).getValue();127. /获取节点是否需要汇总参数128. StringisSum=(String)propMap.get(isSum).getValue();129. /获取节点填报单位编码130. StringaccoutCode=(String)taskService.getVariableLocal(131. task.getId(),accoutCode);132. /获取流程填报单位编码133. StringfillAccount=(String)taskService.getVariable(134. task.getId(),fillAccount);135. /获取流程填报期间136. Stringperiod=(String)taskService.getVariable(task.getId(),137. period);138. /打印填报信息139. System.out.println(t报表打开类型:+fillType);140. System.out.println(t填报表单:+sheetId);141. System.out.println(t填报期间:+period);142. System.out.println(t是否汇总:+isSum);143. System.out.println(t当前节点账号:+accoutCode);144. System.out.println(t提交审批表单填报单位:+fillAccount);145. /节点任务结束146. taskSplete(task.getId();147. System.out.println(t审核第+count+个完成);148. System.out.println();149. count+;150. 151. 152. System.out153. .println(=fozzie审批预算单任务已完成=);154. System.out.println();155. 156. /*157. *汇总审核158. *159. *paramtaskService160. *paramformService161. */162. privatestaticvoidsum(TaskServicetaskService,FormServiceformService)163. System.out164. .println(=admin开始汇总审核=);165. Listtasks3=taskService.createTaskQuery()166. .taskAssignee(admin)167. .processVariableValueEquals(period,2013-07)168. .processDefinitionKey(formDataTest).list();169. /批量审批列表170. ListcompleteTaskIdList=newArrayList();171. /获取节点报表打开类型172. StringfillType=;173. /获取节点报表表单ID174. StringsheetId=;175. /获取节点是否需要汇总参数176. StringisSum=;177. /获取流程填报期间178. Stringperiod=;179. for(Tasktask:tasks3)180. if(sum.equals(task.getTaskDefinitionKey()181. /设置节点审批人单位编码182. taskService.setVariableLocal(task.getId(),accoutCode,183. A1199);184. /获取流程填报单位编码185. StringfillAccount=(String)taskService.getVariable(186. task.getId(),fillAccount);187. MappropMap=createMap(formService188. .getTaskFormData(task.getId().getFormProperties();189. /获取节点报表打开类型190. fillType=(String)propMap.get(fillType).getValue();191. /获取节点报表表单ID192. sheetId=(String)propMap.get(sheetId).getValue();193. /获取节点是否需要汇总参数194. isSum=(String)propMap.get(isSum).getValue();195. /获取流程填报期间196. period=(String)taskService.getVariable(task.getId(),197. period);198. /打印填报信息199. System.out.println(t提交汇总审批表单填报单位:+fillAccount);200. /加入批量审批列表201. completeTaskIdList.add(task.getId();202. 203. 204. System.out.println(t报表打开类型:+fillType);205. System.out.println(t填报表单:+sheetId);206. System.out.println(t填报期间:+period);207. System.out.println(t是否汇总:+isSum);208. System.out.println(t全部审批通过);209. for(Stringt:completeTaskIdList)210. taskSplete(t);211. 212. System.out.println(=admin汇总预算单任务已完成,汇总审批213. +completeTaskIdList.size()+个单位=);214. 215. privatestaticMapcreateMap(Listprops)216. Mapre=newHashMap();217. for(FormPropertyp:props)218. re.put(p.getId(),p);219. 220. returnre;221. 222. 3. 运行结果=kermit开始填报=打开报表类型:普通填报填报表单:1填报期间:2013-07是否汇总:不汇总当前节点账号:A1100提交审批表单填报单位:A1100=kermit填写预算单任务已完成=k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国电信福建公司春季招聘80人笔试参考题库附带答案详解
- 浙江国企招聘2025浙江青嘉建设有限公司(国有控股企业)招聘5人笔试参考题库附带答案详解
- 2025年中国船舶武汉船用机械有限责任公司暑期实习生招聘笔试参考题库附带答案详解
- 2025年内蒙古瀚石矿山工程有限公司校园招聘笔试参考题库附带答案详解
- 秦皇岛市初一数学试卷
- 启东中学三模数学试卷
- 2025中国中铁股份有限公司国际工程分公司员工公开招聘12人笔试参考题库附带答案详解
- 2025年跨境电商平台运营管理及风险防控合同
- 2025年度专业体育中心设施维护及保洁一体化服务合作协议
- 2025年高端珠宝设计专业人才培养及市场调研服务协议
- 洗煤厂安全知识培训课件
- 2025年中国邮政集团招聘笔试参考题库含答案解析
- 合同制合同范例
- 2024年司法考试刑法真题及答案
- 《隔离技术规范》课件
- 《云南省学校安全条例(修订草案)》知识培训
- 面向工业智能化时代的新一代工业控制体系架构白皮书
- 四年级下册数学方程题100道及答案
- 浙江省二轻集团招聘笔试题库2024
- 护士健康宣教指导手册系列老年病房
- 贵州省遵义市红花岗区2024届小升初模拟数学测试卷含解析
评论
0/150
提交评论