逻辑表达式Visualizer

时间:2013-12-03 13:10:32

标签: javascript .net rule-engine business-rules

我开发了一个业务规则引擎,用户可以用布尔语法编写规则。

例如规则是:R1,R2,R3

样品表达:(R1和R2)或R3

我想要想象这个表达式。例如,可视化框架可以在树视图中显示表达式并插入颜色。

是否有任何javascript或任何其他代码框架来实现这一目标? (应用程序是一个ASP.NET应用程序)

1 个答案:

答案 0 :(得分:1)

即使我的回答可能无法帮助您轻松解决问题,我也忍不住回答这个问题。早在1998年,我的第一个Javascript项目就是一个布尔表达式可视化器。

代码无法在任何地方使用,因此我无法分享。 (我怀疑,即使我的前雇主仍然有副本。)即便如此,它运行在IE4,5.0和5.5;我不认为它曾经为IE6更新过,也不知道它是否在那里运行。

但我仍然可以告诉你基本的想法,即使在今天,我仍然对结果感到非常自豪,虽然我知道看到实际的代码我会不寒而栗。

当然,布尔表达式很容易用树结构表示。每个非叶节点都是树中的AND,OR或NOT节点,AND和OR可以有多个子节点(所以我表示(“A和B和C和D”为AND(A,B) ,C,D),而不仅仅是二进制AND的组合。)为了显示数据,我只使用嵌套框.AND运行水平,OR运行垂直,关键字“和”和“或”在块之间重复。只是一个方框中的一个方框,外面的关键字为“not”。

我的叶子节点与用户可用于测试的真实数据场景相关联,因此他们看起来不像“A”和“B”,例如,

age < 30
gender = 'F'
income > 40000

用户可以输入字段agegenderincome的示例数据,输出将更改为红绿色显示,以显示表达式的每个块,以及当然,整个表达都是真或假。

要使用的字段是可配置的,并保存测试用例以供将来详细说明。

这是一个非常有趣的项目,它帮助了正在编写规则的业务人员和实现它们的程序员之间的沟通,这些团队经常对如何在礼貌的公司中使用“和”这个词有不同的看法。 : - )

但主要的一点是,可视化布尔表达式的一种非常有用的方法是使用简单的框:NOT是框中的框,外部的单词“not”。 OR是包含垂直分组框的框,其间带有“或”,AND是包含水平分组框的框,其间带有“和”。如果你实际上可以为你的基元分配truthy / falsey值,那么绿色代表真正的盒子,红色代表虚假的盒子会产生非常引人注目的显示。

...

但是你必须编写自己的代码。遗憾。

相关问题