Objet Recaller
La solution de gestion des processus d'entreprise fournit des appels de méthodes d'objet ayant échoué afin de réaliser, de façon générique, de nouvelles tentatives d'appels. La solution effectue cette opération via l’objet Recaller dans l’orchestration ExceptionHandler . L’orchestration ExceptionHandler utilise l’objet pour réessayer les appels de méthode d’objet. Pour plus d’informations, consultez l’orchestration d’ExceptionHandler.
La méthode Invoke
L’objet Recaller a une méthode statique unique, Invoke. Étant donné qu’il est statique, vous n’avez jamais besoin de créer une instance de l’objet Recaller. Vous pouvez utiliser la méthode Invoke de trois façons : pour construire un objet, pour appeler une méthode statique pour un objet ou pour appeler une méthode non statique pour un objet.
Notes
La méthode Invoke sert de wrapper pour la méthode Type.InvokeMember dans la bibliothèque de classes .NET Framework.
Arguments pour la méthode Invoke
Le tableau suivant décrit les arguments de la méthode Invoke :
Paramètre | Type | Description |
---|---|---|
t | Type | Type de l'objet à partir duquel appeler la méthode. |
obj | Object | Instance de l'objet à utiliser. |
Methodname | string | Nom de la méthode à appeler. |
args | Tableau | Tableau de type Object contenant les arguments de la méthode. |
Pour appeler le constructeur d’un objet, utilisez une chaîne vide (« ») ou null pour methodName.
Pour appeler une méthode statique, utilisez null pour obj.
Pour appeler une méthode non statique, indiquez tous les arguments.
Notes
L’utilisation de null comme valeur de l’argument Type, t, entraîne la levée d’une exception ArgumentNullException par Invoke. L’argument t ne doit pas être null, car la méthode Invoke utilise la méthode .NET Framework Type.InvokeMember .
Appel de la méthode Invoke
Dans la solution, seule l’orchestration ExceptionHandler utilise l’objet Recaller . ExceptionHandler est, à son tour, utilisé par d’autres orchestrations. Les valeurs transmises à la méthode Invoke proviennent de ces autres orchestrations. Par exemple, le code suivant apparaît dans la forme Activer l’orchestration dans la forme Expression 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
Notez comment le code crée un tableau à l’aide de System.Array.CreateInstance et utilise la méthode SetValue pour stocker les valeurs utilisées dans celui-ci.
Après la forme Expression, l’orchestration Activer appelle l’orchestration ExceptionHandler . Le code suivant illustre la manière dont le Concepteur d'orchestration convertit la forme Appel :
call Microsoft.Samples.
BizTalk.SouthridgeVideo.
OrderManager.ExceptionHandlerOrch
(
Reason,
Ex,
CalledObject,
MethodName,
ParameterArray,
OrderCorrelation,
OrderMsg,
out ReturnValue,
ObjectType
);
Dans l’orchestration ExceptionHandler , le code suivant s’affiche dans la forme Appeler l’expression de code d’origine :
ReturnValue =
Microsoft.Samples.
BizTalk.SouthridgeVideo.
Utilities.Recaller.
Invoke(
ObjectType,
CalledObject,
MethodName,
ParameterArray
);
En dépit du fait que les noms des arguments correspondent à ceux présents dans l'appel de l'orchestration Activate, vous remarquerez que, lors de l'appel d'orchestrations, les arguments sont filtrés par ordre et non pas par nom.
Voir aussi
Caractéristiques de l’implémentation de la solution de gestion des processus d’entreprise
Orchestration ExceptionHandler