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 přidružené Condition vyhodnocení , pro , nebo trueThenActions, pro falseElseActions. 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 Loga přijímá jeden parametr, který se musí vyhodnotit jako řetězec. Tato akce vypíše řetězec do konzoly.
Pokud chcete tento kód použít, přidejte ho 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 obě ThenActions a ElseActions) obvykle nastavují hodnotu proměnné na jedné z vlastností aktivity, volají metodu aktivity nebo volají statické metody u typů v odkazovaných sestaveních.
RuleAction je základní typ, který RuleStatementAction, RuleHaltActiona RuleUpdateAction třídy jsou odvozeny z. Použití těchto tříd je následující:
Upraví RuleStatementAction vlastnost nebo volá metodu.
A RuleHaltAction způsobí RuleSet , že 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
| Name | Description |
|---|---|
| RuleAction() |
Při implementaci v odvozené třídě inicializuje novou instanci RuleAction třídy. |
Metody
| Name | Description |
|---|---|
| Clone() |
Vytvoří hlubokou kopii aktuálního RuleAction. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Execute(RuleExecution) |
Spustí pomocí RuleAction zadané RuleExecution instance. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetSideEffects(RuleValidation) |
Vrátí pole a vlastnosti aktualizované hodnotou RuleAction. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (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. |