最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

统一的规则引擎与过程

  • 2007-11-21
  • 本文字数:1105 字

    阅读完需:约 4 分钟

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

2007-11-21 05:332994
用户头像

发布了 47 篇内容, 共 99556 次阅读, 收获喜欢 3 次。

关注

评论 2 条评论

发布
用户头像
机器翻译的?
2021-07-14 09:33
回复
用户头像
机器翻译?
2021-07-14 09:33
回复
没有更多了
发现更多内容

当我们进行性能优化,我们在优化什么(LightHouse优化实操)

刘悦的技术博客

性能优化 前端 优化 性能优化手册

聊聊 Sharding-Jdbc 的原理-初篇

Nick

MySQL 分库分表 中间件 ShardingJDBC 6月月更

基于 RDMA 的分布式系统研究进展

OceanBase 数据库

RDMA

IteratorPattern-迭代器模式

梁歪歪 ♚

设计模式

通用池化框架GenericObjectPool性能测试

FunTester

如何快速上手AIRIOT?

AIRIOT

物联网 低代码平台

idea社区版和商业版有什么区别

源字节1号

软件开发

架构训练 模块七

小马

#架构训练营

MPLS协议简述

穿过生命散发芬芳

6月月更 MPLS

程序员们,快把这款AI“魔法”做到手机相机里,求求了

最新动态

Vue框架学习笔记 每天学习----四

恒山其若陋兮

6月月更

OceanBase数据库荣获领先科技成果“新技术”奖

OceanBase 数据库

oceanbase 数博会

高性能API网关Kong介绍

天翼云开发者社区

模块七作业: 王者荣耀商城异地多活架构设计

凯博无线

几经波折,InfluxDB的TSDB C位还能做多久?

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

【Go实现】实践GoF的23种设计模式:原型模式

元闰子

Go 设计模式 原型模式

Oceanbase 读写分离方案探索与优化

OceanBase 数据库

分布式数据库 读写分离 oceanbase

LabVIEW控制Arduino采集热敏电阻温度数值(基础篇—13)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集热敏电阻温度数值

王者荣耀商城异地多活架构设计

大眼喵

「架构实战营」

InfoQ 极客传媒 15 周年庆征文 | 轻量级状态机COLA StateMachine保姆级入门教程

Zhendong

Java 架构设计 状态机 InfoQ极客传媒15周年庆

LabVIEW控制Arduino采集LM35温度传感器数值(基础篇—12)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集LM35温度传感器数值

SPDK对接Ceph性能优化

天翼云开发者社区

开发工具

后端解构复习(一)

卢卡多多

技术栈 6月月更

ChainOfResponsibilityPattern-责任链模式

梁歪歪 ♚

设计模式

CommandPattern-命令模式

梁歪歪 ♚

设计模式

内存数据库和磁盘数据库哪个更强?

OceanBase 数据库

内存数据库 oceanbase 磁盘数据库

云原生训练营大作业

jjn0703

【动态规划入门篇】只需三步解决它

知心宝贝

算法 前端 动态规划 Leet Code 6月月更

OceanBase 成为信通院首批可信开源社区、可信开源项目

OceanBase 数据库

开源 oceanbase 信通院

LabVIEW控制Arduino采集光敏电阻数值(基础篇—14)

不脱发的程序猿

单片机 LabVIEW Arduino LIAT 采集光敏电阻数值

利用Python实现自动操作Excel文件

弑着去忘记う

统一的规则引擎与过程_Java_Gavin Terrill_InfoQ精选文章