RuleAction Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje abstraktní třídu, která definuje akci, která se má provést, pokud se přidružená Condition třída vyhodnotí jako true
, pro ThenActionsnebo false
pro ElseActions. Tato třída musí být zděděna.
public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
- Dědičnost
-
RuleAction
- Odvozené
- Atributy
Příklady
Následující kód vytvoří akci, kterou lze použít v sadách pravidel. Akce má název Log
a přebírá jeden parametr, který se musí vyhodnotit jako řetězec. Tato akce vypíše řetězec do konzoly.
Chcete-li použít tento kód, přidejte jej do projektu knihovny tříd a odkazujte na knihovnu z projektu pracovního postupu.
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();
}
}
}
Poznámky
RuleStatementAction objekty (které lze použít jako i ThenActionsElseActions) obvykle nastavují hodnotu proměnné na jednu z vlastností aktivity, volají metodu aktivity nebo volají statické metody u typů v odkazovaných sestaveních.
RuleAction je základní typ, ze kterého RuleStatementActionjsou odvozeny třídy , RuleHaltActiona RuleUpdateAction . Použití těchto tříd je následující:
Objekt RuleStatementAction upraví vlastnost nebo volá metodu.
Způsobí RuleHaltAction , že RuleSet se zastaví provádění a vrátí řízení volající metodě.
Explicitně RuleUpdateAction označuje, že pravidlo aktualizuje proměnnou. To způsobí opětovné vyhodnocení všech ovlivněných pravidel.
Konstruktory
RuleAction() |
Při implementaci v odvozené třídě inicializuje novou instanci RuleAction třídy . |
Metody
Clone() |
Vytvoří hlubokou kopii aktuálního RuleActionsouboru . |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Execute(RuleExecution) |
RuleAction Spustí pomocí zadané RuleExecution instance. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetSideEffects(RuleValidation) |
Vrátí pole a vlastnosti aktualizované objektem RuleAction. |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Validate(RuleValidation) |
Ověří, že RuleAction je správně nakonfigurovaný a neobsahuje žádné chyby. |