Le workflow que nous redéfinissons ici est défini dans la contribution [ORI_HOME]/src/ori-oai-workflow-svn/conf/custom/workflows/contrib_dc_3.
Le fichier à modifier est workflow_dc_3.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.6//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd"> <workflow> <initial-actions> <action id="100" name="Start Workflow"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">DC3_AUTHENTICATED</arg> </condition> </conditions> </restrict-to> <results> <unconditional-result old-status="Finished" status="Underway" step="1" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">addRole</arg> <arg name="mask">DC3_OWNER</arg> <!-- no recipient -> current user --> </function> <function type="spring"> <arg name="bean.name">addPermission</arg> <arg name="mask">DC3_CREATE DC3_DELETE</arg> <arg name="recipient">DC3_OWNER</arg> </function> <function type="spring"> <arg name="bean.name">xslTransform</arg> <arg name="xslPath">properties/workflows/contrib_dc_3/xsl/dcSetCreator.xsl</arg> </function> </post-functions> </action> </initial-actions> <steps> <step id="1" name="dc_3.Private"> <actions> <action id="1" name="dc_3.Publish"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">DC3_OWNER</arg> </condition> </conditions> </restrict-to> <results> <unconditional-result status="Underway" old-status="Finished" step="2" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">deletePermission</arg> <arg name="mask">DC3_CREATE DC3_DELETE DC3_WRITE</arg> <arg name="recipient">DC3_OWNER</arg> </function> <function type="spring"> <arg name="bean.name">saveOrUpdateIndex</arg> <arg name="idOriIndexing">indexingServicePublic</arg> </function> </post-functions> </action> </actions> </step> <step id="2" name="dc_3.Public"> <actions> <action id="2" name="dc_3.Make Private"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">DC3_OWNER</arg> </condition> </conditions> </restrict-to> <results> <unconditional-result old-status="Finished" status="Underway" step="1" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">addPermission</arg> <arg name="mask">DC3_CREATE DC3_DELETE DC3_WRITE</arg> <arg name="recipient">DC3_OWNER</arg> </function> <function type="spring"> <arg name="bean.name">deleteIndex</arg> <arg name="idOriIndexing">indexingServicePublic</arg> </function> </post-functions> </action> <action id="3" name="dc_3.Archive"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">DC3_ARCHIVER</arg> </condition> </conditions> </restrict-to> <results> <unconditional-result old-status="Finished" status="Underway" step="3" /> </results> <post-functions> <function type="spring"> <arg name="bean.name">addPermission</arg> <arg name="mask">USE_DC3_ARCHIVE_FORM</arg> <arg name="recipient">DC3_ARCHIVER</arg> </function> <function type="spring"> <arg name="bean.name">deleteIndex</arg> <arg name="idOriIndexing">indexingServicePublic</arg> </function> </post-functions> </action> </actions> </step> <step id="3" name="dc_3.Archived"> <!-- Attention, pour OsWorkflow un step sans action "termine" le workflow => ici on propose une action fictive cad conditionnée par une condition impossible à réaliser --> <actions> <action id="4" name="dc_3.Dummy Action"> <restrict-to> <conditions type="AND"> <condition type="spring"> <arg name="bean.name">hasRole</arg> <arg name="mask">-1</arg> <!-- Dummy Role --> </condition> </conditions> </restrict-to> <results> <unconditional-result old-status="Finished" status="Underway" step="3" /> </results> </action> </actions> </step> </steps> </workflow>
On a ici comme le schéma l'indiquait, ajouté une transition (une action en langage osworkflow) et un état (un step).
[notez, comme dit en commentaire, que l'on a dû définir une action fictive depuis cet état Archived].
Dès lors, après redéploiement et redémarrage de ori-oai-workflow, les « documents » sont associés à ce workflow.
Il reste maintenant à définir les libellés d'action dans les fichiers i18n/messages_fr.properties et i18n/messages_en.properties comme ceci :
dc_3.Archive = Archiver dc_3.Archived = Archiv\u00E9e
et
dc_3.Archive = Archive dc_3.Archived = Archived