MaarchWSClient est un module permettant de transférer dans MaarchCourrier les documents traités par MaarchCapture.
Il utilise les protocoles SOAP ou REST pour verser les documents via webservice.
Depuis le fichier de paramétrage général : ./config/Capture.xml.
<step name="SendToMaarch" module="MaarchWSClient" function="processBatch">
<input name="WS">MaarchRestWS</input>
<input name="Process">MaarchRestWSProcessFromMail</input>
<input name="CatchError">true</input>
<input name="configFile">MaarchWSClient_standard_sample.xml</input>
</step>
La déclaration du module comporte les attributs suivants :
Depuis le fichier de paramétrage de la boite mail à capturer : ./modules/MaarchWSClient/MaarchWSClient_standard_sample.xml.
<?xml version="1.0" encoding="UTF-8"?>
<MaarchWSClient>
<!-- REST FRONTAL -->
<WS name="MaarchRestWS" type="REST" uri="http://superadmin:superadmin@127.0.0.1/MaarchCourrier/rest/" />
<!-- SOAP FRONTAL -->
<WS name="MaarchSoapWS" type="SOAP" uri="http://127.0.0.1/MaarchCourrier/ws_server.php?WSDL" SSL="false" cacheUse="0" >
<proxy>
<user>superadmin</user>
<pass>superadmin</pass>
<timeout>600</timeout>
</proxy>
</WS>
<!-- REST SAMPLES -->
<process name="MaarchRestWSProcessFromScan">
<loop xpath="/Batch/Documents/Document">
<call name="/resources" method="POST">
<argument type="entity" name="encodedFile" eval="base64_encode(file_get_contents($Element->path))"/>
<argument type="entity" name="type_id">108</argument>
<argument type="entity" name="destination">COU</argument>
<argument type="entity" name="priority">poiuytre1357nbvc</argument>
<argument type="entity" name="category_id">incoming</argument>
<argument type="entity" name="format" attribute="extension"/>
<argument type="entity" name="status">INIT</argument>
<return>
<resId metadata="resId" />
</return>
</call>
</loop>
</process>
<process name="MaarchRestWSProcessFromMail">
<loop xpath="/Batch/Documents/Document">
<call name="/resources" method="POST">
<argument type="entity" name="encodedFile" eval="base64_encode(file_get_contents($Element->path))"/>
<argument type="entity" name="format" attribute="extension"/>
<argument type="entity" name="status">INIT</argument>
<argument type="entity" name="type_id" metadata="type_id"/>
<argument type="entity" name="category_id">incoming</argument>
<argument type="entity" name="subject" metadata="subject"/>
<argument type="entity" name="doc_date" metadata="doc_date"/>
<argument type="entity" name="destination" metadata="destination"/>
<argument type="entity" name="initiator" metadata="destination"/>
<argument type="entity" name="priority">poiuytre1357nbvc</argument>
<argument type="entity" name="custom_t10" xvalue="./Metadata/fromaddress"/>
<argument type="entity" name="custom_t11" xvalue="./Metadata/toaddress"/>
<argument type="entity" name="custom_t12" xvalue="./Metadata/ccaddress"/>
<argument type="entity" name="source" xvalue="./Metadata/message_id"/>
<argument type="entity" name="nature_id">email</argument>
<argument type="entity" name="exp_contact_id" xvalue="./Metadata/fromaddress"/>
<argument type="entity" name="address_id" xvalue="./Metadata/fromaddress"/>
<return>
<resId metadata="resId" />
</return>
</call>
<loop xpath="Attachments/Attachment">
<call name="/res" method="POST">
<argument type="entity" eval="base64_encode(file_get_contents($Element->path))" name="encodedFile"/>
<argument type="entity" name="data">
<column>title</column>
<value metadata="filename"/>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>res_id_master</column>
<value xvalue="ancestor::Document/Metadata/resId"/>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>coll_id</column>
<value>letterbox_coll</value>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>attachment_type</column>
<value>incoming_mail_attachment</value>
<type>string</type>
</argument>
<argument type="entity" name="collId">letterbox_coll</argument>
<argument type="entity" name="table">res_attachments</argument>
<argument type="entity" name="format" attribute="extension"/>
<argument type="entity" name="status">TRA</argument>
<return>
<resId metadata="resId" />
</return>
</call>
</loop>
</loop>
</process>
<!-- SOAP SAMPLES -->
<process name="MaarchSoapWSProcessFromMail">
<loop xpath="Attachments/Attachment">
<call name="storeResource">
...
</call>
</loop>
</loop>
</process>
</MaarchWSClient>
<!-- REST FRONTAL -->
<WS name="MaarchRestWS" type="REST" uri="http://superadmin:superadmin@127.0.0.1/MaarchCourrier/rest/" />
<!-- SOAP FRONTAL -->
<WS name="MaarchSoapWS" type="SOAP" uri="http://127.0.0.1/MaarchCourrier/ws_server.php?WSDL" SSL="false" cacheUse="0" >
<proxy>
<user>superadmin</user>
<pass>superadmin</pass>
<timeout>600</timeout>
</proxy>
</WS>
<process name="MaarchRestWSProcessFromScan">
<loop xpath="/Batch/Documents/Document">
<call name="/res" method="POST">
<argument type="entity" name="encodedFile" eval="base64_encode(file_get_contents($Element->path))"/>
<argument type="entity" name="fileFormat" attribute="extension"/>
<argument type="entity" name="data">
<column>doc_date</column>
<value metadata="doc_date" />
<type>date</type>
</argument>
<argument type="entity" name="data">
<column>custom_t10</column>
<value xvalue="./Metadata/fromaddress" />
<type>string</type>
</argument>
value xvalue permet d’aller récupérer via une recherche XML une valeur positionnée par un autre module (ex : MailCapture) dans le fichier XML de traitement du batch du document ou de la pièce jointe capturée.
Attention, quelques champs ont des comportements spécifiques :
1) Dans le cas où la colonne custom_t10 est renseignée, cela fera le lien entre l'adresse email de l'expéditeur, et l'utilisateur destinataire dans l'application Maarch Courrier. Cela renseignera également l'entité destinatrice. Cela est utile dans le cas où un collaborateur reçoit un courriel dans sa boite personnelle et qu'il le transfère sur la boite qui est capturée. Il faut donc renseigner le champ custom_t10 uniquement avec l'adresse email de l'expéditeur.
2) Si le champ exp_contact_id contient une adresse mail, cela fera le lien entre le courrier et un contact existant dans l'application courrier.
3) Si le champ address_id contient une adresse mail, cela fera le lien entre le courrier et l'adresse d'un contact existant dans l'application courrier.
4) Si le champ alt_identifier est présent et sans valeur, cela ajoutera un numéro chrono au document, en fonction de la séquence des numéros chronos.
<return>
<resId metadata="resId" />
</return>