Altova MapForce 2024 Enterprise Edition

L’exemple JScript suivant montre comment utiliser l’API de MapForce pour automatiser les tâches pertinentes aux projets de MapForce. Avant d’exécuter l’exemple, assurez-vous d’éditer la variable strSamplePath pour qu’elle vous dirige vers le dossier de votre installation de MapForce : C:\Users\<username>\Documents\Altova\MapForce2024\MapForceExamples.

 

Afin d’exécuter avec succès toutes les opérations dans cet exemple ci-dessous, vous aurez besoin de l’édition Enterprise de MapForce. Si vous avez l’édition Professional, commentez les lignes qui insèrent le projet WebService.

 

// //////////// variables globaux /////////////////
var objMapForce = null;
var objWshShell = null;
var objFSO = null;
 
// !!! adaptez le chemin suivant à vos besoins. !!!
var strSamplePath = "C:\\Users\\<username>\\Documents\\Altova\\MapForce2024\\MapForceExamples\\";
 
// /////////////////////// Helpers //////////////////////////////
 
function Exit(strErrorText)
{
WScript.Echo(strErrorText);
WScript.Quit(-1);
}
 
function ERROR(strText, objErr)
{
if (objErr != null)
Exit ("ERROR: (" + (objErr.number & 0xffff) + ")" + objErr.description + " - " + strText);
else
Exit ("ERROR: " + strText);
}
 
function CreateGlobalObjects ()
{
// le Shell et FileSystemObject de l’hôte de scripting windows souvent utile
try
{
objWshShell = WScript.CreateObject("WScript.Shell");
objFSO = WScript.CreateObject("Scripting.FileSystemObject");
}
catch(err)
{ Exit("Can't create WScript.Shell object"); }
 
// créer la connexion de MapForce
// s’il y a une instance d’exécution de MapForce (qui n’a jamais eu de connexion) - utilisez-la,
// autrement, nous créons automatiquement une nouvelle instance
try
{
objMapForce = WScript.GetObject ("", "MapForce.Application");
}
catch(err)
{
{ Exit("Can't access or create MapForce.Application"); }
}
}
 
// ----------------------------------------------------------
// imprimer les items d’arborescence du projet et leurs propriétés de manière récursive.
// ----------------------------------------------------------
function PrintProjectTree( objProjectItemIter, strTab )
{
while ( ! objProjectItemIter.atEnd() )
{
// obtenir l’item de projet actuel
objItem = objProjectItemIter.item();
 
try
{
// ----- imprimer les propriétés communes
strGlobalText += strTab + "[" + objItem.Kind + "]" + objItem.Name + "\";
 
// ----- imprimer les propriétés de génération de code, si disponible
try
{
if ( objItem.CodeGenSettings_UseDefault )
strGlobalText += strTab + " Use default code generation settings\";
else
strGlobalText += strTab + " code generation language is " +
objItem.CodeGenSettings_Language +
" output folder is " + objItem.CodeGenSettings_OutputFolder + "\";
}
catch( err ) {}
 
// ----- imprimer les paramètres WSDL, si possible
try
{
strGlobalText += strTab + " WSDL File is " + objItem.WSDLFile +
" Qualified Name is " + objItem.QualifiedName + "\";
}
catch( err ) {}
}
catch( ex )
{ strGlobalText += strTab + "[" + objItem.Kind + "]\" }
 
// ---- recurse
PrintProjectTree( new Enumerator( objItem ), strTab + ' ' );
 
objProjectItemIter.moveNext();
}
}
 
// ----------------------------------------------------------
// Charger l’exemple de projet installé avec MapForce.
// ----------------------------------------------------------
function LoadSampleProject()
{
// fermer le projet ouvert
objProject = objMapForce.ActiveProject;
if ( objProject != null )
objProject.Close();
 
// ouvrir l’exemple de projet et itérer à travers celui-ci.
objProject = objMapForce.OpenProject(strSamplePath + "MapForceExamples.mfp");

// dump properties of all project items
strGlobalText = '';
PrintProjectTree( new Enumerator (objProject), ' ' )
WScript.Echo( strGlobalText );
 
objProject.Close();
}
 
// ----------------------------------------------------------
// Créer un nouveau projet avec quelques dossiers, mappages et un
// projet de service Web.
// ----------------------------------------------------------
function CreateNewProject()
{
try
{
// créer un nouveau projet et spécifier le fichier où le mettre.
objProject = objMapForce.NewProject(strSamplePath + "Sample.mfp");
 
// créer une structure de dossier simple
objProject.CreateFolder( "New Folder 1");
objFolder1 = objProject.Item(1);
objFolder1.CreateFolder( "New Folder 2");
objFolder2 = ( new Enumerator( objFolder1 ) ).item(); // an alternative to Item(0)
 
// ajouter deux différents mappages à la structure de dossier
objFolder1.AddFile( strSamplePath + "DB_Altova_SQLXML.mfd");
objMapForce.Documents.OpenDocument(strSamplePath + "InspectionReport.mfd");
objFolder2.AddActiveFile();
 
// écraser les paramètres de génération de code pour ce dossier
objFolder2.CodeGenSettings_UseDefault = false;
objFolder2.CodeGenSettings_OutputFolder = strSamplePath + "SampleOutput"
objFolder2.CodeGenSettings_Language = 1; //C++
 
// insérer le projet de service Web basé sur un fichier wsdl depuis les exemples installés
objProject.InsertWebService( strSamplePath + "TimeService/TimeService.wsdl",
"{http://www.Nanonull.com/TimeService/}TimeService",
"TimeServiceSoap",
true );
objProject.Save();
if ( ! objProject.Saved )
WScript.Echo("problem occurred when saving project");
 
// vider l’arborescence de projet
strGlobalText = '';
PrintProjectTree( new Enumerator (objProject), ' ' )
WScript.Echo( strGlobalText );
}
catch (err)
{ ERROR("while creating new project", err ); }
}
 
// ----------------------------------------------------------
// Générer le code pour une sous-arborescence de projet. Combiner le code par défaut
// paramètres de génération et paramètres surchargés.
// ----------------------------------------------------------
function GenerateCodeForNewProject()
{
// puisque le projet de service Web contient uniquement des mappages initiaux,
// nous ne générons du code que pour notre dossier client.
// les paramètres de génération de code du projet sont utilisés pour le Dossier1,
// tandis que le Dossier2 fournit les valeurs écrasées.
objFolder = objProject.Item(1);
objFolder1.GenerateCode();
}
 
// /////////////////////// PRINCIPAL //////////////////////////////
 
CreateGlobalObjects();
objMapForce.Visible = true;
 
LoadSampleProject();
CreateNewProject();
GenerateCodeForNewProject();
 
// supprimer pour arrêter l’application quand le script se termine
// objMapForce.Visible = false;

© 2018-2024 Altova GmbH