Como posso construir mecanismo de regras que pode executar usuário definido se as regras mais no C # .NET

StackOverflow https://stackoverflow.com/questions/771843

  •  12-09-2019
  •  | 
  •  

Pergunta

Eu tenho necessidade de construir um novo mecanismo de regras no qual eu tenho regra como esta que está armazenado na folha de Excel, em formato tabular.

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

Eu tenho dois arquivos dizem 1 n 2. Eu preciso de ver em primeiro arquivo que se Nome é Nita ou Gita. Com base na execução i terá valor. Agora, este valor do resultado que eu preciso para comparar com o segundo arquivo, que é um arquivo xml e cujo caminho foi definido em.

Alguém pode me sugerir que há algo em C # que eu posso usar de forma eficaz para desenvolver a mesma ,, ou alguém pode me sugerir como eu posso conseguir isso com C # .. eu preciso de alguma ideia para o projeto de classe do mesmo.

Eu estou usando .Net 1.1.

Foi útil?

Solução

Em primeiro lugar, você precisa criar classes que podem definir suas regras. Depois de ter esta estrutura no lugar, você será capaz de construir um motor que utiliza essas classes.

Eu olhava para criar algo como:

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
}

Em seguida, ir de lá ....

Esta estrutura seria melhor se ele foi alterado para ter um conjunto de regras que poderiam ser adicionados a um grupo de regras, por exemplo (a e b) OU (c E d) - Vou deixar isso para você pensar sobre por agora.


Por favor, note que estou usando alguns C # 3.0 construções aqui, você terá de criar propriedades privadas completos em 1.1.

Outras dicas

Você pode criar uma DSL com vaia, mas eu não sei se isso vai funcionar com 1,1

Você vai ser muito limitado pelo .NET 1.1. Eu acho que o primeiro passo será fazer o upgrade.

Os passos subsequentes possam envolver o mecanismo de regras embutido no Windows Workflow Foundation; este motor, e os designers gráficos associados, foram projetados para estar fora utilizável de WF.

Outra coisa a olhar será o Application Block Validation que faz parte do Microsoft Enterprise Library .

Nenhuma dessas coisas existiam seis anos atrás, quando .NET 1.1 dominavam a Terra.

Ou você poderia apenas deixar alguém fazer este trabalho e usar um bom motor de regras .NET como produto de InRule Tecnologia, Regras IBM / ILOG para .NET ou Blaze Advisor para .Net. Eles trabalham bem e vai dar-lhe um ambiente de regras poderosa em .Net

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top