在解决方案中实现业务规则引擎的方法或模式?
Method or pattern to implement a Business Rules Engine in a solution?
我在一家年轻的银行公司工作。我们的解决方案 (.NET) 存在重要的技术债务,因此我们按照 DDD 原则对其进行重构。我们计划使用 (a) 业务规则引擎。业务规则涉及会计目的、营销目的、风险目的、法律内容……我们计划对 BRE 进行 POC,由企业赞助。
我正在寻找成功采用 BRE 或 BRE 组合的人的一些反馈?
- 是否有管理 BR 存储库的工具?
- 是否有任何模式可以帮助分离进程和 BR?
- 你认识一些写过关于将解决方案迁移到
BRE?
- 您认为采用独特的BRE是否可以满足所有领域的需求,
还是为每个域制作自定义解决方案原型更好?
- 常见的陷阱是什么?
谢谢,
所以,这有点夸张,但我还没有看到业务规则引擎在生产环境中运行良好。我唯一一次看到它们工作良好的时候是当它们被完全按照它们正在替换的代码存储库对待时。
他们需要遵循 SDLC,经历需求收集、开发(与工程师一起)、QA,最后推广到生产。
规则引擎通常作为绕过开发、测试和源代码管理成本的方式出售给业务人员。这些系统通常会在很短的时间内崩溃。规则是编程逻辑,它们是从某个地方的数据库加载而不是从文件系统加载的事实没有改变。作为编程逻辑,最适合开发它们的人是……程序员。
当业务人员尝试编写这些东西时,当系统不能阻止他们制造流程陷入的逻辑漏洞时,他们往往很快就会感到沮丧。程序员习惯思考的事情
这真的只是保真度问题。您正在用高保真编程语言(java、c、python)换取低保真语言。您并没有神奇地减少决策点的数量。你只是想用一种必然更受限制的语言来表达它们。当您尝试用低保真语言表达更复杂的问题时,您最终会创造出一个怪物。将成百上千条规则菊花链式连接在一起。只有一两个人能够理解它,它很快就会成为组织的巨大负担。
也许你的公司不一样,但我见过这种情况发生过几次,通常唯一的出路就是报废和重建。我见过运行良好的业务工作流引擎。以相当高层次的方式协调低层次逻辑部分的东西。但是将所有真正的决策留给较低级别的机器。不过,这些也需要保留在原位,并有可行的推广、质量保证等。
我在一家年轻的银行公司工作。我们的解决方案 (.NET) 存在重要的技术债务,因此我们按照 DDD 原则对其进行重构。我们计划使用 (a) 业务规则引擎。业务规则涉及会计目的、营销目的、风险目的、法律内容……我们计划对 BRE 进行 POC,由企业赞助。
我正在寻找成功采用 BRE 或 BRE 组合的人的一些反馈?
- 是否有管理 BR 存储库的工具?
- 是否有任何模式可以帮助分离进程和 BR?
- 你认识一些写过关于将解决方案迁移到 BRE?
- 您认为采用独特的BRE是否可以满足所有领域的需求, 还是为每个域制作自定义解决方案原型更好?
- 常见的陷阱是什么?
谢谢,
所以,这有点夸张,但我还没有看到业务规则引擎在生产环境中运行良好。我唯一一次看到它们工作良好的时候是当它们被完全按照它们正在替换的代码存储库对待时。
他们需要遵循 SDLC,经历需求收集、开发(与工程师一起)、QA,最后推广到生产。
规则引擎通常作为绕过开发、测试和源代码管理成本的方式出售给业务人员。这些系统通常会在很短的时间内崩溃。规则是编程逻辑,它们是从某个地方的数据库加载而不是从文件系统加载的事实没有改变。作为编程逻辑,最适合开发它们的人是……程序员。
当业务人员尝试编写这些东西时,当系统不能阻止他们制造流程陷入的逻辑漏洞时,他们往往很快就会感到沮丧。程序员习惯思考的事情
这真的只是保真度问题。您正在用高保真编程语言(java、c、python)换取低保真语言。您并没有神奇地减少决策点的数量。你只是想用一种必然更受限制的语言来表达它们。当您尝试用低保真语言表达更复杂的问题时,您最终会创造出一个怪物。将成百上千条规则菊花链式连接在一起。只有一两个人能够理解它,它很快就会成为组织的巨大负担。
也许你的公司不一样,但我见过这种情况发生过几次,通常唯一的出路就是报废和重建。我见过运行良好的业务工作流引擎。以相当高层次的方式协调低层次逻辑部分的东西。但是将所有真正的决策留给较低级别的机器。不过,这些也需要保留在原位,并有可行的推广、质量保证等。