Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il modo più semplice per usare BAM consiste nell'inviare attività cardine o dati espliciti usando l'API BAM. È possibile considerare l'attività BAM come record in una tabella SQL che si mantiene sincronizzata con l'unità di lavoro effettiva.
Chiamare
BeginActivityper ogni nuova unità di lavoro.Chiamare
EndActivityal termine del lavoro e non sono previsti altri eventi nel contesto di questa unità di lavoro.Chiamare Microsoft.BizTalk.Bam.EventObservation.EventStream.UpdateActivity in punti critici dell'implementazione, per inviare dati e traguardi utili all'operatore delle informazioni.
Importante
Il flusso di eventi deve essere svuotato prima dello smaltimento. L'oggetto EventStream non esegue uno scaricamento automatico dei dati quando vengono eliminati. Ciò significa che il codice che di solito si scrive, in cui si esegue il flush del flusso solo dopo aver completato l'elaborazione delle operazioni, può comportare una perdita di dati se si verifica un'eccezione prima della chiamata a flush.
Per evitare la perdita di dati, è consigliabile incapsulare l'elaborazione e lo scaricamento in un blocco try/finally, come illustrato nello pseudocode seguente:
BufferedEventStream es = new BufferedEventStream(…)
Try
{
// Do the activity processing here.
}
Finally
{
if (es != null ) es.Flush();
}
Il codice di esempio seguente illustra come usare BeginActivity, UpdateActivity e EndActivity quando l'unità di lavoro è un ordine di acquisto. Nell'esempio si presuppone che la variabile stringa poid identifichi 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 attività
Infrastruttura dinamica BAM
API BAM (esempio di BizTalk Server)