RuleAction 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
연결된 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는 , RuleStatementAction및 RuleHaltAction 클래스가 RuleUpdateAction파생되는 기본 형식입니다. 이러한 클래스의 사용은 다음과 같습니다.
속성을 RuleStatementAction 수정하거나 메서드를 호출합니다.
A RuleHaltAction 는 RuleSet 실행을 중지하고 호출 메서드에 컨트롤을 반환합니다.
규칙은 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 올바르게 구성되었으며 오류가 없는지 확인합니다. |