如何从业务流程中外部化业务规则,以便可以在不触及业务流程逻辑的情况下添加规则?
例如,我有两个业务流程,分别是“添加产品”和“更新产品”,这两个流程有一些共同的规则,并且规则可以在以后不断添加。我打算只编写一次业务流程,它将执行特定流程可用的所有规则,如果没有抛出异常,则继续成功地完成业务流程。
我不打算使用规则引擎,因为我认为这对我的架构来说可能太重了。
感谢并致以问候
阿贾伊
发布于 2009-08-22 08:01:41
这个问题的答案比我在这里写的要复杂得多。这涉及到数据关系、安全性、策略原则和您的业务/行业的管理约束等科学问题。
如果你指的是比“业务规则”和“业务政策”更模糊的东西,我可能误解了你的问题。
发布于 2009-08-22 09:20:51
您可以使用许多技术将规则从流程中分离出来。在某种程度上,你是从业务流程的不同点调用一个“方法”。然后,该问题成为一种机制,通过该机制可以在不更改业务流程本身的情况下修改该方法。
可以将该方法打包到它自己的库(dll、jar或其他任何库)中,并用新版本替换该jar。更改库,更改业务规则。
可以根据从数据库获得的可配置参数来表达该方法中的逻辑。更改数据库,更改业务规则。
如果复杂性增加到一定程度,您会发现您已经实现了自己的规则引擎。
在某种程度上,使用现有的规则引擎比重新发明这个轮子更有效。
对于更详细的建议,你需要告诉我们更多关于你在做什么。
发布于 2009-08-22 08:10:38
问题相当广泛,所以我将用一个通用的模式来回答。
在许多情况下,我所做的就是定义流程,以便在流程的适当阶段插入许多“看门人”活动。这些网关守卫中的每一个都负责执行特定的业务规则子集。因此,例如,一个这样的活动可能会强制提高数据质量。另一个可能会根据业务规则做出路由决策。另一种定价。诸若此类。
实际规则本身保存在工作流外部,并且可以独立于工作流进行修改。技巧是约束规则评估的“过程结果”,以便可以继续拥有可预测的(和可测试的)过程。
https://stackoverflow.com/questions/1315442
复制相似问题