Как я могу построить механизм правил, который может выполнять пользовательские правила, если еще правила в C # .net - PullRequest
1 голос
/ 21 апреля 2009

У меня есть требование для создания нового механизма правил, в котором у меня есть такое правило, которое хранится в листе Excel в табличном формате.

<If>  "Name = Nita "
<Value> "200"
<else> "Name = Gita"
<value> "300"
<LookInto> "/Name/@Income"

У меня есть два файла, скажем, 1 n 2. Мне нужно увидеть в первом файле, что имя Нита или Гита. На основании исполнения я получу значение. Теперь это значение результата мне нужно сравнить со вторым файлом, который является XML-файлом и чей путь был определен в.

Кто-нибудь может мне подсказать, есть ли что-то в C #, что я могу эффективно использовать для разработки того же самого, или кто-нибудь может подсказать мне, как я могу добиться этого с помощью C # ... 1006 *

Я использую .Net 1.1.

Ответы [ 4 ]

4 голосов
/ 21 апреля 2009

Во-первых, вам нужно создать классы, которые могут определять ваши правила. Когда у вас будет эта структура, вы сможете создать движок, использующий эти классы.

Я бы посмотрел на создание чего-то вроде:

class RuleEngine 
{
  public RuleMatch[] RuleMatches { get; set; }
  public void RunEngine(inputdata...) 
  {  
    // do processing in here
  }
}

class RuleMatch 
{
  public Rule[] Rules { get; set; }
  public Object ValueIfMatched { get; set; }
}

class Rule 
{
  public String FieldName { get; set; }
  public MatchType Match { get; set; }
  public Object Value { get; set; }
)

enum MatchType 
{
  Equal = 1,
  NotEqual = 2,
  GreaterThan = 4,
  LessThan = 8,
  Like = 16
}

Тогда иди оттуда ...

Эта структура была бы лучше, если бы она была изменена, чтобы иметь группу правил, которые могут быть добавлены в группу правил, например (a И b) ИЛИ (c И d) - я оставлю это вам подумай пока.


Обратите внимание, что здесь я использую некоторые конструкции C # 3.0, вам нужно будет создать полностью приватные свойства в 1.1.

0 голосов
/ 05 июня 2009

Или вы можете просто позволить кому-то еще выполнить эту работу и использовать хороший механизм правил .NET, такой как продукт InRule Technology, IBM / ILOG Rules for .Net или Blaze Advisor для .Net. Они хорошо работают и предоставят вам мощную среду правил в .Net

0 голосов
/ 21 апреля 2009

Вы будете очень ограничены .NET 1.1. Я думаю, что вашим первым шагом будет обновление.

Последующие шаги могут включать механизм правил, встроенный в Windows Workflow Foundation; этот движок и связанные с ним графические дизайнеры были разработаны для использования вне WF.

Еще одна вещь, на которую стоит обратить внимание, - это блок приложения проверки, который является частью Microsoft Enterprise Library .

Ничего из этого не существовало шесть лет назад, когда Земля управляла .NET 1.1.

0 голосов
/ 21 апреля 2009

Вы можете создать DSL с Boo, но я не знаю, будет ли это работать с 1.1

...