.Net

Récupération d’entités MDS (Master Data Services) par web services

Déc 21, 2015

Romain Casteres

Il est possible de récupérer les informations de MDS de différentes manières : Portail Web, Excel, requêter les vues en base de données et par Web service.

Sur ce post, nous allons voir comment consommer le Web service que Microsoft nous met à disposition sur MDS.

Activation des Web services

Par défaut, les Web services de MDS sont désactivés. Pour les activer, il faut modifier le fichier Web.config du site Web MDS :

  • Aller dans le répertoire du site MDS
  • Ouvrir le fichier Web.config
  • Rechercher l’élément contenant mdsWsHttpBehavior
  • Sous celui-ci, passer l’attribut httpGetEnabled à true si vous être en HTTP. Si vous êtes en HTTPS, c’est l’attribut httpsGetEnabled qu’il faut passer à true

Construction de la requête

Dans un premier temps, il faut ajouter une référence au web service en utilisant l’URL suivante : https://serveur:port/chemin-d’accès-virtuel/service/service.svc

Nous allons maintenant construire une requête pour récupérer les éléments d’une entité. Pour cela, nous allons utiliser la méthode EntityMembersGet

//Création de l'objet contenant les critères de recherche
MDSServiceReference.EntityMembersGetCriteria criteria = new MDSServiceReference.EntityMembersGetCriteria()
{
	EntityId = new MDSServiceReference.Identifier() { Name = "MyEntity" },
	ModelId = new MDSServiceReference.Identifier() { Name = "MyModel" },
	VersionId = new MDSServiceReference.Identifier() { Name = "MyVersion" },
	MemberReturnOption = MDSServiceReference.MemberReturnOption.DataAndCounts
};
MDSServiceReference.EntityMembersInformation information = null;
MDSServiceReference.OperationResult result = null;
//Connexion au web service en précisant le Endpoint paramétré dans le fichier de configuration
MDSServiceReference.ServiceClient client = new MDSServiceReference.ServiceClient("MDS_Endpoint");
client.Open();
MDSServiceReference.EntityMembers members = client.EntityMembersGet( null, criteria, out information, out result);
client.Close();
//On vérifie s'il y a des erreurs dans le retour du web service
if (result.Errors != null && result.Errors.Length > 0)
{
	Console.WriteLine(result.Errors[0].Description);
}
else
{
	//On parcourt chaque membre trouvé sur l'entité
	foreach (MDSServiceReference.Member member in members.Members)
	{
		//On récupère le code et le libellé
		Console.WriteLine(string.Format("Code : {0} --- Libellé : {1}", member.MemberId.Code, member.MemberId.Name));
		//On récupère les autres attributs
		foreach (MDSServiceReference.Attribute attribute in members.Members[0].Attributes)
		{
			Console.Write(string.Format("{0} : {1} --- ", attribute.Identifier.Name, attribute.Value));
		}
		Console.WriteLine();
	}
}
Console.ReadKey();

 

Attention de bien préciser l’attribut MemberReturnOption, sinon l’objet retourné ne contiendra que les propriétés de l’entité mais pas ses membres.

La méthode EntityMembersGet prend les arguments suivants :

  • International: contient les informations de culture. Peut être null
  • MembersGetCriteria: contient les critères de recherche.
  • EntityMembersInformation: paramètre de sortie qui contient les informations de l’entité. On peut retrouver par exemple, l’indentifiant technique de l’entité.
  • OperationResult: paramètre de sortie qui contient le résultat de la requête et éventuellement l’erreur.

Pagination des résultats

Si la quantité de ligne retournée est trop grande, il se peut que le web service renvoie une erreur. Dans ce cas, il faut paginer le résultat. Pour cela, on va préciser les PageNumber et PageSize de l’objet EntityMembersGetCriteria:

//Création de l'objet contenant les critères de recherche
MDSServiceReference.EntityMembersGetCriteria criteria = new MDSServiceReference.EntityMembersGetCriteria()
{
	EntityId = new MDSServiceReference.Identifier() { Name = "MyEntity" },
	ModelId = new MDSServiceReference.Identifier() { Name = "MyModel" },
	VersionId = new MDSServiceReference.Identifier() { Name = "MyVersion" },
	MemberReturnOption = MDSServiceReference.MemberReturnOption.DataAndCounts,
	PageNumber = 0,
	PageSize = 20
};
MDSServiceReference.EntityMembersInformation information = null;
MDSServiceReference.OperationResult result = null;
//Connexion au web service en précisant le Endpoint paramétré dans le fichier de configuration
MDSServiceReference.ServiceClient client = new MDSServiceReference.ServiceClient("MDS_Endpoint");
client.Open();
MDSServiceReference.EntityMembers members = null;
do
{
	members = client.EntityMembersGet(null, criteria, out information, out result);
} while ((criteria.PageNumber++)<information.TotalPages);
client.Close();

Grâce au paramètre de sortie EntityMembersInformation, on peut connaître le nombre total de membre et le nombre de page. Ainsi, on peut récupérer tous les membres en bouclant sur chaque page.

 

Annexe

Activation du web service MDS : https://technet.microsoft.com/fr-fr/library/ff486972(v=sql.105).aspx

Description du web service : https://msdn.microsoft.com/en-us/library/microsoft.masterdataservices.aspx

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Découvrez nos autres articles

Aller au contenu principal