原文网址:
http://www.activiti.org/components.html
Activiti引擎是一个便于Java开发者使用的轻量级流程引擎。为了达到这个目的,我们将延续jBPM的成功之路。jBPM和Activiti的最大不同不在于引擎,而在于我们将开发的更多复杂的组件。
在此我们将提供更多关于Activiti组件在开发上下文中联合进行BPM处理的细节。蓝色的组件将成为Activiti的一部分,灰色的则不是。
Activiti 引擎
要了解流程和相关API如何使用,请参见10 minute tutorial
(严重BS一下,在当前Alpha3版本中,这个10 minute tutorial还没有更新到Alpha3,还是针对Alpha1的。。。。)
特征
这是Activiti项目的核心。这是一个原生支持BPMN 2标准的Java流程引擎,并将拥有以下特性:
- 允许用户更新和流程更新在同一个事务里面(大声欢呼,用力鼓掌啊)
- 可以以任何事务划分形式运行在任何Java环境中,比如:Spring,JTA或者独立环境。
- 易于获取和安装使用运行(。。。。这个是凑数的吧)
- 完全支持云扩展(暂时。。。在几年之内都用不上吧)
- 易于增加新的自定义环节类型和专用的流程语言
- 专利产品(。。。。这个也是凑数的吧)
- 极其迅速(。。同上)
- Transactional timers (事务性的定时器??)
- Asynchronous continuations(异步延续???)
- 在业务级别视图隐藏了事件监听器,达到了从技术细节解耦的目的
- 具备在扁平单元测试中独立测试流程执行的特征
上述有几项特征应该置为高亮(直译,呼呼)因为它们改善了技术人员和业务人员的合作关系。
首先来说说所有的事件监听器。当前的特征允许执行黑盒动作--一小段java代码或者是视图中主要事件的脚本。这意味着开发人员可以为流程添加额外的技术细节而不必展示在业务视图之中(我想,这儿提到的业务视图应该是指可采用工具画出来的流程定义图之类)。这样,业务人员就无须关注业务视图中的技术切面,只专注于业务流程设计,技术人员则关注技术实现。
(这儿,我的理解就是将流程环节的事件监听和流程设计解耦了,业务人员只负责设计流程,环节上的事件监听由技术人员开发)
其次是定制环节。Activiti引擎拥有BPMN标准支持的类型和一系列不在标准内的类型。但是业务人员仍然可以创建一个不属于当前任何类型的环节。遇到这种情况,开发人员拥有两个选择。一是向业务人员建议采用当前存在的类型修改环节,或者--这就是Activiti的特性了--,开发人员也可以自己用java代码定制一个环节类型以满足业务人员设计的复杂环节行为。这样,业务人员和开发人员的沟通就很简单了,业务人员提供业务视图,开发人员进行开发,而无须返回修改。
我们提供的另一项令人期待的创新是BPMN快捷方式(BPMN shortcuts,这是什么东东?)。之前我们采用jPDL时,我们从社区获取到的反馈是期望jPDL能够更加简洁和易读。BPMN具备很高的易读性,但是在某些领域它显得太冗长了。但是我们意识到支持标准对开源项目来说是至关重要的,所以我们完全采用了BPMN2.0。在BPMN2.0显得冗长的地方,我们采用了快捷方式。举个例子,引入一个简单的环节属性等同于构建一个冗长的BPMN2.0 XML模块。注意并不是所有的扩展都能等同于有效的BPMN XML,只有按照某种机制进行的简化才能够
等同。我们将一直从社区中收取反馈并不断完善扩展机制。
(说了这么多,意思就是Activiti支持BPMN2.0标准,有些BPMN2.0比较冗长或者麻烦的定义或者配置,Activiti自己做了简化。用户要做同样的简化的话,必须按照Activiti的机制来进行,以上。)
流程虚拟机
流程虚拟机是Activiti引擎的基础架构,它在环节类型,特征和完整的流程语言上面拥有很便捷的可插拔性。核心Activiti团队致力于开发一种基于原生BPMN2.0流程语言的流程语言。BPMN2.0将成为业务端BPM建模主要的语言,因此我们想要简化流程模型和实现细节之间的过程。
但是太多开发者认为在流程虚拟机上开发流程语言是非常简单的,而我们从社区帮助获取到的一种候选语言是jPDL 4。我们将支持和鼓励社区对jPDL4和其他领域定义的流程语言进行开发。有太多的流程语言都可以基于流程虚拟机开发。我们预想很多公司将开发出他们自己的流程语言版本。
Activiti 浏览器
Activiti浏览器是一个为所有系统用户提供Activiti引擎运行时权限的web应用。它包含了任务管理器,基于历史数据的统计报表视图和流程实例检查。
任务管理器
主要用途:
- 查看个人任务列表
- 查看候选任务列表
- 创建一个流程无关的新任务
- 在任务表单中提交数据并结束任务
- 将任务指派给另一个用户
- 查看流程中涉及当前任务的其他用户
- 创建子任务并指派给其他用户
管理用例:
- 查看下级用户的任务列表
流程拥有者用例:
- 检阅当前任务相关的流程实例
报表
所有流程实例执行的事件都储存在流程数据库的历史表中。既然原生流程定义的每一步骤和环节对于业务人员来说都是有意义的,那么步骤和环节的统计信息一定是业务人员感兴趣的。举个例子,每环节执行的平均时间或者每个国家的平均交易量之类。
流程实例检查
流程拥有者和管理员能够监控流程实例的运行细节。
Activiti 监控
Activiti监控是一个管理和监控Activiti引擎启动和运行的web应用。这是为系统管理员和操作员保障系统运行提供工具。
监控用例:
- 展示Activiti引擎启动运行状况或者某个地方出了什么问题
- 发布管理
- 查看已发布的资源
- 流程定义管理
- 查阅数据库表
- 查看Activiti日志
- 事务的平均运行时间
- 任务多次失败现象,失败原因,同样失败的多个任务,重启任务。
Activiti 模型
Activiti模型是一个基于开源项目Signavio 的流程编辑器,它能够采用图形界面绘制BPMN2.0流程。流程文件将保存在服务器上的中央文件系统中,这个文件系统充当模型知识库角色。
Signavio的主要目的是在浏览器中绘制BPMN2.0流程视图,但并不仅仅局限于此。它拥有良好的可扩展模板支持不同的视图类型比如组织机构图。Signavio通常将视图以JSON格式存于后端,并提供以多种文件格式比如BPMN2进行导入导出。但是他们提供的后端是基于简单文件系统并包含特定文件格式的导入导出。BPMN2流程被保存为BPMN2.0的文件格式。
Activiti 周期
Activiti周期是一种全新的BPM组件。简单来说,它是一种改善业务人员,开发人员和IT运营人员合作模式的web应用。它是基于Process Cycle Layer概念的。在当今市场上还未曾见过类似的BPM组件。我们将在另外一篇文章中详谈它 a detailed picture of The Process Cycle Layer。