zoukankan      html  css  js  c++  java
  • Activiti01-基本介绍

    1.工作流的定义

      工作流是将一组任务组织起来以完成某个有序的过程:定义了任务的触发顺序和触发条件,而且每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完.

      工作流就是业务流程的计算机化或自动化。许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流软件,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下跑,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率,实现了知识管理,提升了公司的核心竞争力  

      以请假为例,现在大多数公司的请假流程是这样的

      员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑

      采用工作流技术的公司的请假流程是这样的

      员工使用账户登录系统——点击请假——上级登录系统点击允许

      就这样,一个请假流程就结束了

      有人会问,那上级不用向公司提交请假记录?公司不用将记录录入电脑?答案是,用的。但是这一切的工作都会在上级点击允许后自动运行!

      这就是工作流技术


    2.activity简介

      Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。

      Activiti框架底层有数据库提供支持,根据版本不同,表的数量不一致。底层使用mybatis操作数据库,开发人员不需要自己编写sql

    3.IDEA安装avtivity插件

    3.1打开IDEA中File列表下的Settings

    3.2输入actiBPM,然后点击下面的Search...搜索

    3.3点击Install 下载

    3.4下载结束后应用保存,然后重启IDEA

      在resources目录下创建BPMN文件,有该选项,表示安装成功

     

    4.idea安装activiti插件ActiBPM时找不到这个插件(https://blog.csdn.net/qq_38423256/article/details/116096404)

    4.1第一步:官网搜索

    idea官网地址:https://plugins.jetbrains.com/,搜索 actiBPM

     
    4.2官网下载

     
    点击GEet下载


    4.3引入下载的jar包

    File -> Settings -> Plugins -> Install Plugin from Disk,选择已经下载的jar,导入。

     
    4.4重启测试

    在项目菜单栏中右键new --->BPMN file
     

     
    5.画图

    5.1环境准备

    5.1.1修改idea配置

     idea按照目录bin文件夹下,idea.exe.vmoptions和idea64.exe.vmoptions加入配置-Dfile.encoding=UTF-8,设置编码

     5.1.2配置setting

      file-setting-Editor-file Encoding,设置编码为utf-8

      

    5.2画图基本介绍

    5.2.1文件目录

      创建的bpmn文件需要在资源目录下,也就是resources目录下

    5.2.2创建文件

    创建文件后,双击,出现画图界面

    5.2.3画图

     这里画了一个简单的流程,开始-请假申请(usertask)-审批(usertask)-介绍

    UserTask:name名称   Assignee 针对的用户,更具体的后面再介绍

    注意,画图画好后,出去再进来可能会出一些问题,所以最好一次画好,画好后转成xml文件,才保险

    5.2.4加bpmn转换成xml文件

    复制bpmn文件,后缀名改为xml,会自动完成转换,转换完成后要注意有没有乱码问题。最好文字采用英文

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1622529833429" name="" targetNamespace="http://www.activiti.org/testm1622529833429" typeLanguage="http://www.w3.org/2001/XMLSchema">
      <process id="myProcess_1" isClosed="false" isExecutable="true" processType="None">
        <startEvent id="_2" name="StartEvent"/>
        <userTask activiti:assignee="请假申请人" activiti:exclusive="true" id="_3" name="请假申请"/>
        <userTask activiti:assignee="审批人" activiti:exclusive="true" id="_4" name="审批"/>
        <endEvent id="_5" name="EndEvent"/>
        <sequenceFlow id="_6" sourceRef="_2" targetRef="_3"/>
        <sequenceFlow id="_7" sourceRef="_3" targetRef="_4"/>
        <sequenceFlow id="_8" sourceRef="_4" targetRef="_5"/>
      </process>
      <bpmndi:BPMNDiagram documentation="background=#FFFFFF;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0" id="Diagram-_1" name="New Diagram">
        <bpmndi:BPMNPlane bpmnElement="myProcess_1">
          <bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2">
            <dc:Bounds height="32.0" width="32.0" x="645.0" y="15.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNShape>
          <bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3">
            <dc:Bounds height="55.0" width="85.0" x="625.0" y="100.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNShape>
          <bpmndi:BPMNShape bpmnElement="_4" id="Shape-_4">
            <dc:Bounds height="55.0" width="85.0" x="630.0" y="190.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNShape>
          <bpmndi:BPMNShape bpmnElement="_5" id="Shape-_5">
            <dc:Bounds height="32.0" width="32.0" x="650.0" y="285.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNShape>
          <bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6" sourceElement="_2" targetElement="_3">
            <di:waypoint x="661.0" y="47.0"/>
            <di:waypoint x="661.0" y="100.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNEdge>
          <bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7" sourceElement="_3" targetElement="_4">
            <di:waypoint x="670.0" y="155.0"/>
            <di:waypoint x="670.0" y="190.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNEdge>
          <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_4" targetElement="_5">
            <di:waypoint x="666.0" y="245.0"/>
            <di:waypoint x="666.0" y="285.0"/>
            <bpmndi:BPMNLabel>
              <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
            </bpmndi:BPMNLabel>
          </bpmndi:BPMNEdge>
        </bpmndi:BPMNPlane>
      </bpmndi:BPMNDiagram>
    </definitions>

    主要的信息在<process>标签里面。包含了图形的主要信息,开始、结束、任务、箭头流程等。

    对于xml文件,还可以生成图片

     点击Designer,出现下入界面

    6.生成activity的表格

    6.1添加依赖

    注意,添加的activity版本不同,生成的表的数量不同,这里生成的是25张表

            <!--activity依赖-->
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-engine</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>
    
    
            <!--activiti和Spring整合依赖-->
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-spring</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>

    activity自带spring的包,注意可能依赖冲突

    6.2编码生成表格

    package com.jinsenianhua.activity.base;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngineConfiguration;
    import org.junit.jupiter.api.Test;
    
    /**
     * @Classname Te
     * @Description TODO
     * @Date 2021/6/1 0001 下午 1:55
     * @Created by jcc
     */
    public class Te {
    
    
    
        @Test
        public void initProcessEngine(){
            //创建引擎配置对象
            ProcessEngineConfiguration configration = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();
    
            //创建流程引擎对象
            //目标生成数据库表
            configration.setJdbcUrl("jdbc:mysql://localhost:3306/jsnh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
            configration.setJdbcDriver("com.mysql.jdbc.Driver");
            configration.setJdbcUsername("root");
            configration.setJdbcPassword("573875306");
            //设置表的生成策略
            configration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
    
            ProcessEngine processEngine = configration.buildProcessEngine();
    
            System.out.println(processEngine.getName());
        }
    
    
        /**
         * 数据源的配置在activiti.cfg.xml 中
         */
        @Test
        public void initProcessEngine2(){
            ProcessEngineConfiguration configration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
            ProcessEngine engine = configration.buildProcessEngine();
            System.out.println("初始化流引擎对象成功"+engine.getName());
    
        }
    
    }

    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"
           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.StandaloneInMemProcessEngineConfiguration">
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/jsnh?serverTimezone=Asia/Shanghai"></property>
            <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUsername" value="root"></property>
            <property name="jdbcPassword" value="573875306"></property>
            <property name="databaseSchemaUpdate" value="true"></property>
        </bean>
    
    
    </beans>

    上面介绍了两种生成表格的方法

    方法1,纯编码

      方法initProcessEngine,该方法中指定数据源,表的生成策略,运行该方法,即可生成表格

    方法2:编码+配置文件

      方法initProcessEngine2()+activiti.cfg.xml,数据源等相关配置在activiti.cfg.xml文件中,运行initProcessEngine2()方法会自动读取activiti.cfg.xml配置生成表格

      

    7.表的介绍

      https://blog.csdn.net/hqbootstrap1/article/details/82977107

       名称中间是RU的表,是运行中用到的表,临时记录表,流程结束时会删除这些记录

      

     

  • 相关阅读:
    14.6 将运算分组为事务
    Android 取得 ListView中每个Item项目的值
    【编程题目】n 个骰子的点数
    【编程题目】扑克牌的顺子
    【编程题目】颠倒栈☆
    【编程题目】输出 1 到最大的 N 位数
    【编程题目】寻找丑数
    【编程题目】在字符串中删除特定的字符
    【编程题目】复杂链表的复制☆
    【编程题目】找出数组中两个只出现一次的数字 ★★(自己没做出来)
  • 原文地址:https://www.cnblogs.com/jthr/p/14837257.html
Copyright © 2011-2022 走看看