4

如何从业务流程中外部化业务规则,以便在不触及业务流程逻辑的情况下添加规则?

例如,我有两个业务流程,比如“添加产品”和“更新产品”,这两个流程共享一些通用规则,并且以后可以不断添加规则。我打算编写一次业务流程,它执行特定流程可用的所有规则,如果没有抛出异常,则继续成功完成业务流程。

我不打算使用规则引擎,因为我认为这对我的架构来说可能太重了。

谢谢和问候,
阿杰

4

3 回答 3

1

这个问题的答案比我在这里写的要复杂。这涉及您的业务/行业的数据关系、安全性、政策原则和管理约束等科学。

如果您的意思比“业务规则”和“业务政策”更模糊,我可能会误解您的问题。

于 2009-08-22T08:01:41.087 回答
1

您可以使用多种技术将规则与流程分开。在某种程度上,您正在从业务流程的各个点调用“方法”。那么问题就变成了一种机制,通过该机制可以在不改变业务流程本身的情况下修改该方法。

可以将该方法打包到自己的库(dll、jar 或其他)中,然后用新版本替换该 jar。更改库,更改业务规则。

可以根据从数据库获得的可配置参数来表达该方法中的逻辑。改变数据库,改变业务规则。

如果复杂性上升得足够多,您会发现您已经实现了自己的规则引擎。

在某些时候,使用现有的规则引擎而不是重新发明这个轮子会变得更有效。

如需更详细的建议,您需要告诉我们更多关于您在做什么的信息。

于 2009-08-22T09:20:50.647 回答
0

这些问题非常广泛,因此我将按照一般模式回答。

在许多情况下,我所做的是定义流程,以便在流程的适当阶段插入许多“看门人”活动。这些守门人中的每一个都负责执行业务规则的特定子集。因此,例如,一项此类活动可能会强制执行数据质量。另一个可能会根据业务规则做出路由决策。另一个定价。等等。

实际规则本身保存在工作流之外,并且可以独立于它进行修改。诀窍是限制规则评估的“过程结果”,以便可以继续拥有可预测(和可测试)的过程。

于 2009-08-22T08:10:38.463 回答