Leggere in inglese

Condividi tramite


Uso di un'attività

Il modo più semplice per utilizzare BAM consiste nell'inviare attività cardine o dati espliciti utilizzando l'API BAM. L'attività BAM può essere paragonata a un record di una tabella SQL che viene sincronizzato con l'effettiva unità di lavoro.

  • Chiamare BeginActivity ogni nuova unità di lavoro.

  • Chiamare EndActivity al termine del lavoro e non si prevede più eventi nel contesto di questa unità di lavoro.

  • Chiamare Microsoft.BizTalk.Bam.EventObservation.EventStream.UpdateActivity nelle posizioni critiche dell'implementazione, per inviare dati e attività cardine utili per il ruolo di lavoro informativo.

Importante

Prima di essere eliminato, il flusso di eventi deve essere scaricato. Al momento dell'eliminazione dell'oggetto EventStream, non viene eseguito lo scaricamento automatico dei dati. Ciò implica che il codice che, di solito, viene scritto per scaricare il flusso dopo l'elaborazione delle attività, può causare una perdita di dati se si verifica un'eccezione prima di una chiamata da scaricare.

Per evitare tale perdita, è consigliabile incorporare l'elaborazione e lo scaricamento in un blocco try/finally come illustrato nello pseudocodice indicato di seguito.

BufferedEventStream es = new BufferedEventStream(…)  
Try  
{  
   // Do the activity processing here.  
}  
Finally  
{  
   if (es != null ) es.Flush();  
}  

Nel codice di esempio riportato di seguito viene illustrato come utilizzare BeginActivity, UpdateActivity ed EndActivity quando l'unità di lavoro è rappresentata da un ordine di acquisto. Nell'esempio si presuppone che la variabile stringa identifica l'ordine di acquisto corrente nel processo:

using Microsoft.BizTalk.BAM.EventObservation;  
...   
EventStream es=new DirectEventStream(connectionString,1);  
...  
// At the beginning of the processing of a new work:  
//    Here poid is a string variable that has the current   
//    Purchase Order identifier (e.g. PO number)  
es.BeginActivity("PurchaseOrder",poid);  
es.UpdateActivity("PurchaseOrder",poid,  
    "POReceived",DateTime.UtcNow,  
    "POAmount",100,  
    "CustomerName",""Joe",  
    "CustomerCity","Seattle");  
...  
// few days later  
es.UpdateActivity("PurchaseOrder",poid,  
    "POApproved",DateTime.UtcNow,  
    "ProductName","Widget");  
...  
// and another few days later  
es. UpdateActivity("PurchaseOrder",poid,  
    "POShipped",DateTime.UtcNow);  
...  
// and finally  
es. UpdateActivity("PurchaseOrder",poid,  
    "Delivered",DateTime.UtcNow);  
es.EndActivity("PurchaseOrder",poid);  

Vedere anche

Implementazione di attività BAM con flussi di eventi
Continuazione dell'attività
Infrastruttura dinamica BAM
BAM API (esempio di BizTalk Server)