请假流程如何快速实现(OA )呢?:Activiti工作流

  • Post author:
  • Post category:其他


大家好,

在公司中,每个人都需要经常创建或者审批一些流程,比如说

转正申请



请假流程



出差申请

等等

那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢?

比如说请假申请,首先需要提前定义好一个

流程模板

吧,包括当请假天数大于 3 天的话,需要公司级的领导审批等这些

规则

然后当某个员工发起请假申请时,根据这个员工所在的部门以及请假天数等信息,便可以确定其具体的

流程信息

,包括每个节点的

审批人

在任何一个审批节点,都需要看到这个流程的历史审批信息以及将来要走的流程吧,所以还需要将完成的和将要完成的任务

保存

下来

你应该很容易想到,我们可以通过

表的字段状态

来进行流程的这些逻辑控制

但是呢,简单的流程的话,还可以实现,流程一旦复杂一点,不仅需要实现的代码会增加,而且需要操作的表的数量也特别多,逻辑只会更复杂

那么,有没有现成的工作流框架,可以直接拿来使用,轻松实现这些逻辑,实现流程的自动化控制呢?

答案是肯定的,今天带领大家认识的就是一个专门用来管理工作流的框架:Activiti

一 理论篇

1 实现逻辑

Activiti 就是使用

BPMN 2.0

进行流程建模、流程执行管理,那么,

BPMN

又是什么呢?


BPMN

(Business Process Model AndNotation)- 业务流程模型和符号 是由

BPMI

(BusinessProcess Management Initiative)开发的一套标准的业务流程建模符号,使用

BPMN

提供的符号可以创建业务流程

定义好的流程模板,最终会被存储至数据库表中,而它的实现逻辑其实就是

封装了诸多流程控制的表的操作,提供给开发人员一些快捷操作的 API ,来进行快捷的工作流管理

2 实现步骤

使用 Activiti 这种工作流框架大致都分为以下几个步骤:

  • 流程定义

  • 部署流程定义

  • 启动流程实例

  • 查询当前用户的待办任务

  • 完成任务


说明:

流程定义就相当于是一个个的

流程模板

,比如预先定义好的请假流程、出差流程模板,而流程实例则是由各个员工发起的实实在在的流程,流程实例一旦创建,那么这个流程需要经历哪些审批环节,每个环节由哪个(或者哪些)人负责审批,便完全确定下来了

流程定义与流程实例的关系,你也可以理解为

类与对象实例

的关系。一个是

静态

的,一个则是真正被拿来使用的,相对

动态

3 Service

Activiti 提供了几个

Service

类,用来管理工作流,常用的有以下四项:


  • 1)

    RepositoryService:提供

    流程定义和部署

    等功能。比如说,实现流程的的部署、删除,暂停和激活以及流程的查询等功能


  • 2)

    RuntimeService:提供了处理

    流程实例

    不同步骤的结构和行为。包括启动流程实例、暂停和激活流程实例等功能


  • 3)

    TaskService:提供有关

    任务相关功能

    的服务。包括任务的查询、删除以及完成等功能


  • 4)

    HistoryService:提供 Activiti 引擎收集的

    历史记录信息

    服务。主要用于历史信息的查询功能

    还有以下两项:

  • **1)**ManagementService:job 任务查询和数据库操作

  • **2)**DynamicBpmnService:无需重新部署就能修改流程定义内容

4 认识表结构

二 实战篇

以下进入实战环节,分别从

生成 25 张表



运行第一个


Activiti

流程实例,快速认识这个工作流框架的简单易用性

这两个例子,采用 Activiti7 版本,需要预先引入如下依赖:

<dependencies>

    <dependency>
         <groupId>org.activiti</groupId>
         <artifactId>activiti-engine</artifactId>
         <version>7.1.0.M6</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring</artifactId>
        <version>7.1.0.M6</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-bpmn-model</artifactId>
        <version>7.1.0.M6</version>
    </dependency>

    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-bpmn-converter</artifactId>
        <version>7.1.0.M6</version>
    </dependency>

    <dependency>
        <groupId>org.activit



版权声明:本文为m0_48922996原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。