工作流

工作流:一套业务流程
员工编写请假条----->部门经理进行处理----->总经理------>人事登记

数据库中生成记录
工号 姓名 部门编号 请假日期 请假天数 请假事由 状态
001 张三 1 2020年3月30日 3 zxxx 0,1 0代表提交失败 1代表提交成功

部门经理:部门经理的部门编号和审批员工的部门编号要一致,状态=1
同意:2 驳回:3
总经理:可以查看到状态为2的数据,代表部门经理已经审批
同意:4 驳回:5
人事:可以查看到状态为4的数据
同意:6 驳回:7

工作流引擎:帮助自动化管理业务流程,Activiti7



Activiti7操作流程:
1.部署Activiti,一般将Activiti和业务部署到一起
2.定义流程图
3.通过Activiti提供API生成流程定义的内容
4.用户查看代办流程
5.用户处理
6.流程结束

安装Activiti Designer 流程设计器:
idea插件官网:https://plugins.jetbrains.com/
打开IDEA工具,选择file---->settings---->plugins
方案一:搜索actiBPM插件,如果能搜索到的情况下右侧有下载链接
方案二:进入IDEA插件官网,搜索actiBPM,点击Get获取,选择最新版本进行下载,下载完成是一个jar包
重复上面的动作打开IDEA工具,选择file---->settings---->plugins,点击小齿轮设置,选择第三项Install Plugin from disk
选择对应Jar包,然后就可以看到对应的actiBMP,点击Restart重启IDEA

编写流程图:
创建一个bpmn文件,通过每一个流程控制内容书写流程


搭建Activiti开发环境:
步骤一:导入依赖

<?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>


步骤二:创建Activiti配置文件

<!--数据源-->
<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-y2170"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</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>


步骤三:创建一个测试类,加载对应配置文件即可

public static void main(String[] args) {
//加载配置
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
//获取ProcessEngine对象
ProcessEngine processEngine = configuration.buildProcessEngine();
}

public static void main(String[] args) {
//加载配置 默认查找bean的id为processEngineConfiguration,可以更改
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration01");

//获取ProcessEngine对象,默认根据activiti.cfg.xml文件加载配置文件
/*ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();*/

ProcessEngine processEngine = configuration.buildProcessEngine();
}

Activiti数据库构成:
ACT_RE_*: 'RE'表示 repository。 这个前缀的表包含了流程定义和流程静态资源 (图片, 规则,等等)。
ACT_RU_*: 'RU'表示 runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务, 等运行中的数据。 Activiti 只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_HI_*: 'HI'表示 history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: GE 表示general。通用数据, 用于不同场景下。

原文地址:https://www.cnblogs.com/danxun/p/12600384.html