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的表,是运行中用到的表,临时记录表,流程结束时会删除这些记录

  

Activiti01-基本介绍的更多相关文章

  1. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  4. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

  5. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  6. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  7. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  8. HTML5 介绍

    本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...

  9. ExtJS 4.2 介绍

    本篇介绍ExtJS相关知识,是以ExtJS4.2.1版本为基础进行说明,包括:ExtJS的特点.MVC模式.4.2.1GPL版本资源的下载和说明以及4种主题的演示. 目录 1. 介绍 1.1 说明 1 ...

  10. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

随机推荐

  1. C#文件路径

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...

  2. Hashcat使用指南

    Hashcat使用指南 免责声明: 0×01 Hashcat破解linux shadow的密码-首先了解shadow文件到底是什么? 0×02 hashcat的使用 参数补充: -m 参数 -a 参数 ...

  3. mindxdl---common--test_tools.go

    // Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.// Package common define co ...

  4. i春秋Upload

    打开是一句普普通通的话,先查看源码,发现提示,我们需要post我们从i春秋得到的东西 得到了什么呢?不知道,去看看cookie,没什么特别的地方,再去抓包试试 找到了我们需要post的东西,不过这东西 ...

  5. 大前端html基础学习01

    根目录 相对路径:针对图片数量比较多的情况,新建一个文件夹,将所有图片放进去,imgs/cat.webp (1)/:下一级 (2)a/b/c/cat.webp 返回路径(向外找):从下一级html中找 ...

  6. vue3.0使用tui.image-editor图片编辑组件报错TypeError: Cannot convert undefined or null to object

    在vue3.0的项目中使用tui.image-editor组件.一直都是报错.查看报错位置发现代码 addEventListener() { Object.keys(this.$listeners). ...

  7. React综合使用联系

    index.js import React from 'react' import ReactDOM from 'react-dom' import CartSimple from './CartSi ...

  8. <二>强弱指针使用场景之 多线程访问共享对象问题

    代码1 #include <iostream> #include <thread> using namespace std; class A { public: A() { c ...

  9. Kafka教程(二)API开发-生产者、消费者、topic

    一.地址 1.实时更新的思维导图 https://www.mubucm.com/doc/4uqlpedefuj 2.图片 二.具体内容   5.producer生产者   demo   发送pro.s ...

  10. 有来实验室|第一篇:Seata1.5.2版本部署和开源全栈商城订单支付业务实战

    在线体验:Seata实验室 一. 前言 相信 youlai-mall 的实验室大家有曾在项目中见到过,但应该都还处于陌生的阶段,毕竟在此之前实验室多是以概念般的形式存在,所以我想借着此次的机会,对其进 ...