Activiti-简单使用

Posted CaoPengCheng&

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti-简单使用相关的知识,希望对你有一定的参考价值。

Activiti-简单使用

【6】Activiti软件环境

jdk1.6版本及以上
数据库:h2/mysql/oracle/mssql/db2等
支持Activiti 5 运行的jar包,在activiti-5.13\\wars\\activiti-rest\\WEB-INF\\lib添加
集成开发工具Myeclipse 8.6以上

【7】Activiti架构及核心API

- activiti.cfg.xml
- ProcessEngineConfigation
- ProcessEngine
- RepositoryService
- TaskService
- IdentityService
- FormService
- RuntimeService
- ManagementService
- HistoryService

【8】使用

(1)设置流程定义图bpmn

	assignee:代理人,指定人,处理人

(2)创建流程引擎及工作流数据表

	- 数据库及表可以自动创建
		可以在配置数据库连接时,实现自动创建数据库和表
	- 取得ProcessEngine对象
		先取得ProcessEngineConfigation对象,再由该对象来构建ProcessEngine

/*
*1,通过代码新式创建

    • 取得ProcessEngineConfigation对象
    • 设置数据库连接
    • 设置创建表的策略(当没有表时自动创建)
    • 通过ProcessEngineConfigation对象创建ProcessEngine对象
      /
//取得流程引擎,且自动创建Activiti涉及的数据库和表
	public class TestActiviti{
		public void createProcessEngine(){
			 ProcessEngineConfigation engineConfigation = ProcessEngineConfigation.createStandaloneProcessEngineConfiguration();

			 engineConfigation.setJdbcDriver(jdbcDriver);
			 engineConfigation.setJdbcUrl(jdbcUrl);
			 engineConfigation.setJdbcUsername(userName);
			 engineConfigation.setJdbcPassword(passWord);

			 //DB_SCHEMA_UPDATA_FALSE 不
			 //DB_SCHEMA_UPDATA_CREATE_DTOP 先删除,再创建
			 //DB_SCHEMA_UPDATA_TRUE 创建
			 engineConfigation.setDatabaseSchemaUpdate(DB_SCHEMA_UPDATA_TRUE);

			 ProcessEngine processEngine = engineConfigation.buildProcessEngine();
		}
	}

/*
*2,通过加载activit.cfg.xml获取流程引擎和自动创建数据库
*
/

public class TestActiviti{
		public void createProcessEngine(){
			 //从类加载路径加载资源
			 ProcessEngineConfigation engineConfigation=ProcessEngineConfigation.createProcessEngineConfigurationFromResource("activit.cfg.xml");
			 ProcessEngine processEngine = engineConfigation.buildProcessEngine();
		}
	}
【activit.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">

 		<!-- 配置ProcessEngineConfiguration -->
		<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

		 	<!-- 配置数据库连接 -->
		    <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
		    <property name="jdbcDriver" value="org.h2.Driver" />
		    <property name="jdbcUsername" value="sa" />
		    <property name="jdbcPassword" value="" />

		 	<!-- 配置创建表策略 -->
		    <property name="databaseSchemaUpdate" value="true" />
		 
		    <property name="jobExecutorActivate" value="false" />
		    <property name="asyncExecutorEnabled" value="true" />
		    <property name="asyncExecutorActivate" value="false" />
		 
		    <property name="mailServerHost" value="mail.my-corp.com" />
		    <property name="mailServerPort" value="5025" />
	  </bean>
	</beans>

/*
*3,通过ProcessEngine来获取默认的流程引擎
*
/

	 public class TestActiviti{
		public void createProcessEngine(){
			//默认加载类路径下的activiti.cfg.xml
			ProcessEngine processEngine=
			ProcessEngine.getDefaultProcessEngine();

		}
	}
【activit.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">

 		<!-- 配置ProcessEngineConfiguration -->
		<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

		 	<!-- 配置数据库连接 -->
		    <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
		    <property name="jdbcDriver" value="org.h2.Driver" />
		    <property name="jdbcUsername" value="sa" />
		    <property name="jdbcPassword" value="" />
		 	<!-- 配置创建表策略 -->
		    <property name="databaseSchemaUpdate" value="true" />
		 
		    <property name="jobExecutorActivate" value="false" />
		    <property name="asyncExecutorEnabled" value="true" />
		    <property name="asyncExecutorActivate" value="false" />
		 
		    <property name="mailServerHost" value="mail.my-corp.com" />
		    <property name="mailServerPort" value="5025" />
	  </bean>
	</beans>

(3)部署流程

	public class TestActiviti{
		public void deploy(){
			//获取流程引擎
			ProcessEngine processEngine=
			ProcessEngine.getDefaultProcessEngine();

			//获取仓库服务:管理流程定义
			RepositoryService repositoryService = processEngine.getRepositoryService();

			Deployment deploy = repositoryService
			.createDeployment()       				 //创建一个部署的构建器
			.addClasspathResource(bpmn资源路径)       //从类路径添加资源,一次只能添加一个
			.addClasspathResource(png资源路径)       //从类路径添加资源,一次只能添加一个
			.name("流程命名")
			.category("")  					//设置部署的类别
			.deploy();  					//部署

		}
	}
【act_re_deployment 部署表】
	id由act_ge_property的next_dbid绝定
【act_re_procdef 流程定义表】
	该表的key属性是bpmn的id决定
	该表的name属性是bpmn的name绝定
【act_ge_property 通用属性表 】
	id生成策略,影响部署id
【act_ru_execution 执行对象,流程实例,流程对象】
【act_ru_task 任务表】

(4)启动流程

	public class TestActiviti{
		public void startProcess(){
			String processDefiKey="leaveB";
			//获取流程引擎
			ProcessEngine processEngine=
			ProcessEngine.getDefaultProcessEngine();

			//取运行时服务
			RuntimeService runtimeService = processEngine.getRuntimeService();

			//通过流程定义的key来执行流程,取得流程实例
			ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefiKey);

			System.out.println("流程实例id"+pi.getId());
			System.out.println("流程定义id"+pi.getProcessDefinitionId());
		}
	}

(5)查询任务

	public class TestActiviti{
		public void queryTask(){
			//获取流程引擎
			ProcessEngine processEngine=
			ProcessEngine.getDefaultProcessEngine();

			//任务办理人
			String assignee="张三";

			//取得任务服务
			TaskService taskService = processEngine.getTaskService();

			//创建任务查询对象
			TaskQuery taskQuery = taskService.createtaskquery();

			//办理人的任务列表
			List<Task> list = taskQuery.taskAssinee(assignee).liat();

			//遍历任务列表
			if(list!=null && list.size()>0){
				for(Task task:list){
					Sysyem.out.println("任务的办理人"+task.getAssignee());
					Sysyem.out.println("任务的id"+task.getId());
					Sysyem.out.println("任务的名称"+task.getName());
				}

			}

		}
	}

(6)完成任务

	public class TestActiviti{
		public void compileTask(){
			//获取流程引擎
			ProcessEngine processEngine=
			ProcessEngine.getDefaultProcessEngine();

			String taskId="204";

			//taskId:任务id
			processEngine.getTaskService().complete(taskId);
			
		}
	}

以上是关于Activiti-简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Activiti-简单使用

不要在片段中显示列表视图项

Activiti工作流简单入门 (zhuan)

Activiti系列——最简单的Activiti程序

activiti-用户与用户组

activiti实战--第二章--搭建Activiti开发环境及简单示例