工作流创建数据库


初始化数据库操作

下面就来初始化数据库,等会就可以看到经常用的23张数据库表了。

第一种方式

/**使用代码创建工作流需要的23张表*/  
    @Test  
    public void createTable(){  
        //流程引擎ProcessEngine对象,所有操作都离不开引擎对象  
        ProcessEngineConfiguration processEngineConfiguration =  
                ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();  
        //连接数据库的配置  
        processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");  
        processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8");  
        processEngineConfiguration.setJdbcUsername("root");  
        processEngineConfiguration.setJdbcPassword("root");  
      
        //三个配置  
        //1.先删除表,再创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP="create-drop"  
        //2.不能自动创建表,需要表存在:processEngineConfiguration.DB_SCHEMA_UPDATE_FALSE="false"  
        //3.如果表存在,就自动创建表:processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE="true"  
        processEngineConfiguration.setDatabaseSchema(processEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);  
        //获取工作流的核心对象,ProcessEngine对象  
        ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();  
        System.out.println("processEngine!:"+processEngine+"Create Success!!");  
    }


第二种方式

在第一种方式中,我们看到有很多关于数据库连接操作的信息,为了方便Activiti为我们提供了activiti.cfg.xml的配置方式,直接把此文件放置到Classpath下即可,配置文件的信息如下

先在src/test/resources下创建一个xml文件 名字是:activiti.cfg.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
       
	<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">  
   
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />  
    <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />  
    <property name="jdbcUsername" value="root" />  
    <property name="jdbcPassword" value="root" />  
   
    <property name="databaseSchemaUpdate" value="true" />  
   
  </bean>  
</beans>

调用 ProcessEngineConfiguration中的createProcessEngineConfigurationFromResourceDefault方法来调用配置文件

/**使用activiti.cfg.xml方式创建数据库*/
    @Test
    public void testCreateTableWithXml(){
    	ProcessEngineConfiguration processEngineConfiguration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
    	ProcessEngine processEngine=processEngineConfiguration.buildProcessEngine();
    	System.out.println("processEngine:"+processEngine+"Create Success!!");
    }

 23张表分类



下面来一点一点的来分析一下上图结构。

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

act_re_deployment:部署数据表,一次部署可以添加多个资源,资源会被保存到资源表(act_ge_bytearray)中;而部署的信息,则保存到部署表中。

act_re_procdef:流程定义表,如果发布部署的文件是流程文件,除了将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,保存到此表中。

act_ge_bytearray:资源表,用来保存资源相应的信息

act_ge_property:用来生成下一个主键信息。


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

act_ru_execution:正在执行的流程实例表,当流程启动后,会产生一个流程实例,同时会产生相应的执行流,那么流程实例和执行流数据均会被保存到act_ru_execution表中。

act_hi_procinst:流程实例的历时表,与act_ru_execution正好对应。

act_ru_task:正在执行的任务列表(只有任务节点(UserTask),该表中才有数据)

act_hi_actinst:所有活动的历史表(包括所有的节点)


       与流程变量相关的表

act_ru_variable: 正在执行的流程变量表,用来保存在整个流程执行过程中用到的变量信息

act_hi_varinst :历史的流程变量表,与act_ru_variable正好对应


与组任务表相关的表

act_ru_identitylink :正在执行的组任务表

act_hi_identitylink:历史的人员表



与组织结构相关的表

act_id_group :工作流中的角色表

act_id_user :工作流中的用户表

act_id_membership:中间表,关联关系表



以上就是大致的23张数据表,下面串起来,来把我们的知识连成线。




下面就通过上面这个流程的例子,来把我们上述的表给串起来。

首先是部署和流程相关方面的描述,上图从开始到结束是一个完整的流程,所以就是所谓的一次部署act_re_deployment,然后在整个流程中,我们可能会涉及到多个流程的文件,此时我们会把文件存储到act_ge_bytearray表中,然后把每个文件的详细信息存储到act_re_procdef中。

部署完流程完后,就要开始执行我们的流程了,从开始节点算起,每个节点都是一个流程实例,正在执行的会存储到act_ru_execution,执行完后,此表就会删除,然后把历史记录存储到act_hi_procinst。中间涉及到的用户任务节点,也就是UserTask节点,历史和正在执行的都会分别存储到act_hi_actinst、act_ru_task中。如果在流程中间执行中,设计到变量的传递,比如我们想把流程的执行者,作为变量来传递的话,就会存储到act_ru_variable和act_hi_varinst中。

最后,在整个流程执行过程中,设计到人员的操作信息,存储到act_id_user 中,如果设计到组的概念的话,那么某个用户是属于某个组的,就好比工作里面的部门一样,某些职责只能某些部门来执行,因此在Activi中也涉及到了组的概念,存储到act_id_group ,他们之间的联系用第三张表act_id_membership来关联。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值