AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

规则 vs. 过程性代码

  • 2007-12-29
  • 本文字数:1781 字

    阅读完需:约 6 分钟

在基于 BPM 的解决方案中,怎样确定何时适合使用规则,何时适合使用过程性代码呢?最近, haley.com 的创始人兼主席 Paul Haley 被请求帮助解决这个问题

最近,一个企业架构群里的一些战略决策者们请求协助,以制定与他们企业更加相关的规则。他们既关注何时将规则嵌入中间层、何时将它们封装到服务中,也关注典型用例和参考实现。他们对规则怎样与 BPM 和 BI 结合特别感兴趣。

Paul 宣称传统 IT 思想偏向于编写过程性代码,这导致了对 BPM 的滥用。为了提供一个更为均衡的观点,他确定了两个需要理解的基本项:

  1. 规则技术适合的抽象活动
  2. 何时以及为何,规则技术比常见的选择更好

现今的 BPM 产品都包含一些结合规则的机制,但是 Paul 认为,目前的实现正在阻碍这种技术发挥其真正的能力:

时常,用户不知不觉就牺牲了市场时机,以及将逻辑从流程中分离所带来的灵活性、敏捷性和可访问性的优点。 其关键之处就是 BPM 不会推动更广泛地运用业务规则。更确切的说,BPM 供应商只是应付那些知道在他们的流程中需要决策、并且规则比代码或流程图更适合管理他们决策的人。

那么,你该如何开始在普通的、BPM 规定的用例之外利用规则技术呢?Paul 提供了一些“规则的蓝图”:

在规则可能有效时会有明显的启发式逻辑(heuristics)。一些启发式逻辑以任务为中心,比如在决策制定或服从上。例如: - 是否有许多合格(或不合格)的标准(或原因)

  • 是否有许多标示问题的异常(像突发的或者不符合规定)

在第一种情况下,决策是两个互相排斥的选择之一。对业务规则来说,这是最简单的情况。这种情况进一步被改进为:

  • 当标准数量增加
  • 当标准的集合变得更为动态
  • 当标准变得更加复杂

规则技术典型适用的一个领域就是确定异常并强制服从,Paul 写到:

在监察应用(compliance applications)中异常是很普遍的。大多数规章都被表示为需求。换句话说,它们更趋向于说必须是什么,而不是该去做什么。任何这样的需求都必须被转换为推演规则或者执行动作的操作。典型来说,这样的转换包含替换“必须”、“可能”、“将要”,并引入“如果”或“如果不”。 很不幸,一条需求往往被转换为多于一条的规则。

从需求到业务规则的分析转换,如果对应关系大于一对一或者影响多个类、任务或者流程,那这就是使用规则技术的清晰的信号。

注意,策略也可能常常被表示为需求,但是它们也是经常被表示为规则。所以除了业务需求和规章外,策略也可能被强制使用异常,或者要求转换。

将异常逻辑作为规则进行维护,无需说明需求、规章、策略怎样(或就是)被(重复地或明显地)检查到,就可以识别异常、并在整个业务流程中强制服从规则。也就是说,从一个流程图中分离出需求(包括多数规章和一些策略)会显著增加生产率和敏捷性。

同样,规则可以用于评分算法中:

……由于主题专家认识到启发式逻辑,或者随着风险、盈利能力或其它关键业绩指标之间的相关性被发现,规则的使用会使搭建一个可伸缩的评分架构更容易。

然后 Paul 论述了一些规则技术何时不合适的指标,包括“如果流程简单就不要考虑规则”:

如果下面两条都符合,就不要使用规则: - 流程图只有少数分支节点

  • 逻辑已经被完全理解并不会再改变

在将规则封装成服务方面,Paul 提出了下面的建议:

一般的讨论关心的是在对象还是在服务中封装业务逻辑(即规则)。服务对业务流程编制决策和监察是有意义的。

并且继续指出:

如果需求、规章、策略或规则覆盖模型中的很多类、流程中的很多任务,分离出来的规则就要被明确地表示出来。

总结文章时,Paul 对当前缺少 BPM 和 BRM 产品之间的整合持批评意见:

当今市场的现实是,BPM 供应商提供的业务规则能力并不具备早期提到的规则供应商具备的那些易访问性、可管理性、功能性和性能。并且顶级 BPM 供应商和规则供应商之间的合作还不够深入。 集成能力的局限性势必会影响在有一个 BPM 平台时使用规则。即使一些供应商的能力相对于专业的规则供应商来说较薄弱,这些供应商提供内置的能力也可能是最可行的选择。但是,这样做却使供应商更加禁锢在自己关注的问题中。

Paul 提到了 JBoss Drools InfoQ 曾对其进行过报导),因为它可能具有目前在 BPM 解决方案中推行规则技术最好的整合。

查看英文原文 Rules versus Procedural Code - - - - - -

译者简介: 王丽娟(Ivy Wang),一个快乐的程序员,持续从事 Java EE 中间件和 Java EE 企业应用的开发,关注软件架构技术。职业目标是成长为一名优秀的架构师。

2007-12-29 01:261325
用户头像

发布了 151 篇内容, 共 66.3 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

官方线索|把梦想当作热爱,用技术创造价值!

搬砖人

1024我在现场

纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持

API7.ai 技术团队

API网关 企业案例 移动云 Apache APISIX

腾讯云,五轮面试,六个小时,灵魂拷问,含泪拿下 60W offer

进击的王小二

java面试 大厂面试 java

付费云存储,微信的登云梯还是蜀道难?

海比研究院

云存储

阿里云混合云Apsara Stack 2.0发布,加速政企数智创新

架构 操作系统 公有云 科技

翻车了,字节一道 Fragment面试题

小松漫步

面试 大厂面试 Android;

分布式事务开山之作,带你深入理解分布式事务

华章IT

SimpleDateFormat线程不安全了?这里有5种解决方案

华为云开发者联盟

安全 线程 变量 SimpleDateFormat

模块一作业

周文

「架构实战营」

架构设计第一周学习总结

周文

总结思考

Android架构之网络优化

轻口味

android 10月月更

docker 安装kafka

大可大大大

SpringBoot 自动装配

黄敏

达摩院求解器升级 覆盖黑盒优化难题

Lily

Week 1命题作业

小朱

架构实战营

阿里云多个智物新品集体出道,持续加速产业智能化

Lily

老凡尔赛了!当亚马逊云科技大佬“转行”讲起脱口秀

亚马逊云科技 (Amazon Web Services)

数字化转型 设计师

DeFi去中心化DAPP系统软件开发案例(现成)

每秒创建百万文件,百度沧海·文件存储CFS推出新一代Namespace架构

百度大脑

人工智能

阿里云正式开源PolarDB-X数据库,壮大云原生分布式数据库生态

Lily

QCon看点|亚马逊云科技可持续软件工程实践分享

亚马逊云科技 (Amazon Web Services)

软件工程 S3 云端

阿里云隐私增强计算产品DataTrust助力产业间实现数据价值高效协同

Lily

同为aPaaS平台,华为云开天aPaaS与AppCube有何不同?

海比研究院

aPaaS

2021Android大厂面试题来袭,Android性能优化推荐书

android 程序员 移动开发

数实融合·绽放新机,Techo Day技术回响日邀您“云相聚”

腾讯云数据库

数据库 tdsql

收藏!490家专精特新数智企业全名单:听听“小巨人”企业怎么说?

海比研究院

2021Android进阶学习资料,动脑学院vip课程百度云

android 程序员 移动开发

金九银十,面试必备!耗时一周整理的牛客网上最火Java面试八股文

Java 程序员 架构 面试 大厂

第 21 章 -《Linux 一学就会》- 结构化命令case和for、while循环

学神来啦

会计CRM系统软件提高公司管理效率

低代码小观

企业 企业管理 管理会计综合实训平台 CRM 管理系统

10天拿到腾讯Android岗offer,内容太过真实

android 程序员 移动开发

规则 vs. 过程性代码_架构_Gavin Terrill_InfoQ精选文章