BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

统一的规则引擎与过程

| 作者 Gavin Terrill 关注 1 他的粉丝 ,译者 曹云飞 关注 0 他的粉丝 发布于 2007年11月22日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

工作流)商务过程管理系统与规则引擎携手并肩而来。过程定义语言(例如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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不错,看看去 by Xing Botao

不错,看看去

很简介的工作流模型 by zaixiang wang

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

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

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT