Recaller オブジェクト
ビジネス プロセス管理ソリューションでは、失敗したオブジェクト メソッドの呼び出しが、汎用的な方法で再試行できます。 このソリューションは、ExceptionHandler オーケストレーションの Recaller オブジェクトを使用してこれを行います。 ExceptionHandler オーケストレーションは、 オブジェクトを使用してオブジェクト メソッドの呼び出しを再試行します。 詳細については、「 ExceptionHandler オーケストレーション」を参照してください。
Invoke メソッド
Recaller オブジェクトには、単一の静的メソッド Invoke があります。 静的であるため、 Recaller オブジェクトのインスタンスを作成する必要はありません。 Invoke メソッドは、オブジェクトの構築、オブジェクトの静的メソッドの呼び出し、またはオブジェクトの非静的メソッドの呼び出しの 3 つの方法で使用できます。
Note
Invoke メソッドは、.NET Framework クラス ライブラリの Type.InvokeMember メソッドのラッパーとして機能します。
Invoke メソッドの引数
次の表では 、Invoke メソッドの引数について説明します。
パラメーター | Type | 説明 |
---|---|---|
t | Type | 呼び出されるメソッドがあるオブジェクトのデータ型 |
obj | Object | 使用するオブジェクトのインスタンス |
Methodname | string | 呼び出すメソッドの名前。 |
args | 配列 | メソッドの引数を含む Object 型の配列。 |
オブジェクトのコンストラクターを呼び出すには、methodName に空の文字列 ("") または null を使用します。
静的メソッドを呼び出すには、objに null を使用します。
非静的メソッドを呼び出すには、すべての引数に値を指定します。
Note
Type 引数 t の値として null を使用すると、Invoke は ArgumentNullException 例外をスローします。 Invoke メソッドは Type.InvokeMember .NET Framework メソッドを使用するため、引数 t を null にすることはできません。
Invoke の呼び出し
ソリューションでは、 ExceptionHandler オーケストレーションのみが Recaller オブジェクトを使用します。 ExceptionHandler は、他のオーケストレーションで使用されます。 Invoke メソッドに渡される値は、これらの他のオーケストレーションから取得されます。 たとえば、次のコードは、InitialException 式図形のアクティブ化オーケストレーションに表示されます。
Ex = CodeEx;
ObjectType = orderHandler.GetType();
CalledObject = orderHandler;
Reason = "Standard Activate Failed";
MethodName = "Activate";
ParameterArray = System.Array.CreateInstance(typeof(System.Object),
3 );
ParameterArray.SetValue(ServiceType, 0);
ParameterArray.SetValue(OrderMsg.CustNum, 1);
ParameterArray.SetValue(OrderMsg.OrderNum, 2);
ReturnValue = null; // no return value expected
コードが System.Array.CreateInstance を使用して配列を作成し、 SetValue メソッドを使用して、その中で使用される値を格納する方法に注目してください。
式図形の後に、アクティブ化オーケストレーションは ExceptionHandler オーケストレーションを呼び出します。 次のコードはオーケストレーション デザイナが呼び出し図形をどのように変換するかを示します。
call Microsoft.Samples.
BizTalk.SouthridgeVideo.
OrderManager.ExceptionHandlerOrch
(
Reason,
Ex,
CalledObject,
MethodName,
ParameterArray,
OrderCorrelation,
OrderMsg,
out ReturnValue,
ObjectType
);
ExceptionHandler オーケストレーションでは、次のコードが [元のコード式の呼び出し] 図形に表示されます。
ReturnValue =
Microsoft.Samples.
BizTalk.SouthridgeVideo.
Utilities.Recaller.
Invoke(
ObjectType,
CalledObject,
MethodName,
ParameterArray
);
引数名は Activate オーケストレーションからの呼び出しで使用されているものに一致しますが、オーケストレーションを呼び出すとき、引数の照合は名前ではなく順序によって行われることに注意してください。