# Exemple - Migration d'une base de données de documents

A ces fins, une base de données d'environ 1400 entrées doit être migrée dans ELO. Dans cette base de données, se trouvent les métadonnées et les documents. Du côté d'ELO, un classeur doit être créé à partir de chaque entrée des métadonnées. Ce classeur contient alors le document comme sous-entrée. Pour la migration, ELOas a été sélectionné comme outil.

Etant donné que ELOas ne peut pas créer de documents actuellement, une entrée dummy doit avoir été traitée pour chaque classeur dans une étape de pré-traitement. Heureusement, les entrées de la base de données ont un numéro courant commençant par 1, jusqu'à 1440. Il est très simple de créer les classeurs Dummy par le biais d'un script vbs. Tous les classeurs sont créés dans une armoire avec l'ID d'objet 274312.

Set ELO = CreateObject("ELO.professional")
Elo.CheckUpdate 0
for i=1 to 1440
    call Elo.PrepareObjectEx( 0, 4, 337 )
    Elo.ObjShort="TrackId " & i
    Elo.ObjIndex="#274312"
    call Elo.SetObjAttrib(2, i)
    call Elo.SetObjAttrib(0, "GilleM")
    call Elo.SetObjAttrib(3, "Amélioration du produit")
    Elo.UpdateObject
next
Elo.CheckUpdate 1

Ensuite, le ELOas est mis en place. Les données sont prises en charge depuis une base de données SQL.

"select responsable, e-mail, objet, LTrim(BunFeld1) BunFeld1,
        nom de la classe, ordre
                 de [InetHelpDesk].[dbo].tblordres a,
                    [InetHelpDesk].[dbo].tblBuendel b,
                    [InetHelpDesk].[dbo].tblclasse c,
                    [InetHelpDesk].[dbo].tblUser d
                        where a.BunID = b.BunId
                                and a.KlaID = c.KlaID
                                and a.UsrID = d.UsrID
                                and AufID = " + ETS_COUNT

Base de données SQL

Illustr. : base de données SQL

Il s'agit d'un statement SELECT, mais qui ne propose rien de spécial à part cela. Un point important: dans la liste select, il existe une colonne LTrim(BunFeld1) BunFeld1. Dans le champ de la base de données BunFeld1, les données se trouvent avec des guillemets qui ne sont pas souhaités. Ceux-ci sont supprimés avec LTrim. Mais alors la colonne n'aurait plus de nom, voilà pourquoi le nom de la colonne est à nouveau indiqué comme étant BunFeld1. Cette technique doit toujours être appliquée si l'on veut travailler avec des valeurs calculées dans la liste de sélection.

Le ruleset complet ressemble à ceci :

<ruleset>
    <base>
        <name>ImportTracker</name>
        <search>
            <name>"ETS_COUNT"</name>
            <value>"*"</value>
            <mask>337</mask>
            <max>200</max>
        </search>
        <interval>1H</interval>
    </base>
<rule>
    <name>Rule1</name>
    <condition></condition>
    <script>
        /* ici sont enregistrées les données au sujet du classeur actuel
           depuis la base de données */
        var item = db.getLine(1, "select utilisateur, e-mail, objet,
                LTrim(BunFeld1) BunFeld1, Nom de la classe, offre
                        from [InetHelpDesk].[dbo].tblAuftraege a,
                             [InetHelpDesk].[dbo].tblBuendel b,
                             [InetHelpDesk].[dbo].tblKlasse c,
                             [InetHelpDesk].[dbo].tblUser d
                                where a.BunID = b.BunId
                                        and a.KlaID = c.KlaID
                                        and a.UsrID = d.UsrID
                                        and AufID = " + ETS_COUNT);
        /* ETS_COUNT contient le numéro record,
           il est vidé une fois le traitement effectué.
        ETS_COUNT = "";
           /* Le champ de la désignation est rempli depuis la base de données, attention à la longueur max. du champ! */
        NAME = item.l'objet;
        if (NAME == "") { NAME = "unknown"; }
        if (NAME.length() > 127) { NAME = NAME.substring(0, 126); }
        // l'initiateur est rempli depuis la base de données.
        ETS_MAIL = item.Email;
        /* Dans la base de données, le champ thème était rempli avec d'autres mots-clés que dans l'archive ELO
           C'est pourquoi il existe un tableau de traduction.
           ELO travaille avec un index de colonnes. */
        var thème = item.BunFeld1;
        if (thème == "Administration, Installation, Reporting") {
                thème = "Administration¶Installation¶Reporting"; }
        if (thème == "Afficher, trier, modifier, envoyer, gérer, rechercher") {
                thème = "Traitement de document¶Visionneuse¶Traitement de la structure¶Recherche"; }
        if (thème == "Afficher, modifier, trier, envoyer, gérer, rechercher") {
                thème = "Traitement de document¶Visionneuse¶Traitement de la structure¶Recherche"; }
        if (thème == "Interface utilisateur, design, menus, navigation") {
                thème = "Usability¶Interface"; }
        if (thème == "Notes, tampons") {
                thème = "Annotations"; }
        if (thème == "Office / Explorer Integration") {
                thème = "Office Integration¶OS Integration"; }
        if (thème == "Disponibilité hors ligne") {
                thème = "hors ligne"; }
        if (thème == "Liens, références, pièces-jointes") {
                thème = "Liens¶Références"; }
        if (thème == "Numériser, boîtes de réception, convertir, imprimer") {
                thème = "Numériser¶Boîte de réception¶Convertir¶Imprimer"; }
        if (thème == "Sécurité, authentification, cryptage, droits utilisateur") {
                thème = "Droits utilisateurs"; }
        if (thème == "Listes de mots-clés, métadonnées, masques de dépôt, versioning") {
                thème = "Métadonnées¶Dépôt de document"; }
        if (thème == "Processus, Tâches") {
                    thème = "Processus¶Tâches"; }
        if (thème == "Interfaces, scripts") {
                thème = "Scripting¶Interfaces"; }
        ETS_THEMA = thème;
        ETS_USER = "Gestion du produit";
        ETS_STATUS_INT = item.KlassenName;
        EM_WRITE_CHANGED = true;
        L'information de la base de données est entrée maintenant. Le document manque.
        /* Celui-ci est créé sous forme d'un fichier de commande XML pour ELO XML Importer. Tout d'abord, le fichier HTML est écrit :*/
        var id = Sord.getId();
        var dataFile = new File("d:\\temp\\trk\\" + id + ".htm");
        Utils.stringToFile(item.ordre, dataFile, "ISO-8859-15");
        /* puis le flux de données XML est créé.
           Etant donné que l'entrée des métadonnées est liée
           au classeur, seules les métadonnées rudimentaires sont disponibles. */
        var xmlDesc = NAME.replace("\"", "'").
                           replace("&amp;", "&amp;amp;").
                           replace("<", "&amp;lt;").
                           replace(">", "&amp;gt;");
        var xmlFile = new File("d:\\temp\\trk\\" + id + ".xml");
        var xmlText = "<?xml version=\"1.0\" ?><eloobjlist
                       ver=\"1.0\"><obj><desc value=\"";
        xmlText = xmlText + xmlDesc;
        xmlText = xmlText +
                  "\"/><type value=\"0\"/><destlist><destination
                          type=\"1\" value=\"#";
        xmlText = xmlText + id;
        xmlText = xmlText + "\"/></destlist><docfile name=\"";
        xmlText = xmlText + id;
        xmlText = xmlText + ".htm\"/></obj></eloobjlist>";
        // En dernier, est écrit le fichier XML.
                           replace(">", "&amp;gt;");
        var xmlFile = new File("d:\\temp\\trk\\" + id + ".xml");
        var xmlText = "<?xml version=\"1.0\" ?><eloobjlist
                       ver=\"1.0\"><obj><desc value=\"";
        xmlText = xmlText + xmlDesc;
        xmlText = xmlText +
                  "\"/><type value=\"0\"/><destlist><destination
                          type=\"1\" value=\"#";
        xmlText = xmlText + id;
        xmlText = xmlText + "\"/></destlist><docfile name=\"";
        xmlText = xmlText + id;
        xmlText = xmlText + ".htm\"/></obj></eloobjlist>";
        // le fichier XML est créé en dernier.
        Utils.stringToFile(xmlText, xmlFile, "UTF-8");
    </script>
</rule>
<rule>
    <name>Global Error Rule</name>
    <condition>OnError</condition>
    <script></script>
</rule>
</ruleset>

Une fois que ELOas a complété l'entrée des métadonnées depuis la base de données et qu'il a créé les fichiers document XML, l'importateur ELO XML entre en jeu. Il importe les fichiers HTML dans le classeur correspondant. Le processus de migration est terminé. Ce projet prend environ 4 heures.

Dernière mise à jour: 26 septembre 2023 à 07:46