Configurer l'interaction avec un service distant via ORI-OAI-ext

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Un workflow peut nécessiter l'interaction avec un service distant (i.e extérieur à l'environnement constitué par les modules ORI-OAI). C'est le cas par exemple des workflows default_ao_easy et default_ao_complex dédiés au référencement des publications scientifiques et qui interagissent avec la plateforme HAL.

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 :
    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>
    
    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)
  • 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 :
    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>
    

*

  • No labels