代码之家  ›  专栏  ›  技术社区  ›  Mark

规则引擎gui的工具(控件)

  •  1
  • Mark  · 技术社区  · 17 年前

    在评估了现成的产品(msbre、drools等)之后,我们正在编写自己的规则引擎(这个决定已经做出,请不要建议使用其他规则引擎——但最欢迎使用它们中的某些部分来实现我想要的具体功能)。

    我想给用户一个简单的图形用户界面,让他们可以使用我们的域“对象”之一,并在图形用户界面中创建一个可以翻译成XML或(理想情况下).NET代码的规则。

    因此,例如,用户可能会选择一个员工值班,并希望说“如果员工在管理组,并且今天的值班时间超过8小时,请确保明天的登录时间是在08:00之后”。staffduty对象将具有groups、dutytime和nextduty属性,nextduty将是具有signon属性的类型。

    我希望能够以图形化的方式显示,用户“填充位”,然后保存它,这样我们就可以将其转换为代码(可能是通过解释xml)。

    我已经让这个相当开放的解释,因为我不想排除任何在这一点上更具体的东西。

    任何想法都值得赞赏!

    2 回复  |  直到 17 年前
        1
  •  1
  •   John Saunders    17 年前

    查看Windows工作流基础中规则引擎的规则和表达式设计器。它们都可以在visual studio之外托管。特别是,我看到了一个示例,其中规则设计器被传递给一个给定类型作为其上下文,并且能够基于该类型的属性和这些属性引用的类型的属性创建规则和表达式。事实上,可以在对象图的根向它传递一个类型,然后引擎可以处理图中所有对象的属性。

        2
  •  0
  •   Steve Morgan    17 年前

    我刚才是为一个大型的政府商业规则引擎做的。

    使用xml schema来描述数据,我使用xmlschema注释来添加所有规则引擎特定的位,确保模式保持有效。

    gui提供了一个传统的explorer样式的视图,其中一个tree view显示结构,而右侧窗格显示所选树节点的详细信息。

    我使用了一些相当复杂的xslt(带有一些自定义扩展)来生成一个表示表单的小xml文档和一个小引擎,该引擎将根据表单定义动态呈现控件。

    表单后面的代码更新一个xml片段,然后由另一个xslt片段转换回xml diffgram,并用于更新模式的内存表示。

    构建带注释的XML架构后,编译器随后生成两个.NET程序集,一个包含架构的代码表示,另一个包含业务规则的实现。

    这是一段相当复杂的代码,但是它非常灵活和动态,并且绝大多数ui可以通过xslt单独定制。实际上,有些用户需要不同的视图,这些视图完全通过包含xslt的附加动态加载程序集来处理。

    花费大约250万英镑,花了两年多时间来开发,mind(整个事情,不仅仅是ui)。这仍然是我28年来最引以为豪的发展!

    如果你愿意的话,很高兴再进一步讨论。

    推荐文章