工作流activiti

回顾一下以前使用过的activiti工作流;下载工作流引擎和下载插件就不说了,这个百度上很多。

安装遇到的问题:

说一下再下载插件中容易遇到的几个问题以及解决的方案;自己电脑上安装的有java ide的有myeclipse 8.5,eclipse 3.7中文版32位和eclipse 4.2  64位。首先是使用mycelipse安装activiti工作流,发现居然没有这个Ide居然没有自带安装插件的功能,过段换eclipse 3.7结果安装途中报了一个错误,具体的名字忘了,反正好像是缺少3个架包,去下载了一下,发现还是不行,最后没办法就重新安装了一个eclipse4.2,建议不管遇到什么问题,只要安装一个4.0以上的版本基本上都可以;在eclipse里面点击一下Help 然后再点击Instartall new 这个时候出来下图所示,安照步骤来安装就好了;工作流activiti_第1张图片


Activiti的定义和背景介绍:

Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。本文主要介绍 Activiti 的背景和基础知识,包括 Activiti 结构、基本服务和功能简介,开发环境的搭建以及主要功能的代码示例。

背景介绍

  1. Activiti 其核心是 BPMN 2.0 的流程引擎。BPMN 是目前被各 BPM 厂商广泛接受的 BPM 标准,全称为 Business Process Model and Notation,由 OMG 组织进行维护,2011 年 1 月份发布了其 2.0 的正式版。BPMN 2.0 对比于第一个版本,其最重要的变化在于其定义了流程的元模型和执行语义,即它自己解决了存储、交换和执行的问题。这代表着 BPMN 2.0 流程定义模型不仅仅可以在任何兼容 BPMN 2.0 的引擎中执行,而且也可以在图形编辑器间交换。作为一个标准,BPMN 2.0 统一了工作流社区。
  2. Activiti 是由 jBPM 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。同时 Activiti 选择了 Apache 许可,一方面是希望 Activiti 能有更长久的生命力,因为它不受任何个人或是公司的控制而是属于整个社区,另一方面更是希望这个宽松的许可能够让 Activiti BPM 引擎和 BPMN2.0 被更广泛的采纳、使用和商业化。
  3. 对于 Java 开发者来说,Activiti 的首席架构师 Tom Baeyens 曾提到,Activiti 的首个目标就是要获得开发者的青睐。首先它在使用时极为方便,只是个 jar 文件,使用时仅需要将其放在类路径中,当然,Activiti 也可以作为独立服务器的方式使用;同时 Activiti 提供了很多 BPM 高级工具,其中还包括开发了协作工具,使得开发人员、业务人员和运维人员能够更好的协同工作。
工作流原理:
个人觉得现在市面上的工作流很多,如果说要我每次用一个工作流就去学习一个新的工作流这样肯定会比较吃力,所以总结了一下工作流使用的经验,其实每一个工作流都有如下的核心原理

核心原理:

流程定义:流程图。定义流程的各种节点,每个节点的详细信息(名字,唯一标示,参与者或者叫处理人),流程流转的信息(节点的from和节点的to),流程流转的条件信息。工作流所做的事情,就是在流程当中定义好相关的业务逻辑,这些业务逻辑主要用来处理流程的流转。

待办:待处理。等待处理的任务。针对具体的人,针对具体的一条流程。

流程实例:每一个流程都会有一个对应的流程实例,在业务表中需要保存这个流程实例的信息,流程实例是唯一的,通过这个流程实例,可以得到具体的业务信息和流程的信息然。

4.流程办理:我们可以根据得到的流程实例来取办理这个流程,是让他继续往下走,还是退回整改;

历史信息:已办。

Activiti 基本架构和服务组件介绍

  • RepositoryService: Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务。
  • RuntimeService:在 Activiti 中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。Runtime Service 提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。p 
  • TaskService:在 Activiti 中业务流程定义中的每一个执行节点被称为一个 Task,对流程中的数据存取,状态变更等操作均需要在 Task 中完成。Task Service 提供了对用户 Task 和 Form 相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
  • IdentityService:Activiti 中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的 Task。Identity Service 提供了对 Activiti 系统中的用户和组的管理功能。
  • ManagementService:Management Service 提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护。
  • HistoryService: History Service 用于获取正在运行或已经完成的流程实例的信息,与 Runtime Service 中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
  • FormService: Activiti 中的流程和状态 Task 均可以关联业务相关的数据。通过使用 Form Service 可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。
IdentityService在我们对自己所定义的用户表进行操作的时候,一定要去关联这张表,因为我们的用户本身是和工作流中的用户组是没有关系的,我们要通过这个Service去同步我们的用户数据,使得它可以和工作流相关联,以后可以来执行我们的工作流程;具体使用方法如下



先在Controller里面去创建Service实例,然后在我们对用户添加修改方法里面,执行相应的操作方法;

数据库表名说明:

Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。 并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。

 1. ACT_GE_* : “GE”代表“General”(通用),用在各种情况下;

 2. ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数 据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了4种历史级别:  Ø  none: 不保存任何历史记录,可以提高系统性能; Ø activity:保存所有的流程实例、任务、活动信息;  Ø audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;  Ø full: 最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。  对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。

 3.ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份 信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;

4.ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些 ‘静 态’信息,如流程定义和流程资源(如图片、规则等); 

5. ACT_RU_* : “RU”代表“Runtime”(运行时),这些表中保存一些流程实 例、用户任务、变量等的运行时数据。Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快;

 流程图详解:


上图以一个简单的请假流程来说明此流程图;首先我们要给这个流程图配置一个ID和name,这样当我们发起请求以后可以去对应一个具体的流程实例。然后会画一个流程的发起人,给他一个ID和name,接着再赋予它一个流程发起人的值。这里可以传入一个具体的用户id,也可以传入一个变量。发起流程之后,会由部门领导先进行审批,同样也要给部门领导赋予ID和name,然后会给他赋予具体的值。工作流activiti_第2张图片

第一个值是说我们可以传入变量,第二个是我们可以传入用户,第三个是我们可以传入一个用户组;部门领导审批的途中会接受到你传过来的一个boolean值,来决定是继续往下走,交给人力资源部审批,还是退回整改。比如说张三发起了一个流程要请假,然后他请10天假,部门领导肯定会觉得太长了,不行,我拿到一个false说要你退回整改,你该了一下说请3天假吧,部门领导说这个可以接受,然后传入一个true,接着由人力资源审批,同理,人力资源也可以同意,或不同意,不同意那么张三又得重新申请,继续走流程;如果同意了,那么就决定是否给你发一封邮件通知你,还是当面告诉你,最后你请假提前回来了,那么得去做一个销假得过程;


你可能感兴趣的:(工作流activiti)