Sdílet prostřednictvím


RuleAction Třída

Definice

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 falsepro 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 Loga 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.

Platí pro