RuleAction Sınıf

Tanım

İlişkili Condition için , trueveya ThenActionsfalseiçin olarak değerlendirilirse yürütülecek eylemi tanımlayan soyut sınıfı temsil ederElseActions. Bu sınıf devralınmalıdır.

public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
Devralma
RuleAction
Türetilmiş
Öznitelikler

Örnekler

Aşağıdaki kod, kural kümelerinde kullanılabilecek bir eylem oluşturur. Eylem olarak adlandırılır Logve bir dize olarak değerlendirmesi gereken tek bir parametre alır. Bu eylem dizeyi Konsol'a gönderir.

Bu kodu kullanmak için bir Sınıf Kitaplığı projesine ekleyin ve iş akışı projenizdeki kitaplığa başvurun.

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

Açıklamalar

RuleStatementAction nesneleri (hem hem de ThenActionsElseActionsolarak kullanılabilir) genellikle etkinliğin özelliklerinden birinde bir değişken değeri ayarlar, etkinliğin yöntemini çağırır veya başvurulan derlemelerdeki türlerde statik yöntemleri çağırır.

RuleAction, RuleStatementActionve RuleHaltAction sınıflarının türetilen RuleUpdateActiontemel türdür. Bu sınıfların kullanımları aşağıdaki gibidir:

  • bir RuleStatementAction özelliği değiştirir veya bir yöntemi çağırır.

  • A RuleHaltAction , yürütmeyi RuleSet durdurmasına neden olur ve denetimi çağıran yönteme döndürür.

  • bir RuleUpdateAction kuralın bir değişkeni güncelleştirdiğini açıkça belirtir. Bu, etkilenen kuralların yeniden değerlendirilmesine neden olur.

Oluşturucular

Name Description
RuleAction()

Türetilmiş bir sınıfta uygulandığında, sınıfının yeni bir örneğini RuleAction başlatır.

Yöntemler

Name Description
Clone()

Geçerli RuleActionöğesinin derin bir kopyasını oluşturur.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Execute(RuleExecution)

Belirtilen RuleAction örneği kullanarak yürütürRuleExecution.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetSideEffects(RuleValidation)

tarafından RuleActiongüncelleştirilen alanları ve özellikleri döndürür.

GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)
Validate(RuleValidation)

öğesinin RuleAction doğru yapılandırıldığını ve hatasız olduğunu doğrular.

Şunlara uygulanır