在 OSWorkflow 一书中,作者 Diego Adrian Naya Lazo 对基于 Java 的开源工作流引擎—— OSWorkflow 展开了讨论。在其官方网站上是这样描述道:
该书覆盖了与 OSWorkflow 相关的所有方面。阅读此书,你不需要预先具备任何 OSWorkflow 的相关知识。你将从该书中了解到 OSWorkflow 的全部,本书涵盖了从 Business Process Management(BPM)技术的基础知识,到安装 OSWorkflow 并使该工作流引擎与类似 Drools、Quartz、Pentaho 等第三方组件相集成的各个方面。
该书的出版商—— Packt Publishing 向 InfoQ 提供了该书第四章的节选:在你的应用中使用OSWorkflow (Using OSWorkflow in your Application)。
InfoQ 采访了作者 Diego Naya Lazo,就 OSWorkflow 的基本情况和这本书主要覆盖的内容与其进行了交流:
InfoQ:在我的应用中,为什么需要引入工作流引擎?
Diego Naya Lazo:当前大部分业务应用程序都是对现实生活中业务过程的模拟,这些业务过程由动作(activitie)以及动作间的流转(transition)所组成。
工作流引擎可以帮助开发人员建立一个业务过程的模型,使得应用能够按照过程所定义的信息流程来运行。
InfoQ:OSWorkflow 能为正在实现中的应用提供怎样的功能呢?
Diego Naya Lazo:OSWorkflow 可以管理工作流的状态、潜在的流转、条件检查、分支与合并以及过程中所有的业务限制。
InfoQ:您能举例说明一下,在应用中,哪些地方可以运用 OSWorkflow 吗?能否分别举例说明一下什么时候 OSWorkflow 可以作为工作流服务器应用,什么时候可以将它作为一个工作流层?
Diego Naya Lazo:比如 JIRA,它是一个流行的问题跟踪系统,在该系统中,OSWorkflow 作为工作流层被应用。系统将问题 ticket 流转完全交给 OSWorkflow 来处理。
而在公司环境中,当 CIO 想要一个业务过程信息中央存储库的时候,OSWorkflow 则常常被作为单独的服务器来使用。
InfoQ:如何将 OSWorkflow 与 Spring、Seam、Struts 等应用开发框架相集成呢?
Diego Naya Lazo:OSWorkflow 与 Spring 做到了无缝集成,并且可以从事务和 Hibernate 等持久性技术中获益匪浅。
Struts 和 OSWorkflow 经常一起被使用,但在 OSWorkflow 中并没有内建与 Struts 集成的类,Seam 也一样。
InfoQ:如何将 OSWorkflow 与 JBoss Drool 或 Codehaus Werkflow 类似工具做比较呢?
Diego Naya Lazo:OSWorkflow 可以弥补 JBoss Rules 类似的业务规则框架在业务过程建模方面的不足。很有希望的是,JBoss Rules 5 中的 Mark Proctor 将促使 OSWorkflow 用户在以流程、规则和事件为主的下一代环境中的流转更为流畅。你真应该试验一下正在开发中的 Mark。
Werkflow 是 OSWorkflow 的替代选项,但它缺少大量的用户基础。另外,事实证明,OSW 在伸缩性和性能特性方面更胜一筹。
InfoQ:工作流和一系列的业务规则有什么不同?
Diego Naya Lazo:严格来说,工作流和规则几乎是等同的。工作流是您根据业务逻辑想要用户去遵循的一系列步骤。而对于这里所说的逻辑,最好的表达方式是规则。
因而,一个工作流常常在每个步骤中都有内嵌的业务规则,规则本身可以是嵌套的工作流。
InfoQ:OSWorkflow 如何确保应用程序的可测试性?
Diego Naya Lazo:OSworkflow 在设计之初就考虑到了单元测试,因此,要测试您的业务过程相对来说还是很简单的。它甚至允许使用一个临时内存存储系统,这样一来,您的测试可以摆脱数据库的束缚。
InfoQ:OSWorkflow 如何与 Esper 和 Quartz 这样的组件相集成?
Diego Naya Lazo:Esper 是事件流程引擎,可以在 BPM 领域中运用。它主要通过让工作流步骤发出事件给引擎,从而使引擎可以处理这个事件或对该事件做出反应。一些工作流步骤,比如贷款审批,就是业务事件。上下文中给出的这些事件就是业务的相关信息。
事件处理引擎比较适合信号的实时处理流程。OSWorkflow 能够从多个业务过程中向引擎发出信号。然后,引擎能够将这些事件互相关联、侦测符合匹配模式的情况并在一些特定的业务条件被满足时发出警告,例如,同一个人在两个不同的国家申请贷款的情况。这是一个使用 CEP 引擎来侦测诈骗的典型应用。
另一方面,Quartz 能够使得 OSWorkflow 在某些特定的时间担当活(active)动代理的角色,例如,每天启动一个新的工作流、或触发流程中特定的步骤、再或者每两小时进行一次分支。
InfoQ:使用像 Pentaho 那样的报表工具的话,针对应用的当前状态能够生成怎样的报表?
Diego Naya Lazo:Pentaho 是一个非常不错的报表工具,将它与任何数据库结合使用都能够产生惊人的结果。OSWorkflow 有一个简单的关系模型,通过使用 Pentaho,您可以创建一个 BAM(业务动作监控 Business Activity Monitoring)portal。这使得执行业务的用户可以监控到他的流程中的任何变化。在特定情况下,直观表示是最有效的。
还有时候,一个简单的数据表格就是最具效率的数据报表形式,Pentaho 在这个方面也能对我们提供帮助。
InfoQ:您觉得 OSWorkflow 还缺少些什么?什么是覆盖这些领域的最好的方式?
Diego Naya Lazo:OSWorkflow 在文档方面还有待进步。我会花一些时间来更新 OSWorkflow 手册和 how-to 指南,这是我能在这个令人激动的项目上所能尽到的一丝绵薄之力。
评论