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\MapForce2025\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\\MapForce2025\\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 + "\n"; // ----- 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\n"; else strGlobalText += strTab + " code generation language is " + objItem.CodeGenSettings_Language + " output folder is " + objItem.CodeGenSettings_OutputFolder + "\n"; } catch( err ) {} // ----- imprimer les paramètres WSDL, si possible try { strGlobalText += strTab + " WSDL File is " + objItem.WSDLFile + " Qualified Name is " + objItem.QualifiedName + "\n"; } catch( err ) {} } catch( ex ) { strGlobalText += strTab + "[" + objItem.Kind + "]\n" } // ---- 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; |