Activiti环境配置、项目搭建、与Spring集成、简单示例
来源:互联网 发布:java 悲观锁 编辑:程序博客网 时间:2024/06/06 00:34
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
- <!-- Jar版本管理 -->
- <properties>
- <springframework>4.0.2.RELEASE</springframework>
- <hibernate>4.3.4.Final</hibernate>
- <mysql.connector>5.1.29</mysql.connector>
- <c3p0>0.9.1.2</c3p0>
- <log4j>1.2.17</log4j>
- <activiti>5.15.1</activiti>
- <jstl>1.2</jstl>
- </properties>
- <dependencies>
- <!-- Spring web mvc -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${springframework}</version>
- </dependency>
- <!-- Spring framework 4中的orm包已经单独拿出来了,所以要和hibernate集成,需要此包 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${springframework}</version>
- </dependency>
- <!-- 提供JMS,Freemarker,Quartz集成服务 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${springframework}</version>
- </dependency>
- <!-- Hibernate -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>${hibernate}</version>
- </dependency>
- <!-- MySQL驱动 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql.connector}</version>
- </dependency>
- <!-- 连接池 -->
- <dependency>
- <groupId>c3p0</groupId>
- <artifactId>c3p0</artifactId>
- <version>${c3p0}</version>
- </dependency>
- <!-- log4j -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4j}</version>
- </dependency>
- <!-- jstl -->
- <dependency>
- <groupId>jstl</groupId>
- <artifactId>jstl</artifactId>
- <version>${jstl}</version>
- </dependency>
- <!-- activiti依赖 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-engine</artifactId>
- <version>${activiti}</version>
- </dependency>
- <!-- activiti 与 Spring 集成 -->
- <dependency>
- <groupId>org.activiti</groupId>
- <artifactId>activiti-spring</artifactId>
- <version>${activiti}</version>
- </dependency>
- <!-- junit -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
与Spring集成:
activiti.cfg.xml
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- Activiti处理引擎的配置,交由Spring管理 -->
- <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
- <!-- 配置数据源,和系统使用同一个数据源 -->
- <property name="dataSource" ref="dataSource" />
- <property name="databaseSchemaUpdate" value="true" />
- <property name="jobExecutorActivate" value="false" />
- <!-- 统一的事务管理 -->
- <property name="transactionManager" ref="transactionManager" />
- <property name="activityFontName" value="宋体" />
- <property name="labelFontName" value="宋体" />
- </bean>
- <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
- <property name="processEngineConfiguration" ref="processEngineConfiguration" />
- </bean>
- </beans>
activiti的API中,最终要的一个接口就是ProcessEngine,获取到ProcessEngine的实例,就获取了activiti体系中的所有api。重要的接口如下:
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
- RuntimeService runtimeService = processEngine.getRuntimeService();
- RepositoryService repositoryService = processEngine.getRepositoryService();
- TaskService taskService = processEngine.getTaskService();
- ManagementService managementService = processEngine.getManagementService();
- IdentityService identityService = processEngine.getIdentityService();
- HistoryService historyService = processEngine.getHistoryService();
- FormService formService = processEngine.getFormService();
Activiti的服务框架如下
ActivitiController代码
- package org.xdemo.example.activiti.controller;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.annotation.Resource;
- import javax.imageio.ImageIO;
- import javax.servlet.http.HttpServletResponse;
- import org.activiti.engine.ProcessEngine;
- import org.activiti.engine.RepositoryService;
- import org.activiti.engine.RuntimeService;
- import org.activiti.engine.TaskService;
- import org.activiti.engine.impl.cmd.GetDeploymentProcessDiagramCmd;
- import org.activiti.engine.impl.interceptor.Command;
- import org.activiti.engine.repository.ProcessDefinition;
- import org.activiti.engine.runtime.ProcessInstance;
- import org.activiti.engine.task.Task;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- @RequestMapping("/process")
- public class ActivitiController {
- @Resource
- ProcessEngine engine;
- /**
- * 列出所有流程模板
- */
- @RequestMapping(method = RequestMethod.GET)
- public ModelAndView list(ModelAndView mav) {
- mav.addObject("list", Util.list());
- mav.setViewName("process/template");
- return mav;
- }
- /**
- * 部署流程
- */
- @RequestMapping("deploy")
- public ModelAndView deploy(String processName, ModelAndView mav) {
- RepositoryService service = engine.getRepositoryService();
- if (null != processName)
- service.createDeployment()
- .addClasspathResource("diagrams/" + processName).deploy();
- List<ProcessDefinition> list = service.createProcessDefinitionQuery()
- .list();
- mav.addObject("list", list);
- mav.setViewName("process/deployed");
- return mav;
- }
- /**
- * 已部署流程列表
- */
- @RequestMapping("deployed")
- public ModelAndView deployed(ModelAndView mav) {
- RepositoryService service = engine.getRepositoryService();
- List<ProcessDefinition> list = service.createProcessDefinitionQuery()
- .list();
- mav.addObject("list", list);
- mav.setViewName("process/deployed");
- return mav;
- }
- /**
- * 启动一个流程实例
- */
- @SuppressWarnings("unchecked")
- @RequestMapping("start")
- public ModelAndView start(String id, ModelAndView mav) {
- RuntimeService service = engine.getRuntimeService();
- service.startProcessInstanceById(id);
- List<ProcessInstance> list = service.createProcessInstanceQuery()
- .list();
- mav.addObject("list", list);
- mav.setViewName("process/started");
- return mav;
- }
- /**
- * 所有已启动流程实例
- */
- @RequestMapping("started")
- public ModelAndView started(ModelAndView mav) {
- RuntimeService service = engine.getRuntimeService();
- List<ProcessInstance> list = service.createProcessInstanceQuery()
- .list();
- mav.addObject("list", list);
- mav.setViewName("process/started");
- return mav;
- }
- /**
- * 进入任务列表
- */
- @RequestMapping("task")
- public ModelAndView task(ModelAndView mav){
- TaskService service=engine.getTaskService();
- List<Task> list=service.createTaskQuery().list();
- mav.addObject("list", list);
- mav.setViewName("process/task");
- return mav;
- }
- /**
- *完成当前节点
- */
- @RequestMapping("complete")
- public ModelAndView complete(ModelAndView mav,String id){
- TaskService service=engine.getTaskService();
- service.complete(id);
- return new ModelAndView("redirect:task");
- }
- /**
- * 所有已启动流程实例
- *
- * @throws IOException
- */
- @RequestMapping("graphics")
- public void graphics(String definitionId, String instanceId,
- String taskId, ModelAndView mav, HttpServletResponse response)
- throws IOException {
- response.setContentType("image/png");
- Command<InputStream> cmd = null;
- if (definitionId != null) {
- cmd = new GetDeploymentProcessDiagramCmd(definitionId);
- }
- if (instanceId != null) {
- cmd = new ProcessInstanceDiagramCmd(instanceId);
- }
- if (taskId != null) {
- Task task = engine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
- cmd = new ProcessInstanceDiagramCmd(
- task.getProcessInstanceId());
- }
- if (cmd != null) {
- InputStream is = engine.getManagementService().executeCommand(cmd);
- int len = 0;
- byte[] b = new byte[1024];
- while ((len = is.read(b, 0, 1024)) != -1) {
- response.getOutputStream().write(b, 0, len);
- }
- }
- }
- }
示例:
<转载请注明来源: http://www.xdemo.org/spring-activiti-integration/ >
0 0
- Activiti环境配置、项目搭建、与Spring集成、简单示例
- Activiti环境配置、项目搭建、与Spring集成、简单示例
- Activiti环境配置、项目搭建、与Spring集成、简单示例
- activiti与spring集成配置
- Spring集成Activiti配置
- Spring 与 Activiti 集成
- Activiti Workflow HelloWorld 示例与测试环境搭建
- Spring与MyBatis搭建集成环境
- Spring Data 与MongoDB 集成一:入门篇(开发环境搭建和简单CRUD)
- Spring Data 与MongoDB 集成一:入门篇(开发环境搭建和简单CRUD)
- jenkins集成环境搭建示例
- Activiti集成到spring中配置
- CXF与Spring集成的简单配置
- activiti与spring集成(maven)
- activiti与spring集成(maven)
- Spring Boot与Activiti集成实战
- Activiti学习——Activiti与Spring集成
- Activiti工作流学习 Activiti工作流与spring集成
- activity与fragment之间的数据交互
- 那么30岁还一事无成到底晚不晚?
- 自定义随机键盘
- 数据库学习笔记(十二)
- C#中StreamWriter与BinaryWriter的区别兼谈编码(转)
- Activiti环境配置、项目搭建、与Spring集成、简单示例
- java异常处理
- 配置Spring数据源c3p0与dbcp
- 将java.util.Map转换为格式化json
- 正则表达式
- 获取mybatis可执行sql
- android开发training之actionbar之1
- 谷歌浏览器常用好用的快捷键总结
- Unity之EditorGUILayout-TextField、Toggle - 七