RuleAction Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en abstrakt klass som definierar en åtgärd som ska köras om den associerade Condition utvärderas till true, för ThenActionseller falseför ElseActions. Den här klassen måste ärvas.
public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
- Arv
-
RuleAction
- Härledda
- Attribut
Exempel
Följande kod skapar en åtgärd som kan användas i regeluppsättningar. Åtgärden heter Log, och tar en enskild parameter, som måste utvärderas till en sträng. Den här åtgärden matar ut strängen till konsolen.
Om du vill använda den här koden lägger du till den i ett klassbiblioteksprojekt och refererar till biblioteket från arbetsflödesprojektet.
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();
}
}
}
Kommentarer
RuleStatementAction objekt (som kan användas som både ThenActions och ElseActions) anger vanligtvis ett variabelvärde för en av aktivitetens egenskaper, anropar en metod för aktiviteten eller anropar statiska metoder för typer i refererade sammansättningar.
RuleAction är bastypen som RuleStatementActionklasserna , RuleHaltActionoch RuleUpdateAction härleds från. Användning av dessa klasser är följande:
En RuleStatementAction ändrar en egenskap eller anropar en metod.
En RuleHaltAction gör RuleSet att anropsmetoden slutar köras och returnerar kontrollen.
En RuleUpdateAction anger uttryckligen att en regel uppdaterar en variabel. Detta gör att alla berörda regler utvärderas på nytt.
Konstruktorer
| Name | Description |
|---|---|
| RuleAction() |
När den implementeras i en härledd klass initieras en ny instans av RuleAction klassen. |
Metoder
| Name | Description |
|---|---|
| Clone() |
Skapar en djup kopia av den aktuella RuleAction. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Execute(RuleExecution) |
Kör med den angivna RuleExecution instansenRuleAction. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetSideEffects(RuleValidation) |
Returnerar fälten och egenskaperna som uppdateras av en RuleAction. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| Validate(RuleValidation) |
Verifierar att RuleAction är korrekt konfigurerad och inte har några fel. |