Mapout-M-Storage - Script d'export/en
Différence entre versions
(Page créée avec « '''1 - Uncompress the package and copy the folder "MStorageExport" to Apache's "MapWebFiles".''' ») |
(Page créée avec « Example: <code>C:\Program files\Apache Software Foundation\Apache2.2\htdocs\MapWebFiles\MStorageExport</code> ») |
||
Ligne 33 : | Ligne 33 : | ||
'''1 - Uncompress the package and copy the folder "MStorageExport" to Apache's "MapWebFiles".''' | '''1 - Uncompress the package and copy the folder "MStorageExport" to Apache's "MapWebFiles".''' | ||
− | + | Example: <code>C:\Program files\Apache Software Foundation\Apache2.2\htdocs\MapWebFiles\MStorageExport</code> | |
Version du 5 décembre 2019 à 10:15
Sommaire
Introduction
This page explains how to use the script that lets you mass export documents stored in MapOut / M-Storage.
It is a PHP script run on the command line that includes various options for generating PDF files with or without XML index files.
The script processes the documents found in only one folder, which means you need to run the script for each folder where you want to extract the content.
Requirements
The script runs on the Windows system where M-Storage is installed.
As the extract process is based on the information found in Mapweb / M-Storage Web's MySQL database, M-Storage Web must be installed beforehand and you will need to rebuild the database and index of each folder you want to extract the content from. To do this, please refer to the installation and user guide for Mapweb / M-Storage Web.
Minimum versions supported:
- OS: Windows 2008, 2008r2, 2012, 2012r2, 7, 8, 8.1, 10
- As the script is written in php7, it won't run on Windows Server 2003 and older
- M-Storage 7.2.0.37383 minimum.
- To avoid updating M-Storage, a "M-Storage.exe" executable file is provided with the script package (in the "bin" folder). Make sure you place it in the folder where M-Storage is installed. However, if the existing version is the older "Mapout.exe", you will need to fully upgrade to M-Storage.
- M-Storage Web or MapWeb: 7.1 or 7.2
MapWeb / M-Storage Web requires:
- Apache 2.2 or 2.4
- MySQL version 5.1 or higher
Installation Steps
The script is provided as a package including php modules and php 7.1.8 for Windows.
1 - Uncompress the package and copy the folder "MStorageExport" to Apache's "MapWebFiles".
Example: C:\Program files\Apache Software Foundation\Apache2.2\htdocs\MapWebFiles\MStorageExport
2- Mettre à jour la version Mapout/M-Storage en 7.2.0.37383 minimum OU copier l'exécutable M-Storage.exe dans le dossier d'installation de M-Storage.
Il est disponible dans le dossier "bin" du package.
Attention, si M-Storage est toujours utilisé pour prendre en charge de nouveaux documents, il ne faut pas remplacer la version M-Storage installée, mais plutôt procéder à une duplication d'environnement complet sur un autre serveur dédié à l'export des archives existantes.
Utilisation
1 - Avant de lancer la première extraction de documents, il est nécessaire de récupérer les informations suivantes permettant de construire la requête
- L'emplacement du programme M-storage.exe fournie avec le package.
- L'emplacement du dossier dans lequel se trouve les archives à exporter.
2 - Ouvrir une invite de commande (cmd) en tant qu'administrateur et se positionner sur le dossier MStorageExport :
Exemple :
cd "C:\Program files\Apache Software Foundation\Apache2.2\htdocs\MapWebFiles\MStorageExport"
Toutes les commandes suivantes devront impérativement être saisies à partir de cet emplacement !!!
3 - Pour obtenir de l'aide en ligne, saisir la commande suivante
php718\php help.php
4 - Commande de base de l'extraction
php718\php export.php
Paramètres obligatoires
______Paramètre______ | Commentaire |
---|---|
--archive= | Emplacement du dossier d'archives à exporter (exemple : D:\Archives\Factures ). Il s'agit d'un dossier contenant divers fichiers dont Spool.cpr et Passwd.txt. Le nom du dossier NE DOIT PAS se terminer pas un anti-slash.
|
--dest= | Destination des documents à extraire. Il s'agit du chemin complet du fichier PDF à créer, sans l'extension. Si les dossiers spécifiés n'existent pas, ils seront créés automatiquement. Le chemin peut contenir des valeurs de méta données (entre chevrons <xxxx> ) et d'index (entre doubles crochets [[c_xxxxx]]) et avec le préfixe "c_". Ne pas y mettre l'extension.
Facultatif si --action="listCriteria" |
--pgm= | Chemin complet du programme M-Storage.exe ou Mapout.exe (selon la version installée) |
--action= | Action du script :
|
Exemple de commande simple :
php718\php export.php --archive="D:\Archives\Factures" --dest="D:\Export Archives\<NomUser>\[[c_numfac]]_[[c_numcli]]" --pgm="C:\Mapping\M-Storage\m-storage.exe" --action="getCommands"
Paramètres facultatifs
______Paramètre______ | Commentaire |
---|---|
--indexfile | Si présent, chaque fichier PDF sera accompagné d'un fichier d'index XML portant le même nom |
--xsl= | Chemin d'un fichier xsl permettant de personnaliser le schéma du fichier xml afin de le rendre compatible avec un outil de GED tiers. La présence de ce paramètre active la transformation XSLT. Exemple : --xsl="C:\Mapping\Storage_Alfresco.xsl"
|
--rupt= | Index de rupture, permettant de générer plusieurs PDF à partir d'un même spool d'impression. Par exemple, si les archives contiennent des spools d'impression multi-factures, il est possible, en spécifiant l'index du numéro de facture dans le paramètre --rupt, de générer un pdf par facture et non un pdf pour le spool complet. Il est possible d'avoir plusieurs ocurences de ce paramètre pour que la rupture se fasse sur plusieurs index différents. Exemple : --rupt="c_numfac"
|
--nextpage | Lors de l'utilisation d'un ou plusieurs index de ruptures, il est possible que certaines pages ne comportent pas de valeur pour ces index, notamment parce que l'un des index en question n'est présent que sur la première page de chaque document. Dans ce cas, si le paramètre --nextpage est présent, les pages suivantes ne comportant pas de valeur seront incluses dans le document PDF généré. |
--log= | Chemin complet d'un fichier de log. A défaut, la totalité se la log se fera sur la sortie standard. |
--filterindex_egal=
--filterindex_contains= --filterindex_begin=
--filtermeta_contains= --filtermeta_begin= |
Divers paramètres de filtres, sur les méta données et sur les index sont possible
Liste des différents types de filtres
Exemple : La liste des index disponibles dépend de chaque archive. Cette liste est disponible via la table "criteres" de la base MySql. Tous les index doivent être spécifiés avec leur préfixe "c_". |
Liste des méta données
La liste des méta données est quant à elle figée. Il s'agit des colonnes de la table "spools" de la base MySQL :
Attention : sensibles à la casse.
Il est courant que certaines de ces méta données soient détournées pour contenir des données "métier", surtout pour les archives issues de Mapping sur les plateformes Windows et Unix/Linux.
- NomSpool : SPOOLNAME au format "Saaaammjjhhmmssxxxxxxxxx". Cette donnée étant indexée, elle convient très bien à une extraction par période, par exemple avec le paramètre --filtermeta_begin="NomSpool=S201706" pour extraire les documents de juin 2017.
- DateDuSpoolFichier : DATE au format "aaaammjj"
- NomTravail : JOBNAME
- NomUser : USERNAME
- DescriptifPC
- NumeroJob
- FichierSpool
- NumeroSpool
- OUTQ : OUTQ
- BiliothequeOUTQ
- Reference : USERDATA
- Format : FORMAT MapDraw / M-Designer
- ProgrammeEdition : PROG
- BibProgrammeEdition
- Critere1
- Critere2
- Critere3
- Critere4
Exemple de commande avancée :
Génération des documents PDF issus de l'archive D:\Archives\012018 pour lesquels le format MapDraw/M-Designer est "FACTURE", le nom du client "EXEMPLE" pour la période janvier 2018. Chaque PDF contiendra les données d'un seul client (rupture par c_numcli) et un fichier d'index non personnalisé accompagnera chaque fichier PDF. Le plan de classement des fichiers PDF générés sera dynamique et comportera la date, le nom du client et l'identifiant du spool d'impression.
php718\php export.php --action="generate" --archive="D:\Archives\012018" --filtermeta_egal="Format=FACTURE" --filterindex_contains="c_nomcli=EXEMPLE" --filtermeta_begin="NomSpool=201801" --rupt="c_numcli" --nextpage --indexfile --dest="D:\Export\[[c_date]]\[[c_nomcli]]_<NomSpool>" --pgm="D:\Mapping\M-storage\M-storage.exe"
Exemple de XML généré sans transformation XSL
<?xml version="1.0" encoding="UTF-8"?>
<Indexes name="Document_2503576">
<Meta name="NomSpool">S2019052127391744561449</Meta>
<Meta name="DateDuSpoolFichier">20190521</Meta>
<Meta name="NomTravail">ED_BCHARG</Meta>
<Meta name="NomUser">ADMIN2</Meta>
<Meta name="NumeroJob">157478</Meta>
<Meta name="FichierSpool">BR60400C</Meta>
<Meta name="NumeroSpool">4 </Meta>
<Meta name="OutQ">RICOH1</Meta>
<Meta name="BibliothequeOutQ">QUSRSYS </Meta>
<Meta name="Reference">BR60400C</Meta>
<Meta name="Format"/>
<Meta name="ProgrammeEdition">BR60400C</Meta>
<Meta name="BibProgrammeEdition">MAP400</Meta>
<Meta name="DescriptifPC">Bon Livraison Mail</Meta>
<Meta name="Critere1"/>
<Meta name="Critere2"/>
<Meta name="Critere3"/>
<Meta name="Critere4"/>
<Index name="c_body">
<Value page="1">c:\Vente_AvisExpedition_FR.txt</Value>
</Index>
<Index name="c_client">
<Value page="1">185830</Value>
</Index>
<Index name="c_dosarc">
<Value page="1">Bon Livraison BONDUES 2019</Value>
</Index>
<Index name="c_mois">
<Value page="1">05</Value>
</Index>
<Index name="c_nomclient">
<Value page="1">MY COMPAGNY - CUISINES & BAINS</Value>
</Index>
<Index name="c_numbl">
<Value page="1">6547951</Value>
</Index>
</Indexes>
Exemples de XSL
Conversion XSL pour Alfresco
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field" exclude-result-prefixes="xsl xs"/>
<xsl:template match="/">
<xsl:text disable-output-escaping='yes'><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
</xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Indexes">
<properties>
<!-- Activation du modele mp: -->
<entry key="type">cm:content</entry>
<entry key="aspects"></entry>
<xsl:apply-templates/>
</properties>
</xsl:template>
<xsl:template match="Meta">
<entry>
<xsl:attribute name="key">mp:<xsl:value-of select="translate(@name,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
</xsl:attribute><xsl:value-of select="."/>
</entry>
</xsl:template>
<xsl:template match="Index">
<entry>
<xsl:attribute name="key">mp:<xsl:value-of select="translate(@name,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
</xsl:attribute><xsl:value-of select="Value"/>
</entry>
</xsl:template>
</xsl:stylesheet>