¿Qué es el interceptor de BAM?
Información general
El interceptor de BAM es un objeto que permite instrumentar la aplicación para que capture datos de interés. En el diagrama siguiente se muestra el rol del interceptor de BAM y su interacción con los demás componentes de BAM:
BAM Interceptor
En cada paso de la aplicación donde pueda haber datos de interés, puede llamar a Interceptor OnStep, facilitar un identificador del paso y proporcionar algunos datos o un objeto arbitrario que esté utilizando en la aplicación.
Deberá implementar una función de devolución de llamada de tal forma que, cuando se produzca la llamada, el procedimiento de devolución de llamada obtenga el Id. de paso actual y el objeto de datos. Básicamente, el interceptor de BAM se encarga de propagar el objeto de datos a la devolución de llamada. La lógica real de extracción de datos reside en la aplicación. Por ejemplo, si los datos toman la forma de mensajes XML, la devolución de llamada utilizará XPaths. Para obtener más información sobre XPaths, vea Uso de XPaths en la asignación de mensajes.
El interceptor de BAM decide qué datos solicitar, en función de la configuración que pueda crear mediante programación. El interceptor de BAM utiliza entonces los datos obtenidos para llamar a la secuencia DirectEventStream o BufferedEventStream, necesarias para el mantenimiento y el paso como argumento un a OnStep.
La operación de llamada al interceptor en cada paso no utiliza una gran cantidad de recursos. Si realiza la llamada y no efectúa ningún registro, el interceptor la devolverá inmediatamente. Esto significa que no habrá operaciones de disco, ni transacciones ni asignaciones y que, por lo tanto, casi no habrá impacto en el rendimiento. Al mismo tiempo, tendrá la posibilidad de extraer datos de BAM si es necesario. El impacto en el rendimiento en los pasos que implican la extracción de datos y la disponibilidad de los datos dependerá de la implementación de IBAMDataExtractor Interface
.
Los siguientes ejemplos de código muestran el uso del interceptor durante la configuración y el tiempo de ejecución.
Tiempo de configuración
El siguiente código muestra cómo configurar el interceptor para que se detenga en el paso recvPO de la aplicación y solicite el nombre y número de seguridad social del cliente:
ActivityInterceptorConfiguration cfg= new ActivityInterceptorConfiguration ("PurchaseOrder");
...
cfg.RegisterDataExtraction("CustomerName",recvPO,XpathName);
cfg.RegisterDataExtraction("CustomerSSN",recvPO,XpathSSN);
...
BAMInterceptor interceptor=new BAMInterceptor();
cfg.UpdateInterceptor(interceptor);
...
// The interceptor instance is ready.
Tras crear una instancia del interceptor, podrá almacenarla para utilizarla más tarde, durante el tiempo de ejecución.
Puede crear diversos interceptores previamente creados, que representen distintas preferencias para los datos e hitos de BAM. Para obtener un rendimiento óptimo, serialice las instancias del interceptor utilizando la clase BinaryFormatter.
Tiempo de ejecución
Utilice este código para usar el interceptor durante el tiempo de ejecución en un entorno de producción:
// Deserialize the Interceptor that was prepared before
...
es=new DirectEventStream(...)
...
Interceptor.OnStep(recvPO, data1, es, callback)
...
Interceptor.OnStep(approvePO, data2, es, callback)
...
Donde:
recvPO y approvePO son objetos arbitrarios que se usan para identificar los pasos de la aplicación.
data1 y data2 son objetos arbitrarios que tiene en ese momento y pueden contener datos interesantes; por ejemplo, el documento XML del pedido de compra.
es es es la secuencia DirectEventStream o BufferedEvent en función de los requisitos de rendimiento.
callback es la implementación de
IBAMDataExtractor Interface
.En el ejemplo del SDK, API de BAM (BizTalk Server ejemplo), se muestra el uso del interceptor, que contiene una herramienta de configuración y una aplicación en tiempo de ejecución de ejemplo.
El motor de orquestaciones de BizTalk permite la intercepción que, a su vez, permite cambiar los datos que deben recopilarse para BAM en el tiempo de ejecución mediante el Editor de perfiles de seguimiento.