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

来源:互联网 发布:代码优化的方法和准则 编辑:程序博客网 时间:2024/06/05 02:09

     上篇主要讲述的是对于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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://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文件的方式有很多种,需要我们慢慢深入。


1 0
原创粉丝点击