限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

统一的规则引擎与过程

  • 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:333431
用户头像

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

关注

评论 2 条评论

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

Vue-7-计算属性和方法的区别

Python研究所

6月月更

消息队列存储消息数据的 MySQL 表格

流火

企业架构的第一性原理

涛哥 数字产品和业务架构

企业架构

从源码解析 MobX 响应式刷新机制

岛上码农

flutter ios 前端 安卓 6月月更

Teambition 协作应用心得分享|社区征文

北洋

初夏征文

加强区块链技术司法应用

CECBC

SDN系统方法 | 6. 网络操作系统

俞凡

架构 网络 sdn SDN系统方法

合理地配置线程池

急需上岸的小谢

6月月更

居家办公期间如何提升沟通效率|社区征文

北洋

初夏征文

什么是数据驱动

奔向架构师

大数据 数据仓库 数据驱动 6月月更

模块八作业

天琪实刚亮

架构训练营

逐向双碳:东数西算中的绿色需求与竞争焦点

脑极体

OpenMAX (OMX)框架

程思扬

音视频 编解码

【sql语句基础】——查(select)(单表查询)

写代码两年半

sql MySQL 数据库 数据库· 6月月更

Android MaterialButton使用详解,告别shape、selector

yechaoa

android 6月月更 material design MaterialButton

vue计算属性

小恺

6月月更

vue中mixins的使用方法和注意点

源字节1号

软件开发 前端开发

模块八:设计消息队列存储消息数据的MySQL表

jiaoxn

「架构实战营」

八大误区,逐个击破(2):性能差?应用程序少?你对云的这些担心很多余!

龙智—DevSecOps解决方案

Atlassian atlassian云版 Atlassian白皮书

leetcode 47. Permutations II 全排列 II(中等)

okokabcd

LeetCode 搜索 数据结构与算法

前端食堂技术周刊第 40 期:HTTP/3、WebContainers 登陆 Firefox、Remix Conf 2022、VueConf US 2022

童欧巴

Vue 前端

spring4.1.8扩展实战之一:自定义环境变量验证

程序员欣宸

Java spring Spring Framework 6月月更

深圳3月14日起全市停工停业7天居家办公心得|社区征文

老周聊架构

后疫情时代企业应对策略 6月月更 初夏征文 高效工具 高效沟通

Java—流 Stream

武师叔

6月月更

搭建前端监控,如何采集异常数据?

杨成功

架构 大前端 监控系统

测试基础之:单元测试

甜甜的白桃

单元测试 测试用例 6月月更

提升管道效率:你需要知道如何识别CI/CD管道中的主要障碍

龙智—DevSecOps解决方案

ci CD CloudBees CI/CD管道

模块八

ASCE

1.5 什么是架构师(连载)

凌晞

架构 架构师

NixOS 22.05安装过程记录

sai

NixOS Nix

【LeetCode】查找和替换模式Java题解

Albert

LeetCode 6月月更

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