Quand on utilise l’adapteur SQL de Biztalk pour mettre à jour, supprimer ou insérer des informations dans la base à l’aide d’updategram, il peut parfois devenir fastidieux d’utiliser Visual studio pour générer les schémas.

En effet quand on est confronté à la mise à jour d’un grand nombre de tables, on préférait pouvoir générer les schémas par lot.

 

Ceci est possible à l’aide d’une classe exposée par l’assembly  « Microsoft.BizTalk.Adapter.Sql.dll »

 

La classe à utiliser est SqlHelper. Cette classe dispose d’une méthode CreateWSDL que nous pouvons utiliser pour créer les schémas.

 

La première étape consiste à instancier SqlHelper et à fournir les paramètres pour la génération du WSDL :

 

SqlHelper hlp = new SqlHelper();

hlp.targetNameSpace = "http://www.btug.fr/monTargetNamespace";

hlp.inputRootElementName = "NomElementRequest";

hlp.outputRootElementName = "NomElementResponse";

//initialize la connection à la base de données

hlp.initialize("Provider=SQLOLEDB.1;Integrated Security=SSPI;
                    Initial Catalog=testdb;Data Source=."
);

 

Ensuite il nous faut récupérer la liste des colonnes pour la table que nous désirons mettre à jour et préciser celles qui doivent être incluses dans le schéma :

 

ColumnInfoCollection info = new ColumnInfoCollection();

hlp.GetColumnList("MaTableOuMaVue", info);

foreach (ColumnInfoItem item in info) item.isSelected = true;

 

 

Une fois cette opération effectuée nous pouvons appeler la méthode CreateWSDL pour générer le WSDL pour l’action retenue (Insert / Update / Delete):

 

string wsdl;

hlp.CreateWSDL(SqlHelper.UpdateOperation.Insert, "MaTableOuMaVue", info, out wsdl);          

 

Comme nous ne sommes pas intéressés par le WSDL mais uniquement par le schéma de l’updategram, nous pouvons à l’aide d’un XMLDocument extraire celui-ci:

 

XmlDocument domWSDL = new XmlDocument();

domWSDL.LoadXml(wsdl);

XmlElement schm = (XmlElement)domWSDL.SelectSingleNode(
                    "//*[local-name()='schema']");

XmlDocument domUpdategram = new XmlDocument();

domUpdategram.AppendChild(domUpdategram.ImportNode(schm, true));

domUpdategram.Save("MaTableOuMaVue.xsd");

 

Il est ainsi possible d’automatiser la génération des schémas pour l’adapteur SQL.

 

Publié le 03/03/2008  par Roch Baduel