Obtenir des métadonnées à l’aide de WS-Metadata Exchange dans SAP
En tant que liaison personnalisée Windows Communication Foundation (WCF), l’adaptateur Microsoft BizTalk pour mySAP Business Suite expose un point de terminaison WS-Metadata Exchange (MEX) que vous pouvez utiliser pour récupérer des métadonnées pour des opérations spécifiques à partir de l’adaptateur Microsoft BizTalk pour mySAP Business Suite.
WCF fournit une infrastructure riche pour l’exportation, la publication, la récupération et l’importation de métadonnées relatives à un service. Les services WCF, comme l’adaptateur, utilisent des métadonnées pour décrire comment interagir avec les points de terminaison de service afin que les outils, comme svcutil.exe, puissent générer automatiquement du code client pour l’utilisation du service. WCF représente les métadonnées d’un service en tant que instance du type MetadataSet, qui est fortement lié au format de sérialisation des métadonnées défini dans WS-Metadata Exchange (MEX). Vous pouvez créer un MetadataSet pour les opérations ciblées sur l’adaptateur à l’aide d’un MetadataExchangeClient.
La prise en charge de WCF pour l’échange de métadonnées est un sujet étendu qui dépasse le cadre de cette documentation. Pour plus d’informations sur la prise en charge des métadonnées dans WCF, consultez « Métadonnées » dans la documentation WCF à l’adresse https://go.microsoft.com/fwlink/?LinkId=105634. Pour obtenir une description particulièrement correcte de l’architecture, des classes et des espaces de noms que WCF expose pour les métadonnées, consultez « Vue d’ensemble de l’architecture des métadonnées » à l’adresse https://go.microsoft.com/fwlink/?LinkId=105635. Vous devez vous familiariser avec le contenu lié à la récupération des métadonnées à partir d’un service WCF dans ces rubriques WCF avant de continuer.
Les rubriques suivantes contiennent des informations sur l’utilisation d’un MetadataExchangeClient pour récupérer des métadonnées à partir de l’adaptateur SAP.
Utilisation d’un MetadataExchangeClient pour récupérer des métadonnées
Pour utiliser un MetadataExchangeClient , vous devez spécifier un URI de connexion et une liaison (SAPBinding). L’URI de connexion identifie les opérations pour lesquelles vous souhaitez récupérer des métadonnées.
Les sections suivantes contiennent des informations sur la façon de spécifier l’URI de connexion, les propriétés de liaison importantes et l’utilisation d’un MetadataExchangeClient pour récupérer les métadonnées de l’adaptateur.
URI de connexion
Pour utiliser MetadataExchangeClient , vous devez fournir un URI de connexion SAP qui spécifie un point de terminaison MEX et l’opération ou les opérations pour lesquelles vous souhaitez récupérer les métadonnées. Vous spécifiez un point de terminaison MEX et des opérations cibles dans l’URI de connexion de la manière suivante :
Vous devez inclure le paramètre « wsdl » dans la chaîne de requête. S’il s’agit du premier paramètre de la chaîne de requête, il est spécifié juste après le point d’interrogation ( ?). S’il ne s’agit pas du premier paramètre, il doit être précédé d’une esperluette (&).
Vous devez suivre le paramètre « wsdl » par un ou plusieurs paramètres « op ». Chaque paramètre « op » est précédé d’une esperluette (&) et spécifie l’action de message (ID de nœud) d’une opération cible.
Par exemple, l’URI de connexion suivant cible l’opération Send pour l’IDOC SALESORDER_CREATEFROMDAT201 et l’IDOC SALESORDER_CREATEFROMDAT202. Les paramètres « wsdl » et « op » sont mis en surbrillance.
"sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Send&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT202//620/Send"
Notes
Il n’est pas nécessaire d’inclure des paramètres d’écouteur dans l’URI de connexion pour les opérations entrantes. L’adaptateur se connecte en tant que client pour récupérer les métadonnées du système SAP.
Vous pouvez également utiliser les constantes définies à pour Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants
vous aider à spécifier des opérations lorsque vous créez un URI de connexion. Cela est illustré dans l’exemple de code à la fin de cette rubrique.
La façon dont vous transmettez cet URI de connexion à MetadataExchangeClient dépend des méthodes surchargées que vous utilisez pour créer le client et récupérer les métadonnées de l’adaptateur.
Pour plus d’informations sur l’URI de connexion SAP, consultez Créer l’URI de connexion système SAP.
Propriétés de liaison
Lorsque vous créez MetadataExchangeClient, vous devez spécifier un SAPBinding.
Plusieurs propriétés de liaison affectent la façon dont l’adaptateur génère des métadonnées. Ces propriétés sont :
GenerateFlatfileCompatibleIdocSchema
ReceiveIDocFormat
EnableSafeTyping
FlatFileSegmentIndicator
Vous devez vous assurer que ces propriétés de liaison sont définies sur les valeurs requises pour votre application avant d’appeler la méthode GetMetadata sur MetadataExchangeClient. Pour plus d’informations sur les propriétés de liaison de l’adaptateur SAP, consultez En savoir plus sur les propriétés de liaison de l’adaptateur BizTalk pour mySAP Business Suite.
Exemple
L’exemple suivant utilise un MetadataExchangeClient pour créer une description de service (document WSDL) pour les opérations BAPI_TRANSACTION_COMMIT et BAPI_TRANSACTION_ROLLBACK.
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
// Needed for WCF and SAP adapter
using System.ServiceModel;
using Microsoft.ServiceModel.Channels;
using Microsoft.Adapters.SAP;
// Needed for MetadataExchangeClient class
using System.ServiceModel.Description;
// Needed for ServiceDescription class
using System.Web.Services;
namespace SapMetadataExchangeClient
{
class Program
{
static void Main(string[] args)
{
//Create a binding
SAPBinding binding = new SAPBinding();
//Create a metadata exchange client that will retrieve metadata according to the WS-MEX standard.
MetadataExchangeClient client = new MetadataExchangeClient(binding);
client.SoapCredentials.UserName.UserName = "YourUserName";
client.SoapCredentials.UserName.Password = "YourPassword";
//Set up an endpoint address and specify the operation for which we want metadata.
string connectionUri = "sap://Client=800;lang=EN@A/YourSAPHost/00?wsdl&op="
+ Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants.RfcActionPrefix
+ "BAPI_TRANSACTION_COMMIT"
+ "&op="
+ Microsoft.Adapters.SAP.SAPAdapterConstants.ActionConstants.RfcActionPrefix
+ "BAPI_TRANSACTION_ROLLBACK";
EndpointAddress address = new EndpointAddress(connectionUri);
//Get the metadata.
MetadataSet ms = client.GetMetadata(address);
// Check for the metadata set size.
Collection<MetadataSection> documentCollection = ms.MetadataSections;
if (documentCollection != null && documentCollection.Count > 0)
{
//Get the WSDL from the metadata set
System.Web.Services.Description.ServiceDescription wsdl = (System.Web.Services.Description.ServiceDescription)documentCollection[0].Metadata;
//Save the WSDL to a file.
wsdl.Write("BapiTx.wsdl");
}
}
}
}
Voir aussi
Récupération de métadonnées par programmation à partir de SAPRécupération de métadonnées dans SAP à l’aide d’IMetadataRetrievalContract