回顾一下以前使用过的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的定义和背景介绍:
Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。本文主要介绍 Activiti 的背景和基础知识,包括 Activiti 结构、基本服务和功能简介,开发环境的搭建以及主要功能的代码示例。
背景介绍
- 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 统一了工作流社区。
- Activiti 是由 jBPM 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。同时 Activiti 选择了 Apache 许可,一方面是希望 Activiti 能有更长久的生命力,因为它不受任何个人或是公司的控制而是属于整个社区,另一方面更是希望这个宽松的许可能够让 Activiti BPM 引擎和 BPMN2.0 被更广泛的采纳、使用和商业化。
- 对于 Java 开发者来说,Activiti 的首席架构师 Tom Baeyens 曾提到,Activiti 的首个目标就是要获得开发者的青睐。首先它在使用时极为方便,只是个 jar 文件,使用时仅需要将其放在类路径中,当然,Activiti 也可以作为独立服务器的方式使用;同时 Activiti 提供了很多 BPM 高级工具,其中还包括开发了协作工具,使得开发人员、业务人员和运维人员能够更好的协同工作。
核心原理:
1 流程定义:流程图。定义流程的各种节点,每个节点的详细信息(名字,唯一标示,参与者或者叫处理人),流程流转的信息(节点的from和节点的to),流程流转的条件信息。工作流所做的事情,就是在流程当中定义好相关的业务逻辑,这些业务逻辑主要用来处理流程的流转。
2 待办:待处理。等待处理的任务。针对具体的人,针对具体的一条流程。
3 流程实例:每一个流程都会有一个对应的流程实例,在业务表中需要保存这个流程实例的信息,流程实例是唯一的,通过这个流程实例,可以得到具体的业务信息和流程的信息然。
4.流程办理:我们可以根据得到的流程实例来取办理这个流程,是让他继续往下走,还是退回整改;
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 可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。
先在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,然后会给他赋予具体的值。
第一个值是说我们可以传入变量,第二个是我们可以传入用户,第三个是我们可以传入一个用户组;部门领导审批的途中会接受到你传过来的一个boolean值,来决定是继续往下走,交给人力资源部审批,还是退回整改。比如说张三发起了一个流程要请假,然后他请10天假,部门领导肯定会觉得太长了,不行,我拿到一个false说要你退回整改,你该了一下说请3天假吧,部门领导说这个可以接受,然后传入一个true,接着由人力资源审批,同理,人力资源也可以同意,或不同意,不同意那么张三又得重新申请,继续走流程;如果同意了,那么就决定是否给你发一封邮件通知你,还是当面告诉你,最后你请假提前回来了,那么得去做一个销假得过程;