다음을 통해 공유


RuleAction 클래스

정의

연결된 Condition을 실행한 결과가 true 일 경우에는 ThenActions을 실행하고, false일 경우에는 ElseActions을 실행하도록 작업을 정의하는 추상 클래스를 나타냅니다. 이 클래스는 상속되어야 합니다.

public ref class RuleAction abstract
[System.Serializable]
public abstract class RuleAction
[<System.Serializable>]
type RuleAction = class
Public MustInherit Class RuleAction
상속
RuleAction
파생
특성

예제

다음 코드는 규칙 집합에서 사용할 수 있는 작업을 만듭니다. 이 작업의 이름은 Log이며 하나의 문자열 매개 변수만을 사용합니다. 이 동작은 문자열을 콘솔로 출력합니다.

이 코드를 사용하려면 클래스 라이브러리 프로젝트에 추가하고 워크플로 프로젝트에서 라이브러리를 참조합니다.

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

설명

RuleStatementActionThenActions으로 사용할 수 있는 ElseActions 개체는 일반적으로 활동 속성 중 하나에 변수 값을 설정하거나, 활동 메서드를 호출하거나, 참조된 어셈블리의 유형에서 정적 메서드를 호출합니다.

RuleActionRuleStatementAction, RuleHaltActionRuleUpdateAction 클래스가 파생되는 기본 형식입니다. 이들 클래스는 다음과 같이 사용합니다.

  • RuleStatementAction은 속성을 수정하거나 메서드를 호출합니다.

  • RuleHaltActionRuleSet의 실행을 중지시키고 호출 메서드로 제어를 반환시킵니다.

  • RuleUpdateAction은 규칙이 변수를 업데이트하고 있음을 명시적으로 나타냅니다. 이렇게 하면 영향을 받은 규칙을 다시 검사하게 됩니다.

생성자

RuleAction()

파생 클래스에서 구현되는 경우에는 RuleAction 클래스의 새 인스턴스를 초기화합니다.

메서드

Clone()

현재 RuleAction의 전체 복사본을 만듭니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
Execute(RuleExecution)

지정된 RuleAction 인스턴스를 사용하여 RuleExecution을 실행합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetSideEffects(RuleValidation)

RuleAction이 업데이트한 필드 및 속성을 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
Validate(RuleValidation)

RuleAction이 올바로 구성되고 오류가 없는지 확인합니다.

적용 대상