寻找可以循环浏览几个对象的规则引擎

本文关键字:几个 对象 引擎 规则 循环 浏览 寻找 | 更新日期: 2023-09-27 18:36:46

一切都在C#中。

我有一个特定类的array,其中包含许多字段和信息。

我想在该array上实现一个简单的规则引擎,例如:如果object1.name是某物,object2.name是某物然后Function(object1.value,object2.value)==True....

我开始使用 Windows Workflow Foundation,遇到的问题是我为规则引擎提供了一个特定的object_type来处理,所以我实际上无法拥有规则检查 2 个不同的对象。

例如,我告诉规则引擎处理typeof(MY_CLASS) 。然后规则将如下所示:"如果this.name是某物,并且(我不能调用不同的对象!...'"

我基本上希望规则像这样运行:"如果this[i].name是某物,this[j].name是某物......"因此,最终数组中的所有配对都将循环通过。

为了澄清问题,这是我设置规则引擎 (WF) 的方式:

公共类 My_Array{字符串名称,说明...和很多字段}

Data_Array = 新的My_Array[N];

规则集规则集 = 空;
RuleSetDialog ruleSetDialog = new RuleSetDialog(typeof(My_Array), null, ruleSet);

现在,例如,规则将是:如果 this.name == "Name1" 则 this.description = "description1"

这就是我在一个对象上执行规则的方式:

RuleValidation validation = new RuleValidation(typeof(My_Array), null);
        RuleExecution execution = new RuleExecution(validation, Data_Array[0]);
        ruleSet.Execute(execution);

因此,该规则将仅应用于Data_Array[0]。我可以做一个循环来应用于所有数组,但是它一次只能应用于一个单元格。

我想编写一次检查多个对象的规则,例如,这样的规则:
如果 object1.name==某事和 object2.name==其他东西,那么...

但问题是规则引擎一次只处理一个对象。

我该怎么做?应用一个可以做我想做的事的规则?

寻找可以循环浏览几个对象的规则引擎

我不太明白你的问题。我还不能发表评论。

您知道帮助您在数组之间进行排序的接口是 IComparer ,对吧? 下面是一个通过数组排序的小示例。告诉我你是否可以以某种方式添加它,以及我如何帮助你做到这一点。希望它足够清楚。 SO : 返璞归真 :)

public class Human : IComparer<Human> 
{
    public string Name { get; set; }
    public int Compare(Human first, Human second)
    {
        return  first .Name .ToCharArray().First().CompareTo(second.Name    .ToCharArray().First());
    }

}
class Program
{
    static void Main(string[] args)
    {
        IComparer<Human> myCompare = new Human();
        Human[] myArray = new Human[3] { new Human() { Name = "Johny" }, new Human() { Name = "Alexander" }, new Human { Name = "Bobby" } };
        Array.Sort<Human>(myArray, myCompare);
        foreach (var item in myArray)
        {
            Console.WriteLine(item.Name);
        }
    } 

IComparer 接口允许您迭代数组中的每两个对象。

我最近需要一个项目简单的规则引擎,所以我编写了自己的规则引擎(使用 Windows 工作流和规则创建者的重新托管工作流编辑器)。它不像其他一些规则引擎那样利用任何规则的向前/向后链接,只是针对所需的 .NET 对象从上到下执行规则。这很简单,但它适用于我需要的东西。创建起来已经够困难的了,所以我决定授权它。查看 http://www.enigmasupercomputing.com/RulesEngine 教程和演示以及 30 天试用版。