zoukankan      html  css  js  c++  java
  • activiti学习第一天

    公司项目组在考虑工作流,首选了activiti,首先我们要明确为什么要使用activiti,有什么好处。

    在工作中有些项目会用到工作流,如果简单的项目,我们就无需使用类似activiti、jbpm等工作流框架。因为原本项目就简单,几个简单的流程,我们完全可以自己去写逻辑实现功能。但当如果有复杂的工作流程,而且流程极容易发生变化,相信每个程序员都很烦业务逻辑发生改变,抱怨为什么当初说好了,现在又变。没办法,我们的客户就是这么善变,而且客户是上帝,我们的衣食父母。而引入了activiti等类似的流程框架引擎后,我们就不用再去关心流程的维护,只关心我们的逻辑即可。

    在这里总结一下,如果项目简单,流程不会频繁的发生变化,那么我们就可以自己写流程,完成基本功能,如果流程复杂,而且极容易发生变化,那么我们就应该考虑引入现成的流程框架引擎了。

    下面我们开始我们的activiti之旅吧。

    第一步,如果我们想使用activiti,那么肯定离不开jar,java就是离不开jar。我们需要jar里面的接口完成我们所需要的功能,而jar又做了什么操作呢,当然是对数据库进行基本的读写操作了。activiti支持很多数据库的。

    第二步,activiti流程定义,使用了BPMN2.0标准(最终就是一个xml)。而且activiti提供了流程建模工具。但是activiti的建模工具对eclipse的版本有要求,官网明确的写着(If you would like to use the Activiti Designer then you need Eclipse Kepler or Luna),所以我们需要下载Kepler或者Luna版本。其他版本是无法使用activiti designer插件的。下面是两个版本的官网地址:

    https://www.eclipse.org/kepler/

    https://www.eclipse.org/luna/

    下载完后可以安装activiti designer插件了。

    开始创建数据库吧,首先我们使用测试的方式创建数据库

    activiti需要spring的支持,spring帮助activiti创建了很多activiti需要使用的bean。

    如果连接数据库,那肯定是需要数据源的,创建一个文件名为activiti.cfg.xml的配置文件,里面定义一个数据源,然后定义一个流程引擎配置bean。下面是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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        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.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
             http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd">
            <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="url" value="jdbc:mysql://localhost:3306/newlife" />
            <property name="username" value="root" />
            <property name="password" value="root" />
        </bean>
        <bean id="processEngineConfiguration"
        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
            <!-- 数据源 -->
            <property name="dataSource" ref="dataSource" />
            <!-- activiti数据库表处理策略 -->
            <property name="databaseSchemaUpdate" value="true"/>
        </bean>
            </beans>

    可以看到上面的约束都是spring的,在这里注意了,数据库是很早之前安装的,所以是mysql 5.5.5版本,而最新版的jdbc连接驱动更改了名 com.mysql.cj.jdbc.Driver 是用来连接mysql 6.x.x版本的,所以我下载了一个之前版本的jdbc驱动包

    我这里数据库名称为newlife,所以要注意在mysql中新建一个这个数据库

    下面我们来执行以下流程引擎,它就会为我们自动创建activiti所需要的所有表

    1 @Test
    2     public void createDB() throws SQLException, ClassNotFoundException{
    3         String resource="activiti.cfg.xml";
    4         ProcessEngineConfiguration configuration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource);
    5         ProcessEngine engine=configuration.buildProcessEngine();
    6     }
    View Code

    我们看一下数据库,是不是多了很多的表呢

    下面我们来说一下基本的表结构用处

    所有的表都以act开头,当然应该是activit的简写。中间re的为repository,代表资源文件。ru的为runtime,这是运行时表,包含流程实例,任务,变量,异步任务等。这些表只保存流程中的数据,当流程结束,这些数据会进行删除操作,这样保持了这些表中的数据最小化,提高效率。id表示identity,表示身份信息,比如用户,组等。

    hi历史表,流程中的数据会移动到这些表中,也就是保存历史流程。ge表示general,表示通用数据。

    今天的记录就到这里,接下来会结合流程的部署、发布流程实例查看数据库中的数据,以了解数据库中的字段都代表什么意思。

  • 相关阅读:
    STM32Cube Uart_DMA测试工程
    STM32CubeMX安装指南
    基于STM32Cube的ADC模数采样设计
    C++ this指针的用法
    用七段数码管显示26个字母的方案
    FPGA的引脚VCCINT 、VCCIO VCCA
    Keil环境中建立带FreeRTOS的STM32L项目
    STM32L时钟
    Mysql explain
    nginx屏蔽IP
  • 原文地址:https://www.cnblogs.com/ljs0322/p/8185622.html
Copyright © 2011-2022 走看看