Altova MapForce Server 2026 Advanced Edition

L'exemple suivant illustre comment exécuter un fichier d'exécution de mappage (.mfx) à partir d’un code C++. Sous Windows, les fichiers d'exemple sont disponibles à l'emplacement suivant : C:\Program Files\Altova\MapForceServer2026\etc\Examples.

 

Prérequis

Avant d'exécuter le code ci-dessous, assurez-vous que les prérequis suivants sont remplis :

 

MapForce Server est installé et sous licence

MapForce Server est disponible en tant qu'objet serveur COM (normalement, ce processus se déroule automatiquement lors de l'installation de MapForce Server ; pour vérifier si l'enregistrement a réussi, voir À propos de l'interface COM).

 

Exécuter le fichier .mfx

Le code ci-dessous exécute trois fichiers d'exécution de serveur (.mfx). La table ci-dessous recense les fichiers d'entrée attendus par chaque fichier .mfx, et la sortie qui sera créée après l'exécution.

 

Fichier d'exécution (.mfx)

Entrée

Sortie

TokenizeString.mfx

AltovaTools.xml

AltovaToolsFeatures.csv

SimpleTotal.mfx

ipo.xml

String

ClassifyTemperatures.mfx

Temperatures.xml

Temperatures_out.xml

 

Si vous disposez de Altova MapForce, vous pouvez également consulter les mappages originaux à partir desquels les fichiers .mfx ont été compilés pour mieux les comprendre. Ils sont appelés TokenizeString1.mfd, SimpleTotal.mfd et ClassifyTemperatures.mfd, respectivement. Vous trouverez les mappages dans les répertoires suivants : C:\users\<user>\Altova\MapForce2026\MapForceExamples.

 

L'exemple ci-dessous procède comme suit :

 

Il crée une nouvelle instance de Altova.MapForceServer.Server. Il s'agit de l'objet avec lequel vous travaillerez par la suite.

Il définit un répertoire de travail dans lequel l'exécution aura lieu. Les fichiers d'entrée sont censés exister dans ce répertoire si vous vous y référez comme utilisant un chemin relatif. Des fichiers de sortie seront aussi créés dans ce répertoire.

Il exécute le fichier TokenizeString.mfx. Le chemin vers ce fichier est fourni en tant qu'un argument pour la méthode Run (veuillez noter que le chemin est relatif au répertoire de travail qui a été défini précédemment). En cas d'exécution réussie, un fichier .csv représentant la sortie de mappage sera créé dans le répertoire de travail.

Il exécute SimpleTotal.mfx. Le chemin de fichier est également relatif au répertoire de travail. Ce mappage produit une sortie de string, nous appelons donc la méthode GetOutputParameter pour obtenir la sortie de string.

Il exécute ClassifyTemperatures.mfx. Ce mappage attend un paramètre en tant qu'entrée, qui a été fourni avec l'aide de la méthode AddParameter

 

 

// MapForceServerAPI_sample.cpp : Définit le point d'entrée pour l'application console.
//
#include <iostream>
#include "atlbase.h"
 
 
#ifndef _WIN64
// 32-bit MapForce Server
#import "progid:MapForce.Server"
#else
// 64-bit MapForce Server
#import "progid:MapForce_x64.Server"
#endif
 
int _tmain(int argc, _TCHAR* argv[])
{
  CoInitialize( NULL );
 
  try
  {
    // Créer un objet MapForce Server
    MapForceServerLib::IServerPtr pMFS;
    CoCreateInstance( __uuidof( MapForceServerLib::Server ), NULL, CLSCTX_ALL, __uuidof( MapForceServerLib::IServer ), reinterpret_cast< void** >( &pMFS ) );
 
    //Définissez un répertoire de travail - utilisé comme base pour les chemins relatifs (vous devrez peut-être adapter le chemin au dossier d'installation)
    pMFS->WorkingDirectory = "..";   // celui-ci est relatif au répertoire de travail de cette application (le dossier du projet)
 
     // Le chemin par défaut vers l'exécutable MapForce Server est le chemin d'installation (même répertoire que MapForceServer.dll).
     //Si vous avez déplacé les fichiers binaires sur le disque, vous devez définir explicitement le chemin d'accès au fichier .exe.

     // La propriété ServerPath doit être définie avant toutes les autres propriétés, car elle réinitialise le serveur et réinitialise toutes les propriétés.
     // pMFS.ServerPath = "C:\\Program Files (x86)\\Altova\\MapForceServer2026\\bin\\MapForceServer.exe";
     // pMFS.ServerPath = "C:\\Program Files\\Altova\\MapForceServer2026\\bin\\MapForceServer.exe";
 
     //Définissez le fichier de ressources global et la configuration, si votre mappage utilise des ressources globales.
     //pMFS->SetOption( "globalresourcefile", "GlobalResources.xml" ); // "gr" peut être utilisé comme nom abrégé pour "globalresourcefile"
     //pMFS->SetOption( "globalresourceconfig", "Default" ); // "gc" peut être utilisé comme nom abrégé pour "globalresourceconfig"
 
                 // ----------------------------------------------------------------------------------
           // Exemple avec les chemins d'entrée et de sortie stockés dans le fichier MFX
    std::cout << "\nExecuting TokenizeString.mfx..." << std::endl;
    if ( pMFS->Run( "TokenizeString.mfx" ) == VARIANT_TRUE )
        std::cout << "Successfully generated file 'AltovaToolFeatures.csv'." << std::endl;
    else
    {
        // Échec de l'exécution. Peut-être pas d'autorisation d'écriture dans le répertoire de travail ? Run this program as administrator.
        std::cout << pMFS->LastExecutionMessage << std::endl;
    }
 
    // ----------------------------------------------------------------------------------
     // Exemple de création d'une sortie simple afin de pouvoir récupérer le résultat explicitement
    std::cout << "\nExecuting SimpleTotal.mfx..." << std::endl;
    if ( pMFS->Run( "SimpleTotal.mfx" ) )
        std::cout << "Mapping result is: " + pMFS->GetOutputParameter( "total" ) << std::endl;
    else
    {
        // Échec de l'exécution (par exemple, quelqu'un a supprimé le fichier ipo.xml)
        std::cout << pMFS->LastExecutionMessage << std::endl;
    }
 
    // ----------------------------------------------------------------------------------
     // Exemple avec entrée paramétrée
     // La valeur par défaut 'lower = 5' est remplacée par la valeur '10'
     // mfx lit le fichier Temperatures.xml et écrit sa sortie dans Temperatures_out.xml.
    std::cout << "\nExecuting ClassifyTemperatures.mfx with parameter 'lower' set to '10' ..." << std::endl;
    pMFS->AddParameter("lower", "10");
    if ( pMFS->Run( "ClassifyTemperatures.mfx" ) )
        std::cout << "File Temperatures_out.xml has been written successfully." << std::endl;
    else
    {
        // Échec de l'exécution. Peut-être pas d'autorisation d'écriture dans le répertoire de travail ? Exécutez ce programme en tant qu'administrateur.
        std::cout << pMFS->LastExecutionMessage << std::endl;
    }
  }
  catch (_com_error& err )
  {
    BSTR bstrMessage;
    (err).ErrorInfo()->GetDescription( &bstrMessage );
    std::cout << "Exception occurred: " << _com_util::ConvertBSTRToString( bstrMessage ) << std::endl;
  }
 
  CoUninitialize();
 
  return 0;
}

 

© 2020-2026 Altova GmbH