Premiers pas avec SCENARIbuilderHelloUniverse > Les données de type "formulaire" > Présentation et modélisation
page précédentepage suivante

Présentation et modélisation

Comme vous avez pu le voir dans l'analyse, les planètes ont aussi des données précises : nom, diamètre, masse, que nous qualifierons de méta-données. Ce type d'information n'est pas bien adapté à une structure type "bloc de contenu" ou "ensemble de paragraphes" car trop peu contrainte. Nous n'utiliserons donc pas les compositionPrim, mais un nouveau type de primitive de contenu : les dataformPrim.

dataForm
Primitive de Métadonnées

Permet de créer des modèles de champs de données structurées. Se rapproche de la représentation d’un formulaire.

Quand utiliser des dataforms ?

La primitive dataform est très importante pour une modélisation fine des documents : contrainte de champs courts, ou de typage précis (nombre, date) ; ou encore pour ajouter des paramètres de publications (pour les modélisateurs expérimentés uniquement).

Intégration des dataforms

Vous avez déjà fait usage de méta-données : le titre est une meta donnée avec une seule information.

Dans astrobj.model, vous allez supprimer la référence à sTitle.model

Supprimer la référence ≠ Supprimer l’item

à la place, créez un nouvel item : dans l'écran de création des items : Primitives -> Primitives de métadonnées -> dataFormPrim. de nom astrobjMeta.model ou astrobjM.model

Compléments

Les conventions de nommages que l’on se donne tendent vers l’ajout simplement du suffixe M (exemple : rootM.model) qui suffit à nous indiquer rapidement que l’item est une méta donnée d’un certain modèle root.model.

Renseignez les champs namespace, prefixe et code

créez le premier field (champ de données) de la dataform : le nom de l'astre.

Compléments

Pour déterminer le caractère obligatoire ou facultatif d'un champ, il faut spécifier une valeur à l'attribut occurences.

  • one : obligatoire.
  • one or more : obligatoire combiné à plusieurs occurences ;
  • zero or one : optionnel ;
  • zero or more : optionnel combiné à plusieurs occurences.

Il n'y a pas d'attribut required ou optional mais plutôt occurrence.

Ajoutez un champ Photo de type refItem autorisant l’insertion d’une image de type jpeg

Les formats d’images sont disponibles dans l’espace binaries

Compléments
Les champs de type refItem

Si vous voulez créer un champ qui pointe vers un autre item, comme par exemple pour associer une image à vos méta-données de l'astre, vous allez définir un 2ème champ "photo" avec un type refItem. Comme pour les parts des compositions, vous y placez des allowedModel.

Mettez les modèles ainsi renseignés dans le wspdef dans le publicClasses pour que l'auteur puisse les créer.

Nous souhaitons maintenant demander à l'auteur le type de planète, ce type va toujours appartenir à un ensemble fini de possibilités : "étoile", "tellurique" ou "chtonienne". Créez un champ de type enum

Compléments

Un champ enum contient des couples key / name, le premier étant l'identifiant utilisé à l'intérieur du fichier XML de stockage produit par Scenari, le deuxième étant le nom tel qu'affiché dans l'interface auteur (il est aussi possible de le réutiliser en publication).

Pour les satellites qui contiennent 2 données : le nom et la distance, l'approche la plus intuitive serait de créer une autre dataform et au lieu de déclarer un nouveau field, de faire un subData. Cette approche est tout à fait valable, mais comme nos données sont relativement simples, nous pouvons plutôt faire un group "satellite" et ajouter à l'intérieur 2 field "nom" et "distance".

Recopiez les éléments suivants dans le fichier astrobjMeta.model:

Nous avons vu que les dataforms sont une liste de champs. Lorsque le contexte s'y prête, vous devez choisir un des champs de la dataform qui sera utilisé en tant que titre. Dans notre exemple, c'est le champ ayant pour code name (le nom de l'astre) qui sera utilisé comme titre.

Titrez vos meta

Dans le fichier astrobjMeta.model, allez au niveau de la balise storage puis double-cliquez sur la balise fullTitleBuilder et taper name dans refCode.

Jusqu'à présent nous avons uniquement parlé de "titres simples". Dans certains cas, nous pourrions être amené à demander à l'auteur 2 types de titres, un fullTitle et un shortTitle, pour pouvoir soit être exhaustif lorsque l'on dispose d'une ligne complète pour publier le titre, soit de faire un petit lien de menu ou synthétiser encore plus lorsque l'on doit faire tenir ce titre en quelques caractères. Pour utiliser ce genre de "double titre", insérer dans le fichier part.model soit le fichier title.model des modelets à la place de sTitle, soit une dataform dans laquelle vous allez définir les 2 mécanismes fullTitleBuilder et shortTitleBuilder.

Autres points de départs pour les dataforms

Il existe au moins 3 méthodes pour intégrer des dataforms :

  • sm:meta : rattaché à l'ensemble de la composition (comme c'est le cas ici)
  • sm:part -> sm:meta : rattaché uniquement à une part
  • subdata : à l'intérieur d'une dataform, permet de pointer vers une autre dataform.
Résultat dans SCENARItest
Construction du titre

La construction du titre est une partie très importante de la modélisation. Une dataform pouvant contenir tout un tas de champs, il est absolument nécessaire d’indiquer explicitement le ou lesquels de ces champs peuvent constituer le titre.

Ce n’est pas parce qu’on nomme un champ title ou name que le titre sera automatiquement l’un de ces champs.

page précédentepage suivante
A propos...© scenari-platform.org 2011Réalisé avec Scenari