InfoQ

新闻

统一的规则引擎与过程

作者 Gavin Terrill译者 曹云飞 发布于 2007年11月21日 上午5时33分

社区
Architecture,
Java
主题
业务流程管理,
规则引擎
标签
JBoss规则,
WS-BPEL

工作流)商务过程管理系统与规则引擎携手并肩而来。过程定义语言(例如XPDLColored Petri NetsPi-Workflow 或者 jPDL)用来在相对粗级别的抽象层次来描述一个过程。规则用来在工作流的上下文基础之上实现决策,例如决定谁来负责一个项目,当一个活动完成时应该通知谁,或者当一个活动拖延了应该做什么。

今天,JBoss Drools 团队的Mark Proctor和Kris Verlaenen发表了一篇文章:对使用工作流和规则进行声明式编程的看法。文章以Mark描述的工作引擎的下一个主要优势为开端:
当 前规则引擎业界的“惯用伎俩”是关注于无状态的决策服务,分离的工作流引擎在某些时候调出分离的无状态的规则引擎来辅助决策工作 —— 在经过了30年的研究与开发后,这是我们能够提供的最好的方案。数百万英镑的许可证无非是从一些工作流引擎的一个无状态web service调用而得到的美化的电子表格。不是贬低这个模型,实际上这个模型是非常有用的,但是规则引擎与工作流引擎在这种级别的集成最多只是表面上 的,而我们需要统一这些模型,使得这个模型达到更高的层次。

这篇文章是基于jBPM 团队以前发表的一篇论文,该论文中的说法是"过程虚拟机(Process Virtual Machine)" (PVM)。概括地说,对于工作流来说PVM就像对于Java来说的字节码 —— 是一个独立于过程定义语言的过程执行引擎。Kris介绍了PVM+ 与规则引擎集成并与过程执行环境一起提供如下的优点:

  • 可以在过程定义中对规则建模
  • 可以在规则和过程之间共享数据(包括结构定义)
  • 统一审计
  • 简化了管理功能
  • 规则和过程的实例可以通过共享的上下文并行的对变化作出反应

PVM+是以过程为中心的 DSLs 的基础。Kris例举了现有的jBPM 语言jPDL,与我们最近介绍的 PageFlow (在web页面中指定控制流的工作流语言)和RuleFlow (一种处理有大量规则的流程的工作流语言)一同作为样例实现语言。


Drools 4.0 规则引擎图

Kris探讨了“工作条目处理器”的作用,它是负责执行处理实例的。Kris对于依赖上下文采用不同的处理器的想法很感兴趣。这种方法可以用来克服一个由来已久的对基于规则和工作流的开发的批评——即难以测试:

一个工作流在它的生命周期的不同阶段会有不同的行为。例如,对于测试,处理器可以仅仅是简单的测试工作流的执行是否被记录了。在仿真时,做一些对某些应该被执行的工作条目的可视化工作,使得人们可以仿真完成/放弃这些工作条目。
查看英文原文Unified Rules Engine and Processes
译者简介曹云飞,西安交通大学计算机软件硕士。现就职于Ethos,热衷于新技术的钻研,软件架构与敏捷开发,目前从事Home Control方面的工作。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

2 条回复

回复

不错,看看去 发表人 Botao Xing 发表于 2007年11月26日 下午8时48分
很简介的工作流模型 发表人 wang zaixiang 发表于 2007年11月27日 上午1时2分
  1. 返回顶部

    不错,看看去

    2007年11月26日 下午8时48分 发表人 Botao Xing

    不错,看看去

  2. 返回顶部

    很简介的工作流模型

    2007年11月27日 上午1时2分 发表人 wang zaixiang

    抛开可视化设计器而言,JBPM的工作流确实是非常轻量级、简洁的。

    感觉可以和JavaFX很好的结合,使用JavaFX来描述工作流,可能比XML更为简单。再结合一定的可视化设计,可能会是一个很实用、很简单的工作流模式。

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。