【Activiti 基础篇二】与数据库的交互

     上篇主要讲述的是对于Activiti的一个初步介绍以及插件的安装,本篇则学习一下一个Activiti强大的数据库操作,对于一个Activiti来说,不管其简单复杂,他都是通过23张表来管理你整个的流程,以Mysql为例,创建说明:

     创建数据库,前提条件是已经引入了Activiti和MySql使用的Jar包,我们可以直接定义一个方法来完成这个操作:

     首先第一步我们要创建一个流程引擎对象,因为只是应用于一次,所以我们创建一个单例的流程引擎

                // 创建一个单例的流程引擎对象
		ProcessEngineConfiguration configuration = ProcessEngineConfiguration
				.createStandaloneProcessEngineConfiguration();

     第二步则是连接操作,数据库连接操作4大步:

// 定义连接mysql数据库
		configuration.setJdbcDriver("com.mysql.jdbc.Driver");
		configuration
				.setJdbcUrl("jdbc:mysql://localhost:3306/itcast0109Activiti?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8");
		configuration.setJdbcUsername("root");
		configuration.setJdbcPassword("123");

     第三步,因为是创建数据库,所以采用ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE的方式来操作

/*
		 * public static final String DB_SCHEMA_UPDATE_FALSE = "false";
		 * //操作23张表的时候,如果表不存在,就抛出异常,不能自动创建23张表
		 * 
		 * public static final String DB_SCHEMA_UPDATE_CREATE_DROP =
		 * "create-drop"; //每次操作,都会先删除表,再创建表
		 * 
		 * public static final String DB_SCHEMA_UPDATE_TRUE = "true";
		 * //如果表不存在,就创建表,如果表存在,就直接操作
		 */
		configuration
				.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
		// Activiti核心对象(流程引擎)
		ProcessEngine processEngine = configuration.buildProcessEngine();
		System.out.println("processEngine:" + processEngine);

     进行到此为止,你打开自己MySQL数据库则可以看见Activiti的23张表,这样也就完成了数据库的创建。当然我们完全可以采用XML的方式来完成我们想要的操作,毕竟这样写局限性太大了。我们可以把这些信息全部平移到xml文件中,然后通过ProcessEngineConfiguration的方法来读取XML文件就可。

activiti.cfg.xml文件的代码:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
	<!-- 查找单例流程引擎的路径作为class值 -->
	<bean id="processEngineConfiguration"
		class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
		<!--数据库的连接操作,注意连接符"&"必须要转义"amp;" -->
		<property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl"
			value="jdbc:mysql://localhost:3306/itcast0109Activiti?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8"></property>
		<property name="jdbcUsername" value="root"></property>
		<property name="jdbcPassword" value="123"></property>
		<!-- true没有表就创建表,有表就直接操作 -->
		<property name="databaseSchemaUpdate" value="true"></property>
	</bean>
</beans>

读取xml文件:

                ProcessEngineConfiguration configuration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        	ProcessEngine processEngine=configuration.buildProcessEngine();
     其实说白了就是一种方式,第一种便于我们demo实现,而第二种则是更方便的用于我们的项目开发中。本篇介绍到此结束,下面是常用的一些表的信息查询与注释,

  • 与部署对象和流程定义相关的表

  • SELECT * FROM act_re_deployment    #部署对象表
  • SELECT * FROM act_re_procdef  #流程定义表
  • SELECT * FROM act_ge_bytearray   #存放资源文件

  • 流程实例,执行对象,任务相关的表

  • SELECT * FROM act_ru_execution    #正在执行的执行对象表
  • SELECT * FROM act_hi_procinst    #流程实例的历史表(一个流程启动,该表中就只有一个数据,表示流程实例
  • SELECT * FROM act_ru_task     #正在执行的任务表(只有任务节点(UserTask),该表中才有数据
  • SELECT * FROM act_hi_taskinst   #任务的历史表
  • SELECT * FROM act_hi_actinst  #所有活动的历史表(包括所有的节点)

  • 流程变量

  •  SELECT * FROM act_ru_variable #正在执行的流程变量表
  •  SELECT * FROM act_hi_varinst  #历史的流程变量表

这些也只是一些皮毛而已,并且读取XMl文件的方式有很多种,需要我们慢慢深入。


posted on 2015-10-04 23:49  huohuoL  阅读(164)  评论(0编辑  收藏  举报

导航