2009-08-22 83 views
4

如何从业务流程中外化业务规则,以便我可以添加规则而不触及业务流程逻辑?将业务规则与业务流程分离

例如,我有两个业务流程,说“添加产品”和“更新产品”,也有一些共同的规则,这些2个进程共享,规则可以让以后获取添加。我打算编写一次业务流程,该流程执行特定流程的所有可用规则,如果未抛出异常,则继续成功完成业务流程。

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

感谢和问候,
阿贾伊

+0

规则引擎有什么问题? – 2009-08-22 07:57:41

+1

这个问题是有效的,但是,把-1的人,你可以显示你的脸,并写下评论这个问题最近怎么了?我给有效问题+1。 – 2009-08-22 08:07:34

+0

我的应用程序域不需要具有取决于上下文等多个参数的非常复杂的规则。所以我觉得规则引擎会在架构上变得臃肿。 – Ajay 2009-08-22 09:54:13

回答

1

回答这个问题是比较复杂的,比我可以写在这里。这涉及到您的企业/行业的数据关系,安全性,政策原则和行政限制的科学。

我可能误解了你的问题,如果你的意思是不是“业务规则”和“经营策略”少模糊的东西。

0

问题相当广泛,所以我会根据一般模式来回答。

我在很多情况下所做的是定义过程,使得一个在插入的过程中适当阶段的各种“守门员”的活动。每个守门员都负责执行业务规则的特定子集。举例来说,一个这样的活动可能会强化数据质量。另一个可能会根据业务规则做出路由决策。另一个定价。等等。

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

1

您可以用许多技术将流程中的规则分开。在某种程度的abstarction中,您正在从业务流程的各个角度调用“方法”。这个问题就成为可以在不改变业务流程本身的情况下修改该方法的机制之一。

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

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

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

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

欲了解更详细的建议,你需要告诉我们更多关于你在做什么。