...
Pour illustrer la description de la marche à suivre pour configurer une telle interaction, nous prendrons ici un exemple présent dans les deux workflows précités : l'envoi, conjoitement à sa publication locale, d'une fiche sur la plateforme HAL.
- dans la description xml (fichier workflow_ao_easy.xml), on trouve :
où l'on voit que selon la valeur d'un champ de la fiche (<dc:terms:accessRights xsi:type="dcfr:envoi_HAL">), on décide d'une publication locale avec envoi vers HAL (on se dirige alors vers le split d'idenfiant 1) ou d'une publication simple sans envoi vers HAL (on se dirige alors vers l'étape d'identifiant 3)Code Block xml xml title Action de publication <action id="1" name="aoe-publish"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">AOE_OWNER</arg> </condition> </conditions> </restrict-to> <results> <result old-status="Finished" status="Underway" split="1"> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">verifyXPathes</arg> <arg name="xpath1">//dcterms:accessRights[@xsi:type = 'dcfr:envoi_HAL' and not(contains(text(), 'no_hal')) and not(contains(text(), 'unavailable_file')) and normalize-space(.)]</arg> <arg name="annotation">aoe-send-hal.warn</arg> </condition> </conditions> </result> <unconditional-result old-status="Finished" status="Underway" step="3" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">deletePermission</arg> <arg name="mask">USE_AOE_MODERATOR_FORM</arg> <arg name="recipient">AOE_OWNER</arg> </function> <function type="spring"> <arg name="bean.name">saveOrUpdateIndex</arg> <arg name="idOriIndexing">indexingServicePublic</arg> </function> </post-functions> </action>
- toujours dans workflow_ao_easy.xml, à l'issu du split d'identifiant 1 (se reporter à la documentation d'OsWorkflow pour de plus amples informations sur ce qu'est et comment fonctionne un split), l'instance de workflow se trouve simultanément dans 2 états : 'publié' (localement, étape 3) et 'en attente d'envoi vers HAL' (étape 6). Ce deuxième état fournit l'action suivante :
Code Block xml xml title Action d'envoi vers HAL <action id="13" name="aoe-hal_upload"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">AOE_OWNER</arg> </condition> <condition type="spring"> <arg name="bean.name">hasRemoteStatus</arg> <arg name="wsId">hal</arg> <arg name="wsStatus">EMPTY</arg> </condition> </conditions> </restrict-to> <results> <unconditional-result status="Underway" old-status="Finished" step="-1" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">deletePermission</arg> <arg name="mask">AOE_DELETE USE_AOE_MODERATOR_FORM</arg> <arg name="recipient">AOE_OWNER</arg> </function> <function type="spring"> <arg name="bean.name">invokeWSOperation</arg> <arg name="wsId">hal</arg> <arg name="wsMethodId">upload</arg> </function> <function type="spring"> <arg name="bean.name">saveOrUpdateIndex</arg> <arg name="idOriIndexing">indexingServicePublic</arg> </function> <function type="spring"> <arg name="bean.name">saveXmlHistory</arg> </function> </post-functions> </action>
*