我们可以在Web应用程序中使用WF规则引擎吗?

时间:2013-06-12 10:28:19

标签: c# asp.net web-applications workflow-foundation rule-engine

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

我的申请要求如下:

  1. 用于编写规则并将其存储在db。
  2. 中的基于Web的UI
  3. Windows服务将下载规则。规则执行引擎将收集所需的数据并执行规则,并将结果作为输出。
  4. 规则只是一组必须作用于表格行的指令。表的模式是动态的;但是有一些元数据告诉规则执行引擎如何从该行收集必要的输入。

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

这是一个类似api的界面。但是它会使用System.CodeDom命名空间中的对象(通常是各种CodeExpression对象)。

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

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

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

程序源代码通常使用AST在内存中表示。您需要设计的只是制作自己的实现。

答案 1 :(得分:1)

如果要使用Windows Workflow Foundation(WF),则必须生成WF XAML - 而不是.rules或XML表示形式(无论是什么)。以下是a Workflow XAML file的示例。基本上有三种方法可以生成它(从最不复杂的方法开始)

  1. 在Visual Studio中使用设计器
  2. 通过生成DynamicActivity - 实例运行时和serializing it
  3. 实施自己的发电机
  4. 要回答您的问题:是 - 这是选项#2。如果您的规则非常简单(if-then-else),并且您预计未来它们的复杂程度会增加,选项#3也可能是一个可行的选择。