jBPM 和 Oozie 工作流引擎的基本原理
(图片来源网络,侵删)jBPM 的基本概念与API设计
jBPM,全称是Java Business Process Management(业务流程管理),是一种开源的、灵活的、易扩展的可执行流程语言框架,它覆盖了业务流程管理、工作流管理、服务协作等领域,jBPM利用JPDL流程定义语言将现实生活中处理事务的业务流程进行抽象,形成一套业务流程规则。
jBPM4工作流引擎的核心是PVM(Process Virtual Machine),它主要依靠四组服务API来提供服务:
1、流程定义服务(Process Service)
2、流程执行服务(Execution Service)
3、流程管理服务(Management Service)
4、指令服务(Command Service)
(图片来源网络,侵删)这些服务使应用能够与PVM进行数据交互,并在支持事务的持久化模式下运行。
还有客户端API,它是核心工作流模型对象对外暴露的公共方法,可以直接用来执行一些流程操作,但不会进行任何持久化操作,只有通过调用相应服务的API后,操作的结果才会被持久化。
活动API用于实现流程活动在运行时的行为,所有的活动类型都要实现ActivityBehaviour
接口,该接口提供了控制流程执行的方法,事件监听API用于自定义事件监听器,用来处理被监听到的流程事件,与活动API不同,事件监听器无法控制流程的执行。
jBPM 的运行环境设计
为了让流程可以在不同的事务环境中运行,例如在Java EE或Spring中,PVM定义了运行环境对象,它会根据配置的环境执行服务延迟加载与获取事务管理等操作,运行环境是EnvironmentFactory
对象,它有两个实现:ProcessEngineImpl
(默认的Java EE环境)和SpringProcessEngine
(基于Spring框架的环境)。
Oozie 的基本概念与API设计
Oozie是一个用于 Hadoop 的任务调度和协调系统,它可以以任意顺序执行多个Hadoop作业,Oozie的主要组件包括:
(图片来源网络,侵删)1、工作流引擎
2、协调器
3、Bundler
Oozie的工作流定义了一种有向无环图(DAG),其中每个节点都是一个动作节点,代表一个Hadoop作业或其他类型的任务。
Oozie 的运行环境设计
Oozie的运行环境是基于Hadoop平台的,它通过Hadoop的API与HDFS、MapReduce等组件交互,Oozie使用自己的数据库来存储元数据和状态信息,常用的数据库包括Derby、MySQL和PostgreSQL。
相关问答FAQs
1. jBPM如何支持事务?
jBPM的服务API设计支持事务,所有的服务操作都在支持事务的持久化模式下运行,这意味着在进行流程操作时,可以通过服务的API来确保数据的一致性和完整性。ExecutionService.startProcessInstanceByKey
发起流程实例就是一个事务性操作。
2. Oozie如何保证任务按顺序执行?
Oozie的工作流定义了一种有向无环图(DAG),通过控制动作节点的依赖关系来保证任务按照预定的顺序执行,每个动作节点都代表一个Hadoop作业或其他类型的任务,只有当前置任务完成后,后续任务才会被触发。
下面是一个简单的介绍,对比了JBPM和Oozie这两个工作流引擎的基本原理:
特性/组件 | JBPM | Oozie |
定义 | JBPM是Java Business Process Management的缩写,一个开源的业务流程管理框架。 | Oozie是一个由Cloudera贡献给Apache的,基于Hadoop平台的工作流调度框架。 |
用途 | 用于定义、执行和管理业务流程。 | 用于调度和管理在Hadoop平台上的多个MapReduce作业和动作。 |
语言 | 使用JPDL(jBPM Process Definition Language)流程定义语言。 | 使用XML配置文件(如workflow.xml)来定义工作流。 |
架构 | 1. 嵌入式的工作流引擎 2. 可插拔的体系架构 3. 与Drools、Hibernate等集成 | 1. 由Oozie Client和Oozie Server组成 2. 运行在Java Servlet容器中 |
核心组件 | 流程定义 流程实例 任务 事件监听器 | Workflow Coordinator Bundle Job 控制流节点与动作节点 |
工作流结构 | 支持定义顺序、分支、并行等流程结构。 | 以DAG(有向无环图)的形式表示工作流。 |
任务调度 | 提供任务分配和执行机制。 | 支持基于时间和数据触发的任务调度。 |
执行环境 | 可以独立运行,也可以集成在Java应用中。 | 主要针对Hadoop生态系统,如MapReduce、Hive、Pig等。 |
社区和支持 | 拥有活跃的社区和商业支持。 | 由Apache软件基金会支持,服务于Hadoop生态系统。 |
这个介绍展示了两个工作流引擎在基本原理上的共通点和差异,虽然它们都是用来管理和调度工作流的,但它们设计的初衷、使用的场景和提供的功能有所不同。
下一篇:高级技巧_GIN提示与技巧