Udostępnij za pośrednictwem


RuleAction Klasa

Definicja

Reprezentuje klasę abstrakcyjną, która definiuje akcję, która ma zostać wykonana, jeśli skojarzona Condition wartość true , dla ThenActions , lub false dla ElseActions . Ta klasa musi być dziedziczona.

public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
Dziedziczenie
RuleAction
Pochodne
Atrybuty

Przykłady

Poniższy kod tworzy akcję, która może być używana w zestawach reguł. Akcja ma nazwę Log i przyjmuje jeden parametr, który musi obliczyć ciąg. Ta akcja powoduje wyjście ciągu do konsoli programu.

Aby użyć tego kodu, Dodaj go do projektu biblioteki klas i odwołuje się do biblioteki z projektu przepływu pracy.

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();  
        }  
    }  
}  

Uwagi

RuleStatementAction obiekty (które mogą być używane jednocześnie ThenActions i ElseActions ) zazwyczaj ustawiają wartość zmiennej dla jednej z właściwości działania, wywołują metodę działania lub wywołują metody statyczne dla typów w przywoływanych zestawach.

RuleAction to typ podstawowy, który RuleStatementAction RuleHaltAction RuleUpdateAction dziedziczy klasy, i. Zastosowania tych klas są następujące:

  • RuleStatementActionModyfikuje właściwość lub wywołuje metodę.

  • RuleHaltActionPowoduje RuleSet zatrzymanie wykonywania i zwraca kontrolę do metody wywołującej.

  • RuleUpdateActionJawnie wskazuje, że reguła aktualizuje zmienną. Powoduje to ponowną ocenę wszelkich reguł, których to dotyczy.

Konstruktory

RuleAction()

Po zaimplementowaniu w klasie pochodnej inicjuje nowe wystąpienie RuleAction klasy.

Metody

Clone()

Tworzy głębokie kopie bieżącej RuleAction .

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Execute(RuleExecution)

Wykonuje RuleAction przy użyciu określonego RuleExecution wystąpienia.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetSideEffects(RuleValidation)

Zwraca pola i właściwości zaktualizowane przez RuleAction .

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
Validate(RuleValidation)

Sprawdza, czy RuleAction jest prawidłowo skonfigurowany i nie ma błędów.

Dotyczy