RuleAction クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
抽象クラス。これに関連付けられた 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
で、文字列型の引数を 1 つ取ります。 また、コンソールに文字列を出力します。
このコードを使用するには、クラス ライブラリ プロジェクトにコードを追加し、ワークフロー プロジェクトからそのライブラリを参照します。
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 オブジェクトは、通常、アクティビティのいずれか 1 つのプロパティの変数値を設定する、アクティビティのメソッドを呼び出す、参照されているアセンブリ内の型に対して静的メソッドを呼び出す、のいずれかを実行します。
RuleAction は、RuleStatementAction、RuleHaltAction、および RuleUpdateAction の各クラスの派生元となる基本型です。 これらのクラスの用途は次のとおりです。
RuleStatementAction は、プロパティを変更するか、メソッドを呼び出します。
RuleHaltAction は、RuleSet の実行を停止し、呼び出し元メソッドに制御を返します。
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 の構成が適切でエラーがないことを検証します。 |