Answers:
是否为非技术人员公开接口以修改业务规则的决定很大程度上取决于几个因素,包括项目目标,项目成本,项目寿命以及项目中已知与未知的比率。项目。
例如,如果我认为没有人会使用规则接口,那么我可能会选择退出实现它。但是,如果我有理由相信更改会很频繁,并且不同的最终用户会期望采用不同的规则,那么我将考虑构建此类功能。
我选择在一个项目上执行此操作,并且花了好几年时间才广泛使用该功能。我怀疑最终会有最终用户想要自己定制事物的最终用户,因此我们分步实现了此功能。
它开始时只有某些人(例如开发人员或管理员)可以使用。界面笨拙,但是如果您知道自己在做什么,就可以使用。但是当产品即将完成时,规则引擎后端逻辑就派上用场了,我们的设计团队为它提供了一个漂亮的,面向客户的用户界面。
如果要做不同的事情,可能会因为学习难度很大而选择其他数据库体系结构。简而言之,尽早构建它会导致许多面向客户的功能,而后又不必为重新编写代码并将其重构以包含所有动态规则而烦恼。
我写了一个基于WF(Windows工作流基础)的应用程序。我的老板(DBA)深信WF可以执行多线程而无需计划并发。记忆被彻底地划分了,但是有太多的问题,我无法在短短的几段中解释它,并且它与您的问题只是有点关系...所以我继续。
迭代BL的能力:
WF做得很好。
允许非技术人员“构建应用程序”:
如果架构有效且非技术人员了解技术局限性,那么WF可以做到这一点……我们没有。
通常具有理解业务规则的能力:
有些加载项可以完成一些基本工作,就像Sharepoint可以自动化工作流一样。我没有进入这些项目。
软件发布的质量:
平庸。WF对于我们的目的而言表现不佳,但是系统设计不当,我的双手被束缚。
应用速度:
慢。对于开发人员和最终用户而言,学习曲线都非常陡峭。WF分离内存(我记得应用程序域)的方式使跨线程通信,互斥体和其他线程概念陷入混乱,甚至根本无法工作。
最终,我编写了一个原型来证明WF的实现方式失败。我用普通的多线程代替了它。性能和代码可读性提高了。带着一点盐,因为这是我的第一个专业WF应用程序。
非技术人员可以相信,不需要程序员就可以实现几乎所有可能,这对BL的整个“虚拟灭亡”都是不利的。与此相关的社会学问题扼杀了该项目。
如果我可以按照自己的方式做,请使用:使用传统的螺纹加工和通过Decorator Pattern实现的BL成型。 我写了使用这些技术的概念证明,并且效果很好。 与 B1映射应该被包裹在一个简单的用户界面。
更新
我发现在处理并发问题时写的一篇旧文章。该代码显示了在并行工作流中打印“ hello world”是如何在不了解幕后内容的情况下工作的(这违背了WF抽象的全部目的)。MSDN主持人解释了并行活动实际上是如何顺序的高级概述。他的结论基本上是“您需要阅读整个手册”才能做一些基本的事情。 http://social.msdn.microsoft.com/Forums/zh-CN/windowsworkflowfoundation/thread/8a1fa165-ad5c-4cd2-b489-7ea5fc31fed8
祝好运。
从Java代码连接到Oracle规则引擎的经验还不够完善。其中一些可能是由于规则作者的经验不足,但这就是我所面临的。
我认为使用规则引擎(或不使用规则引擎)的选择并不明确。我建议您为要使用的任何引擎制作原型,然后做出明智的决定。他们当然不是灵丹妙药...