Guide SCENARIbuilder

Mise en place

Structure

Introduction

Dans cette partie, nous allons copier HelloWorld sous le nom HelloUniverse, et travailler sur cette copie en ajoutant et modifiant des fichiers .model pour que l'éditeur Scenari prenne en compte nos nouveaux paragraphes de données.

Point de départ
Vous partez du même atelier que celui du tutoriel précédent

Copiez le répertoire"helloworld à la racine de votre atelier (cliquez sur son titre pour sélectionner la racine).

Ensuite, quelques renommages sont à effectuer

Vous devez changer les codes des fichiers .model, .generator et .wspdef pour que chaque code soit unique.

Vous pouvez renommer les fichiers, changer les name des items pour plus de clarté.

Vérification

Vérifiez l'écran de contrôle et assurez vous par test que votre copie est pleinement fonctionnelle.

Namespace

Vous n'avez pas besoin de changer les namespaces et prefix tant que les codes sont uniques. Vous pourriez aussi faire l'inverse : changer uniquement les namespaces mais garder le même code. C'est le couple namespace + code qui identifie un item.

Mais pour faire une déclinaison de modèle

Pour faire une déclinaison d'un modèle, vous n'êtes pas obligé de faire toute cette série de renommage, mais vous pouvez aussi copier vos fichiers dans un atelier différent.

Ou prendre le risque de conserver les 2 répertoires côte à côte sans changer les codes, à partir du moment où il n'y a aucune interaction d'items entre les 2 répertoires il n'y aura pas d'erreur. Mais alors, surveillez bien l'écran de contrôle et assurez vous que les auteurs n'utiliseront pas l'autre version du modèle sans avoir conscience des risques ou différences. (ceci est toutefois déconseillé)

Les librairies

En cas de modèles différents qui partagent des .model ou ressources communes, le mieux est de créer un répertoire "librairie" qui contiendra l'intersection des 2 modèles, un ensemble d'items SCENARIbuilder réutilisables à l'intérieur de .model d'un même atelier. Ce n'est pas le cas entre nos 2 modèles puisque notre micro-helloworld ne contient qu'un seul fichier .model.

Nouvelle compositionPrim pour astrobj.model et partie.model

Copiez 2 fois le fichier universe.model et nommez les copies part.model et astrobj.model dans le même répertoire. Nous allons simplifier l'ensemble "titre + contenu" en un seule composition partie. Vous allez mettre le sTitle en tant que meta et ajouter le contenu de la part.

astrobj.model

Nous définissons les blocs de texte suivant la méthode que nous avions choisie précédemment : un astre est souvent décrit par 4 parties de texte prédéfinies, et plusieurs paragraphes libres.

Les 4 premiers paragraphes sont à l'extérieur du set, ce qui force l'auteur à respecter leur ordre. Ils sont en required="optional", l'auteur peut choisir d'en laisser certaines vides par manque d'information. Contrairement au helloworld, notre titre est placé dans la composition du "sous-modèle" et non à l'intérieur du paragraphe, il est intégré à l'item part.model.

Référencer astrobj.model depuis universe.model

Il ne reste plus qu'à modifier notre élément racine pour faire appel à astrobj.model (car tout simplement : l'univers contient des astres). Un choix intéressant est d'obliger l'auteur à créer un fichier distinct par  planète : Internalized = never.

Dernière étape, pour que astrobj.model puisse être utilisé en tant qu'objet externe, il faut qu'il soit dans les publicClasses de notre compositionPrim.

Tests

Vous pouvez à nouveau tester votre modèle mais attention : les transformeurs sont "cassés"... Ils ne correspondent plus aux .model et les générateurs ne fonctionnent plus. Pour le moment, seul l'éditeur est fonctionnel.

Publication HTML

Introduction

Nous avons modifié la structure du modèle, mais les transformeurs utilisent toujours les anciennes données : résultat, le générateur ne fonctionne plus du tout ou ne publie presque rien. Il faut donc aussi modifier les transformeurs, les "réparer" pour que les publications fonctionnent à nouveau.

universe.transf

Que ce soit en HTML ou en OD, le transformeur est toujours partiellement exact, avec juste une différence : le titre est intégré dans les metas du sous modèle, et non intégré à la part.

Les commentaires

Comme dans SCENARIchain, il est possible de désactiver des lignes en le passant en commentaire par clic droit -> passer en commentaire. Il est alors affiché en vert dans l'éditeur.

Mode "navigation" et mode "content"

Lorsque vous créez un transformer ( universe.transf) pour faire de l'HTML, il y a 2 possibilités principales de contexte :

  • Navigation : vous n'avez pas encore créé la page, vous définissez l'arborescence de votre site en folder et pages
  • Content : votre page existe et vous allez maintenant rajouter du contenu dans les transformeurs

universe.model (et helloworld.model) est notre item racine de la publication et nous devons commencer en mode navigation. Nous y avons défini une page, et n'en définirons aucune autre à l'avenir, donc dans les transformers des submodels, nous devons utiliser le mode content.

sm:page

sm:page permet de créer physiquement les fichiers html qui constitueront le site web.

astrobj.transf

Le transformer pour astrobj.model pourrait être réalisé de manière très simple :

for code="*" > WHeadingBlock > (title > subModelTitle) | callSubModel

Mais nous voulons que chaque partie "Atmosphére", "Surface"... ait un titre par défaut si l'auteur ne le précise pas. Voici un moyen de le faire, créez ce nouveau transformer :

On sélectionne avec plusieurs for chaque part une par une grâce au code. Lorsque vous précisez plusieurs title à la suite l'un de l'autre, c'est le premier existant qui est choisi : si le subModelTitle existe, le titre de l'auteur sera utilisé. Pour les parties libres nous ne leur donnons pas de titre si l'auteur ne le spécifie pas.

part.transf

Cette fois-ci, c'est plus simple : il s'agit juste de transférer le travail de transformation à la primitive texte : for code="*" > callSubModel.

Mettez à jour les transflists

Mettez à jour le fichier .transflist du générateur HTML, ajoutez-y les 2 nouveaux transformers.

checklist

En cas d'erreur, pensez toujours à vérifier :

  • Les écrans de contrôles
  • La correspondance entre les codes des .model et .transf
  • Que les codes des parts et les codes des .models sont uniques
  • Que vos TransfList sont complètes
  • Que vous n'avez pas mis de transformers OD dans un générateur HTML ou inversement
  • Que vous avez fait les bons choix entre navigation ou content dans les XhtmlTransf (l'écran de contrôle peut vous aider sur ce point)
  • Que vous n'avez pas mélangé les appels : entre callSubModelTitle et callPartTitle par exemple
  • Que vous n'avez pas d'accent dans les noms de fichier : les accents sont nuisibles et sources d'incompatibilité entre les plateformes (conseil aussi valable pour SCENARIchain)
  • Que votre modèle ne comporte pas de nom de code, de fichier ou d'axis anormalement long : si la longueur totale du chemin d'un fichier dépasse 255 caractères, cela peux créer des problèmes sous Windows. SCENARIbuilder crée des sous répertoires de travail avec les codes que vous utilisez dans votre modèle, restez donc raisonnable.
  • Que vous n'avez pas oublié d'enregistrer vos modifications avant de lancer vos nouvelles compilations

Publication OD

Pour l'OpenDocument Text, il n'y a aucune difficulté supplémentaire, vous devez faire les mêmes changements ou nouveaux transformers que pour le HTML. Pensez à modifier le for dans universe.transf : il y a toujours for code="hello", qu'il faut mettre en for code="*". Vous devez aussi refaire le stylage pour obtenir un résultat plus esthétique, mais cela fera l'objet d'une autre partie dans ce guide.

(c) scenari-platform.org 2007