Définitions du Management Center

La structure du Management Center utilise les informations de configuration de fichiers XML pour contrôler l'affichage et le comportement des objets disponibles et employés dans le Management Center. Ces fichiers XML sont désignés "fichiers de définition".

Tous les fichiers de définition se trouvent dans le répertoire workspace_dir\WebContent\WEB-INF\src\xml et ses sous-répertoires. Lorsque vous créez vos propres fichiers de définition, incluez-les sous ce répertoire, dans un sous-répertoire personnalisé. N'incluez pas de fichier personnalisé dans le sous-répertoire commerce.

Les fichiers de définition peuvent contenir une ou plusieurs définitions. Il existe trois types de définitions qui sont utilisées dans les fichiers de définition Management Center : définitions de classes, définitions d'instances de classe et définitions de singleton.
Définition de classe
Les définitions de classe déterminent les classes utilisées par l'application Management Center. Le nom d'élément d'une définition de classe est le nom non qualifié de la superclasse. Si la superclasse est absente du package "cmc/foundation", le nom de package (par exemple, "cmc/catalog") doit être inclus dans la valeur de l'attribut package pour identifier complètement le nom de définition de superclasse. Toutes les définitions de classe doivent également comporter l'attribut classDefinition doté de la valeur "true".
Définition d'instance de classe
Les définitions d'instance de classe déterminent des instances de classe. Dans une définition d'instance de classe, une instance de classe définie est différenciée de toutes les autres instances de la même classe par les différentes valeurs des noms de variable de classe. Le nom de l'élément de définition d'instance de classe correspond au nom de la classe pour laquelle la définition est une instance. Si le nom de package de la classe n'est pas "cmc/foundation", pour l'identifier, la définition d'instance de classe doit inclure l'attribut package. Une déclaration de définition est supposée être une déclaration d'instance de classe lorsque les deux attributs classDefinition et singletonDefinition ne sont pas précisés. Vous ne pouvez pas ajouter du logique JavaScript en définissant des méthodes ou des gestionnaires pour des définitions d'instance de classe.
Définitions de singleton
Une définition de singleton détermine une classe de singleton, ce qui restreint l'instanciation d'une classe à une seule instance. Cette instance unique est créée lors du chargement du module AMD (Asynchronous Module Definition) correspondant. Le nom de l'élément de définition de singleton correspond au nom de la superclasse de singleton. Si la superclasse est absente du package "cmc/foundation", la définition de singleton doit inclure l'attribut de package. Toutes les définitions de singleton doivent comporter l'attribut singletonDefinition doté de la valeur "true".
Selon les objets et le comportement spécifiés dans un fichier de définition, celui-ci est rangé dans l'une des deux catégories : Fichiers restreints ou Fichiers personnalisables.
Fichiers restreints
Les fichiers restreints incluent des définitions de classe pour la fonctionnalité de base, commune à tous les outils du Management Center. Etant donné que ces fichiers restreints sont remplaçables lorsque vous installez des correctifs de maintenance ou une mise à niveau HCL Commerce, ne les modifiez pas. Tous les fichiers d'un répertoire restricted sont des fichiers restreints.
Fichiers personnalisables
Les fichiers personnalisables décrivent les objets gérés dans un outil du Management Center et la manière de les afficher. Lorsque vous installez des correctifs de maintenance ou une mise à niveau HCL Commerce, vos fichiers de personnalisation sont conservés. Vous pouvez utiliser, étendre ou modifier les classes dans des fichiers personnalisables lorsque vous personnalisez le Management Center.

Fichier, structure de définition et dépendances de définition

Chaque fichier de définition est nommé après la définition principale incluse dans le fichier. Par exemple, le fichier BundlePrimaryObjectDefiniton.xml inclut la définition "cmc/catalog/BaseBundlePrimaryObjectDefinition" qui détermine l'objet de base (ou objet principal) servant à dériver toutes les offres groupées d'entrées de catalogue et les offres groupées héritées.

L'élément racine <Definitions> est présent dans chaque fichier de définition. Dans cet élément racine, chaque élément enfant doit être une définition ou une déclaration d'image. Tout autre type d'élément est ignoré ou signalé comme erreur. Les définitions peuvent inclure des informations de configuration pour définir des outils, des objets métier et des vues. Une définition doit être définie en tant qu'enfant direct de l'élément racine <Definitions>. Pour indiquer ces définitions et ces déclarations d'image, différents éléments et attributs sont utilisés. Pour plus d'informations sur ces composants de définition, voir Composants des fichiers de définition.

Chaque définition incluse dans un fichier de définition est nommée dans une casse mixte, en utilisant le nom de package, l'objet en cours de définition et le suffixe de nom de classe. Par exemple, le nom de la définition permettant de rechercher toutes les catégories est "cmc/catalog/FindCategories".

Pour vous aider à définir un objet, une définition peut utiliser des définitions figurant dans le même fichier ou dans d'autres fichiers de définition. Par exemple, une définition peut inclure une déclaration de méthode qui utilise (dans une relation de référence ou de dépendance) une définition de classe ou de singleton pour employer l'objet (ou la vue) déterminé dans cette autre définition. Une dépendance ou une autre définition est déclarée en définissant un élément <dependency> en tant qu'élément enfant direct d'un élément de définition.

Un élément <dependency> doit inclure les attributs moduleName et localName. L'attribut moduleName identifie le nom de définition du module AMD généré à partir de la définition référencée. L'attribut localName identifie le nom de variable utilisé dans le code JavaScript local.

Si vous créez ou personnalisez une définition pour qu'elle dépende d'une définition de classe, vous devez supprimer la référence à la variable de module avec .Class pour accéder à la définition de classe. Si la définition dépend d'une définition de singleton, vous devez supprimer la référence à la variable de module avec .Singleton pour accéder à la définition de singleton.

L'extension d'une définition est possible sans modification directe de la définition d'origine ou du fichier qui la contient. Vous pouvez étendre une définition en créant une autre définition qui l'identifie comme définition de base. Utilisez l'attribut baseDefinition pour préciser le nom de la définition à étendre.

Par exemple, le fragment de code suivant identifie la définition d'objet principal Produits qui étend la définition "cmc/catalog/BaseCatalogEntryPrimaryObjectDefinition" et a une dépendance sur la définition "cmc/catalog/CatalogResources".

<Definitions>
  <PrimaryObjectDefinition baseDefinition="cmc/catalog/BaseCatalogEntryPrimaryObjectDefinition" 
    definitionName="cmc/catalog/BaseProductPrimaryObjectDefinition" detailsViewHeaderText="${catalogResources.UtilityPaneHeaderText}" 
    displayName="${catalogResources.product_DisplayName}" displayNameProperty="partnumber" helpLink="tasks/tpnaddpr.htm" 
    idProperty="catentryId" isBaseDefinition="true" newDisplayName="${catalogResources.product_NewDisplayName}" 
    newObjectMenuItemText="${catalogResources.contextMenuNewProduct}" objectGroups="CatalogEntry,Products,CatalogEntriesNotASKU" 
    propertiesDefinition="cmc/catalog/ProductProperties" searchType="FindAllCatalogEntries">
  <dependency localName="catalogResources" moduleName="cmc/catalog/CatalogResources"/>
  ...	 
  </PrimaryObjectDefinition>
</Definitions>

Création et personnalisation de fichiers de définition

Vous pouvez créer ou personnaliser des fichiers de définition pour définir l'affichage et le comportement de vos objets personnalisés. Si vous envisagez de créer et de personnaliser des fichiers de définition, veillez à suivre les instructions et les meilleures pratiques pour personnaliser le Management Center. Pour plus d'informations, voir Meilleures pratiques et instructions de modélisation pour la personnalisation du Management Center.

Lorsque vous ajoutez ou modifiez des fichiers de définition dans le répertoire workspace_dir\LOBTools\WebContent\WEB-INF\src\xml et ses sous-répertoires, vous n'avez pas besoin de redémarrer le serveur HCL Commerce. Les définitions modifiées et les nouvelles sont automatiquement détectées par le servlet de module d'après l'horodatage des fichiers de définition. Vous n'avez pas besoin de redémarrer le Management Center en fermant la fenêtre du navigateur du Management Center et en effaçant le cache de ce navigateur.

Différences relatives aux fichiers de définition à partir de HCL Commerce version 7

Dans HCL Commerce version 7, les fichiers de définition désignaient les fichiers structurés XML avec l'extension de fichier .def. Il s'agissait généralement de fichiers de définition d'objet métier ou de propriété. Dans la version 8, ces fichiers sont convertis dans la structure XML des fichiers de définition de classe et incluent l'extension de fichier .xml. Tous les fichiers OpenLaszlo (lzx) de la version 7 sont également convertis en fichiers de définition (.xml) dans la version 8. Avec ce changement, les répertoires workspace_dir\WebContent\WEB-INF\src\lzx\commerce et workspace_dir\WebContent\config\commerce de la version 7 sont fusionnés en répertoire workspace_dir\WebContent\WEB-INF\src\xml\commerce. Tous les fichiers de définition (.xml) se trouvent dans ce répertoire ou ses sous-répertoires.