<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2000-2010  Ministere de la culture et de la communication (France), AJLSM
See LICENCE file
-->
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
  <!ENTITY actions_controle SYSTEM "actions_controle.xml" NDATA XML>
  <!ENTITY actions_generalites SYSTEM "actions_generalites.xml" NDATA XML>
  <!ENTITY actions_gestion SYSTEM "actions_gestion.xml" NDATA XML>
  <!ENTITY actions_index SYSTEM "actions_index.xml" NDATA XML>
  <!ENTITY actions_indexation SYSTEM "actions_indexation.xml" NDATA XML>
  <!ENTITY actions_localisation SYSTEM "actions_localisation.xml" NDATA XML>
  <!ENTITY actions_paramaters SYSTEM "actions_parametres.xml" NDATA XML>
  <!ENTITY parametres_sdx SYSTEM "parametres_sdx.xml" NDATA XML>
]>

<webpage id="actions_parametres"> 

  <head>
	 <title lang="fr">Paramètres et contrôle du flux</title>
	 <titleabbrev lang="fr">Paramètres et flux</titleabbrev>
	 <author lang="fr"><firstname>Malo</firstname><surname>Pichot</surname><affiliation><orgname>AJLSM</orgname></affiliation></author><revhistory>
		<revision lang="fr">
		  <revnumber>1.0</revnumber><date>2003-06-04</date> 
		</revision>
	 </revhistory>
  </head>

  <itemizedlist>
	 <title>Liste des actions décrites dans cette page : </title>
	 <listitem>
		<para><ulink url="#sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></ulink> ; </para>
	 </listitem><listitem>
		<para><ulink url="#sdx_success"><sgmltag class="element">sdx:success</sgmltag></ulink> ; </para>
	 </listitem><listitem>
		<para><ulink url="#sdx_parameter"><sgmltag class="element">sdx:parameter</sgmltag></ulink> ; </para>
	 </listitem><listitem>
		<para><ulink url="#sdx_parameters"><sgmltag class="element">sdx:parameters</sgmltag></ulink>.</para>
	 </listitem>
  </itemizedlist>
  <section lang="fr" id="sdx_fallback"> 
	 <title><sgmltag class="element">sdx:fallback</sgmltag>(CHECK)</title>
	 <para>Cette action permet de définir une sorte de stratégie de repli. <sgmltag class="element">sdx:fallback</sgmltag> suit toujours (FIXME) une action dans la page XSP. Si cette action échoue, alors le contenu de <sgmltag class="element">sdx:fallback</sgmltag> est exécuté.</para>
	 <informaltable lang="fr"> 
		<tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="*"/><colspec colnum="2" colname="col2" colwidth="*"/><tbody> 
			 <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename class="libraryfile">sdx.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2"> 
				  <para><sgmltag class="element">sdx:fallback</sgmltag> peut être employé pour les 
					 <olink targetdocent="actions_indexation">actions d'indexation</olink> (excepté 
					 <olink localinfo="sdx_deletedocuments" targetdocent="actions_indexation"><sgmltag class="element">sdx:deleteDocuments</sgmltag></olink>) et à l'ensemble des 
					 <olink targetdocent="actions_gestion">actions de gestion des droits</olink>. Il est également possible de l'employer lors du contrôle d'un paramètre (cf. 
					 <olink localinfo="sdx_parameter" targetdocent="actions_paramaters"><sgmltag class="element">sdx:parameter</sgmltag></olink>) ou de l'existence de résultats (cf. 
					 <olink localinfo="sdx_results" targetdocent="actions_controle"><sgmltag class="element">sdx:results</sgmltag></olink>).</para>
				</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2"><sgmltag class="element">sdx:fallback</sgmltag> peut être vide ou contenir n'importe quel élément (<sgmltag class="element">sdx:*</sgmltag> ou autre).</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable> 
	 <para>L'action <sgmltag class="element">sdx:fallback</sgmltag> n'emploie aucun paramètre spécifique ou commun.</para>
	 <example lang="fr" id="exemple_sdx_fallback_01"> 
		<title>Echec d'une identification</title>
		<para>L'exemple suivant présente une page XSP devant gérer l'accès au formulaire d'indexation. Celui ne doit être accessible qu'à l'administrateur de l'application. Dans le cas où l'utilisateur courant n'est pas l'administrateur, on génère l'affichage d'un message.</para>
		<programlisting>
&lt;sdx:page&gt;
  &lt;sdx:userIsAdmin&gt;
    &lt;form type="upload"&gt;
    &lt;sdx:fallback&gt;
      &lt;message type="utlisateur_non_identifie"/&gt;
    &lt;/sdx:fallback&gt;
  &lt;/sdx:userIsAdmin&gt;
&lt;/sdx:page&gt;
</programlisting> 
	 </example> 
  </section> 
  <section id="sdx_success" lang="fr"> 
	 <title><sgmltag class="element">sdx:success</sgmltag>(CHECK)</title>
	 <para><sgmltag class="element">sdx:success</sgmltag> est construite sur le même modèle que 
		<ulink url="#sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></ulink>. Contrairement à cette dernière action, elle permet de définir une stratégie en cas de succès.</para>
	 <informaltable lang="fr"> 
		<tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="1.00*"/><colspec colnum="2" colname="col2" colwidth="4.09*"/><tbody> 
			 <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename class="libraryfile">sdx.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2"> 
				  <para><sgmltag class="element">sdx:success</sgmltag> peut être soumise aux 
					 <olink targetdocent="actions_indexation">actions d'indexation</olink>, pour vérifier un paramètre (<olink localinfo="sdx_parameter" targetdocent="actions_paramaters"><sgmltag class="element">sdx:parameter</sgmltag></olink>) ou pour tester la présence de résultats après une requête (<olink localinfo="sdx_results" targetdocent="actions_controle"><sgmltag class="element">sdx:results</sgmltag></olink>).</para>
				</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2"><sgmltag class="element">sdx:success</sgmltag> peut être vide ou contenir n'importe quel élément (<sgmltag class="element">sdx:*</sgmltag> ou autre).</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable> 
	 <para><sgmltag class="element">sdx:success</sgmltag> n'emploie aucun paramètre (spécifique ou commun).</para>
	 <example lang="fr" id="exemple_sdx_success_01"> 
		<title>Succès lors de l'indexation (CHECK)</title>
		<para>L'exemple suivant présente la gestion d'une indexation. Si celle-ci c'est correctement déroulée, on demande la sortie des termes contenus dans l'index "champ" (cf. 
		  <olink localinfo="sdx_terms" targetdocent="actions_index"><sgmltag class="element">sdx:terms</sgmltag></olink> pour approfondir cette notion). En cas d'échec, on génère l'affichage d'un message spécifique.</para>
		<programlisting>
&lt;sdx:page&gt;
  &lt;sdx:uploadDocuments&gt;
    &lt;sdx:success&gt;
      &lt;sdx:terms field="champ"/&gt;
    &lt;/sdx:success&gt;
    &lt;sdx:fallback&gt;
      &lt;message type="echec_indexation"/&gt;
    &lt;sdx:fallback&gt;
  &lt;/sdx:uploadDocuments&gt;
&lt;/sdx:page&gt;
</programlisting> 
	 </example> 
  </section> 
  <section id="sdx_parameter" lang="fr"> 
	 <title><sgmltag class="element">sdx:parameter</sgmltag>(CHECK)</title>
	 <para><sgmltag class="element">sdx:parameter</sgmltag> est une action commune à l'ensemble des outils de l'API-XSP de SDX. Comme son nom l'indique, elle permet de passer des paramètres nécessaires à la contextualisation des actions. Il existe plusieurs manière de définir ces paramètres de façon dynamique (action de l'utilisateur ou réaction de l'application à un contexte donné) ou de manière statique (paramètre défini directement dans une page XSP). On se reportera à la section 
		<olink targetdocent="parametres_sdx">Logique des paramètres SDX</olink> pour approfondir cette notion.</para>
	 <informaltable lang="fr"> 
		<tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="1.00*"/><colspec colnum="2" colname="col2" colwidth="3.37*"/><tbody> 
			 <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-parameters.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans <sgmltag class="element">sdx:page</sgmltag>. <sgmltag class="element">sdx:parameter</sgmltag> est employé par l'ensemble des actions SDX pour passer ou récupérer un paramètre.</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2"><sgmltag class="element">sdx:parameter</sgmltag> peut contenir 
				  <olink localinfo="sdx_fallback" targetdocent="actions_indexation"><sgmltag class="element">sdx:fallback</sgmltag></olink> et 
				  <olink localinfo="sdx_success" targetdocent="actions_indexation"><sgmltag class="element">sdx:success</sgmltag></olink>. Il est donc possible de définir des <emphasis role="italic">stratégies</emphasis> ou des actions calculées selon le contexte.</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable> 
	 <example lang="fr" id="exemple_sdx_parameter_01"> 
		<title>Définition de paramètres dans une application</title>
		<para>Dans cet exemple de page XSP, on demande la sortie de l'ensemble des termes contenus dans un index. Le nom de cet index est donné par l'attribut <sgmltag class="attribute">field</sgmltag> directement dans le code. L'utilisateur n'intervient pas ; l'application n'effectue pas de choix suivant un contexte donné (on parle également de calcul d'un paramètre). Noter l'emploi du paramètre <sgmltag class="attribute">hpp</sgmltag> réglé sur la valeur <literal>-1</literal> ; il permet d'indiquer que l'ensemble des résultats doit être inclus dans une seule page.</para>
		<programlisting>
&lt;sdx:page&gt;
 &lt;sdx:terms field="auteur" hpp="-1"/&gt;
&lt;/sdx:page&gt;
</programlisting> 
		<para>Le second exemple présente la même action (<olink localinfo="sdx_terms" targetdocent="actions_index"><sgmltag class="element">sdx:terms</sgmltag></olink>) mais dans un contexte différent. Cette fois, le choix de l'index et du nombre de résultat par page est dynamique.</para>
		<programlisting>
&lt;sdx:page&gt;
 &lt;sdx:terms fieldParam="f" hppParam="hpp"/&gt;
&lt;/sdx:page&gt;
</programlisting> 
		<para>Ainsi, une URL <literal>{serveur SDX}/sdxtest/terms.xsp?f=auteur&amp;hpp=20</literal> renverra la première page de la liste des termes contenus dans l'index <literal>auteur</literal>, chaque page contenant 20 résultats. Noter que l'on ne s'inquiète pas de préciser l'application et la base de documents gérant cet index. SDX renvoie effectivement ces paramètres, conservés en mémoire ; il s'agit des paramètres par défaut. On pourra se reporter à la section réservée à l'action 
		  <olink localinfo="sdx_location" targetdocent="actions_localisation"><sgmltag class="element">sdx:location</sgmltag></olink> pour voir un exemple d'élargissement d'une telle 
		  <olink localinfo="exemple_sdx_location_01" targetdocent="actions_localisation">interrogation sur plusieurs bases de documents</olink>.</para>
	 </example> 
	 <example id="exemple_sdx_parameter_02"> 
		<title>Définition d'une stratégie en cas de non connexion</title>
		<para>Dans l'exemple suivant (tiré de l'application de démonstration SDXTest), on cherche à savoir si l'utilisateur courant a tenté de se connecter ou non. Si c'est le cas, le paramètre HTTP <sgmltag class="attribute">id</sgmltag> est présent. Si le paramètre <sgmltag class="attribute">id</sgmltag> n'apparaît, cela signifie que l'utilisateur n'a pas tenté de se connecter.</para>
		<programlisting>
&lt;sdx:page&gt;
 &lt;sdx:parameter valueParam="id"&gt;
  &lt;sdx:fallback&gt;
   &lt;message type="utilisateur_non_connecté"&gt;
  &lt;/sdx:fallback&gt;
  &lt;sdx:success&gt;
   &lt;message type="utilisateur_connecté"&gt;
  &lt;/sdx:success&gt;
 &lt;/sdx:parameter&gt;
&lt;/sdx:page&gt;
</programlisting> 
	 </example> 
  </section> 
  <section id="sdx_parameters" lang="fr"> 
	 <title><sgmltag class="element">sdx:parameters</sgmltag>(TODO)</title>
	 <para><sgmltag class="element">sdx:parameters</sgmltag> répond à la même logique que 
		<ulink url="#sdx_parameter"><sgmltag class="element">sdx:parameter</sgmltag></ulink> décrit plus haut. Il est employé pour les paramètres répétables.</para>
	 <informaltable lang="fr"> 
		<tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="*"/><colspec colnum="2" colname="col2" colwidth="*"/><tbody> 
			 <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-parameters.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans <sgmltag class="element">sdx:page</sgmltag>.</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">Aucun.</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable> 
  </section> 

</webpage> 
