Componentes del archivo de definición

Las definiciones que el Centro de gestión utiliza para determinar cómo visualizar objetos, tales como herramientas, objetos de negocio, vistas, etc., están definidas en los archivos XML de definición. Cada definición dentro de estos archivos se compone de un conjunto de elementos y atributos comunes.

Dentro de cada archivo XML de definición del Centro de gestión está la raíz del elemento <Definitions>. Dentro de este elemento raíz, cada elemento hijo directo es un elemento de definición o una declaración de imagen. Todos los demás tipos de elementos se ignoran o se marcan como erróneos.

Los elementos de definición dentro del elemento raíz pueden incluir diferentes elementos y atributos que definen la información para mostrar herramientas, objetos de negocio, vistas, etc. Cada definición debe estar definida como un elemento hijo directo del elemento <Definitions>. Cada elemento de definición debe incluir el atributo definitionName para identificar la definición. El nombre del elemento de definición es el nombre no cualificado de la definición de superclase.

El valor del atributo definitionName tiene el mismo nombre que el módulo AMD que se genera a partir de la definición. El valor definitionName y el nombre de módulo AMD deben incluir la vía de acceso relativa del paquete y el nombre simple de la definición. Por ejemplo, el valor definitionName para una propiedad de recuadro de selección es "cmc/foundation/BaseCheckBox". "cmc/foundation" identifica el paquete de componente y "BaseCheckbox" identifica el nombre simple de la definición.

Junto con el atributo definitionName, se pueden utilizar los elementos y atributos siguientes para crear definiciones dentro de un archivo de definición.

Variables

Las variables se definen dentro de una definición incluyendo el elemento <variable>. Todas las variables en las definiciones son variables de instancia. Si crea su propia definición o personaliza una definición, puede definir variables para las definiciones de clase y singleton. No puede definir elementos <variable> para definiciones de la instancia de clase. Sin embargo, cuando define una definición de instancia de clase, puede especificar valores para las variables definiendo atributos como parte del elemento de definición de la instancia de clase. El nombre del atributo en el elemento de definición de la instancia de la clase debe ser el mismo que el nombre de la variable.

Cuando define una definición de clase o de singleton, puede especificar también valores para las variables heredadas definiendo atributos como parte del elemento de definición. El nombre del atributo en el elemento de definición de la instancia debe ser el mismo que el nombre de la variable. Si al valor de atributo se le antepone la sintaxis ${ { y termina el valor con }}, el valor se interpreta como una expresión. Si el valor de la expresión cambia, la variable se actualiza automáticamente. No puede utilizar la sintaxis de expresión cuando especifique valores de variable para definiciones de instancia de clase.

Cuando una variable se referencia en JavaScript, se accede a ella como una propiedad de una instancia de una clase o de una definición de singleton. Si necesita modificar el valor de una variable en JavaScript, utilice el método setVariable. Con este método, se asegura de que los sucesos se desencadenan correctamente.

Los elementos <variable> no pueden tener ningún elemento hijo y ningún cuerpo. Los elementos <variable> pueden incluir los elementos y atributos siguientes:
Nombre del atributo Descripción:
name Nombre de la variable.
type El tipo de variable. Las variables se pueden definir con los siguientes tipos:
  • string
  • boolean
  • number
  • expression
value Valor de la variable. El valor que se ha establecido para una variable depende de la variable type.
initialValue El valor inicial de la variable. Este valor solamente se establece cuando la variable se inicializa. No se actualiza cuando la expresión cambia.

Métodos

Los métodos se definen en definiciones incluyendo el elemento <method>. Estos elementos se pueden declarar como un elemento hijo de definiciones de clase o definiciones de singleton. No puede incluir los elementos <method> dentro de una definición de instancia de clase.

Puede alterar temporalmente un método dentro de una subclase declarando un método que tiene el mismo nombre que el método que desea alterar temporalmente. Utilice la siguiente sintaxis para llamar al método alterado temporalmente desde el método de alteración temporal. Los argumentos que se pasan al método alterado temporalmente son los mismos que los que se pasa al método de alteración temporal.
this.inherited(arguments)
El cuerpo de un elemento <method> es el cuerpo JavaScript del método. Los elementos <method> no pueden tener elementos hijos, pero pueden incluir los atributos siguientes:
Nombre del atributo Descripción:
name Nombre del método.
args Una lista separada por comas de nombres de argumento.

Manejadores

Los manejadores se definen dentro de definiciones utilizando el elemento <handler>. Los elementos <handler> se pueden declarar como un elemento hijo de definiciones de clase o definiciones de singleton. No puede incluir los elementos <handler> dentro de una definición de instancia de clase.

El cuerpo de un elemento <handler> es el cuerpo JavaScript del método. Los elementos <handler> no pueden tener elementos hijo, pero pueden incluir los atributos siguientes:
Nombre del atributo Descripción:
name El nombre de suceso de la variable. Todas las variables tienen un nombre de suceso asociado. El nombre de suceso es "onVariableName", donde VariableName es el nombre de la variable.
eventSource Una expresión que identifica el origen del suceso. No incluya este atributo si el origen del suceso es el objeto actual.

Paquetes compuestos de recursos

Los paquetes compuestos de recursos se declaran como una definición de instancia de clase. La definición de clase base para los paquetes compuestos de recursos es la definición de clase cmc/foundation/ResourceBundle.

El fragmento de código siguiente muestra cómo declarar un paquete de recursos dentro de un archivo de definición:
<ResourceBundle baseName="com.ibm.commerce.foundation.client.lobtools.properties.FoundationLOB" 
definitionName="cmc/foundation/FoundationResources" singletonDefinition="true"/>
Cuando hace referencia a una serie de paquete compuesto de recursos dentro de una definición, debe incluir el paquete compuesto de recurso en un elemento de dependencia. El código siguiente muestra cómo definir un paquete compuesto de recursos en un elemento de dependencia:
<dependency localName="pageLayoutResources" moduleName="cmc/pagelayout/PageLayoutResources"/>
Si va a definir definiciones de clase o singleton, consulte las series del paquete compuesto de recursos identificando primero el singleton del paquete de recursos. A continuación, especifique la instancia clave del paquete de recursos y la propiedad de serie. El código siguiente muestra cómo hacer referencia a series de paquete de recursos para las definiciones de clase y singleton:
pageLayoutResources.Singleton.layoutSlotTooltip.string
Cuando define una definición de instancia de clase, puede establecer el valor de una variable heredada que está definida en un paquete compuesto de recursos utilizando la siguiente sintaxis simplificada: variableName="${<resourceBundleModuleLocalname>.<resourceBundleKeyName>}" El código siguiente muestra cómo establecer una variable con esta sintaxis:
promptText="${pageLayoutResources.pageLayoutAssignmentList}"
Nota: No es necesario que defina instancias de ResourceBundleKey para todas las claves. El módulo de servicio de servlet para la infraestructura del Management Center comprueba el paquete compuesto de recursos especificado para las claves e incluye automáticamente las instancias de ResourceBundleKey dentro del módulo de AMD generado.

Elementos de definición hijo

Las definiciones son jerárquicas. Puede definir definiciones hijo para una definición que se crean implícitamente cuando se crea la instancia de definición padre o base. Los elementos hijo de definición son similares a los elementos de la definición. El nombre del elemento debe ser el nombre de una clase. Si la clase no se encuentra en el paquete predeterminado, "cmc/foundation", debe especificarse el atributo del paquete para identificar el paquete. Se pueden utilizar otros atributos para proporcionar valores para los valores de las variables heredadas. Los elementos hijo dentro de un elemento de definición hijo no deben incluir elementos <dependency>. Deben especificarse todas las dependencias como elemento hijo directo del elemento de definición base.

No especifique el atributo classDefinition o singletonDefinition para los elementos de definición hijo. Los atributos de variables para los elementos hijo de definición de clase y singleton siguen las mismas reglas que los elementos de definición de clase y singleton.

Puede utilizar la sintaxis ${ } para especificar valores expresión para las variables. Los atributos de variables para los elementos hijo de definición de instancia de clase y singleton siguen las mismas reglas que los elementos de definición de instancia de clase. No puede utilizar la sintaxis de expresión general para establecer variables, pero puede utilizar la sintaxis clave del paquete compuesto de recursos simplificado.

Los elementos hijo de definición pueden ser nombres asignados mediante el atributo name. Esta variable es una variable de la instancia de definición de base, que puede utilizar para hacer referencia a instancias de definición hijo por el nombre. El padre de una instancia de definición se encuentra en una propiedad que se denomina padre.

Por ejemplo, si desea restringir la anchura de una instancia de definición para que sea la misma que la de la definición padre de instancia menos cuatro píxeles, declare width="${this.parent.width – 4}". Si desea restringir la anchura de una instancia de definición a la anchura de otra instancia de definición hijo que se denomina "a", declare width="${this.parent.a.width}".

Declaraciones de imagen

Las declaraciones de imágenes se utilizan en archivos de definición para asociar nombres simples con archivos de imagen o conjuntos de archivos de imagen que se pueden utilizar para representar distintos estados de una imagen. Por ejemplo, una imagen puede tener estados diferentes en función de cómo un usuario de empresa está interactuando con la imagen, como por ejemplo, pasar el puntero del ratón y seleccionada. Las declaraciones de imágenes pueden ser para imágenes con una extensión de archivo .png, .gif o .jpg.

Si una imagen consta de una sola imagen, el elemento <Image> se puede declarar como hijo directo del elemento raíz <Definitions> en un archivo de definición. El elemento <Image> puede incluir los elementos y atributos siguientes:
Nombre del atributo Descripción:
src El URL al archivo de imagen.
name El nombre de la imagen. Este nombre debe identificar de forma exclusiva la imagen.
Si una imagen puede tener estados diferentes, que requiere varias imágenes, se puede utilizar <ImageSet> para incluir todas las imágenes. Este elemento debe incluir un atributo name exclusivo que define de forma exclusiva el conjunto de imágenes. Cada imagen dentro del conjunto debe definirse en elementos hijo <Image> separados del elemento <ImageSet>. El Management Center utiliza la variable currentImage para seleccionar la imagen apropiada que se utiliza dentro de un conjunto de imágenes. El primer elemento <Image> que se lista dentro de un conjunto de imágenes se considera que es la imagen "1". No es necesario que incluya un atributo name para las imágenes individuales dentro de un conjunto de imágenes.

Módulos AMD predefinidos

Existe un número de módulos AMD predefinidos disponibles que se pueden utilizar en los archivos de definición. Estos módulos se codifican directamente en JavaScript y no se definen en ningún archivo XML de definición. Puede utilizarlos como ayuda para crear sus propias definiciones dentro de los archivos de definición.

El módulo cmc/foundation/Node define la clase base de todas las definiciones. Puede utilizar las variables siguientes con la clase Node:
Nombre de variable Tipo Descripción:
UID number Identificador exclusivo del módulo. Esta propiedad es de sólo lectura.
module object El objeto de módulo. Esta propiedad es de sólo lectura.
moduleName string El nombre de módulo. Esta propiedad es de sólo lectura.
id string Un identificador global para crear una instancia exclusiva de este nodo. Establezca esta variable sólo para las definiciones que pueden dar como resultado una sola instancia. El objeto al que se puede acceder por el nombre haciendo referencia a la propiedad con nombre del módulo cmc/foundation/SingletonRegistry.
classroot Node Cuando se crea una instancia de una definición de clase, se puede acceder el objeto raíz mediante alguno de los descendientes declarados a través de la propiedad classroot. Esta propiedad es de sólo lectura.
name string Cuando se crea una instancia de una definición hijo, se puede acceder al objeto hijo como propiedad del objeto padre a través del nombre especificado.
defaultplacement string El nombre de una vista de definición hijo a la que se van a adjuntar nuevos hijos. Es decir, el padre inmediato, immediateParent, de la nueva instancia hijo.
initstage string Una sugerencia para la infraestructura que indica cómo debe inicializarse este nodo. Los valores siguientes se reconocen mediante la infraestructura:
  • normal (valor predeterminado) – inicializar este nodo con el padre
  • defer – no inicializar este nodo hasta que se invoque explícitamente el método completeInstantiation.
placement string La colocación de este nodo.
inited boolean Esta variable indica si el nodo se ha inicializado. Esta propiedad es de sólo lectura.
isinited boolean Al igual que la variable inited, esta variable indica si el nodo se ha inicializado. Esta propiedad es de sólo lectura.
parent Node El nodo padre de esta instancia.
immediateParent Node El nodo padre directo de esta instancia.
childNodes Matriz deNode Una matriz de instancias de nodo hijo.
También puede utilizar los métodos siguientes con la clase Node:
Nombre de método Argumentos Descripción:
completeInstantiation Ninguna Utilice este método para completar la inicialización de un nodo que se crea con initStage="defer".
init Ninguna Altere temporalmente este método para proporcionar la lógica de inicialización del nodo. Asegúrese de que el método de alteración temporal incluye una llamada a this.inherited(arguments)
destroy Ninguna Altere temporalmente este método para liberar los recursos que el nodo utiliza. Asegúrese de que el método de alteración temporal incluye una llamada a this.inherited(arguments)
setVariable variableName– el nombre de la variable. value – el nuevo valor para la variable. Utilice este método para establecer explícitamente valores de variable en JavaScript. Con este método, puede asegurarse de que los manejadores de sucesos se invocan correctamente.