0

试图了解如何在 WWF 应用程序之外使用 WF 规则引擎。我只阅读了有关该主题的博客文章。但我对可行性有一定的怀疑。

我的申请要求如下:

  1. 用于编写规则并将它们存储在 db.xml 中的基于 Web 的 UI。
  2. Windows 服务将下载该规则。规则执行引擎将收集它需要的数据并执行规则,并给出结果作为输出。

该规则只是一组必须作用于表格行的指令。表的模式是动态的;但是有一些元数据告诉规则执行引擎如何从该行收集必要的输入。

我知道规则通常是使用规则编辑器输入的;这是一个 Windows 窗体应用程序。这通常会生成一个*.rules文件。据我所知,WF 规则引擎会评估此文件并执行规则。

*.rules文件是规则的 xml 表示形式。

dotnet 框架中是否有生成此 xml 表示的任何 api?而且,我们可以构建一个基于 Web 的前端来输入规则吗?

4

2 回答 2

2

想知道是否有 api 之类的东西,我遇到了以下情况:

http://code.msdn.microsoft.com/windowsdesktop/Creating-Rules-Using-the-23c5d561

它是一个类似于 api 的接口。然而,它使用System.CodeDom命名空间中的对象(通常是各种CodeExpression对象)。

要继续使用它,您必须通过某种机制(通过使用 xml 或 json)正确地表示前端中的代码表达式对象。在服务器中,即当您将规则发布到服务器时,您必须正确创建必要的代码表达式(通过解析)并将这些内容提供给 api。

您需要两种类型的代码表达式对象 - 一种用于评估规则条件,另一种用于在规则通过或失败时执行的东西。(我只需要在规则通过时执行一些东西)。

那里提供的示例让您了解如何使用 api。剩下的就是你必须建立的东西。

程序源代码通常使用AST在内存中表示。您所要做的就是设计自己的实现。

于 2013-07-01T08:56:27.877 回答
1

如果要使用 Windows Workflow Foundation (WF),则必须生成 WF XAML - 而不是 .rules 或 XML 表示形式(无论是什么)。这是一个工作流 XAML 文件的示例。基本上有三种生成方法(从最不复杂的方法开始)

  1. 通过使用 Visual Studio 中的设计器
  2. 通过生成DynamicActivity实例运行时并将其序列化
  3. 通过实现你自己的生成器

回答您的问题:是的 - 这是选项 #2。如果您的规则非常简单(if-then-else)并且您预计它们在未来不会增加复杂性,那么选项 #3 也可能是一个可行的替代方案。

于 2013-06-13T20:49:12.977 回答