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.
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). Collez ce répertoire à la racine de votre atelier et renommez-le en helloUniverse.
Ensuite, quelques renommages sont à effectuer
helloworld.packmake, .wspdef , et .wsptest -> hellouniverse.packmake etc.
Changer la clé keyWsp et le name du wspdef.
Renommer helloworld.model en universe.model et changer son code et son name
Renommer les deux transformers helloworld.transf (od et web) en universe.transf
Renommer les dossiers des générateurs, les générateurs, leur skin, template, transflist
Changer le code des générateurs.
Vérification
Vérifiez l'écran de contrôle et assurez vous par test que votre copie est pleinement fonctionnelle, en compilant un SCENARItest
Vous n'avez pas besoin de changer les namespaces et prefix[1] 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.
En général on n’utilise qu’un seul namespace par atelier, il identifie le nom du projet dans son ensemble.
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é).
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.
Nous utilisons base et binaries comme des librairies.
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.
Ouvrez le fichier part.model et mettez sTitle en tant que meta générale
Supprimez le set et créez un sm:part à la place, de code part, de name Partie, toujours internalisé, obligatoire et de modèle sTxt.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 usage="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.
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.
Pour que astrobj.model puisse être utilisé en tant qu'objet externe[2], il faut qu'il soit dans les publicClasses de notre hellouniverse.wspdef.
placez vous dans le wspdef
cliquez sur l'étoile d'insertion se situant sous la balise publicClasses et choisissez la balise class
glissez-déposez le fichier astrobj.model sur l'item vide se situant à côté de cette balise.
Sous la balise publicClasses, vous avez maintenant deux balises class pointant vers les fichiers astrobj.model et universe.model.

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.
Dans les cas courants, vous allez déclarer toujours le même namespace et préfixe pour tous les fichiers d'un atelier builder. L'intérêt principal de ces informations est de permettre à différents modélisateurs de partager des modèles avec le même nom. Ces noms sont utilisés en interne dans les fichiers de contenu que l'auteur va enregistrer par les éditeurs Scenari. Le préfixe doit être court et ne pas commencer par la lettre "s" qui est réservée (s pour scenari).
Un item externe est un contenu faisant l'objet d'un item autonome, apparaissant dans le système de fichiers.
