Leer en inglés

Compartir a través de


Recaller (objeto)

La solución Administración de procesos empresariales proporciona una forma genérica de reintentar llamar a algunos métodos de objeto con errores. La solución lo hace a través del objeto Recaller en la orquestación ExceptionHandler . La orquestación ExceptionHandler usa el objeto para reintentar las llamadas al método de objeto. Para obtener más información, vea La orquestación ExceptionHandler.

Método Invoke

El objeto Recaller tiene un único método estático, Invoke. Dado que es estático, nunca es necesario crear una instancia del objeto Recaller . Puede usar el método Invoke de tres maneras: para construir un objeto, llamar a un método estático para un objeto o llamar a un método no estático para un objeto.

Nota

El método Invoke actúa como contenedor para el método Type.InvokeMember en la biblioteca de clases de .NET Framework.

Argumentos del método Invoke

En la tabla siguiente se describen los argumentos del método Invoke :

Parámetro Tipo Descripción
t Tipo Tipo de objeto en el que se debe llamar el método.
obj Object Instancia del objeto que se va a usar.
Nombredemétodo string Nombre del método que se va a invocar.
args Matriz Matriz de tipo Object que contiene los argumentos del método.

Para llamar al constructor de un objeto, use una cadena vacía ("") o null para methodName.

Para llamar a un método estático, use null para obj.

Para llamar a un método no estático, proporcione todos los argumentos.

Nota

El uso de null como valor del argumento Type, t, hace que Invoke genere una excepción ArgumentNullException . El argumento t no debe ser null porque el método Invoke usa el método Type.InvokeMember .NET Framework.

Llamar a Invoke

En la solución, solo la orquestación ExceptionHandler usa el objeto Recaller . ExceptionHandler es, a su vez, utilizado por otras orquestaciones. Los valores pasados al método Invoke proceden de estas otras orquestaciones. Por ejemplo, el código siguiente aparece en la orquestación Activar en la forma Expresión 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  
  

Observe cómo el código crea una matriz mediante System.Array.CreateInstance y usa el método SetValue para almacenar los valores usados en ella.

Después de la forma Expresión, la orquestación Activate llama a la orquestación ExceptionHandler . En el siguiente código se muestra cómo el Diseñador de orquestaciones traduce la forma de llamada:

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

En la orquestación ExceptionHandler , el código siguiente aparece en la forma Llamar expresión de código original :

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

Observe que aunque los nombres de argumento coinciden con los de la llamada de la orquestación Activate, los argumentos coinciden por orden y no por nombre cuando se llaman las orquestaciones.

Consulte también

Aspectos destacados de la implementación de la solución de administración de procesos empresariales
ExceptionHandler (orquestación)