Modélisation des chaînes éditoriales
SCENARIbuilder
SCENARIbuilder est l'environnement de conception des modèles documentaires Scenari. Il permet de paramétrer les primitives du méta-modèle de chaînes éditoriales (modeling) et de compiler un modèle documentaire sous la forme d'une archive de code source (wsppack) qui peut ensuite être installée dans SCENARIchain (Arribe et al., 2012[1] ; Arribe, 2014[2]).
Nous allons illustrer les différentes primitives de SCENARIbuilder en décrivant les étapes de conception d'une chaîne éditoriale très simple :
des sections composées d'un ensemble de blocs de texte et de sous-sections, ces dernières étant éventuellement des fragments autonomes (et donc réutilisables au sein de plusieurs sections) ;
une publication HTML de la section sous la forme d'un site web composé d'une page par section, chaque page étant accessible via un menu arborescent.
La primitive wspDefinition permet de déterminer les types de fragments qui pourront être instanciés par l'auteur, ainsi que les éventuelles publications qui leur seront associées. Dans notre exemple, la chaîne éditoriale permettra de créer uniquement des fragments de type section (section.model), et de publier ces derniers sous la forme d'un site web (site.generator) :
Primitives de document
La structuration des fragments est définie à partir des primitives de document telles que la compositionPrim :


Un set permet de rendre répétable la structure spécifiée (part) : ainsi, on pourra avoir plusieurs blocs et plusieurs sous-sections dans une section. L'attribut usage permet de préciser si la structure est obligatoire (required) ou facultative (optional). L'attribut internalized permet quant à lui de préciser si la structure sous-jacente est incluse dans le fichier XML courant (always), si elle constitue au contraire un fichier XML autonome lié par référence (never), ou bien si l'auteur a le choix entre ces deux alternatives (userDependant). Enfin, le texte d'un bloc est défini par une textPrim (text.model), tandis que les sections et les blocs sont titrés grâce à une titlePrim (titre.model). Des métadonnées plus élaborées peuvent être modélisées avec une dataFormPrim.
Générateurs
Les générateurs sont les primitives définissant les publications pour un format donné (HTML, OD...). Par exemple, un générateur web (webSiteGenerator) permet de publier les fragments XML au format HTML :

Parmi les différents éléments du générateur web, on note : une liste de templates de page ("squelette" HTML des pages du site) ; un dossier de skin (feuilles de style CSS) ; une liste de transformers (primitives de transformation, détaillées ci-dessous).
Primitives de transformation
Pour chaque primitive de document, il existe une primitive de transformation associée, relativement au générateur (compositionXhtmlTransf, dataFormXhtmlTransf, etc.). L'objet d'un transformer est de paramétrer la transformation XSL de la structure spécifiée (bloc.model dans le transformer ci-dessous) :

Le contenu d'un bloc est publié dans une structure HTML comportant notamment un heading (h1, h2, h3... en fonction de la profondeur) pour le titre. L'instruction sm:callSubModel permet d'appeler le transformer de la structure de niveau inférieur (ici, texte.transf).

Une page HTML est créée (sm:page) suivant le template "tpl", pour y accueillir le contenu des blocs de la section (bloc.transf est appelé via sm:callSubModel). Concernant les sous-sections, chacune d'entre elles occasionne la création d'une nouvelle page puisque ce transformer s'appelle récursivement.
Compilation du modèle
Une fois compilé via le wspDefinition (exemple.wspdef), le modèle documentaire est utilisable par l'auteur dans SCENARIchain (contenu inspiré de Wikipédia) :


Le fragment gbh.xml peut ensuite être publié au format web :
Ingénierie dirigée par les modèles
Un modèle est une représentation simplifiée de la réalité (Rothenberg, 1989[3]). Un méta-modèle est ce à quoi se conforme un modèle (Bézivin, 2005[4]). Par exemple, une carte géographique est un modèle puisqu'elle donne une vue simplifiée de la surface terrestre à l'échelle 1:1. De plus, la carte est "écrite" dans le langage graphique défini par sa légende, qui est donc le méta-modèle de la carte (ibid.[4]).
En développement logiciel, l'ingénierie dirigée par les modèles consiste à mettre au point un algorithme de transformation permettant de générer un système à partir d'un modèle (représentation simplifiée du système). Cet algorithme ne peut fonctionner que si le modèle est conforme à un méta-modèle définissant l'ensemble des modélisations possibles du système.
Les modèles documentaires des chaînes éditoriales Scenari sont conçus selon l'approche de l'ingénierie dirigée par les modèles (Arribe, 2014[2]). La conformité des différentes chaînes éditoriales au même méta-modèle (primitives) leur permet de partager des fonctions génériques (éditeur WYSIWYM, fonctionnalités de gestion, etc.). Autrement dit, le code spécifique de la chaîne éditoriale s'exécute en s'articulant au code générique de SCENARIchain.
La conception de chaînes éditoriales suivant l'approche de SCENARIbuilder permet finalement de combiner variabilité et efficacité (Arribe et al., 2012[1]) :
les primitives sont génériques ;
depuis le développement de SCENARIbuilder, les coûts de conception d'une chaîne éditoriale Scenari ont été divisé par dix.