`
dawuafang
  • 浏览: 1112618 次
文章分类
社区版块
存档分类
最新评论

Activiti环境配置、项目搭建、与Spring集成、简单示例

 
阅读更多
WFMS(工作流管理系统):http://baike.baidu.com/view/977667.htm

WFMC(工作流管理联盟):http://baike.baidu.com/view/2497858.htm

示例项目下载

http://pan.baidu.com/s/1gd3iNfH

环境搭建:

FBI WARNING两个视频,屏幕录像专家录制,非病毒,本站愿意承担责任,下载完文件请先核对MD5。

1.Eclipse配置Tomcat和部署WEB应用.exe(MD5:81c1dfb994ff5b2094ce0dac244da598)

http://pan.baidu.com/s/1kTgb8PL

2.Activiti项目搭建与Spring集成配置.exe(MD5:3debeec0a00dc061c782ca0cdcc97f7d)

http://pan.baidu.com/s/1sjyKCY5

项目搭建:

Maven项目POM

  1. <!--Jar版本管理-->
  2. <properties>
  3. <springframework>4.0.2.RELEASE</springframework>
  4. <hibernate>4.3.4.Final</hibernate>
  5. <mysql.connector>5.1.29</mysql.connector>
  6. <c3p0>0.9.1.2</c3p0>
  7. <log4j>1.2.17</log4j>
  8. <activiti>5.15.1</activiti>
  9. <jstl>1.2</jstl>
  10. </properties>
  11. <dependencies>
  12. <!--Springwebmvc-->
  13. <dependency>
  14. <groupId>org.springframework</groupId>
  15. <artifactId>spring-webmvc</artifactId>
  16. <version>${springframework}</version>
  17. </dependency>
  18. <!--Springframework4中的orm包已经单独拿出来了,所以要和hibernate集成,需要此包-->
  19. <dependency>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring-orm</artifactId>
  22. <version>${springframework}</version>
  23. </dependency>
  24. <!--提供JMS,Freemarker,Quartz集成服务-->
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-context-support</artifactId>
  28. <version>${springframework}</version>
  29. </dependency>
  30. <!--Hibernate-->
  31. <dependency>
  32. <groupId>org.hibernate</groupId>
  33. <artifactId>hibernate-core</artifactId>
  34. <version>${hibernate}</version>
  35. </dependency>
  36. <!--MySQL驱动-->
  37. <dependency>
  38. <groupId>mysql</groupId>
  39. <artifactId>mysql-connector-java</artifactId>
  40. <version>${mysql.connector}</version>
  41. </dependency>
  42. <!--连接池-->
  43. <dependency>
  44. <groupId>c3p0</groupId>
  45. <artifactId>c3p0</artifactId>
  46. <version>${c3p0}</version>
  47. </dependency>
  48. <!--log4j-->
  49. <dependency>
  50. <groupId>log4j</groupId>
  51. <artifactId>log4j</artifactId>
  52. <version>${log4j}</version>
  53. </dependency>
  54. <!--jstl-->
  55. <dependency>
  56. <groupId>jstl</groupId>
  57. <artifactId>jstl</artifactId>
  58. <version>${jstl}</version>
  59. </dependency>
  60. <!--activiti依赖-->
  61. <dependency>
  62. <groupId>org.activiti</groupId>
  63. <artifactId>activiti-engine</artifactId>
  64. <version>${activiti}</version>
  65. </dependency>
  66. <!--activiti与Spring集成-->
  67. <dependency>
  68. <groupId>org.activiti</groupId>
  69. <artifactId>activiti-spring</artifactId>
  70. <version>${activiti}</version>
  71. </dependency>
  72. <!--junit-->
  73. <dependency>
  74. <groupId>junit</groupId>
  75. <artifactId>junit</artifactId>
  76. <version>3.8.1</version>
  77. <scope>test</scope>
  78. </dependency>
  79. </dependencies>


与Spring集成:

activiti.cfg.xml

  1. <beansxmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
  4. <!--Activiti处理引擎的配置,交由Spring管理-->
  5. <beanid="processEngineConfiguration"class="org.activiti.spring.SpringProcessEngineConfiguration">
  6. <!--配置数据源,和系统使用同一个数据源-->
  7. <propertyname="dataSource"ref="dataSource"/>
  8. <propertyname="databaseSchemaUpdate"value="true"/>
  9. <propertyname="jobExecutorActivate"value="false"/>
  10. <!--统一的事务管理-->
  11. <propertyname="transactionManager"ref="transactionManager"/>
  12. <propertyname="activityFontName"value="宋体"/>
  13. <propertyname="labelFontName"value="宋体"/>
  14. </bean>
  15. <beanid="processEngine"class="org.activiti.spring.ProcessEngineFactoryBean">
  16. <propertyname="processEngineConfiguration"ref="processEngineConfiguration"/>
  17. </bean>
  18. </beans>

activiti的API中,最终要的一个接口就是ProcessEngine,获取到ProcessEngine的实例,就获取了activiti体系中的所有api。重要的接口如下:

  1. ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();
  2. RuntimeServiceruntimeService=processEngine.getRuntimeService();
  3. RepositoryServicerepositoryService=processEngine.getRepositoryService();
  4. TaskServicetaskService=processEngine.getTaskService();
  5. ManagementServicemanagementService=processEngine.getManagementService();
  6. IdentityServiceidentityService=processEngine.getIdentityService();
  7. HistoryServicehistoryService=processEngine.getHistoryService();
  8. FormServiceformService=processEngine.getFormService();

Activiti的服务框架如下

ActivitiController代码

  1. packageorg.xdemo.example.activiti.controller;
  2. importjava.awt.image.BufferedImage;
  3. importjava.io.IOException;
  4. importjava.io.InputStream;
  5. importjava.util.HashMap;
  6. importjava.util.List;
  7. importjava.util.Map;
  8. importjavax.annotation.Resource;
  9. importjavax.imageio.ImageIO;
  10. importjavax.servlet.http.HttpServletResponse;
  11. importorg.activiti.engine.ProcessEngine;
  12. importorg.activiti.engine.RepositoryService;
  13. importorg.activiti.engine.RuntimeService;
  14. importorg.activiti.engine.TaskService;
  15. importorg.activiti.engine.impl.cmd.GetDeploymentProcessDiagramCmd;
  16. importorg.activiti.engine.impl.interceptor.Command;
  17. importorg.activiti.engine.repository.ProcessDefinition;
  18. importorg.activiti.engine.runtime.ProcessInstance;
  19. importorg.activiti.engine.task.Task;
  20. importorg.springframework.stereotype.Controller;
  21. importorg.springframework.web.bind.annotation.RequestMapping;
  22. importorg.springframework.web.bind.annotation.RequestMethod;
  23. importorg.springframework.web.servlet.ModelAndView;
  24. @Controller
  25. @RequestMapping("/process")
  26. publicclassActivitiController{
  27. @Resource
  28. ProcessEngineengine;
  29. /**
  30. *列出所有流程模板
  31. */
  32. @RequestMapping(method=RequestMethod.GET)
  33. publicModelAndViewlist(ModelAndViewmav){
  34. mav.addObject("list",Util.list());
  35. mav.setViewName("process/template");
  36. returnmav;
  37. }
  38. /**
  39. *部署流程
  40. */
  41. @RequestMapping("deploy")
  42. publicModelAndViewdeploy(StringprocessName,ModelAndViewmav){
  43. RepositoryServiceservice=engine.getRepositoryService();
  44. if(null!=processName)
  45. service.createDeployment()
  46. .addClasspathResource("diagrams/"+processName).deploy();
  47. List<ProcessDefinition>list=service.createProcessDefinitionQuery()
  48. .list();
  49. mav.addObject("list",list);
  50. mav.setViewName("process/deployed");
  51. returnmav;
  52. }
  53. /**
  54. *已部署流程列表
  55. */
  56. @RequestMapping("deployed")
  57. publicModelAndViewdeployed(ModelAndViewmav){
  58. RepositoryServiceservice=engine.getRepositoryService();
  59. List<ProcessDefinition>list=service.createProcessDefinitionQuery()
  60. .list();
  61. mav.addObject("list",list);
  62. mav.setViewName("process/deployed");
  63. returnmav;
  64. }
  65. /**
  66. *启动一个流程实例
  67. */
  68. @SuppressWarnings("unchecked")
  69. @RequestMapping("start")
  70. publicModelAndViewstart(Stringid,ModelAndViewmav){
  71. RuntimeServiceservice=engine.getRuntimeService();
  72. service.startProcessInstanceById(id);
  73. List<ProcessInstance>list=service.createProcessInstanceQuery()
  74. .list();
  75. mav.addObject("list",list);
  76. mav.setViewName("process/started");
  77. returnmav;
  78. }
  79. /**
  80. *所有已启动流程实例
  81. */
  82. @RequestMapping("started")
  83. publicModelAndViewstarted(ModelAndViewmav){
  84. RuntimeServiceservice=engine.getRuntimeService();
  85. List<ProcessInstance>list=service.createProcessInstanceQuery()
  86. .list();
  87. mav.addObject("list",list);
  88. mav.setViewName("process/started");
  89. returnmav;
  90. }
  91. /**
  92. *进入任务列表
  93. */
  94. @RequestMapping("task")
  95. publicModelAndViewtask(ModelAndViewmav){
  96. TaskServiceservice=engine.getTaskService();
  97. List<Task>list=service.createTaskQuery().list();
  98. mav.addObject("list",list);
  99. mav.setViewName("process/task");
  100. returnmav;
  101. }
  102. /**
  103. *完成当前节点
  104. */
  105. @RequestMapping("complete")
  106. publicModelAndViewcomplete(ModelAndViewmav,Stringid){
  107. TaskServiceservice=engine.getTaskService();
  108. service.complete(id);
  109. returnnewModelAndView("redirect:task");
  110. }
  111. /**
  112. *所有已启动流程实例
  113. *
  114. *@throwsIOException
  115. */
  116. @RequestMapping("graphics")
  117. publicvoidgraphics(StringdefinitionId,StringinstanceId,
  118. StringtaskId,ModelAndViewmav,HttpServletResponseresponse)
  119. throwsIOException{
  120. response.setContentType("image/png");
  121. Command<InputStream>cmd=null;
  122. if(definitionId!=null){
  123. cmd=newGetDeploymentProcessDiagramCmd(definitionId);
  124. }
  125. if(instanceId!=null){
  126. cmd=newProcessInstanceDiagramCmd(instanceId);
  127. }
  128. if(taskId!=null){
  129. Tasktask=engine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
  130. cmd=newProcessInstanceDiagramCmd(
  131. task.getProcessInstanceId());
  132. }
  133. if(cmd!=null){
  134. InputStreamis=engine.getManagementService().executeCommand(cmd);
  135. intlen=0;
  136. byte[]b=newbyte[1024];
  137. while((len=is.read(b,0,1024))!=-1){
  138. response.getOutputStream().write(b,0,len);
  139. }
  140. }
  141. }
  142. }

示例:


<转载请注明来源: http://www.xdemo.org/spring-activiti-integration/ >

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics