我正在编写一个过程,在这个过程中,客户将被分成3个不同的组,并且对每个组执行不同的操作。
我的问题涉及决定哪个客户将在哪个组中的过程。
作为输入,我收到了一个包含7个决策块的流程图。
我想你可以想象一下流程图:
如果A和B而不是C和F,那么你就属于第1组。
如果A而不是B,C和E,你是B组的,如果A而不是B和C,而不是E,那么F也是B组。
不管怎么说,你可能明白我的意思。
我们提出了以下解决方案
1编写代码,就像我键入的那样:
if A() && !B() && C() || (D() && E()) groupA.Add(client)
if A() && !B() && C() && F()) groupB.Add(client)2编写一个大的if / if / else程序
if A()
if B()
else
if ! C()
else
else
if C()
else等。
发布于 2015-05-28 15:46:15
确实有一些解决方案试图以通用的方式对流程图进行建模。
例如windows工作流基础、SSIS、消息队列中的路由等。
但根据我的经验,除非需求来自技术来源。在存在逻辑形式的技术规范的情况下,IP路由、dns失败等。最好使您的代码与需求文档尽可能接近它描述逻辑的方式。
您将在逻辑和结果中有看起来不一致的漏洞,但是您的代码将满足需求,当需求以某种奇怪的方式发生变化时,您将不会发现自己将它塞进一个聪明的通用系统中,该系统期望以特定的方式表达逻辑。
这通常归结为一个大的如果块。但是它很容易理解,也很容易改变。
更新:以下是我过去做过的事情,并对此表示遗憾
xpath很快就与自定义表达式变得非常复杂,用户从未费心使用这个接口,所以devs无论如何都会收到更改逻辑的请求。
用户无法执行vb脚本,无法确定如何做出决定,这几乎是不可能的。
用户也不能执行sql,这与使用vb脚本的问题相同
一旦顾问离开,用户就不能使用java/“域语言”。使用基于web的IDE雇用新的java开发人员、部署/源代码管理问题
即使在我们使用它的时候也是过时的,对于小任务来说太复杂了。难以向用户解释
用于非编程数据库管理员、版本控制、部署、调试、性能困难的hacky工具。不能扩展。
https://softwareengineering.stackexchange.com/questions/285197
复制相似问题