RuleAction Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma classe abstrata que define uma ação a ser executada se o associado Condition avaliar para true, para ThenActions, ou false, para ElseActions. Esta classe tem de ser herdada.
public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
- Herança
-
RuleAction
- Derivado
- Atributos
Exemplos
O código seguinte cria uma ação que pode ser usada em conjuntos de regras. A ação chama-se Log, e toma um único parâmetro, que deve avaliar para uma cadeia. Esta ação envia a cadeia para a Consola.
Para usar este código, adicione-o a um projeto de Biblioteca de Classes e faça referência à biblioteca do seu projeto de fluxo de trabalho.
using System;
using System.CodeDom;
using System.Collections.Generic;
using System.Text;
using System.Workflow.Activities.Rules;
using System.Workflow.ComponentModel.Compiler;
namespace LogRuleAction
{
public class Log : RuleAction
{
CodeExpression message;
public CodeExpression Message
{
get { return message; }
set { message = value; }
}
public Log()
{
// constructor required for deserialization
}
public Log(CodeExpression expression)
{
// constructor required by parser
message = expression;
}
public override bool Validate(RuleValidation validator)
{
ValidationError error;
if (message == null)
{
error = new ValidationError("Message cannot be null", 123);
validator.Errors.Add(error);
return false;
}
else
{
RuleExpressionInfo result = RuleExpressionWalker.Validate(validator, message, false);
if ((result == null) || (result.ExpressionType != typeof(string)))
{
error = new ValidationError("Message must return string result", 123);
validator.Errors.Add(error);
return false;
}
}
return (validator.Errors.Count == 0);
}
public override RuleAction Clone()
{
Log result = new Log();
result.Message = RuleExpressionWalker.Clone(message);
return result;
}
public override void Execute(RuleExecution context)
{
RuleExpressionResult result = RuleExpressionWalker.Evaluate(context, message);
if (result != null)
Console.WriteLine(result.Value);
}
public override ICollection<string> GetSideEffects(RuleValidation validation)
{
RuleAnalysis analysis = new RuleAnalysis(validation, true);
if (message != null)
RuleExpressionWalker.AnalyzeUsage(analysis, message, true, false, null);
return analysis.GetSymbols();
}
public override string ToString()
{
// what should be displayed by the parser
StringBuilder result = new StringBuilder("Log(");
RuleExpressionWalker.Decompile(result, message, null);
result.Append(")");
return result.ToString();
}
}
}
Observações
RuleStatementAction Objetos (que podem ser usados tanto ThenActions como ) ElseActionsnormalmente definem um valor variável numa das propriedades da atividade, chamam um método da atividade, ou chamam métodos estáticos em tipos em assemblies referenciados.
RuleAction é o tipo base do qual RuleStatementActionderivam , RuleHaltAction, e RuleUpdateAction as classes. As utilizações destas classes são as seguintes:
A RuleStatementAction modifica uma propriedade ou chama um método.
A RuleHaltAction faz com que o RuleSet pare de executar e devolve o controlo ao método que chama.
A RuleUpdateAction indica explicitamente que uma regra está a atualizar uma variável. Isto leva à reavaliação de quaisquer regras afetadas.
Construtores
| Name | Description |
|---|---|
| RuleAction() |
Quando implementado numa classe derivada, inicializa uma nova instância da RuleAction classe. |
Métodos
| Name | Description |
|---|---|
| Clone() |
Cria uma cópia profunda da corrente RuleAction. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Execute(RuleExecution) |
Executa o RuleAction usando a instância especificada RuleExecution . |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetSideEffects(RuleValidation) |
Devolve os campos e propriedades atualizados por um RuleAction. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| Validate(RuleValidation) |
Verifica se está RuleAction configurado corretamente e não tem erros. |