Freigeben über


Das Recaller-Objekt

Die Lösung für die Geschäftsprozessverwaltung stellt (generische) Wiederholungsversuche für Objektmethoden-Aufruffehler zur Verfügung. Die Lösung führt dies über das Recaller-Objekt in der ExceptionHandler-Orchestrierung aus. Die ExceptionHandler-Orchestrierung verwendet das -Objekt, um Objektmethodenaufrufe zu wiederholen. Weitere Informationen finden Sie unter Die ExceptionHandler-Orchestrierung.

Die Invoke-Methode

Das Recaller-Objekt verfügt über eine einzige statische Methode, Invoke. Da es statisch ist, müssen Sie nie eine instance des Recaller-Objekts erstellen. Sie können die Invoke-Methode auf drei Arten verwenden: zum Erstellen eines Objekts, zum Aufrufen einer statischen Methode für ein Objekt oder zum Aufrufen einer nicht statischen Methode für ein Objekt.

Hinweis

Die Invoke-Methode dient als Wrapper für die Type.InvokeMember-Methode in der .NET Framework-Klassenbibliothek.

Argumente für die Invoke-Methode

In der folgenden Tabelle werden Argumente für die Invoke-Methode beschrieben:

Parameter Typ BESCHREIBUNG
t Typ Der Typ des Objekts, für das die Methode aufgerufen wird.
obj Object Die Instanz des zu verwendenden Objekts.
Methodname string Der Name der aufzurufenden Methode.
args Array Ein Array vom Typ Object , das die Argumente der Methode enthält.

Um den Konstruktor für ein Objekt aufzurufen, verwenden Sie eine leere Zeichenfolge ("") oder NULL für methodName.

Verwenden Sie null für obj, um eine statische Methode aufzurufen.

Wenn Sie eine nicht statische Methode aufrufen möchten, stellen Sie alle Argumente zur Verfügung.

Hinweis

Wenn Null als Wert des Type-Arguments t verwendet wird, löst Invoke eine ArgumentNullException-Ausnahme aus. Das Argument t sollte nicht NULL sein, da die Invoke-Methode die Type.InvokeMember .NET Framework-Methode verwendet.

Aufrufen von „Invoke“

In der Projektmappe verwendet nur die ExceptionHandler-Orchestrierung das Recaller-Objekt . Der ExceptionHandler wird wiederum von anderen Orchestrierungen verwendet. Die an die Invoke-Methode übergebenen Werte stammen aus diesen anderen Orchestrierungen. Der folgende Code wird beispielsweise im Shape Orchestrierung aktivieren in der Form InitialException-Ausdruck angezeigt:

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  
  

Beachten Sie, dass der Code ein Array mit System.Array.CreateInstance erstellt und die SetValue-Methode verwendet, um die darin verwendeten Werte zu speichern.

Nach dem Ausdrucks-Shape ruft die Orchestrierung Aktivieren die ExceptionHandler-Orchestrierung auf. Der folgende Code zeigt, wie der Orchestrierungs-Designer die Form vom Typ „Aufruf“ übersetzt:

call Microsoft.Samples.  
    BizTalk.SouthridgeVideo.  
        OrderManager.ExceptionHandlerOrch  
            (  
                Reason,  
                Ex,  
                CalledObject,  
                MethodName,   
                ParameterArray,   
                OrderCorrelation,   
                OrderMsg,   
                out ReturnValue,   
                ObjectType  
            );  
  

In der ExceptionHandler-Orchestrierung wird der folgende Code in der Form "Ursprünglicher Codeausdruck aufrufen " angezeigt:

ReturnValue =   
    Microsoft.Samples.  
        BizTalk.SouthridgeVideo.  
            Utilities.Recaller.  
                Invoke(  
                    ObjectType,  
                    CalledObject,  
                    MethodName,  
                    ParameterArray  
                );  

Beachten Sie, dass die Argumentnamen mit den Namen im Aufruf der Orchestrierung Aktivieren übereinstimmen. Argumente werden beim Aufrufen von Orchestrierungen nach der Reihenfolge und nicht nach dem Namen zugeordnet.

Weitere Informationen

Implementierungshighlights der Lösung für die Geschäftsprozessverwaltung
Die Orchestrierung „ExceptionHandler“