RuleAction 클래스

정의

연결된 Condition 함수가 로 계산true되는 경우 실행할 작업을 정의하는 추상 클래스를 ThenActionsfalseElseActions나타냅니다. 이 클래스는 상속되어야 합니다.

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

설명

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

RuleAction는 , RuleStatementActionRuleHaltAction 클래스가 RuleUpdateAction파생되는 기본 형식입니다. 이러한 클래스의 사용은 다음과 같습니다.

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

  • A RuleHaltActionRuleSet 실행을 중지하고 호출 메서드에 컨트롤을 반환합니다.

  • 규칙은 RuleUpdateAction 변수를 업데이트하고 있음을 명시적으로 나타냅니다. 이로 인해 영향을 받는 모든 규칙이 다시 평가됩니다.

생성자

Name Description
RuleAction()

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

메서드

Name Description
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 올바르게 구성되었으며 오류가 없는지 확인합니다.

적용 대상