Activiti环境配置、项目搭建、与Spring集成、简单示例
来源:互联网 发布:天龙装备评分知多少 编辑:程序博客网 时间:2024/05/16 16:16
概念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/ >
6 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集成
- Linux Skype 4.3 下载地址
- [转载]AngularJs学习笔记--directive
- window.dialogArguments
- android递归查找文件
- JAVA窗体中嵌入cmd窗口
- Activiti环境配置、项目搭建、与Spring集成、简单示例
- Codeforces Round #253 (Div. 1) B. Andrey and Problem
- 矩阵快速幂uva10870
- 【Python】Python27在Win7 64bit系统下的安装
- 土地利用对生态系统结构的影响
- Military Discount Oakley Sunglasses Frame Ash/Gold
- MyEclipse设置编码方式
- Latest Oakley Sunglasses Prescription Lowest Price
- Android源码混淆 中 proguard.cfg 或者proguard-android.txt 脚本文件编写知识