2012-02-06 65 views
3

我需要在我的Delphi应用程序中自动化一些非常复杂的业务规则(保险)。迄今为止,我们已经使用脚本引擎来维护这些规则(很多if/then/else类型的语句),但这已经变得难以维护并且无法测试,并且很难与最终用户一起验证这些规则。德尔福自动化逻辑

我看过的大多数正式规则引擎都不能很好地与Delphi集成(目前使用D2007,但计划今年转向64位XE2)。

是否有人知道任何产品或使用过任何可以帮助我的产品或技术?

+3

我认为你的解决方案(脚本引擎)是一个很好的解决方案。可能你应该尝试在测试和维护上工作。 – philnext 2012-02-06 08:50:25

+1

我认为你必须实现状态模式 - http://en.wikipedia.org/wiki/State_pattern – 2012-02-06 08:58:57

+1

我可以高度推荐Eric [Erica]设计的书(http://domaindrivendesign.org/books)埃文斯 – mjn 2012-02-06 10:42:27

回答

1

看看共同知识Object Connections。但是我没有经验。

+0

我没有看到这在谷歌...一直在评估,它是非常强大的。当然解决我的问题。只需要看看我是否可以将其添加到我的工具箱... – 2012-02-07 06:04:40

+0

已决定采用此解决方案。它比我所需要的要多,但只花了大约四个小时将我的规则转换为决策表,使用SDK将它们集成到我的Delphi应用程序中,并将基本测试套件组合在一起。 – 2012-02-09 01:01:52

+0

很好听。请将此问题标记为您接受的答案。 – 2012-02-09 04:30:21

0

看看RemObjects SDK(DataAbstract,如果你还需要直接访问数据库)。它们允许服务器端和客户端scripting

我们使用Databastract取得了巨大成功。

+1

您能详细介绍一下您的业务领域和涉及的复杂性吗?谢谢。 – menjaraz 2012-02-06 19:05:53

2

脚本确实是处理可能改变的业务逻辑部分的好方法。

但是,我怀疑你的问题是你缺乏适当的对象模型。有很多IF表明你有集中的逻辑,然后决定取决于许多因素,你必须检查和结束一团糟。

这是直接使用数据而不是使用对象处理的症状。当你直接操纵数据时,你必须知道所有适用的规则。

我一直主张以模型为中心的解决方案。通过适当设计的对象模型,职责分散在模型中的类中,从而消除热点。这对应于Single responsibility principleDon't repeat yourself

当然,挑战在于对问题域进行建模,但这是我建议探索的途径。

+0

+1。我完全同意倡导面向对象建模。 – menjaraz 2012-02-06 19:02:36