今天买了Activiti实战这本书,决定记录一下学习过程。
一 概念:Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用java开发的快速、稳定的BPMN2.0流程引擎。可以与spring完美 集成。
BPM:Business Process Management缩写,业务流程管理,是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。
工作流的生命周期:定义-->发布-->执行-->监控-->优化-->定义, 是一个闭环。
BPMN:Business Process Modeling Notation ,业务流程建模标注。
二 acitiviti的特点:
1、数据持久化
2、引擎service接口:提供了7个,均通过ProcessEngine获取,并且支持链式API编程风格。
RepositoryService:流程仓库Service,用于管理流程仓库,如部署、删除、读取流程资源。
IdentifyService:身份Service,管理和查询用户、组之间的关系。
RuntimeService:运行时Service,管理所有正在运行状态的流程实例、任务等。
TaskService:任务Service,用于管理、查询任务,如签收、办理、指派等。
FormService:表单Service,用于读取和流程、任务相关的表单数据。
HistoryService:历史Service,可以查询所有历史数据。
ManagementService:引擎管理Service,和具体业务无关,主要是可以查询引擎配置、数据库、作业等。
3、流程设计器:目前只有Eclipse Designer,还有Signavio公司为Activiti定制的基于web的Activiti Modeler流程设计器。
4、原生支持spring
5、分离运行时与历史数据
三 Activiti架构与组件
Activiti Engine:作为最核心的模块,提供针对BPMN2.0规范的解析、执行、创建、管理(任务、流程实例),查询历史记录并根据结果生成报表。
Activiti Modeler:是模型设计器。
Activiti Designer:功能和Activiti Modeler类似,同样提供了基于BPMN2.0规范的可视化设计功能,但目前还没有完全支持BPMN规范的定义。
Activiti Explorer:可以用来管理仓库、用户、组、启动流程、任务办理等。
Activiti REST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的REST API交互,通用的协议具有跨平台、跨语音的特性。
四 下载Activiti ,目录说明:
1、5.10及之前的版本
docs:该目录包含了三种文档:javadocs、userguide、xsd
javadocs:包名 按照功能模块划分
userguide:用户手册,包含环境配置,10分钟快速入门,以及各个功能模块的使用教程。
xsd:包含BPMN2.0规范的XSD文件,以及Activiti扩展的自定义标签XSD。
setup:用于构建、启动Activit Explorer演示程序,通过ant demo.start命令即可自动下载tomcat,配置数据库,最后打开浏览器访问。
workspace:该目录包含了各种应用的实例程序,都以单元测试的形式展示功能的使用方式。
2、5.11之后的版本
Database:该目录包含了针对Activiti引擎表的创建、删除以及版本升级三种类型的脚本
docs:该目录也包含了三种文档:javadocs、userguide、xsd。
javadocs:包名 按照功能模块划分
userguide:用户手册,包含环境配置,10分钟快速入门,以及各个功能模块的使用教程。
xsd:包含与流程定义相关的scheme。
libs:相比5.10之前的版本移除了第三方的依赖,仅仅包含了Activiti引擎的各个模块的class文件以及源码。
wars:从5.11版本开始对Explorer模块和rest模块进行了拆分,使得rest模块可以独立运行;运行Explorer的方式也随之发生了变化,不再使用ant脚本运行,而是提供 了一个独立的war包,自行部署tomcat或jboss等web服务器中。
五 Javadocs一共包含了11个package
1、org.activiti.engine:包含七大类Service接口、异常类定义和流程引擎以及流程 引擎配置,另外还定义了一些运行时异常类。
2、org.activiti.engine.delegate:定义了处理流程的行为、监听事件的规范。
3、org.activiti.engine.form:应用在内置表单的场景下,在一些企业或客户要求自定义表单的需求中使用。定义表单有两种方式:第一种是直接在流程定义中设置每个节 点的表单内容,可以设置每个字段(Field)的类型、是否可以编辑等属性。另外一种就是通过外置表单的形式,通过formkey指定外置表单文件的名称,类型可以 是.xml或.form.表单的读取、提交均可以通过FormService接口完成。
4、org.activiti.engine.history:包含了历史记录查询对象及查询结果的历史数据对象接口。可以查询历史流程实例(HistoricProcessInstance)、历史任务 (HistoricTask)、历史活动(HistoricActivity)、历史详细(HistoricDetail)等。
5、org.activiti.engine.identity:可以用来管理身份和认证,功能依托于IndetityService接口。
6、org.activiti.engine.management:主要是用来实现针对流程引擎的管理功能,通过调用接口ManagementService可以监控引擎状态、任务调度、数据库数据读取。
7、org.activiti.engine.query:没有具体的功能。定义了查询的共有特性。
8、org.activiti.engine.repository:包含了针对流程资源的管理与查询。依托RepositoryService接口可以部署流程定义、自定义表单、规则等文件,还可以读取流程图片、
流程定义(bpmn20.xml)文件。
9、org.activiti.engine.runtime:通过RuntimeService接口查询运行时数据。
10、org.activiti.engine.task:包含任务对象的定义,依托TaskService接口可以对任务(Task)全面管理。
11、org.activiti.engine.test:针对快速创建测试用例提供基类和注解(Annotation)。
六 环境配置检查
Activiti 5.10版本之前要求JDK最低版本为JDK1.5,从Activiti5.11开始最低要求JDK1.6
Activiti配置文件为activiti.cfg.xml,用于定义引擎初始化参数、bean、邮件服务器及各种监听。