On modifie le workflow en 3 étapes

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

Compare with Current View Page History

« Previous Version 2 Next »

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
  • No labels