Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les types ORACLE RECORD sont utilisés pour représenter des informations hiérarchiques dans les paramètres passés aux fonctions et procédures PL/SQL. L’adaptateur Microsoft BizTalk pour Oracle Database expose les types RECORD en tant que types XML complexes. Pour plus d’informations sur la façon dont l’adaptateur Oracle Database prend en charge les types RECORD, consultez Opérations sur les fonctions et les procédures avec des types RECORD dans Oracle Database.. Pour plus d’informations sur la structure XML pour les types RECORD, consultez Schémas de message pour les types RECORD.
Comment appeler des fonctions dans une base de données Oracle ?
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 les blocs de construction pour développer des applications BizTalk avec Oracle Database. Pour appeler une fonction dans une base de données Oracle qui retourne des types RECORD simples et imbriqués, ces tâches sont les suivantes :
Créez un projet BizTalk et générez un schéma pour la fonction que vous souhaitez appeler dans une base de données Oracle.
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.
Créez une orchestration pour appeler la fonction dans la base de données Oracle.
Générez et déployez le projet BizTalk.
Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.
Démarrez l’application BizTalk.
Cette rubrique fournit des instructions pour effectuer ces tâches.
Exemple basé sur cette rubrique
Un exemple, Func_RecordTypes, 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 l’adaptateur Oracle Database prend en charge l’appel de la fonction qui retourne les paramètres de type RECORD, nous allons appeler :
Fonction GET_ACCOUNTADDRESS qui retourne un type RECORD simple.
Fonction GET_ACCOUNTINFO qui retourne un type RECORD imbriqué.
Ces fonctions sont disponibles dans le cadre de l’ACCOUNT_PKG créée en exécutant les scripts SQL fournis avec les exemples. Pour en savoir plus sur les exemples et les scripts SQL, consultez Exemples de schéma.
Nous devons donc générer le schéma pour les fonctions, GET_ACCOUNTADDRESS et GET_ACCOUNTINFO, disponibles sous le schéma SCOTT\Package\ACCOUNT_PKG. Pour plus d’informations sur la façon de générer un schéma , consultez Récupérer des métadonnées pour les opérations Oracle dans Visual Studio .
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 Orchestration du projet BizTalk.
Pour cette rubrique, vous devez créer deux jeux de messages de demande-réponse : un jeu de demandes-réponse pour appeler la fonction GET_ACCOUNTADDRESS et recevoir une réponse ; l’autre message de demande-réponse défini pour appeler la fonction GET_ACCOUNTINFO et recevoir une réponse.
Procédez comme suit pour créer des messages et les lier au schéma.
Pour créer des messages et créer un lien vers le schéma
Ouvrez la fenêtre Vue Orchestration du projet BizTalk, si elle n’est pas déjà ouverte. Pour ce faire, cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Mode Orchestration.
En mode Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.
Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.
Dans le volet Propriétés de Message_1, procédez comme suit :
Utiliser cette option Pour ce faire Identificateur Tapez Demande. Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez Func_RecordTypes.OracleDBBindingSchema.GET_ACCOUNTINFO, où Func_RecordTypes est le nom de votre projet BizTalk. OracleDBBindingSchema est le schéma généré pour la fonction GET_ACCOUNTADDRESS. Répétez l’étape précédente pour créer trois messages supplémentaires. Dans le volet Propriétés des nouveaux messages, procédez comme suit :
Définir l’identificateur sur Définissez le type de message sur Réponse Func_RecordTypes.OracleDBBindingSchema.GET_ACCOUNTINFOResponse Demande2 Func_RecordTypes.OracleDBBindingSchema.GET_ACCOUNTADDRESS Réponse2 Func_RecordTypes.OracleDBBindingSchema.GET_ACCOUNTADDRESSResponse
Configuration de l’orchestration
Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server afin d'appeler une fonction qui retourne des types RECORD simples et complexes. Dans cette orchestration, vous supprimez deux messages de requête :
Une pour la fonction GET_ACCOUNTADDRESS qui retourne un type RECORD simple.
Une pour la fonction GET_ACCOUNTINFO qui retourne un type RECORD imbriqué.
Ces messages sont déposé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 d’envoi et de réception pour envoyer des messages à la base de données Oracle et recevoir des réponses, respectivement. 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 les deux opérations simultanément 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 des 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 :
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 Shape sont les noms des formes de message telles qu'elles apparaissent dans l'orchestration mentionnée précédemment. 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 |
---|---|---|
RecevoirMessage | Recevoir | - Définir Name sur ReceiveMessage - Définir Activer sur True |
SendMessage | Envoyer | - Définir Name sur SendMessage |
RecevoirRéponse | Recevoir | - Définir Name à ReceiveResponse - Définir Activer sur False |
SendResponse | Envoyer | - Définir Nom 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 |
---|---|---|
RecevoirMessage2 | Recevoir | - Définir Nom sur ReceiveMessage2 - Définir Activer sur True |
SendMessage2 | Envoyer | - Assigner Name à SendMessage2 |
RecevoirRéponse2 | Recevoir | - Définir Nom sur ReceiveResponse2 - Définir Activer sur False |
SendResponse2 | Envoyer | - Définir Nom 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, comme indiqué dans l’orchestration.
Port | Propriétés |
---|---|
FileIn | - Définir l’identificateur à FileIn - Définir Type sur FileInType - Définir le modèle de communication sur unidirectionnel - Définir la direction de communication sur recevoir |
LOBPort | - Définir l’identificateur à LOBPort - Définir Type à LOBPortType - Définir le modèle de communication sur Demande-Réponse - Définir la direction de communication pour envoyer-recevoir |
EnregistrerRéponse | - Définir l’identificateur sur SaveResponse - Définir Type sur SaveResponseType - Définir le modèle de communication sur unidirectionnel - Définir le sens de communication sur Envoyer |
Étant donné que vous traitez 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 et sélectionnez Nouvelle opération. Nommez la première opération pour chaque port en tant que NestedRecType et la deuxième opération pour chaque port en tant que SimpleRecType.
Utilisation des corrélations
La corrélation est le processus de mise en correspondance d’un message entrant avec l’instance appropriée d’une orchestration. Dans l’orchestration, vous supprimez deux messages de requête, un pour chaque surcharge. À l’aide de la corrélation, vous associez un message de requête à l’orchestration appropriée. Pour plus d’informations sur la corrélation, consultez Utilisation des corrélations dans les orchestrations
Pour utiliser des corrélations
Promouvoir une propriété à partir du schéma généré pour chaque fonction. Par exemple, promouvez la propriété CUSTNAME à partir du schéma de la fonction GET_ACCOUNTADDRESS ; promouvoir la propriété AID à partir du schéma de GET_ACCOUNTINFO fonction. Pour promouvoir une propriété, cliquez avec le bouton droit sur la propriété dans l’affichage du 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.
Dans la vue Orchestration, cliquez avec le bouton droit sur Types de corrélation, puis sélectionnez Nouveau type de corrélation.
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.
Cliquez sur OK.
Pour créer des types de corrélation pour l’autre propriété promue, répétez ces étapes.
Renommez les types de corrélation en fonction de la propriété à laquelle ils sont associés. Vous pouvez renommer les types de corrélation en CorrelationType_CUSTNAME (pour la propriété CUSTNAME) et CorrelationType_AID (pour la propriété AID).
Dans la vue Orchestration, cliquez avec le bouton droit sur Ensembles de corrélations, puis sélectionnez Nouveau jeu de corrélations.
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 :
Utiliser cette option Pour ce faire Type de corrélation Func_RecordTypes.CorrelationType_CUSTNAME Identificateur Correlation_CUSTNAME Ajoutez un autre jeu de corrélation et spécifiez les propriétés suivantes dans le volet Propriétés .
Utiliser cette option Pour ce faire Type de corrélation Func_RecordTypes.CorrelationType_AID Identificateur Correlation_AID
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 Shape sont les noms des formes de message comme indiqué dans l’orchestration mentionnée précédemment.
Forme | Propriétés |
---|---|
RecevoirMessage | - Définir l'initialisation des ensembles de corrélation sur Correlation_AID - Définir Message sur Requête - Définir l’opération à FileIn.NestedRecType.Request |
SendMessage | - Définir Message sur Requête - Définissez Opération sur LOBPort.NestedRecType.Request |
RecevoirRéponse | - Définir le message en réponse - Définir l’opération à LOBPort.NestedRecType.Response |
SendResponse | - Définir le message en réponse - Définir l’opération sur SaveResponse.NestedRecType.Request |
RecevoirMessage2 | - Définir l'initialisation des ensembles de corrélation sur Correlation_CUSTNAME - Définir le message sur Request2 - Définir l’opération sur FileIn.SimpleRecType.Request |
SendMessage2 | - Définir le message sur Request2 - Définir Opération sur LOBPort.SimpleRecType.Request |
RecevoirRéponse2 | - Définir le message sur Response2 - Définir Operation sur LOBPort.SimpleRecType.Response |
SendResponse2 | - Définir le message en réponse - Définir l’opération sur SaveResponse.SimpleRecType.Request |
Une fois que vous avez spécifié ces propriétés, les formes de message et les ports sont connectés et votre orchestration est terminée.
Vous devez maintenant générer la solution BizTalk et la déployer sur un serveur BizTalk. 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 de BizTalk Server. Vous devez utiliser la console Administration de BizTalk Server pour configurer l’application. Pour obtenir une procédure, 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.
Associez les ports que vous avez créés dans votre orchestration aux ports physiques dans la console d'administration de 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 requête, un pour chaque procédure surchargée. L’orchestration BizTalk consomme les messages de requête et l’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 fonction, contenant la réponse de la base de données Oracle.
Définissez une WCF-Custom physique ou un port d’envoi WCF-OracleDB 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 Oracle Database. Étant donné que le WCF-Custom ou WCF-OracleDB le port d’envoi 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> <Operation Name="NestedRecType" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTINFO" /> <Operation Name="SimpleRecType" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS" /> </BtsActionMapping>
Remarque
La génération du schéma à l'aide du module complémentaire de projet BizTalk "Service d'adaptateur Consume" 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 Administration de BizTalk Server pour créer des ports d’envoi (pour les appels sortants) ou recevoir des ports (pour les appels entrants). Pour plus d’informations, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port vers Oracle Database.
Démarrage de l’application
Vous devez démarrer l’application BizTalk pour appeler une fonction dans une table de 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 des messages de requête pour l’orchestration est en cours d’exécution.
Le port d'envoi FILE, chargé de recevoir les messages de réponse de l’orchestration, est en cours d’exécution.
Le WCF-Custom ou le port d’envoi WCF-OracleDB pour envoyer des messages à la base de données Oracle est en cours d’exécution.
L’orchestration de BizTalk pour l’opération est en cours.
Exécution de l’opération
Après avoir exécuté l’application, vous devez déposer deux messages de requête (un pour chaque fonction) dans l'emplacement de réception FILE. Le schéma des messages de requête doit être conforme au schéma des fonctions que vous avez générées précédemment. 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 plus d'informations sur le schéma de message de requête pour appeler des fonctions à l'aide de l'adaptateur Oracle Database, consultez Schémas de message pour les fonctions et procédures.
Par exemple, le message de requête pour appeler la fonction GET_ACCOUNINFO est :
<GET_ACCOUNTINFO xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
<AID>100000</AID>
</GET_ACCOUNTINFO>
De même, le message de requête pour appeler la fonction GET_ACCOUNTADDRESS est :
<GET_ACCOUNTADDRESS xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
<CUSTNAME>Mindy Martin</CUSTNAME>
</GET_ACCOUNTADDRESS>
Le premier message de requête appelle la fonction GET_ACCOUNTINFO qui retourne un type d’enregistrement imbriqué. Le message de réponse pour appeler la fonction GET_ACCOUNTINFO est :
<?xml version="1.0" encoding="utf-8" ?>
<GET_ACCOUNTINFOResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
<GET_ACCOUNTINFOResult>
<ACCT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTINFO">
<ACCTID>100000</ACCTID>
<NAME>Kim Ralls</NAME>
<BALANCE>10000</BALANCE>
</ACCT>
<ADDRESS xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTINFO">
<STREET>1234 Main St.</STREET>
<CITY>Seattle</CITY>
<STATE>WA</STATE>
</ADDRESS>
</GET_ACCOUNTINFOResult>
</GET_ACCOUNTINFOResponse>
Le deuxième message de requête appelle la fonction GET_ACCOUNTADDRESS qui retourne un type d’enregistrement simple. Le message de réponse pour appeler la fonction GET_ACCOUNTADDRESS est :
<?xml version="1.0" encoding="utf-8"?>
<GET_ACCOUNTADDRESSResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
<GET_ACCOUNTADDRESSResult>
<ID xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS">100004</ID>
<NAME xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS">Mindy Martin</NAME>
<STREET xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS">6789 Cherry St.</STREET>
<CITY xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS">New York</CITY>
<STATE xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNTADDRESS">NY</STATE>
</GET_ACCOUNTADDRESSResult>
</GET_ACCOUNTADDRESSResponse>
Exceptions possibles
Pour plus d’informations sur les exceptions que vous pouvez rencontrer lors de l’appel de fonctions ou de procédures à l’aide de BizTalk Server, consultez Exceptions et gestion des erreurs avec l’adaptateur Oracle Database.
Meilleures 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 que vous n’ayez pas besoin de 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