美文网首页
工作流的设计表

工作流的设计表

作者: 神豪VS勇士赢 | 来源:发表于2018-08-27 17:44 被阅读46次

    Activiti的25张表
    Activiti的运行支持,必须要有Activiti的25张表,主要是在流程运行过程中,记录存储一些参与流程的用户主体,组,以及流程定义的存储,流程执行时候的一些信息,以及流程的历史信息等.

    开工:
    第一步:创建maven项目,导入依赖


    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-engine</artifactId>
    <version>5.19.0.2</version>
    </dependency>

    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring</artifactId>
    <version>5.19.0.2</version>
    </dependency>
    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-bpmn-model</artifactId>
    <version>5.19.0.2</version>
    </dependency>


    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.34</version>
    </dependency>

    第二步:生成工作流表方案一(非配置方式)
    先手动创建db_activiti数据库
    开发代码:

    获取流程引擎配置
    配置驱动包,url
    数据库用户名,密码
    schema要设置成update

    public class TestActi {
    //生成工作流的表
    public void createTable(){
    ProcessEngineConfiguration configuration =
    ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
    //设置数据库的4个属性
    configuration.setJdbcDriver("com.mysql.jdbc.Driver");
    configuration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf-8");
    configuration.setJdbcUsername("root");
    configuration.setJdbcPassword("");
    //设置支持表的更新
    configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    //得到流程引擎对象
    ProcessEngine processEngine = configuration.buildProcessEngine();

    }

    public static void main(String[] args) {
    TestActi testActi = new TestActi();
    testActi.createTable();
    }
    }

    刷新数据库,即可看到25张表

    image.png

    5种类型数据库表说明:

    5种类型数据库表说明:
    Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。
    ACT_RE_: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。(也就是我们画的流程图的信息)
    ACT_RU_
    : 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。[运行时的表是需要经常使用]
    ACT_ID_: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
    ACT_HI_
    : 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
    ACT_GE_*: 'GE'表示general。通用数据, 用于不同场景下,如存放资源文件。(我们画的流程图就上传在这里)

    image.png

    第三步:生成工作流表方案二(配置方式,推荐)

    整合到Spring的配置文件中
    默认的配置文件名称就是:activiti.cfg.xml
    activiti.cfg.xml配置简化创建表功能
    1.文档:http://activiti.org/userguide/index.html#configuration
    2.resources下创建一个xml文件 名字是:activiti.cfg.xml
    3.org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
    配置代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <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">

    <!-- 配置工作流引擎 -->
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf-8"></property>
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUsername" value="root"></property>
        <property name="jdbcPassword" value=""></property>
        <!-- 支持表的更新,能生成表 -->
        <property name="databaseSchemaUpdate" value="true"></property>
    </bean>
    

    </beans>

    public void createTableWithXML(){
    //加载配置
    ProcessEngineConfiguration configuration =
    ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
    //得到工作流引擎对象
    ProcessEngine processEngine = configuration.buildProcessEngine();
    }

    注意:这里定义的id名称必须为processEngineConfiguration,因为加载配置的时候,在源码中加载用的就是这个名称。

    测试观察结果:


    image.png

    认识流程图的本质

    画流程图
    1.Idea中点击到具体任务,可看到Assignee任务分配属性

    image.png
    2. 把bpmn文件后缀改成xml,右键选择Diagrams->Show BPMN 2.0 Designer
    

    重命名变为xml:

    image.png

    观察xml文件主要注意下面的部分
    <process id="myProcess_1" isClosed="false" isExecutable="true" processType="None">
    <startEvent id="_2" name="StartEvent"/>
    <endEvent id="_3" name="EndEvent"/>
    <userTask activiti:assignee="工程师" activiti:exclusive="true" id="_4" name="请假"/>
    <sequenceFlow id="_5" sourceRef="_2" targetRef="_4"/>
    <sequenceFlow id="_6" sourceRef="_4" targetRef="_3"/>
    </process>

    process 节点是根节点 也就是整个图标的最外层
    startEvent 开始节点
    endEvent 结束节点
    userTask 用户任务 activiti:assignee 执行者

    sequenceFlow 两条线 出发点 到终点

    1. 在XML视图中点击Export to file,选择png格式,得到png文件
      导出为图片:(了解)
    image.png

    这个插件也是有bug的 需要我们加以注意 :
    插件bug:
    初始画图分配:
    可见执行者:


    image.png

    关闭视图student.bpmn
    再次打开student.bpmn,执行者消失。

    image.png

    实际情况需要看XML
    xml文件中有执行者,但是这个执行者是第一次编写的人,不支持第二次修改。


    注意 :
    这个插件就类似个一次性的插件,不适合再次修改,如果在设置了编码的情况下,再次打开可能还是乱码,如果是显示是乱码也不纠结,部署到数据库后启动还是中文。

    工作流总结:
    1. 插件画图,后缀:bpmn ,图的本质是 xml文件。
    2. 应用主要在审批环节,请假环节,公司内部一般都有这样的系统。
    3. Activiti,已经设计好了所有表。25张表。
    4. 生成表:一种编写代码设置数据库的属性生成;一种整合在Spring的配置文件中,加载配置文件生成。

    相关文章

      网友评论

          本文标题:工作流的设计表

          本文链接:https://www.haomeiwen.com/subject/iluziftx.html