Composants des fichiers de définition
Les définitions utilisées par le Centre de gestion pour déterminer le mode d'affichage d'objets tels que des outils, des objets métier ou des vues sont déterminées dans des fichiers XML de définition. Dans ces fichiers, chaque définition est constituée d'un ensemble d'éléments et d'attributs communs.
L'élément racine <Definitions> est présent dans chaque fichier XML de définition du Centre de gestion. Dans cet élément racine, chaque élément enfant direct est un élément de définition ou une déclaration d'image. Tous les autres types d'élément sont ignorés ou signalés comme erreur.
Les éléments de définition placés dans l'élément racine peuvent inclure différents sous-éléments et attributs afin de définir des informations pour afficher des outils, des objets métier, des vues, etc. Chaque définition doit être définie en tant qu'élément enfant direct de l'élément racine <Definitions>. Chaque élément de définition doit inclure l'attribut definitionName pour identifier la définition. Le nom d'élément de définition est le nom non qualifié de la définition de superclasse.
La valeur de l'attribut definitionName correspond au nom du module AMD qui génère la définition. La valeur definitionName et le nom de module AMD doivent inclure le chemin relatif du package et le nom simple de la définition. Par exemple, la valeur definitionName d'une propriété de case à cocher est "cmc/foundation/BaseCheckBox". "cmc/foundation" identifie le package de composants et "BaseCheckbox", le nom simple de la définition.
definitionName, les éléments et les attributs suivants peuvent être utilisés pour créer des définitions dans un fichier de définition. Variables
Les variables sont définies dans une définition en incluant l'élément <variable>. Toutes les variables des définitions sont des variables d'instance. Si vous créez ou personnalisez une définition, vous pouvez définir des variables pour les définitions de classe et de singleton. Vous ne pouvez pas définir d'élément <variable> pour les définitions d'instance de classe. Lorsque vous déterminez une définition d'instance de classe, vous pouvez cependant préciser des valeurs pour des variables en configurant des attributs comme composants de l'élément de définition d'instance de classe. Le nom de l'attribut dans l'élément de définition d'instance de classe doit être identique au nom de variable.
Lorsque vous déterminez une définition de classe ou de singleton, vous pouvez préciser des valeurs pour des variables héritées, en configurant également des attributs comme composants de l'élément de définition. Le nom de l'attribut dans l'élément de définition doit être identique au nom de variable. Si vous placez la valeur d'attribut entre ${ et }, celle-ci est interprétée comme une expression. En cas de modification de la valeur de l'expression, la variable est automatiquement mise à jour. Vous ne pouvez pas utiliser la syntaxe de l'expression lors de la spécification des valeurs de variable pour les définitions d'instance de classe.
Lorsqu'une variable est référencée dans JavaScript, elle est accessible en tant que propriété d'une instance de définition (de classe ou de singleton). Si vous devez modifier la valeur d'une variable dans JavaScript, utilisez la méthode setVariable. Avec cette méthode, vous vous assurez que les événements se déclenchent correctement.
<variable> ne peuvent pas avoir d'élément enfant et de corps. Les éléments <variable> peuvent inclure les attributs suivants :| Nom de l'attribut | Description |
|---|---|
name |
Nom de la variable. |
type |
Type de la variable. Les variables peuvent être définies avec les types suivants :
|
value |
Valeur de la variable. La valeur définie pour une variable dépend du type de cette variable. |
initialValue |
Valeur initiale de la variable. Cette valeur n'est définie que lors de l'initialisation de la variable. Elle n'est pas mise à jour lorsque l'expression est modifiée. |
Méthodes
Pour indiquer des méthodes dans des définitions, incluez l'élément <method>. Cet élément peut être déclaré comme élément enfant de définitions de classe ou de singleton. Vous ne pouvez pas inclure d'élément <method> dans une définition d'instance de classe.
this.inherited(arguments)<method> est le corps JavaScript de la méthode. Les éléments <method> ne peuvent pas avoir d'élément enfant, mais ils peuvent inclure les attributs suivants :| Nom de l'attribut | Description |
|---|---|
name |
Nom de la méthode. |
args |
Liste (séparée par des virgules) de noms d'argument. |
Gestionnaires
Les gestionnaires sont indiqués dans les définitions à l'aide de l'élément <handler>. L'élément <handler> peut être déclaré comme élément enfant de définitions de classe ou de singleton. Vous ne pouvez pas inclure d'élément <handler> dans une définition d'instance de classe.
<handler> est le corps JavaScript du gestionnaire. Les éléments <handler> ne peuvent pas avoir d'élément enfant, mais ils peuvent inclure les attributs suivants :| Nom de l'attribut | Description |
|---|---|
name |
Nom de l'événement pour la variable. Toutes les variables sont associées à un nom d'événement. Le nom d'événement est "onVariableName", où VariableName représente le nom de la variable. |
eventSource |
Expression identifiant la source d'événement. N'incluez pas cet attribut si la source d'événement est l'objet en cours. |
Regroupements de ressources
Un regroupement de ressources est déclaré comme définition d'instance de classe. La définition de classe de base des regroupements de ressources est la définition de classe cmc/foundation/ResourceBundle.
<ResourceBundle baseName="com.ibm.commerce.foundation.client.lobtools.properties.FoundationLOB"
definitionName="cmc/foundation/FoundationResources" singletonDefinition="true"/><dependency localName="pageLayoutResources" moduleName="cmc/pagelayout/PageLayoutResources"/>pageLayoutResources.Singleton.layoutSlotTooltip.stringvariableName="${<resourceBundleModuleLocalname>.<resourceBundleKeyName>}" Le code suivant montre comment définir une variable avec cette syntaxe : promptText="${pageLayoutResources.pageLayoutAssignmentList}"ResourceBundleKey pour toutes les clés. Le servlet de service de module associé à la structure du Management Center recherche les clés dans le regroupement de ressources spécifié et inclut automatiquement les instances ResourceBundleKey dans le module AMD généré.Eléments de définition enfant
Les définitions sont hiérarchiques. Vous pouvez déterminer pour une définition des définitions enfant implicitement créées en même temps que l'instance de définition de base (parent). Les éléments enfants de définition sont similaires aux éléments de définition. Le nom de l'élément doit être le nom d'une classe. Si la classe est introuvable dans le package par défaut,"cmc/foundation", l'attribut de package doit être indiqué pour identifier le package. D'autres attributs peuvent être utilisés pour fournir des valeurs pour les valeurs des variables héritées. Les éléments enfants d'un élément de définition enfant ne doivent pas comporter d'élément <dependency>. Toutes les dépendances doivent être spécifiées comme élément enfant direct de l'élément de définition de base.N'indiquez pas l'attribut classDefinition ou singletonDefinition pour les éléments de définition enfant. Les attributs de variable associés aux éléments enfants de définition de classe ou de singleton suivent les mêmes règles que les éléments de définition de classe et de singleton.
Vous pouvez utiliser la syntaxe ${ } pour indiquer des valeurs d'expression pour les variables. Les attributs de variable associés aux éléments enfants de définition d'instance de classe suivent les mêmes règles que les éléments de définition d'instance de classe. Vous ne pouvez pas utiliser la syntaxe générale des expressions pour définir des variables, mais vous pouvez employer la syntaxe simplifiée des clés de regroupement de ressources.
Les éléments enfants de définition peuvent recevoir des noms à l'aide de l'attribut name. Cette variable appartient à l'instance de définition de base et peut être utilisée pour faire référence à des instances de définition enfant par leur nom. Le parent d'une instance de définition se trouve dans une propriété nommée "parent".
Par exemple, pour limiter la largeur d'une instance de définition à la largeur de l'instance de définition parent moins quatre pixels, déclarez width="${this.parent.width – 4}". Pour limiter la largeur d'une instance de définition à la largeur d'une autre instance de définition enfant nommée "a", déclarez width="${this.parent.a.width}".
Déclarations d'image
Les déclarations d'image sont utilisées dans les fichiers de définition pour associer des noms simples à des fichiers image (ou à des ensembles de fichiers image) pour représenter les différents états d'une image. Par exemple, une image peut posséder différents états selon le mode d'interaction du professionnel avec l'image (par exemple, mode normal, survol et sélection). Les déclarations d'image peuvent s'appliquer aux images dotées de l'extension de fichier .png, .gif ou .jpg.
<Image> peut être déclaré comme élément enfant de l'élément racine <Definitions> dans un fichier de définition. Les éléments <Image> incluent les attributs suivants : | Nom de l'attribut | Description |
|---|---|
src |
URL du fichier image. |
name |
Nom de l'image. Ce nom doit identifier l'image de manière unique. |
<ImageSet> peut être utilisé pour inclure toutes les images. Cet élément doit inclure un attribut name qui définit l'ensemble d'images de manière unique. Dans l'ensemble d'images, chaque image doit être définie dans des éléments enfant <Image> distincts de l'élément <ImageSet>. Le Management Center utilise la variable currentImage pour sélectionner l'image appropriée à employer dans un ensemble d'images. Dans un ensemble d'images, le premier élément <Image> répertorié est considéré comme l'image "1". Vous n'avez pas besoin d'inclure un attribut name pour chaque image d'un ensemble d'images.Modules AMD prédéfinis
Un certain nombre de zones de module AMD (Asynchronous Module Definition) sont disponibles pour utilisation dans des fichiers de définition. Ces modules sont directement codés en JavaScript et ne sont pas définis dans un fichier XML de définition. Ces modules peuvent vous aider à créer vos propres définitions dans des fichiers de définition.
Node : | Nom de variable | Type | Description |
|---|---|---|
UID |
number |
Identificateur unique du module. Cette propriété est en lecture seule. |
module |
object |
Objet du module. Cette propriété est en lecture seule. |
moduleName |
string |
Nom du module. Cette propriété est en lecture seule. |
id |
string |
Identificateur global unique permettant de créer une instance unique de ce noeud. Ne définissez cette variable que pour les définitions pouvant aboutir à une instance unique. L'objet peut être accessible par son nom en référençant la propriété nommée dans le module cmc/foundation/SingletonRegistry. |
classroot |
Node |
Lorsqu'une définition de classe est instanciée, l'objet racine est accessible par tous les descendants déclarés via la propriété classroot. Cette propriété est en lecture seule. |
name |
string |
Lorsqu'une définition enfant est instanciée, l'objet enfant est accessible sous la forme d'une propriété de l'objet parent via le nom spécifié. |
defaultplacement |
string |
Nom d'une vue de définition enfant à laquelle les nouveaux enfants doivent être associés. Il s'agit d'un immediateParent de la nouvelle instance enfant. |
initstage |
string |
Indication de la structure précisant le mode d'initialisation du noeud. Les valeurs suivantes sont reconnues par la structure :
|
placement |
string |
Placement du noeud. |
inited |
boolean |
Cette variable indique si le noeud est initialisé. Cette propriété est en lecture seule. |
isinited |
boolean |
A l'instar de la variable inited, cette variable indique si le nœud est initialisé. Cette propriété est en lecture seule. |
parent |
Node |
Noeud parent de l'instance. |
immediateParent |
Node |
Noeud parent direct de l'instance. |
childNodes |
Tableau de Node |
Tableau d'instances de noeud enfant. |
| Nom de la méthode | Arguments | Description |
|---|---|---|
completeInstantiation |
Aucun | Utilisez cette méthode pour terminer l'initialisation d'un nœud créé avec initStage="defer". |
init |
Aucun | Remplacez cette méthode afin de fournir une logique d'initialisation pour le noeud. Assurez-vous que la méthode de remplacement inclut un appel à this.inherited(arguments) |
destroy |
Aucun | Remplacez cette méthode pour libérer les ressources externes utilisées par le noeud. Assurez-vous que la méthode de remplacement inclut un appel à this.inherited(arguments) |
setVariable |
variableName– le nom de la variable. value – la nouvelle valeur de la variable. |
Utilisez cette méthode pour définir les valeurs des variables de manière explicite en JavaScript. Avec cette méthode, vous pouvez vous assurer que les gestionnaires d'événements sont appelés correctement. |