Compartir a través de


Continuación de actividad

La actividad de BAM (a la que también se denomina la actividad de negocio) puede abarcar varias aplicaciones heterogéneas (por ejemplo, una canalización, dos orquestaciones, una aplicación de líneas de negocio y la otra canalización). La infraestructura de BAM puede correlacionar los eventos de varias aplicaciones con un poco de ayuda del desarrollador: un concepto denominado "Continuación", que se muestra en la ilustración siguiente.

Captura de pantalla que muestra la infraestructura de BAM.

APLICACIONES

La primera parte de la actividad se produce en la aplicación Sales, la segunda parte de la actividad se produce en la aplicación Packaging & Assembly y, por último, el progreso de entrega está disponible en la aplicación Shipping. Cada aplicación usa identificadores diferentes para la unidad de trabajo actual: número de pedido de compra (PO), número de pedido de venta (SO) y número de pedido de envío (UPS). Para correlacionar los eventos entre dos aplicaciones diferentes, es necesario:

  • Identificar el token de continuación, que es un conjunto único de datos que está disponible para las dos aplicaciones (por ejemplo, la parte del mensaje que se intercambia).

  • Llamar a EnableContinuation en la primera aplicación y pase el token de continuación junto con el ActivityID actual.

  • No llame a BeginActivity en la segunda aplicación.

  • Activar todos los eventos posteriores en la segunda aplicación mediante el token de continuación en vez de ActivityID.

    En el ejemplo del código siguiente se ilustra el uso de continuación de actividad entre tres aplicaciones:

    Aplicación de pedido

string oID="PO#123";  
string soID="SO#265";  
es.BeginActivity("PurchaseOrder",poID);  
es.UpdateActivity("PurchaseOrder",poID,  
    "POReceived",DateTime.UtcNow,  
    "POAmount",100,  
"CustomerCity","Seattle");  
es.EnableContinuation(  
   "PurchaseOrder",poId,soID);  
es.EndActivity("PurchaseOrder",poID);  

Aplicación de procesamiento

string soID="SO#265";  
string upsID="UPS#97892";  
es.UpdateActivity("PurchaseOrder",soID,  
    "POApproved",DateTime.UtcNow,  
    "ProductName","ProductA");  
es.EnableContinuation(  
   "PurchaseOrder",soID,upsID);  
es.EndActivity("PurchaseOrder",soID);  

Aplicación de envíos

string upsID="UPS#97892"  
es.UpdateActivity("PurchaseOrder", upsID,  
"POShipped",DateTime.UtcNow);  
es.EndActivity("PurchaseOrder",upsID)  
  

Siga estas directrices para usar la continuación de actividad en su código:

  • Utilice la continuación únicamente cuando el usuario final tenga que tratar el trabajo de aplicaciones distintas como parte de la misma actividad. Utilice actividades independientes para cada aplicación y cree una relación de actividad si el usuario final ve el trabajo en cada aplicación como actividades significativas.

  • Si las unidades de trabajo de las aplicaciones no tienen una relación de uno a uno, puede utilizar relaciones de actividad pero no la continuación, por ejemplo cuando existen varios envíos para un pedido de venta.

  • Si se envían datos a BAM de forma sincrónica (mediante DirectEventStream) y el ActivityID se propaga a todos los componentes implicados, no es necesario que utilice la continuación.

  • Si envía datos a BAM de forma asíncrona, (mediante BufferedEventStream o desde las orquestaciones), debe utilizar la continuación aunque se propague ActivityID a todos los componentes. En este caso, es necesario utilizar un ActivityID diferente en cada aplicación, y utilizar en ellos un prefijo de cadena única (por ejemplo, Nombre de aplicación). Este proceso resulta necesario porque puede que los datos de las distintas aplicaciones lleguen a BAM de forma aleatoria y BAM tenga que ocultar los eventos desordenados para garantizar resultados correctos en la consulta y la agregación.

  • La continuación no requiere volver a escribir sus aplicaciones para intercambiar más datos.

Consulte también

Infraestructura dinámica de BAM
API de BAM (ejemplo de BizTalk Server)
Extremo a extremo de BAM (ejemplo de BizTalk Server)