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

...

...

  • 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