Condividi tramite


Intercettore BAM

Panoramica

L'intercettore BAM è un oggetto che consente di eseguire la strumentazione dell'applicazione per acquisire dati di interesse. Nel diagramma seguente viene illustrato il ruolo dell'intercettore BAM e la sua interazione con gli altri componenti BAM:

Immagine che mostra il ruolo dell'intercettore BAM e la relativa interazione con gli altri componenti BAM.
Intercettore BAM

In ciascuna fase dell'applicazione in cui è possibile avere dati di interesse, è possibile chiamare l'intercettore OnStep, fornire un identificatore, nonché alcuni dati o un oggetto arbitrario utilizzato nell'ambito dell'applicazione.

È necessario implementare una funzione di callback in modo che quando si verifica il callback, la relativa procedura ottenga l'ID di passaggio corrente e l'oggetto dati. L'intercettore BAM propaga semplicemente l'oggetto dati al callback. La logica effettiva dell'estrazione dei dati risiede nell'applicazione in uso. Ad esempio, se i dati sono sotto forma di messaggi XML, il callback utilizzerà la sintassi XPath. Per altre informazioni sugli XPath, vedere Using XPaths in Message Assignment.

L'intercettore BAM decide quali dati richiedere durante ciascuna fase, in base alla configurazione che è possibile creare a livello di programmazione. L'intercettore BAM utilizza quindi i dati ottenuti per chiamare il flusso DirectEventStream o BufferedEventStream necessario mantenere e passare ogni volta come argomento a OnStep.

Chiamare l'intercettore ad ogni fase non è un'operazione che presuppone un utilizzo elevato di risorse. Se si chiama e non si registra nulla nell'ambito della fase, l'intercettore viene restituito immediatamente. Ciò significa che non viene eseguita alcuna operazione su disco, alcuna transazione, nonché alcuna allocazione di memoria e, di conseguenza, le prestazioni non verranno influenzate negativamente. Allo stesso tempo, è possibile estrarre tutti i dati relativi a BAM, se necessario. L'impatto sulle prestazioni sui passaggi relativi all'estrazione dei dati e alla disponibilità dei dati dipenderà dall'implementazione IBAMDataExtractor Interfacedi .

Gli esempi di codice riportati di seguito illustrano l'utilizzo dell'intercettore durante la configurazione e il runtime.

Fase di configurazione

Il codice seguente illustra come configurare l'intercettore per l'arresto nella fase recvPO dell'applicazione e richiedere Nome cliente e Cliente SSN:

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.  

Una volta creata un'istanza intercettore, è possibile memorizzarla per utilizzarla in fase di runtime in un secondo momento.

È possibile mantenere differenti intercettori precreati che rappresentano differenti preferenze relative a dati e componenti di base per BAM. Per migliorare le prestazioni, è possibile serializzare le istanze intercettore tramite la classe BinaryFormatter.

Fase di esecuzione

Avvalersi di questo codice per utilizzare l'intercettore in fase di runtime in un ambiente di produzione:

// Deserialize the Interceptor that was prepared before  
...  
es=new DirectEventStream(...)  
...  
Interceptor.OnStep(recvPO, data1, es, callback)  
...  
Interceptor.OnStep(approvePO, data2, es, callback)  
...  

Dove:

  • recvPO e approvePO sono oggetti arbitrari usati per identificare i passaggi nell'applicazione.

  • data1 e data2 sono oggetti arbitrari presenti in quel punto e possono contenere dati interessanti, ad esempio il documento XML dell'ordine di acquisto.

  • es è un flusso DirectEventStream o BufferedEvent a seconda dei requisiti di prestazioni.

  • callback è l'implementazione di IBAMDataExtractor Interface.

    L'esempio di SDK, API BAM (BizTalk Server Sample) illustra l'uso dell'intercettore, che contiene sia uno strumento di configurazione che un'applicazione di runtime di esempio.

    Il motore di orchestrazione BizTalk supporta l'intercettazione, il che consente di modificare i criteri di raccolta dei dati relativi a BAM in fase di runtime tramite l'Editor profili di rilevamento.

Contenuto della sezione

Vedere anche

BAM API (esempio di BizTalk Server)