Activiti工作流框架学习(二)

  • Activiti5介绍
  • Activiti工作流学习要点
  • 开始学习Activiti
一、Activiti5介绍

Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供Eclipse插件,开发人员可以通过插件直接绘画出业务流程图。

系统服务结构图:

流程图举例:
流程图举例

二、Activiti工作流学习要点
  • 1个插件
在Eclipse中安装Activiti插件,让你可以在Eclipse中绘制Activiti工作流程图。
  • 1个引擎
ProcessEngine对象,Activiti工作流引擎。这是Activiti工作的核心,负责生产流程运行时的各种实例及数据、监控和管理流程的运行。
所有的操作都是从获取引擎开始的,所有一般会把引擎作为全局变量。
获取引擎代码如下:
		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  • 1个配置文件
activiti.cfg.xml —— Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
  • 5种数据库表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头,第二部分是表示表的用途的两个字母标识,用途也和服务的API对应。
1. ACT_RE_*:‘RE’表示Repository。这个前缀的表包含了流程定义和流程静态资源(图片,规则等等)。
2. ACT_RU_*:‘RU’表示Runtime。这些运行时的表包含了流程实力、任务、变量、异步任务等运行中是数据。Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样运行时表可以一直很小,速度很快。
3. ACT_ID_*:‘ID’表示Identity。这些表包含身份信息,比如用户、组等等。
4. ACT_HI_*:‘HI’表示History。这些表包含历史数据,比如历史流程实例、变量、任务等等。
5. ACT_GE_*:通用数据,用于不同场景下,如存放资源文件。
  • 23张表
不同的表存放不同方面的数据,有流程定义表、任务节点表、流程变量表、任务历史表等等。

1. 资源库流程规则表
1)act_re_deloyment 部署信息表
2)act_re_model 流程设计模型部署表
3)act_re_procdef 流程定义数据表

2. 运行时数据库表
1)act_ru_execution 运行时流程执行实例表
2)act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
3)act_ru_task 运行时任务节点表
4)act_ru_variable 运行时流程变量数据表
5)act_ru_job 运行时定时任务数据表
6)act_ru_event_subscr throwEvent、catchEvent时间监听信息表

3. 历史数据库表
1)act_hi_actinst 历史节点表
2)act_hi_attachment 历史附件表
3)act_hi_comment 历史意见表
4)act_hi_identitylink 历史流程人员表
5)act_hi_detail 历史详情表,提供历史变量的查询
6)act_hi_procinst 历史流程实例表
7)act_hi_taskinst 历史任务实例表
8)act_hi_varinst 历史变量表

4. 组织机构表
1)act_id_group 用户组信息表
2)act_id_info 用户扩展信息表
3)act_id_membership 用户与用户组对应信息表
4)act_id_user 用户信息表

5. 通用数据表
1)act_ge_bytearray 二进制数据表
2)act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录
  • 7项Service
不同的Service类对应不同的功能。

1)RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对repository的存取服务。
2)RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署、流程定义和流程实例的存取服务。
3)TaskService:在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
4)IdentityService:Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IndentityService提供了对Activiti系统中的用户和组的管理功能。
5)ManagementService:提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。
6)HistoryService:用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
7)FormService:Activiti中的流程和状态 Task均可以关联业务相关的数据。通过使用FormService可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。
  • 7项基本操作
1)设计流程图(各种组件,如连线、用户任务、网关)
2)流程定义增删改查
3)流程变量增删改查
4)启动流程定义
5)任务增删改查
6)完成任务
7)历史信息查询

三、开始学习Activiti

1、必要的准备
1.1 下载与了解目录
下载Activiti路径:官方地址(http://activiti.org.download.html)
下载后解压,看到如下目录:
1)database:里面存放的是Activiti使用到的数据库信息的sql文件,它支持的数据库类型(Oracle、SQL Server、MySql、H2、内存数据库等),使用时只需执行自己的数据库类型的文件即可。如:你的数据库是mysql,那么就执行activiti.mysql.create.*.sql即可。
2)docs:API文档
3)libs:使用Activiti所需要的所有的jar包和源文件
4)wars:官方给我们提供的示例Demo,通过使用Demo可以快速了解Activiti。
1.2 其他准备
使用Activiti,首先当然要有JDK了!6+版本就可以了。其次,要有一款IDE,我们使用Eclipse,需要安装Activiti插件。然后,Web容器也要有,我们使用Tomcat6.0版本。

1.3 一分钟入门(见用户手册)
所谓的一份中入门就是通过运行你下载的包里的wars文件夹里的activiti-explorer.war文件,以便快速了解Activiti。
步骤:将文件拷贝至Tomcat的webapps目录下,启动tomcat,输入http://localhost:8080/activiti-explorer,然后你就可以开整了。

注意:需要熟悉的知识点
1. Tomcat使用命令行启动和停止的命令
2. Tomcat配置Eclipse进行启动和停止

这里需要说明的就是,这个Demo默认采用的是H2内存数据库,如果想用你自己的数据库,就需要修改web应用WEB-INF/classes目录下的db.properties。然后,按照上面说的,把database里的create文件夹里的数据库文件导入你自己的数据库(如果没有修改db.properties,就不用导入了)。

注意:
1. 这块我用的是mySql,需熟悉安装mySql,在安装的过程中遇到了一些错误
2. 这里需要重点了解activiti.cfg.xml的配置以及如何构建ProcessEngine(配置文件构建方式、代码构建方式)

2、核心组件介绍
2.1 关键对象
1)Deployment:流程部署对象 —— 部署一个流程时创建的。
2)ProcessDefinitions:流程定义 —— 部署成功后自动创建。
3)ProcessInstance:流程实例 —— 启动流程时创建。
4)Task:任务 —— 在Activiti中的Task仅指有角色参与的任务,既定义中的UserTask。
5)Execution:执行计划 —— 流程实例和流程执行中所有节点都是Execution,如UserTask、ServiceTask等。

2.2 服务接口
1)ProcessEngine:流程引擎的抽象,通过它我们可以获得到我们需要的一切服务。
2)7个服务,不同服务代表不同功能,见上面(7个Service)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页