Aller à : navigation, rechercher

Maarch Courrier/latest/fr/Manuel administrateur/Fonctionnalités/Gestion du mailCapture

Maarch Capture

Maarch Capture est un outil générique de traitement et d'importation.

Mail capture est un module de Maarch Capture permettant de récupérer les mails d'un dossier de votre boite email et de les importer dans l'application Maarch.

Il existe d'autres modules, en particulier un processus d'import de documents séparés par des QRCodes.

Pour récupérer le module, télécharger le lien ci-dessous dans le module de votre custom:

./maarch_courrier/custom/maarch/modules/
svn checkout http://svn.maarch.org/custom/trunk/MaarchCapture/
git clone -b 1.2 https://labs.maarch.org/maarch/MaarchCapture/ .

Arborescence du module

    /MaarchCapture
        /class
            /Batch.php
            /Capture.php
            /Workflow.php
        /config
            /Capture.xml                        <!-- fichier à modifier -->
            /Capture.xml.example
        /files
            /in
            /logs
            /out
        /modules
            /MaarchWSClient
                /MaarchWSClient.xml             <!-- fichier à modifier -->
                /MaarchWSClient.xml.default
                /MaarchWSClient.php
            /MailCapture
                /scripts
                /MailCapture.php
                /MailCapture.xml                <!-- fichier à modifier -->
                ...
            ...
        /tools
        MaarchCapture.php
        MAIL.bat                               <!-- fichier à modifier sous windows -->
        MAIL.sh                                <!-- fichier à modifier sous windows -->

Capture des courriels

Pré-requis

  • Adresse email sécurisée (Identifiant et mot de passe)
  • Protocole IMAP actif sur le serveur de mail (Le protocole n'est pas activé sur les serveurs exchange pas défaut)

Configuration du module

Il y a quatre fichiers à configurer pour le fonctionnement de l'aspirateur de mail :

  • MailCapture.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MailCapture/MailCapture.xml
  • Capture.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/config/Capture.xml
  • MaarchWSClient.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml
  • MaarchWSClient.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml
  • MAIL.bat situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/MAIL.bat pour une application sous Windows
  • MAIL.sh situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/MAIL.sh pour une application sous GNU/Linux

Configuration de la capture du mail

Éditez le fichier MailCapture.xml se trouvant dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MailCapture/
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <MailCapture>
 3   <formatters>
 4     <formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
 5     <!-- <formatter name="mail_address" script="scripts/formatters.php" func="format_mail_address"/> -->
 6   </formatters>
 7   <accounts>
 8     <account name="mail_capture" >                                           
 9  <!-- nom à modifier -->
10       <mailbox>{imap.gmail.com:993/imap/ssl/novalidate-cert}</mailbox>        
11 <!-- valeur à modifier, il faut indiquer après le "}" le nom du dossier à aspirer -->
12       <username>adresse email à aspirer</username>                            
13 <!-- adresse mail à aspirer -->
14       <password>mot de passe de l'adresse mail à aspirer</password>           
15 <!-- password mail à aspirer -->
16     </account>
17   </accounts>
18   <!-- header info: 
19       date, 
20       subject,
21       { toaddress | fromaddress | ccaddress | bccaddress }
22       { to | cc | bcc | from |sender | reply_to }  +  [row]  + subinfo { personal | mailbox | host }, 
23       Recent, Unseen, Flagged, Answered, Deleted, Draft, Msgno, message_id -->
24   <messagerules>
25     <!-- info   : header info -->
26     <!-- op     : =, !=, >, <, >=, <=, contains, in -->
27     <!-- action : delete, ignore, move (folder:=junkmail)-->
28     <messagerule name="SPM_RULE_2" info="fromaddress" action="move">true</messagerule>
29   </messagerules>
30   <messageoutputs >
31     <!-- info   : header info -->
32     <messageoutput name="doc_date" info="date" formatter="date"/>
33     <messageoutput name="type_id">1</messageoutput>
34     <messageoutput name="subject" info="subject" />
35     <!--<messageoutput name="fromaddress" info="fromaddress" formatter="mail_address"/>-->
36 	<messageoutput name="fromaddress" info="fromaddress"/>
37     <messageoutput name="frompersonal" info="from[0]/personal" />
38     <messageoutput name="toaddress" info="toaddress" />
39     <messageoutput name="message_id" info="message_id" />
40 	<messageoutput name="ccaddress" info="ccaddress" />
41   </messageoutputs>
42   <!-- mime part info: 
43     type (mime type 0->7)
44     encoding (0->5)
45     subtype (PDF)
46     bytes
47     disposition (BODY | ATTACHMENT | RELATED)
48     filename (xxx.pdf)
49     name (xxx.pdf)
50     mimetype (application/pdf)
51     format (pdf)
52       --> 
53   <attachmentrules>
54     <!-- info   : mime part info -->
55     <!-- op     : =, !=, >, <, >=, <=, contains, in -->
56     <attachmentrule name="images" info="format" op="in">gif jpg jpeg png</attachmentrule>
57     <attachmentrule name="application" info="format" op="in">pdf msword vnd.oasis.opendocument.text octet-stream eml</attachmentrule>
58   </attachmentrules>
59   <attachmentoutputs mode="attachment"><!-- mode attachment of mail document / new document with a copy of metadata --> 
60     <!-- info   : mime part info -->
61     <attachmentoutput name="filename" info="dparameters[filename]"/>
62     <attachmentoutput name="description" info="description"/>
63     <!--attachmentoutput name="mimetype" info="mimetype"/>
64     <attachmentoutput name="size" info="bytes"/-->
65   </attachmentoutputs>
66 </MailCapture>
Information à renseigner dans le mailbox

Pour gmail: Adresse du serveur : imap.gmail.com:993/imap/ssl/novalidate-cert Port : 993 Connexion chiffrée : SSL

Pour hotmail: Adresse du serveur : imap-mail.outlook.com Port : 993 Connexion chiffrée : SSL


Configuration de la capture

La capture doit être configurée.

Aller à /var/www/html/maarch_courrier/custom/maarch/modules/MaarchCapture/config/ et éditez le fichier capture.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <capture>
 3   <modules>
 4     <module name="FileImport" src="modules/FileImport/FileImport.php" type="class" />
 5     <module name="PDFExtractor" src="modules/PDFExtractor/PDFExtractor.php" type="class"/>
 6     <module name="PDFSpliter" src="modules/PDFSpliter/PDFSpliter.php" type="class"/>
 7     <module name="Reader" src="modules/Reader/Reader.php" type="class"/>
 8     <module name="Export" src="modules/Export/Export.php" type="class"/>
 9     <module name="PDFAnalyzer" src="modules/PDFAnalyzer/PDFAnalyzer.php" type="class"/>
10     <module name="HTMLAnalyzer" src="modules/HTMLAnalyzer/HTMLAnalyzer.php" type="class"/>
11     <module name="MaarchWSClient" src="modules/MaarchWSClient/MaarchWSClient.php" type="class"/>
12     <module name="MailCapture" src="modules/MailCapture/MailCapture.php" type="class"/>
13     <module name="TesseractOCR" src="modules/TesseractOCR/TesseractOCR.php" type="class"/>
14   </modules>
15 	<batches>
16     <batch name='MAIL' directory='C:\xampp\htdocs\MaarchCapture\files'>                                      
17 <!--Chemin à modifier -->
18       <workflow name="MAIL" debug="true" logMode="Maarch" 
19                                  maarchLogParam="/var/www/html/maarch/apps/maarch_entreprise/xml/log4php.xml"
20                                   maarchLoggerName="loggerTechnique">     
21 <!-- vérifier l'adresse -->
22         <step name="CaptureMails" module='MailCapture' function="CaptureMails">
23 	  <input name="account">mail_capture</input>                                                         
24 <!-- nom que vous avez ajouté dans le fichier de MailCapture.xm -->
25           <input name="Action">none</input>                                                                  
26 <!-- Action à définir, sois none, soit move pour déplacer sois delete pour effacer -->
27           <input name="configFile">MailCapture.xml</input>                                                   
28 <!-- ligne à ajouter si elle n'y ai pas -->
29           <input name="folder">imported</input>                                                              
30 <!-- vérifier si la ligne existe! Dossier ou seront deplacés les mails une fois qu'ils seront importés -->
31 				</step>
32         <!--step name="ExportDocuments" module='Export' function="ExportXML">
33           <input name="ContentPath">/Batch/Documents/Document</input>
34 					<input name="ExportDirectory">C:\xampp\htdocs\MaarchCapture\files\out</input>
35           <input name="IncludeAncestors">0</input>
36           <input name="FileName" />
37 				</step>
38         <step name="ExportAttachments" module='Export' function="ExportXML">
39           <input name="ContentPath">/Batch/Documents/Document/Attachments/Attchament</input>
40 					<input name="ExportDirectory">C:\xampp\htdocs\MaarchCapture\files\out</input>
41           <input name="IncludeAncestors">1</input>
42           <input name="FileName" />
43 				</step-->
44         <step name="SendToMaarch" module='MaarchWSClient' function="processBatch">
45 					<input name="WSDL">maarch_entreprise</input>
46           <input name="Process">MAIL</input>
47 				</step>
48       </workflow>
49 		</batch>
50 	</batches>
51 </capture>

Configuration du WebService d'injection

Il faut paramétrer le web-service pour lui indiquer dans quelle application les courriels doivent être importés et également quelles tables doivent être remplies.

Ce fichier se nomme MaarchWSClient.xml et se trouve dans /var/www/html/maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/

Vous devez obtenir :
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <MaarchWSClient>
 3 	<WSDL name="maarch_entreprise" uri="http://127.0.0.1/mep14/ws_server.php?WSDL" cacheUse="0" SSL="false" >        
 4 <!-- chemin à modifier -->            
 5 		<proxy>
 6 			<user>superadmin</user>                                                                          
 7 <!-- nom à modifier --> 
 8 			<pass>superadmin</pass>                                                                          
 9 <!-- mdp à modifier --> 
10 			<timeout>600</timeout>
11 		</proxy>
12 	</WSDL>
13   <process name="MAIL" >
14 		<loop xpath="/Batch/Documents/Document">
15 			<call name="storeResource">
16 				<argument name="encodedContent" eval="base64_encode(file_get_contents($Element->path))" />
17 				<argument name="data">
18 					<column>subject</column>
19 					<value metadata="subject" />
20 					<type>string</type>
21 				</argument>
22 				<argument name="data">
23 					<column>doc_date</column>
24 					<value metadata="doc_date" />
25 					<type>date</type>
26 				</argument>
27 				<argument name="data">
28 					<column>type_id</column>
29 					<value>10</value>                                                                               
30 <!-- id du type à vérifier (il faut qu'il existe) --> 
31 					<type>integer</type>
32 				</argument>
33 				<argument name="collId">letterbox_coll</argument>
34 				<argument name="table">res_letterbox</argument>
35 				<argument name="format" attribute="extension"/>
36 				<argument name="status">MAIL</argument>                                                                          
37 <!-- Statut à vérifier --> 
38 				<return>
39 					<returnCode />
40 					<resId metadata="resId"/>
41 					<error />
42 				</return>
43 			</call>
44 			<loop xpath="Attachments/Attachment">
45 				<call name="storeResource">
46 					<argument name="encodedContent" eval="base64_encode(file_get_contents($Element->path))" />
47 					<argument name="data">
48 						<column>title</column>
49 						<value metadata="filename" />
50 						<type>string</type>
51 					</argument>
52 					<argument name="data">
53 						<column>res_id_master</column>
54 						<value xvalue="ancestor::Document/Metadata/resId" />
55 						<type>integer</type>
56 					</argument>
57 					<argument name="data">
58 						<column>coll_id</column>
59 						<value>letterbox_coll</value>
60 						<type>string</type>
61 					</argument>
62 					<argument name="collId">letterbox_coll</argument>
63 					<argument name="table">res_attachments</argument>
64 					<argument name="format" attribute="extension"/>
65 					<argument name="status">MAIL</argument>                                                                          
66 <!-- Statut à vérifier --> 
67 					<return>
68 						<returnCode />
69 						<resId metadata="resId"/>
70 						<error />
71 					</return>
72 				</call>
73 			</loop>
74 		</loop>
75 	</process>
76 </MaarchWSClient>

Lancement de l'exécution

Un shell permet de lancer l'aspirateur de mail et d'envoyer les mails dans l'application Maarch.

Sous GNU/Linux, éditez le fichier MAIL.sh  :
#!/bin/sh

cd /produit/maarch/maarch_scripts/maarch_capture/
php MaarchCapture.php init -BatchName CAPTURE_MAIL_1

Assigner les mails en fonction du service

L'aspirateur de mail peut être utilisé pour aspirer les mails et les déplacer directement dans la corbeille des mails à qualifier en fonction du service.

C'est à dire qu'en fonction de l'adresse mail de l'utilisateur, on peut retrouver son service primaire et permettre aux mêmes utilisateurs du service de visualiser les mails aspirés dans l'application maarch.

Pour ce faire, il faut activer la balise formatter name="address" de MaarchCapture/modules/MailCapture/MailCapture.xml
<?xml version="1.0" encoding="UTF-8"?>
 <MailCapture>
  <formatters>
   <formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
   <formatter name="address" script="scripts/formatters.php" func="format_mail_address"/>
  </formatters>
 <accounts>
L'activation de cette balise va permettre d'utiliser la fonction format_mail_address du fichier formatters.php et ainsi supprimer les éléments inutiles se trouvant avant et après l'adresse mail. Ensuite, dans le même fichier, il faut activer
<messageoutputs >
     
   <messageoutput name="doc_date" info="date" formatter="date"/>
   <messageoutput name="type_id">1</messageoutput>  
   <messageoutput name="subject" info="subject" />
   <messageoutput name="fromaddress" info="fromaddress" formatter="address"/>
     
   <messageoutput name="frompersonal" info="from[0]/personal" />
   <messageoutput name="toaddress" info="toaddress" />
   <messageoutput name="message_id" info="message_id" />
   <messageoutput name="ccaddress" info="ccaddress" />
 </messageoutputs>
Dans le fichier MaarchWSClient.xml, il faut bien vérifier si il existe bien les balises <argument> pour stocker l'adresse mail (dans MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml)
<argument name="data">
  <column>custom_t10</column>
  <value xvalue="./Metadata/fromaddress" />
  <type>string</type>
</argument>

Cet argument permet de stocker la valeur dans le champ custom_t10.

Pour l'adresse mail, il faut bien mettre custom_t10 pour la colonne car lors du lancement du webservice, on fait appel à une fonction nommé preparestorage qui va regarder la colonne custom_t10 de res_letterbox pour récupérer le service.

Quand le service est récupéré, la colonne destination est renseignée pour le courrier aspiré.

Vous devez paramétrer votre corbeille de mail à qualifier. Dans l'application, allez dans l'administration des corbeilles et paramétrez la clause de la corbeille avec :
status='MAQUAL' and (dest_user = @user or lower(doc_custom_t10) = lower(@email) or destination in (@my_entities))

Numérisation de masse

Ce chapitre traite de l'importation de plusieurs documents séparés par des QRCodes au sein d'un unique fichier PDF.

Cela permet de faire du scan de masse, y compris avec des scanners à priori non prévus à cet effet (Ex: Fujitsu ScanSnap), ou avec des photocopieurs multifonction (MFP).

Maarch propose alors tous les outils pour effectuer la séparation des documents coté serveur, sans droits d'utilisation.

Il s'agit ici d'une solution rapide et très économique pour effectuer de la numérisation de masse.

Les limites de la solution sont les suivantes :

  • Pas de prise en charge de l'OCR : L'OCR devra être réalisé en amont par le scanner ou le MFP. L'OCR en lui-même n'est pas indispensable, mais autorise la recherche plein texte.
  • Pas de multi-process sur le traitement des images. Cependant la solution est suffisamment rapide.
  • Obligation de recyclage des séparateurs, au risque d'un coût de production non négligeable.
  • Pas de trace de traitement sur les originaux papier.

Pour les projets d'envergure, nous utilisons des rouleaux d'étiquettes CAB pré-imprimés, associées au produit d'OCR et traitement d'image de DIS (http://docimsol.eu/).

C'est une solution adaptée aux volumes de 0 à 200 courriers/jour traités avec des MFP ou des scanners moyen-volume. Au delà merci de nous consulter.

Pré-requis

  • Le processus traite un fichier unique de type PDF issu d'un dispositif de numérisation
  • Les documents sont séparés par des QRCodes issus de Maarch. Le premier document doit aussi disposer de son QRCode.
  • Pour que la recherche plein texte fonctionne, ainsi que la sélection de texte à la qualification, il est préférable que les documents soient OCRisés (reconnaissance de texte et format de sortie PDF image + texte). Cette fonction est disponible sur la plupart des scanners, et en option dans les MFP.

La librairie libre permettant de lire les QRCode est intégrée dans le module : il n'y a pas de dépendance supplémentaire à installer sur le serveur.

Impression des séparateurs dans Maarch Courrier

Pour imprimer les séparateurs, connectez-vous avec un utilisateur disposant du service (ex: superadmin).

Il y a une option dans le menu : « Impression des séparateurs ».

Sélectionnez un ou plusieurs services, le type QRcode, puis cliquez sur "Imprimer les séparateurs". Maarch génère un PDF contenant une page de séparateur par service, qu'il faut imprimer :
Sep print.png
Sep sheet.png

A la numérisation, placez un séparateur devant chaque document (premier compris). Le traitement se fait sur serveur : il n'y a pas de dépendance au dispositif de numérisation.

Envoi vers le serveur par WebService

Le traitement de masse s'effectue coté serveur. Il convient de déposer les documents sur le serveur depuis le poste de numérisation, soit via un partage réseau, soit via l'outil Maarch Capture Connector (MCC).

Voyons comment configurer le MCC pour un envoi dans Maarch via WebService.

Un fichier d'exemple de configuration du scan de masse est livré avec le MCC :
<ROOT>
	<CONFIG>
		<CONFIG_NAME>mass</CONFIG_NAME> 
<!-- keyword of the config file on mcc server -->
		<MCC_PATH>C:\maarch\mcc\client\</MCC_PATH> 
<!-- path of mcc client -->
		<SCAN_IMPORT_PATH>C:\maarch\mcc\client\incoming\</SCAN_IMPORT_PATH> 
<!-- path of images (output of scan or virtual printer) -->
		<MAARCH_URL>http://192.168.21.11/cs_maarchcourrier/apps/maarch_entreprise/index.php?
		page=view_baskets&module=basket&baskets=IndexingBasket</MAARCH_URL> 
<!-- URL of maarch to launch, disabled in mcc mass scan mode -->
		<UPLOAD_URL>http://192.168.21.11/mcc/mcc_server.php</UPLOAD_URL> 
<!-- URL of mcc server, used to upload images -->
		<GET_DATAS_URL>http://192.168.21.11/mcc/get_datas.php</GET_DATAS_URL> 
<!-- URL of mcc server, used to retrieve datas, enabled in mcc form mode -->
		<WEB_PORT></WEB_PORT> 
<!-- port of mcc server -->
		<SSL_CERT>C:\maarch\mcc\client\certif\cert-server.crt</SSL_CERT> 
<!-- path of certificate for ssl mode -->
		<URL_PROXY></URL_PROXY> 
<!-- url_proxy:port_proxy --> 
<!-- http://192.168.21.39:3128/ -->
		<USER_PROXY></USER_PROXY> 
<!-- domain_if_necessary\\username_proxy:pwd_proxy --> 
<!-- \\MAARCH\user:password -->
		<AUTH_TYPE_PROXY></AUTH_TYPE_PROXY> 
<!-- CURLAUTH_BASIC or CURLAUTH_NTLM-->
		<TYPE_PROXY></TYPE_PROXY> 
<!-- CURLPROXY_HTTP or CURLPROXY_SOCKS5 -->
		<BROWSER_PATH>C:\Program Files\Mozilla Firefox\firefox.exe</BROWSER_PATH> 
<!-- path of the browser, here Mozilla Firefox -->
		<!-- <BROWSER_PATH>C:\Program Files\Internet Explorer\iexplore.exe</BROWSER_PATH> --> 
<!-- path of the browser, here Internet Explorer -->
		<FORCE_HTTP_10>false</FORCE_HTTP_10>
	</CONFIG>
	<FORM>
		<FORM_MODE>true</FORM_MODE> 
<!-- true if you want to use form -->
		<MASS_SCAN>true</MASS_SCAN> 
<!-- if you use mcc with a massive scanner -->
		<IMAGE_FORMAT>PDF</IMAGE_FORMAT> 
<!-- only for mass scan mode, put ALL if you want to retrieve all format (not recommended)-->
		<IS_FOR_MLB>false</IS_FOR_MLB> 
<!-- true if target is letterbox -->
	</FORM>
</ROOT>
Les balises FORM_MODE et MASSE_SCAN sont positionnées à true pour enclencher l'envoi.

L'url d'indexation n'est pas appelée, mais le serveur renvoie un formulaire pour positionner des index manuellement.

PS : Ce formulaire est déprécié, mais pour le moment nécessaire au processus... Il va disparaître bientôt dans la forme actuelle.

Le CONFIG_NAME "mass" reporte à un fichier de configuration au niveau du serveur MCC.

Les fichiers de configuration s'appellent tous "./config/config_" & la valeur de CONFIG_NAME & ".xml"

Ainsi, c'est le fichier ./config/config_mass.xml qui est utilisé :
<ROOT>
        <CONFIG>
                <CONFIG_NAME>mass</CONFIG_NAME>
                <MCC_PATH>/produit/maarch/maarch_scripts/mcc/</MCC_PATH> 
<!-- path of mcc server -->
                <MAARCH_TMP_PATH>/produit/maarch/maarch_web/apps/maarch_entreprise/tmp/</MAARCH_TMP_PATH> 
<!-- disabled in form mode, tmp path of maarch -->
                <TARGET_PATH>/exploit/maarch/depot/mcc/maarchcourrier/</TARGET_PATH> 
<!-- enabled in form, incoming path of preprocess or AutoImport -->
                <FORM>/produit/maarch/maarch_scripts/mcc/config/form.xml</FORM> 
<!-- mcc client form -->
                <CREATE_INDEX>false</CREATE_INDEX> <!-- true if you want to create index xml file -->
                <STRUCTURE_FILE>/produit/maarch/maarch_scripts/mcc/config/structure.xml</STRUCTURE_FILE> 
<!-- mandatory if create index-->
        </CONFIG>
        <DATABASE> 
<!-- database connection -->
                <LOCATION>127.0.0.1</LOCATION>
                <DATABASE_PORT>5432</DATABASE_PORT>
                <DATABASE>maarchcourrier</DATABASE>
                <DATABASETYPE>POSTGRESQL</DATABASETYPE>
                <DATABASEWORKSPACE></DATABASEWORKSPACE>
                <USER_NAME>maarch</USER_NAME>
                <PASSWORD>maarch</PASSWORD>
        </DATABASE>
</ROOT>

TARGET_PATH désigne le répertoire où est déposé le fichier PDF, ici /maarch/depot/mcc/maarchcourrier/

Configuration de Maarch Capture

Dans le fichier ./config/Capture.xml, créer une entrée de batch :
<batch directory="/exploit/maarch/maarch_capture/files/maarchcourrier" id="{batchname}-{timestamp}-{rand}" lock="0" name="SCAN_MASS">
      <workflow debug="true" logMode="Maarch" 
                maarchLogParam="/produit/maarch/maarch_web/custom/cs_maarchcourrier/apps/maarch_entreprise/xml/log4php.xml"
                maarchLoggerName="loggerTechnique" name="SCAN_MASS">
        <step function="separatePDF" module="QRSeparator" name="separatePDF">
          <input name="ScanSource">/exploit/maarch/depot/mcc/maarchcourrier/</input>
          <input name="ResultDirectory">/exploit/maarch/depot/autoimport/maarchcourrier/</input>
        </step>
        <step function="processBatch" module="MaarchWSClient" name="SendToMaarch">
          <input name="WSDL">maarchcourrier</input>
          <input name="Process">IMPORT_SCAN_BY_QRCODE</input>
        </step>
      </workflow>
    </batch>
Remarquons que "ScanSource" désigne l'emplacement où le MCC a déposé le fichier.

Le batch va utiliser le module QRSeparator pour générer un PDF par document, dès qu'une page de séparation est détectée. La page de QRCode est quant à elle éliminée. Les PDF résultant sont déposés dans "ResultDirectory".

Dans un second temps, le module MaarchWSClient exécute le process "IMPORT_SCAN_BY_QRCODE" pour réaliser l'injection dans Maarch.

Configuration de l'injection par WS

Le fichier de configuration se trouve dans /maarch_capture/modules/MaarchWSClient/MaarchWSClient.xml.

Voyons comment y est décrit le processus IMPORT_SCAN_BY_QRCODE :
<process name="IMPORT_SCAN_BY_QRCODE">
                <loop xpath="/Batch/Documents/Document">
                        <call name="storeResource">
                                <argument eval="base64_encode(file_get_contents($Element->path))" name="encodedContent"/>
                                <argument name="data">
                                        <column>subject</column>
                                        <value metadata="subject"/>
                                        <type>string</type>
                                </argument>
                                <argument name="data">
                                        <column>doc_date</column>
                                        <value metadata="doc_date"/>
                                        <type>date</type>
                                </argument>
                                <argument name="data">
                                        <column>type_id</column>
                                        <value>101</value>
                                        <type>integer</type>
                                </argument>
                                <argument name="data">
                                        <column>destination</column>
                                        <value metadata="destination"/>
                                        <type>string</type>
                                </argument>
                                <argument name="collId">letterbox_coll</argument>
                                <argument name="table">res_letterbox</argument>
                                <argument attribute="extension" name="format"/>
                                <argument name="status">INIT</argument>
                                <return>
                                        <returnCode/>
                                        <resId metadata="resId"/>
                                        <error/>
                                </return>
                        </call>
                        <call name="storeExtResource">
                                <argument metadata="resId" name="res_id"/>
                                <argument name="data">
                                        <column>nature_id</column>
                                        <value>email</value>
                                        <type>string</type>
                                </argument>
                                <argument name="data">
                                        <column>category_id</column>
                                        <value>incoming</value>
                                        <type>string</type>
                                </argument>
                                <argument name="table">mlb_coll_ext</argument>
                                <return>
                                        <returnCode/>
                                        <resId metadata="resId"/>
                                        <error/>
                                </return>
                        </call>
                </loop>
        </process>
Il s'agit d'un enchaînement de deux WS, l'un pour pousser un nouveau document dans res_letterbox (la table socle), et l'autre pour y ajouter le complément dans mlb_coll_ext (l'extension courrier).

Il est possible de définir des valeurs par défaut à l'injection, soit par des metadata, soit par des valeurs en dur.

La metadonnée "destination" est instanciée dans le module QRSeparator, lorsque celui-ci lit le QRCode représentant le service destinataire.

Lancement de l'exécution

Un shell permet de lancer le traitement du fichier d'entrée PDF et l'injection dans l'application Maarch.

Sous GNU/Linux, éditez le fichier SCAN_MASS.sh situé dans maarch_scripts/maarch_capture/ :
#!/bin/sh
cd /produit/maarch/maarch_scripts/maarch_capture/
php MaarchCapture.php init -BatchName SCAN_MASS

Pour automatiser le lancement, il suffit de placer le shell dans la crontab :

######################SCAN MASS BY BARCODE######################################################
* 8-19 * * 1-5 /produit/maarch/maarch_scripts/maarch_capture/SCAN_MASS.sh

Résultat dans Maarch Courrier

Avec le cron actif, les documents arrivent directement dans la bannette des courriers à qualifier du service courrier.

C'est du paramétrage : les courriers pourraient se retrouver directement au secrétariat du service concerné.

Sep bannette.png

Cliquer sur la bannette puis sur un document pour compléter l'indexation. Notez comme le service est positionné selon le séparateur.

Sep qualif.png