工作流之Activity

2,182 阅读4分钟

What is the 工作流?

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

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

  这一切的工作都会在上级点击允许后自动运行!

  这就是工作流技术。   

工作流技术的优点

从上面的例子,很容易看出

  • 工作流系统

实现了工作流程的自动化,提高了企业运营效率、改善企业资源利用、提高企业运作的灵活性和适应性、提高量化考核业务处理的效率、减少浪费(时间就是金钱)。

  • 手工处理工作流程

一方面无法对整个流程状况进行有效跟踪、了解,另一方面难免会出现人为的失误和时间上的延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。

Java开发者会为什么要学Activity工作流

     在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM(Activity的开发者就是从Jbpm开发者出来的)。

Activity工作流学习要点

技术要点

1个插件,1个引擎,1个配置文件,5种数据库表,23张表,7项基本操作

1、1个插件

  在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图

2、1个引擎

  ProcessEngine对象,Activity工作流引擎。这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。

  所有的操作都是从获取引擎开始的,所以一般会把引擎作为全局变量

ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();

3、1个配置文件

  activiti.cfg.xml。Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数

4、5种数据库表

  Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。用途也和服务的API对应。

  ACT_RE_*: ‘RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。

  ACT_RU_*: ‘RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

  ACT_ID_*: ‘ID’表示identity。 这些表包含身份信息,比如用户,组等等。

  ACT_HI_*: ‘HI’表示history。 这些表包含历史数据,比如历史流程实例,变量,任务等等。

  ACT_GE_*: 通用数据,用于不同场景下,如存放资源文件。   5、23张表

  不同的表存放不同方面的数据,有流程定义表、任务结点表、流程变量表、任务历史表等等。       6、5项Service

  不同的Service类对应不同的功能。

  比如TaskService,是activiti的任务服务类。可以从这个类中获取任务的信息。

  而HistoryService,则是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。

7、7项基本操作

    设计流程图(各种组件,如连线、用户任务、网关)

    流程定义增删改查

    流程变量增删改查

    启动流程定义

    任务增删改查

    完成任务

    历史信息查询
    

-----我是分割线-------------------------------------------------------我是分割线---------

  • ToDo(20200409)

Activiti框架的目录结构

目录剖析:

  1. bin目录是空的。
  2. database目录下有3个目录,一个目录是create,里面存放的是建表语句,一个目录是drop,里面存放的是删除表的语句,最后一个目录是upgrade,里面存放的是升级Activiti的语句。
  3. libs目录下是一些jar包,最核心的jar包是activiti-engine-5.13.jar。
  4. wars目录下存放的是Activiti框架官方的学习demo,我们初次学习Activiti框架必然要借鉴其中的案例。

👁‍🗨为什么Activiti框架里面为何会有一些建表语句。

因为工作流框架底层是有一套数据库提供支持的,针对不同的数据库提供不同的sql建表语句。Activiti5.13框架对应23张表,JBPM4.4框架对应18张表,开发人员不需要自己编写sql语句操作这些表,框架底层会生成sql语句操作。Activiti5.13框架底层使用mybatis框架操作数据库,JBPM框架底层使用hibernate框架操作数据库。

详细的教程搭建参考:Activiti工作流框架学习笔记(一)(李阿昀)

-----我是分割线-------------------------------------------------------我是分割线---------