Page History

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

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

...

  • :

...

  • Code Block
    xml
    xml
    titleAction 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>
    

...

...

  • 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

...

  • :

...

  • Code Block
    xml
    xml
    titleAction 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>
            <!-- FONCTION D'ENVOI VERS HAL -->
            <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>
    

...

  • Parmi

...

  • les

...

  • post-functions

...

  • invoquées

...

  • par

...

  • cette

...

  • action,

...

  • celle

...

  • qui

...

  • nous

...

  • intéresse

...

  • ici

...

  • est

...

  • invokeWSOperation

...

  • .

...

  • Cette

...

  • fonction

...

  • prend

...

  • 2

...

  • arguments

...

  • :

...

    • wsId : nom du service distant
    • wsMethodId : nom de la méthode ou fonction à invoquer auprès de ce service
  • Div

    pour que la post-function invokeWSOperation décrite ci-dessus fonctionne, il faut qu'elle corresponde à une configuration présente dans le fichier remote-services-configs.xml

...

  • de

...

  • la

...

  • contribution

...

  • (ou

...

  • du

...

  • workflow

...

  • par

...

  • défaut

...

  • comme

...

  • le

...

  • cas

...

  • qu'on

...

  • présente

...

  • ici)

...

  • Info

...

  • Comme

...

  • le

...

  • suggère

...

  • le

...

  • titre

...

  • de

...

  • cette

...

  • page,

...

  • l'appel

...

  • au

...

  • service

...

  • distant

...

  • (HAL

...

  • dans

...

  • cet

...

  • exemple)

...

  • n'est

...

  • pas

...

  • direct

...

  • :

...

  • il

...

  • se

...

  • fait

...

  • via

...

  • le

...

  • module

...

  • ORI-OAI-ext,

...

  • ce

...

  • qui

...

  • permet

...

  • de

...

  • masquer

...

  • la

...

  • diversité

...

  • de

...

  • ces

...

  • services

...

  • derrière

...

  • une

...

  • interface

...

  • unique,

...

  • et

...

  • de

...

  • les

...

  • invoquer

...

  • d'une

...

  • unique

...

  • manière.

...

  • Si

...

  • l'on

...

  • parle

...

  • de

...

  • configuration

...

  • d'appels

...

  • à

...

  • un

...

  • service

...

  • distant,

...

  • cela

...

  • signifie

...

  • donc

...

  • en

...

  • fait

...

  • configuration

...

  • de

...

  • la

...

  • communication avec ORI-OAI-ext et même, pour être plus précis, avec un plugin existant dans ORI-OAI-ext.

...

  • Comme

...

  • le

...

  • fichier

...

  • addonContext.xml

...

  • ,

...

  • remote-services-configs.xml

...

  • est

...

  • un

...

  • fichier

...

  • de

...

  • configuration

...

  • Spring.

...

  • Il

...

  • comprend

...

  • donc

...

  • un

...

  • certain

...

  • nombre

...

  • de

...

  • déclarations

...

  • de

...

  • beans

...

  • Spring.

...

  • Plus

...

  • précisément,

...

  • ce

...

  • fichier

...

  • doit

...

  • déclarer

...

  • :

...

  • Unordered List (ul)
    List Item (li)
    uniquement des beans de classe org.orioai.workflow.beans.remote.RemoteServiceConfig

...

  • List Item (li)
    un bean RemoteServiceConfig par méthode ou fonction d'un

...

  • service

...

  • distant

...

  • à

...

  • appeler


    Ainsi,

...

  • pour

...

  • l'appel

...

  • à

...

  • la

...

  • méthode

...

  • upload

...

  • du

...

  • service

...

  • hal

...

  • ,

...

  • on

...

  • trouvera

...

  • dans

...

  • remote-services-configs.xml

...

  • :

...

  • Code Block
    xml
    xml
    titleConfiguration nécessaire à l'appel de la méthode upload du service hal
    
    <bean class="org.orioai.workflow.beans.remote.RemoteServiceConfig">
    	<property name="halUserId" value="${ext.hal.account.id}" />
    	<property name="halUserPassword" value="${ext.hal.account.password}" />
    	<property name="wsId" value="hal" />
    	<property name="wsMethodId" value="upload" />
    	<property name="metadataTypeId" value="dc_plus_fr_easy" />
    	<property name="statusKey" value="halArtStatus" />
    	<!--+
    	    | Keys are proper to ori-oai-ext
    	    | Values are xpathes proper to the current metadataType
    	    +-->
    	<property name="xPathesParams">
    	    <map>
    		<entry key="fullTextName" value="//dc:title" />
    		<entry key="fullTextFormat" value="//dc:format" />
    		<entry key="fullTextUri" value="//dc:relation[@xsi:type = 'dcfr:file']" />
    		<entry key="envoiHal" value="//dcterms:accessRights[@xsi:type = 'dcfr:envoi_HAL']" />
    	    </map>
    	</property>
    	<!--+
    	    | Keys are xpathes proper to the current metadataType
    	    | Values are proper to ori-oai-ext
    	    |
    	    | NOTE : to edit one node with several values, values keys must
    	    | be space separated and the last key must be followed by a pipe
    	    | followed by the character which will separate the multiple values
    	    | in the node.
    	    +-->
    	<property name="xmlContentEditionParams">
    	    <map>
    		<entry key="//dc:identifier[@xsi:type = 'dcfr:hal_id']" value="halArtId halArtVersion halArtPassword|," />
    	    </map>
    	</property>
    	<!-- Keys are proper to ori-oai-workflow -->
    	<property name="downloadResourcesParams">
    	    <map>
    		<!--+
    		    | the value associated with  downloadDecisionKey
    		    | is a key in xPathesParams
    		    +-->
    		<entry key="downloadDecisionKey" value="envoiHal" />
    		<entry key="downloadDecisionValues" value="file_hal link_file_hal" />
    		<entry key="resourcesUrisKey" value="fullTextUri" />
    		<entry key="downloadWsId" value="download" />
    		<entry key="downloadWsMethodId" value="downloadResource" />
    	    </map>
    	</property>
    </bean>
    

...

  • Un

...

  • bean

...

  • RemoteServiceConfig

...

  • comprend

...

  • donc

...

  • un

...

  • certain

...

  • nombre

...

  • de

...

  • propriétés

...

  • qu'on

...

  • explicite

...

  • ci-après

...

  • :

...

  • Unordered List (ul)
    List Item (li)
    wsId: Identifiant du service distant
    List Item (li)
    wsMethodId: Nom de la méthode du service distant
    List Item (li)
    metadataTypeId: Identifiant du metadataType donné dans addonContext.xml
    List Item (li)
    statusKey: Nom de la clé, dans l'XML retourné par ORI-OAI-ext, à laquelle est associé le statut actuel de la fiche au niveau du service distant
    List Item (li)
    commentKey: Nom de la clé, dans l'XML retourné par ORI-OAI-ext, à laquelle est associé un éventuel commentaire accompagnant la réponse du service distant à l'appel de la méthode
    List Item (li)
    xpathesParams: Associations de clés et de valeurs : les clés sont définies dans le plugin correspondant au service avec lequel on interagit ; les valeurs sont des expressions xpaths permettant d'extraire des valeurs de la fiche correspondant à l'instance de workflow courante
    List Item (li)
    xmlContentEditionParams: Associations de clés et de valeurs : les clés sont des expressions xpaths permettant d'éditer des champs de la fiche correspondant à l'instance de workflow courante ; les valeurs sont définies dans le plugin correspondant au service avec lequel on interagit
    List Item (li)
    downloadResourcesParams: Paramètres nécessaires au téléchargement d'une ressource à passer en paramètre de la méthode à appeler