zoukankan      html  css  js  c++  java
  • 工作流引擎-Activiti

    工作流

      工作流介绍

        工作流就是通过计算机对业务流程自动化执行管理;它主要解决的是“使用多个参与者之间按照某种预定义的规则自动进行传递文档,信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”;

      工作流实现方式

        在没有专门的工作流引擎之前,我们之前为了实现流程控制,通常的做法就是采用状态字段的值来跟踪流程的变化情况;这样不用角色的用户,通过状态字段的取值来决定记录是否显示;

        针对有权限可以查看的记录,当前用户根据自己的角色来决定审批是否合格的操作;如果合格将状态字段设置一个值,来代表合格;当然如果不合格也需要设置一个值来代表不合格的情况;

        这是一种最为原始的方式;通过状态字段虽然做到了流程控制,但是当我们的流程发生变更的时候,这种方式所编写的代码也要进行调整;

        

    Activiti简介

      Activiti项目是一个新的机遇Apache许可的开源BPM平台,从基础开始构建,提供新的BPMN2.0标准;

      Activiti是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构;Activiti将提供宽松的Apache许可2.0,同时促进Activiti BPM引擎和BPMN 2.0的匹配;

    BPM

      BPM是业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩为目的的系统化方法,常见商业管理教育比如EMBA,MBA等均将BPM包含在内;企业流程管理主要是对企业内部改革,改变企业职能管理机构重叠,中间层次多,流程不闭环等,做到机构不重叠,业务不重复,达到缩短流程周期,节约运行资本,提供企业效益的作用;

      BPM软件  

        BPM软件就是根据企业中业务环境的变化,推进人与人之间、人与系统之间以及系统与系统之 间的整合及调整的经营方法与解决方案的 IT 工具。 通常以 Internet方式实现信息传递、数据同步、 业务监控和企业业务流程的持续升级优化,从而实现跨应用、跨部门、跨合作伙伴与客户的企业运 作。通过 BPM 软件对企业内部及外部的业务流程的整个生命周期进行建模、自动化、管理监控和优 化,使企业成本降低,利润得以大幅提升。 BPM 软件在企业中应用领域广泛,凡是有业务流程的地方都可以 BPM 软件进行管理,比如企 业人事办公管理、采购流程管理、公文审批流程管理、财务管理等。

      BPMN

        BPMN(Business Process Model And Notation)- 业务流程模型和符号 是由 BPMI(Business Process Management Initiative)开发的一套标准的业务流程建模符号,使用 BPMN 提供的符号可以 创建业务流程。 2004 年 5 月发布了 BPMN1.0 规范.BPMI 于 2005 年 9 月并入 OMG(The Object Management Group对象管理组织)组织。OMG 于 2011 年 1月发布BPMN2.0 的最终版本。

    Activiti如果使用

      1.部署Activiti

        Activiti是一个工作流引擎,业务系统使用Activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问Activiti的接口或功能,通常将Activiti环境与业务系统的环境集成在一起;

      2.流程定义

        使用Activiti流程建模工具,定义业务流程;bpmn文件就是业务流程定义文件,通过xml定义业务流程;

      3.流程定义部署

        向Activiti部署业务流程定义  

      4.启动一个流程实例

        启动一个流程实例表示开始一次业务流程的运行;

      5.用户查询待办任务

        因为现在系统的业务流程已经交给Activiti管理,通过Activiti就可以查询当前流程执行到哪里了,当前用户需要办理什么任务额,这些Activiti帮我们管理了;

      6.用户办理任务

        用户查询待办任务后,就可以办理某个任务,如果这个任务办理完成还需要其他用户办理,这个过程也是由Activiti帮我们完成的,不需要我们在代码中硬编码指定下一个任务办理人;

      7.流程结束

        当任务办理完成没有下一个任务/结点了,这个流程实例就完成了;

    安装Activiti Designer流程设计器

      1.idea插件官网 https://plugins.jetbrains.com/

      2.打开idea工具,选择file--->settings--->plugins

        2.1 搜索actiBPM插件,如果能搜索到的情况下点击右侧下载链接

        2.2 如果搜索不到,进入idea官网所搜actiBPM,点击GET获取,选择最新版本进行下载,下载完成后是一个jar包;

          然后点击file--->settings--->plugins,点击小齿轮,选择Install Plugin from disk;

          选择对应的jar包,然后点击Restart重启idea;

          

    搭建Activiti开发环境

      1.导入依赖

    <?xml version="1.0" encoding="UTF-8"?>
    
    <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.wn</groupId>
      <artifactId>activiti</artifactId>
      <version>1.0-SNAPSHOT</version>
      <modules>
        <module>activiti_day01</module>
      </modules>
      <packaging>pom</packaging>
    
      <name>activiti Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.12</log4j.version>
      </properties>
    
      <dependencies>
        <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>
    
      <build>
        <finalName>activiti</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

      2.创建Activiti配置文件【名称为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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/contex
                            http://www.springframework.org/schema/context/spring-context.xsd
                            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!--数据源-->
        <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-wn"/>
            <property name="username" value="root"/>
            <property name="password" value="123"/>
        </bean>
    
        <!--配置Activiti使用的processEngine对象   默认命名为processEngineConfiguration-->
        <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
            <!--注入数据源-->
            <property name="dataSource" ref="dataSource"/>
            <!--配置数据源方式二:-->
            <!--<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>-->
    
            <!--指定数据库生成策略-->
            <property name="databaseSchemaUpdate" value="true"/>
        </bean>
    </beans>

      3.创建一个测试类,加载对应配置文件

    package com.wn;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngineConfiguration;
    
    public class ActivitTest {
        public static void main(String[] arrgs){
            //加载配置文件
            ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
            //获取对象
            ProcessEngine processEngine = configuration.buildProcessEngine();
        }
    }

      4.完成后,数据库会生成对象的数据表;

        

    Activiti表说明

      1.流程部署相关表

        act_re_deployment 部署对象表

        act_re_procdef 流程定义表

        act_ge_bytearray 资源文件表

        act_ge_property 主键生成策略表

      2.流程实例相关表

        act_ru_execution 正在执行的执行对象表

        act_hi_procinst 流程实例历史表

        act_hi_actinst 存放历史所有完成的任务

      3.Task任务相关表

        act_ru_task 代办任务表

        act_hi_taskinst 代办任务历史表

        act_hi_actinst 所有节点活动历史表

      4.流程变量表

        act_ru_variable 正在执行的流程变量表

        act_hi_varinst 流程变量历史表

  • 相关阅读:
    PAT 1006 Sign In and Sign Out
    PAT 1004. Counting Leaves
    JavaEE开发环境安装
    NoSql数据库探讨
    maven的配置
    VMWARE 下使用 32位 Ubuntu Linux ,不能给它分配超过3.5G 内存?
    XCODE 4.3 WITH NO GCC?
    在苹果虚拟机上跑 ROR —— Ruby on Rails On Vmware OSX 10.7.3
    推荐一首让人疯狂的好歌《Pumped Up Kicks》。好吧,顺便测下博客园可以写点无关技术的帖子吗?
    RUBY元编程学习之”编写你的第一种领域专属语言“
  • 原文地址:https://www.cnblogs.com/wnwn/p/12598044.html
Copyright © 2011-2022 走看看