Activi7基础及表的自动生成

  1. 工作流: 在计算机的帮助下,能够实现流程的自动化控制
  2. 工作流系统: 如果一个系统具有流程的自动化管理则称为工作流系统
    BPM(Business Process Management): 业务流程管理
    BPMN(Business Process Model And Notation): 业务流程模型和符号
  3. SaaS-iHRM开发流程
    1.整合Activiti
    2.实现业务流程建模,使用BPMN实现业务流程图
    3.部署业务流程到Activiti
    4.启动流程实例
    5.查询待办任务
    6.处理待办任务
    7.结束流程
    4 安装IDEA插件流程设计器Activiti Designer
    首先在 IDEA 的 File 菜单中找到子菜单”Settings”,后面我们再选择左侧的“plugins”菜单,搜索actiBPM,如下图所示:
    Activi7基础及表的自动生成_第1张图片此时我们就可以搜索到 actiBPM 插件,它就是 Activiti Designer 的 IDEA 版本。
    点击安装,安装好后,页面如下:Activi7基础及表的自动生成_第2张图片
    我们先手动创建一个数据库activiti,接下来编写代码实现表的创建,activiti要能够工作,就必须有表结构的支撑。废话不多说,接下来看代码。
    1、首先使用idea创建一个maven项目,pom.xml文件中引入所需要的相关jar包,包括:
  1. activiti-engine-7.0.0.beta1.jar
  2. activiti 依赖的 jar 包:mybatis、alf4j、log4j 等
  3. activiti 依赖的 spring 包
  4. 数据库驱动
  5. 第三方数据连接池 dbcp
  6. 单元测试 Junit-4.12.jar
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <groupId>com.my.withub</groupId>
       <artifactId>ActivitiDemo</artifactId>
       <version>1.0-SNAPSHOT</version>
       <properties>
           <slf4j.version>1.6.6</slf4j.version>
           <log4j.version>1.2.12</log4j.version>
       </properties>
       <dependencies>
           <!--activiti-engine-7.0.0.beta1.jar-->
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-engine</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-spring</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-bpmn-model</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-bpmn-converter</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-json-converter</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti</groupId>
               <artifactId>activiti-bpmn-layout</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>org.activiti.cloud</groupId>
               <artifactId>activiti-cloud-services-api</artifactId>
               <version>7.0.0.Beta1</version>
           </dependency>
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>5.1.40</version>
           </dependency>
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.12</version>
           </dependency>
           <!-- log start -->
           <dependency>
               <groupId>log4j</groupId>
               <artifactId>log4j</artifactId>
               <version>${log4j.version}</version>
           </dependency>
           <dependency>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-api</artifactId>
               <version>${slf4j.version}</version>
           </dependency>
           <dependency>
               <groupId>org.slf4j</groupId>
               <artifactId>slf4j-log4j12</artifactId>
               <version>${slf4j.version}</version>
           </dependency>
           <!-- log end -->
           <dependency>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis</artifactId>
               <version>3.4.5</version>
           </dependency>
   
           <dependency>
               <groupId>commons-dbcp</groupId>
               <artifactId>commons-dbcp</artifactId>
               <version>1.4</version>
           </dependency>
       </dependencies>
       <repositories>
           <repository>
               <id>alfresco</id>
               <name>Activiti Releases</name>
               <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/</url>
               <releases>
                   <enabled>true</enabled>
               </releases>
           </repository>
      </repositories>

2、在 classpath 下创建日志文件log4j.propertiesActivi7基础及表的自动生成_第3张图片

    log4j.rootCategory=debug, CONSOLE, LOGFILE
    log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
        log4j.appender.LOGFILE=org.apache.log4j.FileAppender
        log4j.appender.LOGFILE.File=d:\axis.log
        log4j.appender.LOGFILE.Append=true
        log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
        log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

3、在 classpath 下创建 activiti.cgf.xml 文件:Activi7基础及表的自动生成_第4张图片
第一种方式:

 <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">
         <!--数据源配置dbcp-->
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
             <property name="driverClassName" value="com.mysql.jdbc.Driver" />
             <property name="url" value="jdbc:mysql://localhost:3306/activiti" />
             <property name="username" value="root" />
             <property name="password" value="123456" />
         </bean>
         <!--activiti单独运行的ProcessEngine配置对象(processEngineConfiguration),使用单独启动方式
             默认情况下:bean的id=processEngineConfiguration,如果不是默认的,需要在程序中进行id的配置-->
         <bean id="processEngineConfiguration01" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
             <!--注入数据源-->
              <property name="dataSource" ref="dataSource"></property>
         <!--数据库表生成策略-->
         <property name="databaseSchemaUpdate" value="true"/>
     </bean>
 </beans>

第二种方式:在 activiti.cfg.xml 配置文件中的 dataSource 和 processEngineConfiguration 也可以使用一次性配置出来。
Activi7基础及表的自动生成_第5张图片

  <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">
        <!--activiti单独运行的ProcessEngine配置对象(processEngineConfiguration),使用单独启动方式
            默认情况下:bean的id=processEngineConfiguration,如果不是默认的,需要在程序中进行id的配置
        -->
        <bean id="processEngineConfiguration01" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
            <!--注入数据源-->
            <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />
            <property name="jdbcUsername" value="root" />
            <property name="jdbcPassword" value="123456" />
            <!--数据库表生成策略-->
            <property name="databaseSchemaUpdate" value="true"/>
        </bean>
    </beans>

一般情况下,推荐使用第一种方式
关于 processEngineConfiguration 中的 databaseSchemaUpdate 参数,通过此参数设计 activiti
数据表的生成策略,参数如下:
false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。
true: 构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建。
create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。
drop-create:先删除表再创建表。
create: 构建流程引擎时创建数据库表, 关闭流程引擎时不删除这些表。
4、编写Java代码,实现表的自动创建
Activi7基础及表的自动生成_第6张图片

@Test
        public void test() {
            //创建ProcessEngineConfiguration,第一个参数:配置文件名称,第二个参数:ProcessEngineConfiguration的bean的id,当id为默认值时这个参数可以省略
            ProcessEngineConfiguration pec =         ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01");
            //通过ProcessEngineConfiguration创建ProcessEngine,此时会创建数据库表
            ProcessEngine processEngine = pec.buildProcessEngine();
            System.out.println(processEngine);
        }

运行以上程序后,我们可以观察数据库的表已经生成
Activi7基础及表的自动生成_第7张图片
数据库表的命名规则
Activiti 的表都以 ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的 API 对应。
ACT_RE_*: 'RE’表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU’表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_HI_*: 'HI’表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: GE 表示 general。通用数据, 用于不同场景下。
另外,还有一种方式
在这里插入图片描述

  @Test
        public void test() {
           // 必须满足两个条件:1、配置文件名称必须为activiti.cfg.xml  2、ProcessEngineConfiguration的bean的id必须为默认的processEngineConfiguration
            ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
            System.out.println(processEngine);
        }

注意:这种方式必须满足两个条件 : 1、配置文件名称必须为activiti.cfg.xml 2、ProcessEngineConfiguration的bean的id必须为默认的processEngineConfiguration

你可能感兴趣的:(Activi7基础及表的自动生成)