Présentation de l'intercepteur BAM
Vue d’ensemble
L'intercepteur de l'analyse BAM est un objet qui vous permet d'instrumenter votre application pour capturer des données d'intérêt. Le diagramme suivant illustre le rôle de l'intercepteur de l'analyse BAM et son interaction avec les autres composants BAM :
Intercepteur de l'analyse BAM
Dans chaque étape de votre application où vous pourriez avoir des données d'intérêt, vous appelez Interceptor OnStep, fournissez un identificateur pour l'étape ainsi qu'un objet arbitraire ou de données quelconque que vous utilisez dans votre application.
Vous devez implémenter une fonction de rappel de manière à ce que votre procédure de rappel obtienne l'ID d'étape actuel et vos objets de données lors du rappel. Essentiellement, l'intercepteur de l'analyse BAM se borne à propager l'objet de données vers le rappel. La logique réelle d'extraction des données réside dans votre application. Par exemple, si vos données prennent la forme de messages XML, le rappel utilisera des XPath. Pour plus d’informations sur XPaths, consultez Utilisation de XPaths dans l’affectation de messages.
Sur la base d'une configuration que vous pouvez créer de façon programmée, l'intercepteur de l'analyse BAM décide des données à requérir à chaque étape. Il se sert ensuite des données obtenues pour appeler DirectEventStream ou BufferedEventStream, que vous devez conserver et transmettre à chaque fois en tant qu'argument à OnStep.
L'appel de l'intercepteur à chaque étape ne demande pas beaucoup de ressources. Si, suite à l'appel, vous n'inscrivez rien pour l'étape, l'intercepteur repart immédiatement. Cela signifie que n'a lieu aucune opération disque, aucune transaction et même aucune affectation mémoire, et que cela n'a donc presque aucune incidence sur les performances. Parallèlement, vous avez la possibilité d'extraire toutes les données que vous souhaitez pour l'analyse BAM si nécessaire. L’impact sur les performances sur les étapes impliquant l’extraction de données et la disponibilité des données dépend de votre implémentation du IBAMDataExtractor Interface
.
Les exemples de code suivants illustrent l'utilisation de l'intercepteur pendant la configuration et l'exécution.
Lors de la configuration
Le code suivant vous montre comment configurer l'Intercepteur de manière à ce qu'il s'arrête lors de l'étape recvPO de l'application et à ce qu'il demande le nom du client (Customer Name) et son numéro de sécurité sociale (Customer 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.
Une fois que vous avez créé une instance d'intercepteur, vous pouvez la stocker pour une utilisation ultérieure durant l'exécution.
Vous pouvez conserver différents intercepteurs pré-créés différents représentant diverses préférences pour les données et étapes majeures destinées à l'analyse BAM. Pour optimiser les performances, sérialisez les instances d'intercepteur à l'aide de la classe BinaryFormatter.
En cours d’exécution
Utilisez ce code pour utiliser l'intercepteur lors de l'exécution dans un environnement de production :
// Deserialize the Interceptor that was prepared before
...
es=new DirectEventStream(...)
...
Interceptor.OnStep(recvPO, data1, es, callback)
...
Interceptor.OnStep(approvePO, data2, es, callback)
...
Où :
recvPO et approvePO sont des objets arbitraires que vous utilisez pour identifier les étapes de votre application.
data1 et data2 sont des objets arbitraires dont vous disposez à ce stade et peuvent contenir des données intéressantes, par exemple le document XML du bon de commande.
es est un flux DirectEventStream ou BufferedEvent en fonction de vos besoins en matière de performances.
le rappel est votre implémentation du
IBAMDataExtractor Interface
.L’exemple sdk, API BAM (BizTalk Server Sample) illustre l’utilisation de l’intercepteur, qui contient à la fois un outil de configuration et un exemple d’application runtime.
Le moteur d'orchestration BizTalk autorise l'interception, ce qui permet de modifier les données à collecter pour l'analyse BAM durant l'exécution à l'aide de l'Éditeur de modèle de suivi.