<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
  <!ENTITY actions_identification SYSTEM "actions_identification.xml" NDATA XML>
  <!ENTITY actions_indexation SYSTEM "actions_indexation.xml" NDATA XML>
  <!ENTITY bases_documents SYSTEM "../introduction/bases.xml" NDATA XML>
  <!ENTITY indexation SYSTEM "../indexation/indexation.xml" NDATA XML>
  <!ENTITY indexation_original SYSTEM "../indexation/original.xml" NDATA XML>
  <!ENTITY indexation_pipeline SYSTEM "../indexation/pipeline.xml" NDATA XML>
  <!ENTITY parametres_sdx SYSTEM "parametres_sdx.xml" NDATA XML>
]>

<webpage id="actions_pipelines"> 

  <head>
	 <title lang="fr">Pipelines</title>
	 <titleabbrev lang="fr">Pipelines</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_pipeline"><sgmltag class="element">sdx:pipeline</sgmltag></ulink> ; </para>
	 </listitem><listitem>
		<para><ulink url="#sdx_locations"><sgmltag class="element">sdx:transformation</sgmltag></ulink>.</para>
	 </listitem>
  </itemizedlist>
  <section id="concepts" lang="fr"> 
	 <title>Concepts clés</title>
	 <para>Si SDX est avant un outil de recherche de documents XML, celle-ci n'est possible qu'au sein d'une collection de documents dûment renseignée et définie auprès de SDX lui-même. Cette collection est confondue avec la notion de 
		<olink targetdocent="bases_documents">base de documents</olink> dans SDX. Elle comprend, entre autres, la référence des documents accompagnée d'un certain nombre de champs et de valeurs jugés pertinents pour retrouver le document en question. La construction de cette collection comprend plusieurs phases. Celle qui nous intéresse ici est le référencement des documents et la création des couples champs/valeurs cités plus haut, autrement dit : l'<olink targetdocent="indexation">indexation</olink>.</para>
	 <para>Une indexation peut se faire de manière statique ou dynamique, comme c'est le souvent le cas avec SDX. Les éléments de l'API-XSP de SDX décrits ici permettent de définir une indexation dynamique de documents à partir de la définition de 
		<olink targetdocent="indexation_pipeline">pipelines d'indexation</olink>.</para>
	 <para>On se reportera aux sections 
		<olink targetdocent="bases_documents"><citetitle>Bases de documents</citetitle></olink> et 
		<olink targetdocent="indexation"><citetitle>Indexation</citetitle></olink> pour approfondir ces notions.</para>
  </section> 
  <section lang="fr" id="sdx_pipeline"> 
	 <title><sgmltag class="element">sdx:pipeline</sgmltag>(CHECK)</title>
	 <para>L'action décrite ici permet de définir les 
		<olink targetdocent="indexation_pipeline">pipelines d'indexation</olink> introduits 
		<ulink url="#concepts">plus haut</ulink>. Chaque pipeline est représenté par une ou plusieurs transformations générant une structure XML simple contenant des couples champs/valeurs, à parti d'un document source.</para>
	 <informaltable lang="fr"> 
		<tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="1.00*"/><colspec colnum="2" colname="col2" colwidth="1.98*"/><tbody> 
			 <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-pipelines.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2"><sgmltag class="element">sdx:pipeline</sgmltag> est utilisable dans un 
				  <olink localinfo="sdx_index" targetdocent="actions_indexation"><sgmltag class="element">sdx:index</sgmltag></olink>, dans une page XSP (pipeline dynamique) ou dans le fichier <filename>application.xconf</filename> (pipeline statique).</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2"><sgmltag class="element">sdx:pipeline</sgmltag> comprend des éléments 
				  <ulink url="#sdx_transformation"><sgmltag class="element">sdx:transformation</sgmltag></ulink> pour définir les différentes étapes de construction de l'XML d'indexation. Il comprend également d'autres éléments ou attributs  : el, sdx:parameter, xsp:text, att (TODO).</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable> 
	 <example lang="fr" id="exemple_sdx_pipeline_01"> 
		<title>Un pipeline d'indexation dynamique</title>
		<para>L'exemple suivant veut profiter de l'opportunité des pipelines d'indexation dynamiques pour tester un paramètre devant régler le type de transformation à adopter. Un paramètre de session est testé pour cela (voir la section 
		  <olink targetdocent="parametres_sdx"><citetitle>La logique des paramètres SDX</citetitle></olink> pour approfondir cette notion). Noter l'emploi de <sgmltag class="element">sdx:pipeline</sgmltag> dans un élément déclencheur de l'indexation (<olink localinfo="sdx_uploaddocument" targetdocent="actions_indexation"><sgmltag class="element">sdx:uploadDocument</sgmltag></olink>) lui-même régi par un élément testant la qualité de l'utilisateur (<olink localinfo="sdx_userisadmin" targetdocent="actions_identification"><sgmltag class="element">sdx:userIsAdmin</sgmltag></olink>) : l'indexation ne s'effectuera pas si l'utilisateur n'est pas assimilé à l'administrateur.</para>
		<programlisting>
&lt;sdx:page&gt;
 &lt;sdx:userIsAdmin&gt;
  &lt;sdx:uploadDocument ...&gt;
   &lt;sdx:pipeline&gt;
    &lt;sdx:parameter name="type" valueSession="architecture"&gt;
     &lt;sdx:success&gt;
      &lt;sdx:transformation
       id="architecture"
       type="XSLT"
       src="archi.xsl"
      /&gt;
     &lt;/sdx:success&gt;
     &lt;sdx:fallback&gt;
      &lt;sdx:transformation
       id="mobilier"
       type="mobilier"
       src="mob.xsl"
      /&gt;
     &lt;/sdx:fallback&gt;
    &lt;/sdx:parameter&gt;
   &lt;/sdx:pipeline&gt;
  &lt;/sdx:uploadDocument&gt;
 &lt;/sdx:userIsAdmin&gt;
&lt;/sdx:page&gt;
</programlisting> 
	 </example> 
	 <para>On trouvera un 
		<olink localinfo="section02_exemple01" targetdocent="indexation_pipeline">exemple complet de pipeline dynamique</olink> à la section 
		<olink targetdocent="indexation_pipeline"><citetitle>Pipeline d'indexation</citetitle></olink>.</para>
  </section> 
  <section lang="fr" id="sdx_transformation"> 
	 <title><sgmltag class="element">sdx:transformation</sgmltag>(CHECK)</title>
	 <para>Le processus d'<olink targetdocent="indexation">indexation</olink> (rapidement décrit 
		<ulink url="#concepts">plus haut</ulink>) comprend une phase de transformation du document XML. Cela signifie qu'il est nécessaire de formater la source avant de l'intégrer dans une 
		<olink targetdocent="bases_documents">base de documents</olink>.</para>
	 <para>De la même manière que 
		<ulink url="#sdx_pipeline"><sgmltag class="element">sdx:pipeline</sgmltag></ulink>, <sgmltag class="element">sdx:transformation</sgmltag> entre dans le 
		<olink targetdocent="indexation">processus d'indexation de documents</olink>. Cette action n'est jamais employée seule ; elle est toujours (FIXME) incluse dans la définition d'un pipeline. A noter qu'un pipeline peut contenir une ou plusieurs transformations.</para>
	 <para>Une transformation est définie par la feuille de style employée pour la création du nouveau document. L'URL de cette feuille peut être indiquer dans la page XSP ou comme paramètre HTTP.</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-pipelines.xsl</filename></entry> 
			 </row> 
			 <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">Seulement à l'intérieur d'un 
				  <ulink url="#sdx_pipeline"><sgmltag class="element">sdx:pipeline</sgmltag></ulink> (FIXME).</entry> 
			 </row> 
			 <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">Aucun.</entry> 
			 </row></tbody> 
		</tgroup> 
	 </informaltable><table lang="fr" id="sdx_transformation_param"> 
	 <title>Paramètres spécifiques</title>
	 <tgroup cols="3"><colspec colnum="1" colname="col1" colwidth="1.13*"/><colspec colnum="2" colname="col2" colwidth="4.26*"/><colspec colname="col3" colnum="3" colwidth="1.00*"/><thead> 
		  <row><entry colname="col1">Nom</entry><entry colname="col2">Description</entry><entry colname="col3"></entry> 
		  </row></thead><tbody> 
		  <row><entry colname="col1"><sgmltag class="attribute">type</sgmltag></entry><entry colname="col2">Défini le type de transformation (e.g. XSLT ou le nom de la classe Java).</entry><entry colname="col3">Facultatif (FIXME)</entry> 
		  </row> 
		  <row><entry colname="col1"><sgmltag class="attribute">src</sgmltag></entry><entry colname="col2">Identifie le feuille de style employée pour la transformation.</entry><entry colname="col3">Obligatoire</entry> 
		  </row> 
		  <row><entry colname="col1"><sgmltag class="attribute">keep</sgmltag></entry><entry colname="col2">Paramètre booléen (<sgmltag class="attvalue">true</sgmltag> ; <sgmltag class="attvalue">false</sgmltag>) commandant la conservation du documentation issu de la transformation pour affichage (cf. la section 
				<olink targetdocent="indexation_original"><citetitle>Document original, document d'usage</citetitle></olink>).</entry><entry colname="col3">Facultatif</entry> 
		  </row> 
		</tbody> 
	 </tgroup></table> 
	 <example lang="fr" id="exemple_sdx_transformation_01"> 
		<title>Le pipeline d'indexation de la base des utilisateurs</title>
		<para>La portion de code suivante reproduit le pipeline d'indexation employé dans toute application SDX pour gérer la base des utilisateurs. Le pipeline y est défini statiquement dans le fichier <filename>application.xconf</filename>. Il ne comprend qu'une opération de transformation, de type XSLT. L'URL de la feuille de style utilisée est relative au fichier <filename>application.xconf</filename>.</para>
		<programlisting>
&lt;sdx:application&gt;
 &lt;sdx:userDocumentBase&gt;
  ...
  &lt;sdx:index&gt;
   &lt;sdx:pipeline&gt;
    &lt;sdx:transformation
     id="step1"
     type="XSLT"
     src="/sdx/resources/indexation/index-identity.xsl"
    /&gt;
   &lt;/sdx:pipeline&gt;
  &lt;/sdx:index&gt;
 &lt;/sdx:userDocumentBase&gt;
&lt;/sdx:application&gt;
</programlisting> 
	 </example> 
  </section> 

</webpage> 
