Partager via


Exécuter des opérations sur des tables avec des types de données objet volumineux dans Oracle Database

L’adaptateur Microsoft BizTalk pour Oracle Database prend en charge les types de données Oracle grand objet (LOB) :

Notes

Lors de l’utilisation de l’adaptateur Oracle Database avec BizTalk Server, l’opération ReadLOB ne prend pas en charge la diffusion en continu de données de type LOB à partir d’une base de données Oracle. Pour diffuser en continu des données métier à partir d’une base de données Oracle à l’aide de BizTalk Server vous devez plutôt utiliser l’opération Select. Pour plus d’informations sur la diffusion en continu, consultez Prise en charge de la diffusion en continu pour les types de données métier dans Oracle Database. En outre, la réponse de la base de données Oracle pour l’opération ReadLOB échoue par rapport à WSDL. Pour obtenir des instructions sur la façon de contourner l’échec, consultez Résolution des problèmes opérationnels.

Comment effectuer des opérations sur des données métier ?

L’exécution d’une opération sur une base de données Oracle à l’aide de l’adaptateur Oracle Database avec BizTalk Server implique des tâches procédurales décrites dans Blocs de construction pour développer des applications BizTalk avec Oracle Database. Pour appeler les opérations ReadLOB et UpdateLOB sur une table d’une base de données Oracle, les tâches suivantes sont les suivantes :

  1. Créez un projet BizTalk et générez un schéma pour les opérations ReadLOB et UpdateLOB.

  2. Créez des messages dans le projet BizTalk pour l’envoi et la réception de messages à partir de la base de données Oracle. Vous devez créer des messages pour l’envoi de la demande et la réception des réponses pour les deux opérations.

  3. Créez une orchestration pour appeler les opérations ReadLOB et UpdateLOB.

  4. Générez et déployez le projet BizTalk.

  5. Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.

  6. Démarrez l’application BizTalk.

    Cette rubrique fournit des instructions pour effectuer ces tâches.

Exemple basé sur cette rubrique

Un exemple, Operate_LOB, basé sur cette rubrique est également fourni avec le pack d’adaptateurs BizTalk. Pour plus d’informations, consultez Exemples d’adaptateurs.

Génération d’un schéma

Dans cette rubrique, pour montrer comment effectuer des opérations ReadLOB et UpdateLOB, nous allons générer des métadonnées pour ces opérations exposées pour la table CUSTOMER sous le schéma SCOTT dans la base de données Oracle. Cette table est créée sous le schéma SCOTT en exécutant les scripts SQL fournis avec les exemples. Pour en savoir plus sur les exemples, consultez Exemples de schémas.

Définition des messages et des types de messages

Le schéma que vous avez généré précédemment décrit les « types » requis pour les messages dans l’orchestration. Un message est généralement une variable, dont le type est défini par le schéma correspondant. Vous devez lier le schéma que vous avez généré à la première étape aux messages de la fenêtre Vue d’orchestration du projet BizTalk.

Pour cette rubrique, vous devez créer deux ensembles de messages requête-réponse : un jeu de requêtes-réponse pour l’opération ReadLOB et le deuxième jeu de demandes-réponses pour l’opération UpdateLOB.

Effectuez les étapes suivantes pour créer des messages et les lier au schéma.

  1. Si la fenêtre Vue Orchestration du projet BizTalk n’est pas déjà ouverte, ouvrez-la. Pour ce faire, cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Vue orchestration.

  2. En mode Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.

  3. Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.

  4. Dans le volet Propriétés de Message_1, procédez comme suit :

    Propriété Pour
    Identificateur Tapez Demande.
    Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez Operate_LOB. OracleDBBindingSchema.ReadLOB,Operate_LOB est le nom de votre projet BizTalk. OracleDBBindingSchema est le schéma généré pour les opérations ReadLOB et UpdateLOB sur la table CUSTOMER.
  5. Répétez l’étape précédente pour créer trois autres messages. Dans le volet Propriétés des nouveaux messages, procédez comme suit :

    Définissez Identificateur sur Définissez Type de message sur
    response Operate_LOB. OracleDBBindingSchema.ReadLOBResponse
    Demande2 Operate_LOB. OracleDBBindingSchema.UpdateLOB
    Réponse2 Operate_LOB. OracleDBBindingSchema.UpdateLOBResponse

Configuration de l’orchestration

Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour appeler des opérations ReadLOB et UpdateLOB sur une table. Dans cette orchestration, vous supprimez deux messages de demande, l’un pour l’opération ReadLOB et l’autre pour l’opération UpdateLOB. Ces messages sont supprimés à un emplacement de réception. L’adaptateur Oracle Database consomme les messages et les transmet à la base de données Oracle via ODP. La réponse de la base de données Oracle est enregistrée dans un autre emplacement.

Étant donné que l’orchestration sélectionne deux requêtes simultanément, vous devez inclure une forme Actions parallèles dans l’orchestration. Pour chaque action parallèle, vous devez inclure des formes Envoyer et Recevoir pour envoyer des messages à la base de données Oracle et recevoir des réponses. Toutefois, vous pouvez utiliser les mêmes ports pour l’envoi et la réception de messages pour les deux opérations. Une orchestration classique pour effectuer simultanément les opérations ReadLOB et UpdateLOB contient :

  • Envoyer et recevoir des formes pour envoyer des messages à la base de données Oracle et recevoir des réponses.

  • Port de réception unidirectionnel pour recevoir les messages de demande à envoyer à la base de données Oracle.

  • Port d’envoi bidirectionnel pour envoyer des messages de demande à la base de données Oracle et recevoir des réponses.

  • Port d’envoi unidirectionnel pour envoyer les réponses de la base de données Oracle à un dossier.

    Un exemple d’orchestration ressemble à ce qui suit :

    Orchestration pour la lecture et la mise à jour des données métier

Ajout de formes de message

Veillez à spécifier les propriétés suivantes pour chacune des formes de message. Les noms répertoriés dans la colonne Forme sont les noms des formes de message affichées dans l’orchestration qui vient d’être mentionnée. Le tableau suivant répertorie les formes que vous devez inclure pour l’une des actions parallèles.

Forme Type de forme Propriétés
ReceiveMessage Recevoir - Définissez Nom sur ReceiveMessage
- Définissez Activer sur True
SendMessage Envoyer - Définissez Nom sur SendMessage
ReceiveResponse Recevoir - Définissez Nom sur ReceiveResponse
- Définissez Activer sur False
SendResponse Envoyer - Définissez Name sur SendResponse

Le tableau suivant répertorie les formes que vous devez inclure pour l’autre action parallèle.

Forme Type de forme Propriétés
ReceiveMessage2 Recevoir - Définissez Nom sur ReceiveMessage2
- Définissez Activer sur True
SendMessage2 Envoyer - Définissez Nom sur SendMessage2
ReceiveResponse2 Recevoir - Définissez Nom sur ReceiveResponse2
- Définissez Activer sur False
SendResponse2 Envoyer - Définissez Name sur SendResponse2

Ajout de ports

Veillez à spécifier les propriétés suivantes pour chacun des ports logiques. Les noms répertoriés dans la colonne Port sont les noms des ports affichés dans l’orchestration.

Port Propriétés
FileIn - Définissez Identifier sur FileIn
- Définissez Type sur FileInType
- Définir le modèle de communication sur Unidirectionnel
- Définir le sens de la communication sur Réception
LOBPort - Définissez Identifier sur LOBPort
- Définissez Type sur LOBPortType
- Définir le modèle de communication sur Requête-réponse
- Définir le sens de la communication sur Envoyer-Recevoir
SaveResponse - Définissez Identifier sur SaveResponse
- Définissez Type sur SaveResponseType
- Définir le modèle de communication sur Unidirectionnel
- Définir le sens de la communication sur Envoyer

Étant donné que vous allez traiter deux messages de demande et de réponse à l’aide de ces ports, vous devez créer deux opérations pour chaque port, où chaque opération correspond à un type de message. Pour créer une opération, cliquez avec le bouton droit sur la forme de port, puis sélectionnez Nouvelle opération. Nommez la première opération pour chaque port comme ReadLOB et la deuxième opération pour chaque port comme UpdateLOB.

Utilisation de la corrélation

La corrélation est le processus de mise en correspondance d'un message entrant et de l'instance appropriée d'une orchestration. Dans l’orchestration, vous supprimez deux messages de demande, un pour chaque surcharge. À l’aide de la corrélation, vous associez un message de demande à l’orchestration appropriée. Pour plus d’informations sur la corrélation, consultez Utilisation de corrélations dans les orchestrations.

Pour utiliser des corrélations
  1. Promouvoir une propriété à partir du schéma généré pour chaque opération. Par exemple, promouvez la propriété LOB_COLUMN à partir du schéma d’opération ReadLOB ; promouvoir la propriété FILTER à partir du schéma d’opération UpdateLOB. Pour promouvoir une propriété, cliquez avec le bouton droit sur la propriété dans la vue de schéma, pointez sur Promouvoir, puis sélectionnez Promotion rapide. Cela ajoute un fichier PropertySchema.xsd à votre projet BizTalk.

    Pour plus d’informations sur la promotion d’une propriété, consultez Promotion des propriétés.

  2. Dans la vue Orchestration, cliquez avec le bouton droit sur Types de corrélation, puis sélectionnez Nouveau type de corrélation.

  3. La boîte de dialogue Propriétés de corrélation répertorie les propriétés que vous avez promues à l’étape 1. Sélectionnez une propriété, puis cliquez sur Ajouter.

  4. Cliquez sur OK.

  5. Pour créer des types de corrélation pour l’autre propriété promue, répétez ces étapes.

  6. Renommez les types de corrélation en fonction de l’opération à laquelle ils sont associés. Vous pouvez renommer les types de corrélation en CorrelationType_ReadLOB (pour l’opération ReadLOB) et CorrelationType_UpdateLOB (pour l’opération UpdateLOB).

  7. Dans la vue Orchestration, cliquez avec le bouton droit sur Jeux de corrélations, puis sélectionnez Nouveau jeu de corrélations.

  8. Cliquez avec le bouton droit sur le jeu de corrélations nouvellement ajouté, puis cliquez sur Propriétés. Dans le volet Propriétés , procédez comme suit :

    Propriété Pour
    Type de corrélation Operate_LOB. CorrelationType_ReadLOB
    Identificateur Correlation_ReadLOB
  9. Ajoutez un autre jeu de corrélations et spécifiez les propriétés suivantes dans le volet Propriétés.

    Propriété Pour
    Type de corrélation Operate_LOB. CorrelationType_UpdateLOB
    Identificateur Correlation_UpdateLOB

Spécifier des messages pour les formes d’action et les connecter aux ports

Le tableau suivant spécifie les propriétés et leurs valeurs que vous devez définir pour spécifier des messages pour les formes d’action et les lier aux ports. Les noms répertoriés dans la colonne Forme sont les noms des formes de message affichées dans l’orchestration mentionnée précédemment.

Forme Propriétés
ReceiveMessage - Définir l’initialisation des jeux de corrélations sur Correlation_ReadLOB
- Définir message sur Demande
- Définissez Opération sur FileIn.ReadLOB.Request
SendMessage - Définir message sur Demande
- Définissez Opération sur LOBPort.ReadLOB.Request
ReceiveResponse - Définir Message sur Réponse
- Définissez Opération sur LOBPort.ReadLOB.Response
SendResponse - Définir Message sur Réponse
- Définissez Opération sur SaveResponse.ReadLOB.Request
ReceiveMessage2 - Définir l’initialisation des jeux de corrélations sur Correlation_UpdateLOB
- Définissez Message sur Request2
- Définissez Opération sur FileIn.UpdateLOB.Request
SendMessage2 - Définissez Message sur Request2
- Définissez Opération sur LOBPort.UpdateLOB.Request
ReceiveResponse2 - Définissez Message sur Response2
- Définissez Opération sur LOBPort.UpdateLOB.Response
SendResponse2 - Définir message sur Réponse
- Définissez Opération sur SaveResponse.UpdateLOB.Request

Une fois que vous avez spécifié ces propriétés, les formes et les ports de message sont connectés et votre orchestration est terminée.

Vous devez maintenant générer la solution BizTalk et la déployer sur un BizTalk Server. Pour plus d’informations, consultez Génération et exécution d’orchestrations.

Configuration de l’application BizTalk

Une fois que vous avez déployé le projet BizTalk, l’orchestration que vous avez créée précédemment est répertoriée sous le volet Orchestrations dans la console Administration BizTalk Server. Vous devez utiliser la console Administration BizTalk Server pour configurer l’application. Pour obtenir une procédure pas à pas, consultez Procédure pas à pas : déploiement d’une application BizTalk de base.

La configuration d’une application implique :

  • Sélection d’un hôte pour l’application.

  • Mappage des ports que vous avez créés dans votre orchestration aux ports physiques dans la console Administration BizTalk Server. Pour cette orchestration, vous devez :

    • Définissez un emplacement sur le disque dur et un port de fichier correspondant où vous supprimerez les messages de demande, un pour les opérations ReadLOB et UpdateLOB. L’orchestration BizTalk consomme les messages de requête et les envoie à la base de données Oracle.

    • Définissez un emplacement sur le disque dur et un port de fichier correspondant où l’orchestration BizTalk supprime les messages de réponse, un pour chaque opération, contenant la réponse de la base de données Oracle.

    • Définissez un WCF-Custom physique ou WCF-OracleDB envoyer un port pour envoyer des messages à la base de données Oracle. Vous devez également spécifier l’action dans le port d’envoi. Pour plus d’informations sur la création de ports WCF-Custom ou WCF-OracleDB, consultez Configurer manuellement une liaison de port physique à l’adaptateur de base de données Oracle. Étant donné que le WCF-Custom ou WCF-OracleDB envoyer un port envoie et reçoit des messages conformes à plusieurs schémas et effectue deux opérations, vous devez définir une action dynamique pour les deux opérations. Pour plus d’informations sur les actions, consultez Configurer l’action SOAP pour Oracle Database. Pour cette orchestration, l’action doit être définie comme suit :

      <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
        <Operation Name="ReadLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/ReadLOB" />  
        <Operation Name="UpdateLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/UpdateLOB" />  
      </BtsActionMapping>  
      

      Notes

      La génération du schéma à l’aide du complément de projet BizTalk du service Consume Adapter crée également un fichier de liaison contenant des informations sur les ports et les actions à définir pour ces ports. Vous pouvez importer ce fichier de liaison à partir de la console d’administration BizTalk Server pour créer des ports d’envoi (pour les appels sortants) ou de réception (pour les appels entrants). Pour plus d’informations, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port à Oracle Database.

Démarrage de l’application

Vous devez démarrer l’application BizTalk pour effectuer une opération sur la base de données Oracle. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration.

À ce stade, assurez-vous que :

  • Le port de réception FILE pour recevoir les messages de demande pour l’orchestration est en cours d’exécution.

  • Le port d’envoi FILE pour recevoir les messages de réponse de l’orchestration est en cours d’exécution.

  • Le WCF-Custom envoyer le port ou WCF-OracleDB pour envoyer des messages à la base de données Oracle est en cours d’exécution.

  • L’orchestration BizTalk pour l’opération est en cours d’exécution.

Exécution de l’opération

Après avoir exécuté l’application, vous devez supprimer les messages de demande à l’emplacement de réception FILE. Le schéma des messages de requête doit être conforme au schéma pour les opérations que vous avez générées précédemment. Consultez Schémas de message pour les opérations métier spéciales pour plus d’informations sur le schéma de message de demande pour appeler des opérations sur des types de données métier à l’aide de l’adaptateur Oracle Database.

L’orchestration consomme les messages de requête et les envoie à la base de données Oracle. La réponse de la base de données Oracle est enregistrée à un autre emplacement FILE défini dans le cadre de l’orchestration.

Pour cette orchestration, nous allons tout d’abord supprimer un message de demande pour l’opération UpdateLOB afin de mettre à jour la colonne PHOTO (de type de données BLOB) de la table CUSTOMER. Le message de demande d’appeler la colonne PHOTO de mise à jour pour un client spécifique est :

<UpdateLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>Name='Mindy Martin'</FILTER>  
  <Stream>YWJjZA==</Stream>  
</UpdateLOB>  

Notes

La chaîne de filtre doit toujours extraire une ligne correspondante, sinon l’adaptateur Oracle Database lève une exception XmlReaderParsingException. La valeur de l’élément <Stream> doit également être de type base64Binary.

La réponse pour l’opération UpdateLOB est la suivante :

<?xml version="1.0" encoding="utf-8"?>  
<UpdateLOBResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER"></UpdateLOBResponse>  

Nous supprimons maintenant un message de demande pour l’opération ReadLOB pour lire les données qui ont été mises à jour par l’opération UpdateLOB. Le message de demande d’appeler l’opération ReadLOB sur la colonne PHOTO pour un client spécifique est :

<ReadLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>NAME='Mindy Martin'</FILTER>  
</ReadLOB>  

Notes

La chaîne de filtre doit toujours extraire une ligne correspondante. S’il existe plusieurs lignes correspondantes, l’adaptateur Oracle Database retourne uniquement la colonne métier pour la première ligne (correspondante).

La réponse pour l’opération ReadLOB est :

<?xml version="1.0" encoding="utf-8"?>  
<ReadLOBResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <ReadLOBResult>YWJjZA==</ReadLOBResult>  
</ReadLOBResponse>  

Notes

La réponse pour l’opération ReadLOB peut ne pas être validée par rapport au WSDL. Vous devez effectuer certaines tâches pour valider le ReadLOB par rapport au WSDL. Pour plus d’informations, consultez Résolution des problèmes opérationnels.

Exceptions possibles

Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de l’exécution d’opérations sur une table contenant des données métier à l’aide de BizTalk Server, consultez Exceptions et gestion des erreurs.

Bonnes pratiques

Une fois que vous avez déployé et configuré le projet BizTalk, vous pouvez exporter les paramètres de configuration vers un fichier XML appelé fichier de liaisons. Une fois que vous avez généré un fichier de liaisons, vous pouvez importer les paramètres de configuration à partir du fichier afin de ne pas avoir à créer les ports d’envoi, les ports de réception, etc. pour la même orchestration. Pour plus d’informations sur les fichiers de liaison, consultez Réutiliser les liaisons d’adaptateur de base de données Oracle.

Voir aussi

Blocs de construction pour développer des applications BizTalk avec Oracle Database