【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
- 【Activiti 基础篇二】与数据库的交互
- Activiti 基础总结二
- 录播教室预约系统(二)-服务器端与数据库的交互
- kindeditor(二) kindeditor与数据库交互
- XML与数据库的交互
- EA与数据库的交互
- hibernateTemplate与数据库的交互
- 数据库与python的交互
- Activiti支持的数据库
- c#数据库交互常用的基础方式
- 【应用篇】Activiti监听(抽象)与业务颗粒结合的简单应用(二)
- 【应用篇】Activiti监听(抽象)与业务颗粒结合的简单应用(二)
- Activiti实体对象与类和数据库表的映射
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互
- 【Activiti 基础篇四】流程变量设置与获取方式
- HTML+CSS基础篇(二)——表单标签,与浏览器交互
- Android基础之Fragment与Activity交互详解(二)
- JDK&JRE&JVM_跨平台特性_开发环境配置_dos命令_字符集JAVA001-006
- Android UI ActionBar功能-ActionBarProvider的使用
- Android Studio更新升级方法
- 更新二进制位
- tinyxml源码的使用
- 【Activiti 基础篇二】与数据库的交互
- 这个家族没有后盾,不狠——影响
- Nginx 的 TCP 负载均衡介绍
- [leetcode] 221 Maximal Square(最大全1正方形 &动态规划)
- VisualVM 入门指南
- Sorting Lists1
- Android UI ActionBar功能-ActionBarSherlock 的使用
- iOS编程-------UIImageView、手势识别器UIGestureRecognizer
- SynchronousQueue的简单应用