1.activiti工作流-helloworld
来源:互联网 发布:手机版数据库 编辑:程序博客网 时间:2024/06/06 13:01
1.下载activiti
http://activiti.org/download.html
打开源码包,进入wars的实例工程,\activiti-5.22.0\wars\WEB-INF\lib,导入activiti-rest目录中WEB-INF\lib下所有包。添加到classpath中。
由于我们使用的是Mysql数据库,Mysql数据库的链接驱动Activiti官方包中并没有提供,需要我们自己导入。手动导入mysql-connector-java.jar,添加到classpath下。
2.搭建环境
流程设计器:http://download.csdn.net/detail/qq_31776219/9858078
把压缩包中的内容放入myeclipse根目录的dropins文件夹下
修改activiti.link的目录为你的实际目录
3.helloworld前期准备
安装完上述,即可创建activiti project
设置当保存流程时,自动创建流程图
拷贝两个配置文件:activiti-context.xml 、 log4j.properties 日志配置文件
http://download.csdn.net/detail/qq_31776219/9858081
把两个文件放入resource目录下即可。
两种方式建立工作流所需的23张表
package junit;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.junit.Test;public class TestActiviti { /**使用代码创建工作流需要的23张表*/ @Test public void createTable(){ ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); //连接数据库的配置 processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver"); processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0711activiti?useUnicode=true&characterEncoding=utf8"); processEngineConfiguration.setJdbcUsername("root"); processEngineConfiguration.setJdbcPassword("root"); /** public static final String DB_SCHEMA_UPDATE_FALSE = "false";不能自动创建表,需要表存在 public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";先删除表再创建表 public static final String DB_SCHEMA_UPDATE_TRUE = "true";如果表不存在,自动创建表 */ processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); //工作流的核心对象,ProcessEnginee对象 ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); System.out.println("processEngine:"+processEngine); } /**使用配置文件创建工作流需要的23张表*/ @Test public void createTable_2(){// ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");// //工作流的核心对象,ProcessEnginee对象// ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml") // .buildProcessEngine(); System.out.println("processEngine:"+processEngine); }}
在右边工具栏找到start、usertask、end
画开始到任务到结束,用sequenceflow连线
name表示流程名称,assignee表示审批的人
package a_helloworld;import java.util.List;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;import org.activiti.engine.repository.Deployment;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.junit.Test;public class HelloWorld { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /**部署流程定义*/ @Test public void deploymentProcessDefinition(){ Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service .createDeployment()//创建一个部署对象 .name("helloworld入门程序")//添加部署的名称 .addClasspathResource("diagrams/helloworld.bpmn")//从classpath的资源中加载,一次只能加载一个文件 .addClasspathResource("diagrams/helloworld.png")//从classpath的资源中加载,一次只能加载一个文件 .deploy();//完成部署 System.out.println("部署ID:"+deployment.getId());//1 System.out.println("部署名称:"+deployment.getName());//helloworld入门程序 } /**启动流程实例*/ @Test public void startProcessInstance(){ //流程定义的key String processDefinitionKey = "myProcess"; ProcessInstance pi = processEngine.getRuntimeService()//与正在执行的流程实例和执行对象相关的Service .startProcessInstanceByKey(processDefinitionKey);//使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动 System.out.println("流程实例ID:"+pi.getId());//流程实例ID 101 System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID helloworld:1:4 } /**查询当前人的个人任务*/ @Test public void findMyPersonalTask(){ String assignee = "王五"; List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的Service .createTaskQuery()//创建任务查询对象 .taskAssignee(assignee)//指定个人任务查询,指定办理人 .list(); if(list!=null && list.size()>0){ for(Task task:list){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务的办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("########################################################"); } } } /**完成我的任务*/ @Test public void completeMyPersonalTask(){ //任务ID String taskId = "1002"; processEngine.getTaskService()//与正在执行的任务管理相关的Service .complete(taskId); System.out.println("完成任务:任务ID:"+taskId); }}
附:
activiti.cfg.xml(activiti的配置文件)
Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
定义数据库配置参数:
jdbcUrl: 数据库的JDBC URL。
jdbcDriver: 对应不同数据库类型的驱动。
jdbcUsername: 连接数据库的用户名。
jdbcPassword: 连接数据库的密码。
基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):
jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。
jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
- 1.activiti工作流-helloworld
- Activiti 工作流 HelloWorld 02
- [学习小结]Activiti 工作流Helloworld
- Activiti工作流(4):编写一个HelloWorld
- Activiti工作流概念及入门案例HelloWorld
- 【Activiti工作流】1.工作流概念
- Activiti-工作流
- activiti工作流
- 工作流activiti
- activiti工作流
- Activiti工作流
- activiti工作流
- 工作流 activiti
- Activiti工作流
- Activiti 工作流
- 工作流Activiti
- activiti工作流
- Activiti工作流
- CSS文本居中问题
- 关于eclipse里的项目字符集问题
- Linux 常用的帮助命令
- 336. Palindrome Pairs
- unity简易小地图的实现(NGUI)
- 1.activiti工作流-helloworld
- Python中的random模块用于生成随机数
- Java 注解Annotation
- SoapUI5.2.1之REST请求工作
- Hololens之NGUI
- ffmpeg新旧接口对比
- Exchanger两个线程之间的数据交换
- 内存泄漏和内存溢出
- 小试身手python 输出最大值与最小值