Nodos y Atributos del Esquema
Para la definición de objeto de negocio, la finalidad del esquema es crear un enlace entre el esquema y un objeto de mantenimiento. Para la definición de servicio de negocio, está especificando el enlace entre el esquema y un servicio (ya sea un servicio general, un servicio de búsqueda o un servicio de objeto de mantenimiento). Para la definición de script de servicio, está definiendo la API para transmitir información desde el script y hacia él. La siguiente documentación proporciona una lista completa de los nodos y los atributos XML disponibles para la creación de un esquema.
Contenido
El Tipo de Datos de un Elemento de Campo
Consideraciones de la Hora Standard
Fijación por Defecto y Variables del Sistema
Extensión de Seguridad para Script de Servicio
Acción de Sustitución para un Servicio de Negocio
Los Cuatro Tipos de Elementos
Un elemento de esquema puede ser uno de cuatro tipos de estructura diferentes. Tenga en cuenta que hay dos clases de tipos de elementos: los nodos estructurales de grupo y de lista, y los nodos que contienen datos de campo y datos sin procesar.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
type= | "field" |
El tipo de campo es el tipo por defecto para cualquier elemento que no esté etiquetado explícitamente como algo distinto de un campo. Por lo tanto, casi nunca es necesario etiquetar explícitamente un elemento como campo. Tenga en cuenta que un elemento de campo, a diferencia de un grupo o lista, contiene información en sus propios nodos, en lugar de en otros nodos. |
|
"group" |
El elemento de grupo en general es un elemento estructural solo del esquema, en cuyo caso no tiene mapeo. Tenga en cuenta que, cuando se agrupan varios elementos que se usan todos para mapear una estructura XML de un campo CLOB/XML de un registro controlado por objeto de negocio, es posible que el mapeo se realice en el nivel de grupo. |
Ejemplo en el que se usa un grupo para crear una estructura
Ejemplo en el que el grupo incluye el mapeo:
|
|
"list" |
El nodo de lista es un nodo estructural, como el nodo de grupo. La única diferencia es que la estructura de lista tiene la capacidad de repetirse muchas veces en un documento XML. |
Ejemplo de un esquema con una lista:
Ejemplo de un esquema con una lista:
|
|
"raw" |
El tipo de datos sin procesar se usa para capturar un segmento de texto sin procesar que no tiene ninguna estructura inherente asociada. |
Ejemplo de una instancia XML para el esquema anterior:
|
El Tipo de Datos de un Elemento de Campo
De los cuatro tipos de elementos diferentes, solo un campo puede tener un tipo de datos.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
dataType= | "string" |
Por defecto, un elemento de campo es una cadena. Por lo tanto, no se requiere especificar el tipo de datos de cadena. |
|
"number" |
Define un elemento que es un número. Nota: Las indicaciones de Interface de Usuario incluyen una configuración para Suprimir el Formato Automático de Números.
Nota: Use el atributo currencyRef para que se despliegue automáticamente el símbolo de divisa que se asocia con el código de divisa al que se hace referencia. Este formato ignora las posiciones decimales de divisa, lo cual lo autoriza a desplegar un símbolo de divisa para una unidad de tarifa con muchos decimales.
|
Ejemplos
|
|
"money"
Atributos adicionales opcionales currencyRef="element name" |
Define un elemento que representa un importe monetario. La referencia de divisa es opcional y, si se deja en blanco, se usa la divisa de instalación. El formato y la validación automáticos se aplican en función de la divisa. Por ejemplo, el símbolo de divisa se muestra cuando se realiza la presentación automática. Además, el número de posiciones decimales no debe superar el número válido definido para la divisa. Nota: Consulte Referencia a Otros Elementos para obtener información acerca de la sintaxis soportada para hacer referencia a otros elementos.
|
|
|
"lookup"
Atributo adicional requerido lookup="field name" |
Define un elemento que tiene valores válidos definidos usando una consulta. Se requiere el campo de consulta. |
|
|
"lookupBO"
Atributo adicional requerido lookupBO="bo name" |
Define un elemento que tiene valores válidos definidos usando una consulta extensible. Se requiere el objeto de negocio de la consulta extensible. |
|
|
"boolean" |
Define un elemento que tiene los valores "Y" y "N". |
|
|
"date" |
Define un elemento que representa una fecha. |
|
|
"dateTime" |
Define un elemento que representa una fecha y una hora. Nota: Consulte Consideraciones de la Hora Standard para obtener información acerca de la configuración adicional disponible para los campos de fecha y hora que representan la hora standard.
|
|
|
"time" |
Define un elemento que representa una hora. |
|
|
"uri" |
Define un elemento que captura un Identificador Uniforme de Recursos. Los elementos definidos con este tipo soportan la Sustitución y la Lista de Permitidos de URI, como se describe en Referencias a URIs. |
|
Referencia a Otros Elementos
Hay varios atributos que autorizan a hacer una referencia a otro elemento en el mismo esquema. La sintaxis soportada de la referencia de XPath es la misma en todos los casos. En esta sección, se proporcionan ejemplos con el atributo de referencia por defecto (defaultRef).
Referencia a un elemento relacionado:
<schema>
<id mapField="ACCT_ID" required="true"/>
<altId defaultRef="id" required="true"/>
</schema>
Referencia a un elemento en un grupo superior:
<schema>
<id mapField="ACCT_ID" required="true"/>
<msgInfo type="group" mapXML="XML_FIELD">
<altId defaultRef="../id" required="true"/>
</msgInfo>
</schema>
Referencia a un elemento en un grupo inferior:
<schema>
<id mapField="ACCT_ID" defaultRef="msgInfo/altId" required="true"/>
<msgInfo type="group" mapXML="XML_FIELD">
<altId required="true"/>
</msgInfo>
</schema>
Referencia a un elemento en otro grupo:
<schema>
<acctInfo type="group">
<id mapField="ACCT_ID" required="true"/>
</acctInfo>
<msgInfo type="group" mapXML="XML_FIELD">
<altId defaultRef="../acctInfo/altId" required="true"/>
</msgInfo>
</schema>
Consideraciones de la Hora Standard
La mayoría de los campos de fecha/hora representan una hora "legal", de modo que, si una zona horaria cambia los relojes en función del horario de invierno y de verano, el campo de fecha/hora captura la hora actual observada. Sin embargo, algunos campos de fecha/hora deben capturarse siempre en la hora standard a fin de evitar confusiones y ambigüedades. Un buen ejemplo es la fecha y la hora relacionadas con datos de intervalo detallados. Para obtener más información, consulte Diseño de Zonas Horarias.
Al definir un elemento con dataType="dateTime", de manera opcional, puede establecer el valor stdTime="true" a fin de indicar que los datos capturados en el elemento siempre representan la hora standard en la zona horaria "base". La zona horaria "base" se especifica en las opciones de instalación.
Ejemplo:
<schema>
<startTime dataType="Time" stdTime="true"/>
</schema>
Si la zona horaria que representa el campo de fecha/hora no se encuentra en la zona horaria de instalación, use el valor opcional stdTimeRef="XPath to time zone element" en un elemento de fecha/hora para indicar que el elemento representa la hora standard e indica qué zona horaria usar. Consulte Referencia a Otros Elementos para obtener información acerca de la sintaxis soportada para hacer referencia a otros elementos. .
Ejemplo:
<schema>
<alternateTimeZone fkRef="F1-TZONE" suppress="true"/>
<startDateTime dataType="dateTime" stdTimeRef="alternateTimeZone"/>
</schema>
Es posible que existan casos en los que los valores de fecha/hora se capturan como hora standard, pero se deben desplegar usando una zona horaria diferente. En este caso, el atributo displayRef="XPath" se puede usar además del atributo correspondiente que identifica la zona horaria en la que se capturaron los datos. Consulte Referencia a Otros Elementos para conocer la sintaxis soportada.
<schema>
<displayTimeZone fkRef="F1-TZONE" suppress="true"/>
<startDateTime dataType="dateTime" stdTime="true" displayRef="displayTimeZone"/>
</schema>
Atributos de Mapeo
Al crear el esquema, puede elegir uno de los siguientes atributos de mapeo.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
mapField= | "field name" |
En el caso de un objeto de negocio, el atributo mapField se usa para identificar la columna de base de datos con la que está relacionado el elemento. Para los esquemas de servicio de negocio, el atributo mapField= se usa para enlazar un elemento de esquema con un elemento de servicio. |
|
mapChild= | "table name" |
El atributo mapChild se usa solo para el mapeo de objetos de negocio. Se usa de dos maneras:
|
Ejemplo de una lista en una tabla secundaria en un Objeto de Negocio:
|
mapList= | "list name" |
El atributo mapList se usa solo para el mapeo de servicios de negocio. Se usa de dos maneras:
|
Ejemplo de una lista en un servicio de negocio:
|
mapXML= | "field name" |
El atributo mapXML se usa en general para mapear estructuras XML en campos CLOB/XML del servicio. Tenga en cuenta que, cuando usa mapXML para mapear una estructura de grupo o lista (type="list" o type="group"), no es necesario que mapee todos los elementos secundarios de la estructura. También es posible mapear elementos de lista en un campo CLOB asociado con el elemento secundario de la lista. |
|
isPrimeKey= | "true" |
Debe especificar una clave primaria para una lista definida en un elemento XML mapeado (type="list" mapXML="CLOB"). El marco usa la clave primaria para determinar si es necesario agregar, actualizar o suprimir un elemento de lista durante la actualización de un objeto de negocio. Nota: No es necesario especificar la clave primaria para una lista de objetos de negocio mapeada a una lista de objetos de mantenimiento. Cuando se mapea una lista física, la clave primaria se deriva de los metadatos físicos existentes.
|
|
orderBy= | “XPath asc|desc, XPath asc|desc" |
Por defecto, una lista definida en un elemento XML mapeado (type="list" mapXML="CLOB") se ordena desde el primer elemento de la lista. Se puede especificar un orden de clasificación diferente usando el atributo orderBy. El valor de atributo es una lista de valores separados por compa del campo XPaths (en relación con el elemento de lista) con un orden de clasificación opcional (el orden por defecto es el ascendente). Nota: Esta opción solo está disponible para las listas mapeadas como XML en los objetos de negocio.
|
|
Atributos Descriptivos
Los siguientes atributos se pueden usar para describir un elemento de esquema y proporcionar configuración adicional en relación con el elemento. En general, estos atributos resultan útiles solo para elementos de campo.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
<!-- comment --> |
Use esta opción para agregar un comentario a un esquema usando caracteres especiales de apertura y de cierre: <!-- y -->. |
|
|
description= | "text" |
La descripción de un elemento se puede usar para proporcionar una descripción interna del elemento para ayudar al lector del esquema a comprender el motivo de negocio del elemento. |
|
label= | "text" |
La etiqueta de un elemento debe ser una información breve que, en general, precede al elemento en una interface de usuario. |
|
required= | "true" |
Se usa para requerir la existencia de un elemento durante la interacción de objetos. Nota: Para los esquemas incluidos, el atributo required="true" no se procesa en esquemas de objetos de negocio y servicios de negocio cuando estos se incluyen en un esquema de script de servicio. Así se soporta la capacidad de que el script de servicio complete los elementos requeridos antes de invocar un objeto de negocio o servicio de negocio embebidos desde el script de servicio.
|
|
mdField= | "field code" |
El atributo de campo de metadatos se usa para asociar un elemento con los metadatos de un campo. El campo define el tipo de dato y también su etiqueta y el texto de ayuda. Si enlaza un elemento con un campo de metadatos, no necesita especificar ninguno de estos atributos. Nota: Para un esquema de objeto de negocio, se usa el atributo mapField para derivar el tipo de datos y la etiqueta. Si es necesario, se puede proporcionar un atributo mdField para sustituir dichos atributos. Si el elemento se mapea a una columna XML, se necesita el atributo mdField para proporcionar la etiqueta y el tipo de datos adecuados.
|
|
fkRef= | "Código de Referencia de Clave Foránea" |
Si el elemento es una clave foránea, la definición de la Referencia de Clave Foránea activa la validación de marco del elemento durante la interacción de esquema y proporciona automáticamente descripciones y capacidad de navegación. |
|
private= | "true" |
Si un elemento se marca como privado, este no se puede exponer en la interacción de esquema. Nota: Un elemento privado requiere un valor por defecto.
|
|
suppress= | "true" |
Esta configuración evita que un elemento aparezca en interfaces de usuario generadas automáticamente. Nota: Este atributo se puede especificar en un grupo, en cuyo caso todos los elementos del grupo se suprimen.
Nota: Consulte Fijación de Valores por Defecto y Variables del Sistema para obtener información relacionada con los valores por defecto para los elementos suprimidos.
|
|
"blank" |
Con esta configuración, la presentación automática de la Interface de Usuario en modo de despliegue oculta los elementos si su valor está en blanco. De todos modos, todavía se puede modificar el elemento en el mapa de entrada, esté o no en blanco. |
|
|
"input" |
Con esta configuración, la presentación automática de la Interface de Usuario suprime el elemento para la entrada, aunque es posible que se siga mostrando si no está en blanco. Nota: Los elementos marcados como suppress="input" se comportan como si estuvieran configurados como suppress="blank". Si el valor está en blanco, no se despliega ningún valor en los mapas de entrada o despliegue. Si el valor del elemento está presente, el elemento se despliega tanto en el mapa de entrada como en el de despliegue.
Nota: Consulte Fijación de Valores por Defecto y Variables del Sistema para obtener información relacionada con los valores por defecto para los elementos suprimidos.
|
|
|
noAudit= | "true" |
Esta configuración evita que un elemento aparezca como un elemento cambiado en el lugar de conector de auditoría del objeto de negocio. Si está especificado en un nodo de lista o grupo, se aplica a todo el nodo. No se puede especificar en un nodo raíz de esquema, solo en los elementos de esquema. Nota: Este atributo solo se aplica a los esquemas de objeto de negocio.
|
|
storeEmptyNodes= | "true" |
Por defecto, los nodos vacíos se remueven de una instancia de objeto de negocio cuando se graban. Esta configuración permite que un grupo o un elemento de lista mantenga explícitamente sus nodos vacíos. Este atributo puede ser útil en situaciones en las que los datos de objetos de negocio se intercambian con un sistema externo y es necesario distinguir entre un valor vacío para un elemento que participa en la sincronización y un elemento que no participa y, por lo tanto, se omite directamente del mensaje. Nota: Esto solo está disponible para elementos de grupo y lista.
|
|
emitEmptyGroups= | "true" |
Por defecto, los nodos vacíos no se incluyen en la salida de un objeto de negocio o de una llamada de servicio de negocio. Este atributo se define en el nodo de esquema de nivel superior, lo que permite que los nodos vacíos de todos los grupos y elementos de lista se incluyan en la salida. Este atributo puede ser útil en las mismas situaciones que requieran el uso del atributo storeEmptyNodes=. Nota: Esto solo está disponible para esquemas de objetos de negocio y servicios de negocio.
|
|
emitEmptyElements= | "true" |
Este atributo es similar al atributo emitEmptyGroups=, pero también puede especificarse en el nivel de campo. El atributo se aplica a todos los tipos de esquema. |
|
adheresToDA= | "lista de nombres de áreas de datos separados por comas" |
Este atributo se aplica a los nodos de esquema, grupo y lista. Afirma que este nodo de subesquema debe "parecerse" al esquema de una de las áreas de datos listadas, por razones de polimorfismo en general. Nota: El enfoque recomendado para aplicar la estructura de un área de datos compartida es incluirla en el esquema. Este atributo debería limitarse a los casos de uso en los que no es posible incluir el área de datos.
|
|
Constantes de Esquema
Hay algunos esquemas propios del producto cuyo diseño garantiza que se establezca un valor por defecto en el esquema, pero en ellos el valor es específico de la implementación y, por ende, el producto no puede definirlo. En estas situaciones, el producto puede usar una técnica llamada constante de esquema. El diseño del esquema incluye una constante declarada. En el momento de la implementación, una tarea de configuración incluye la definición del valor adecuado para la constante.
Por ejemplo, imagine que el producto proporciona un algoritmo que crea un mensaje de salida cuando se cumple cierta condición. El tipo de mensaje de salida que se debe usar debe ser configurado por la implementación. Para usar una constante de esquema a fin de definir el tipo de mensaje de salida, el producto base configurará lo siguiente:
-
Se define un valor de consulta de tipo de opción para la consulta F1CN_OPT_TYP_FLG. Por ejemplo, M202: Tipo de Mensaje de Salida de Finalización de Actividad con el Nombre de Valor Java de outmsgCompletion
-
El esquema base que se usa para crear el mensaje de salida de "actividad finalizada" hace referencia a la constante de esquema que usa el Nombre de Valor Java del valor de consulta del tipo de opción
... <outboundMessageType mapField="OUTMSG_TYPE_CD" default="%Constant(outmsgCompletion)"/> ...
En el momento de la implementación, los usuarios administrativos configuran el tipo de mensaje de salida adecuado para la "finalización de actividad". Después, navegan a Configuración de Característica, eligen el tipo de función Constantes de Esquema, eligen el tipo de opción Tipo de Mensaje de Salida de Finalización de Actividad e ingresan el tipo de mensaje de salida recién creado en el valor de opción.
Las constantes de esquema también se pueden usar en la sintaxis de nivelado para definir los elementos de fila requeridos para el nivelado.
Fijación por Defecto y Variables del Sistema
El atributo por defecto se puede usar para definir valores por defecto en los elementos de campo y en los elementos de fila requeridos para nivelado. Puede establecer un campo por defecto en una constante o en una de las distintas variables del sistema.
Si se requiere un elemento, se aplica el valor por defecto en el nivel de servidor al agregar o cambiar el registro cuando no se proporciona ningún valor para este elemento.
Si un elemento es opcional, se puede configurar un valor por defecto como sugerencia para el usuario al completar el registro en la interface de usuario en el modo Agregar. Los usuarios deberían poder remover el valor por defecto para este tipo de elemento y el sistema no intentará completarlo en el momento de grabar.
El procedimiento standard para el mantenimiento de nuestra "lista" es mostrar una fila vacía para una nueva lista que un usuario puede elegir completar o no. Por lo tanto, no se muestran los valores por defecto de la interface de usuario para los elementos de la lista.
No es recomendable configurar un atributo por defecto para un elemento opcional que no sea editable ni visible en la interface de usuario en el modo Agregar (por ejemplo, un elemento con suppress="true" o suppress="input", o un elemento de lista cuyo valor por defecto no se muestra según el punto anterior). El valor por defecto para este tipo de elemento aún se aplica, pero el usuario no tiene la posibilidad de restablecer el valor. Esto podría generar inconsistencias, ya que no se aplican valores por defecto en los campos opcionales agregados por un caso de uso que no sea la interacción con la Interface de Usuario.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
default= | "value" | Use este atributo para establecer por defecto un elemento en un valor especificado. Qué valores son válidos depende del valor dataType. |
|
"%CurrentDate" | Se usa para establecer por defecto el elemento en la fecha actual. Solo se aplica a los elementos de fecha. |
|
|
"%CurrentDateTime" | Se usa para establecer por defecto el elemento en el valor de fecha/hora actuales. Solo se aplica a los elementos de fecha/hora. |
|
|
"%StandardDateTime" | Se usa para establecer por defecto el valor de fecha/hora standard. El valor de fecha/hora standard es idéntico al de fecha/hora actuales, salvo que esté activado el horario de verano para la zona horaria base. Se puede usar con el atributo stdTime. Nota: Consulte Consideraciones de la Hora Standard para obtener más información.
|
|
|
"%ProcessDate" | Puede establecer por defecto la fecha de proceso. La fecha de proceso difiere de la fecha actual porque la fecha de proceso permanece constante durante el transcurso de la ejecución del proceso. La fecha actual refleja la fecha actual de procesamiento. Es similar a la fecha hábil de lote, que es un parámetro de lote standard. |
|
|
"%ProcessDateTime" | Es similar a "%ProcessDate", pero es para los campos de fecha/hora. |
|
|
"%CurrentUser" | Se usa para establecer por defecto el elemento en el usuario actual. |
|
|
"%CurrentUserTimeZone" | Se usa para establecer por defecto el elemento en la zona horaria del usuario actual. Si no se encuentra la zona horaria del usuario actual, se usa la zona horaria de instalación. |
|
|
"%CurrentUserLanguage" | Se usa para establecer por defecto el elemento en el idioma del usuario actual. |
|
|
"%InstallationCurrency" | Se usa para establecer por defecto la divisa del registro de instalación. |
|
|
"%InstallationCountry" | Puede establecer por defecto el país del registro de instalación. |
|
|
"%InstallationLanguage" | Puede establecer por defecto el idioma del registro de instalación. |
|
|
"%Constant( )" | Puede establecer por defecto un valor de elemento usando una constante de esquema. | A continuación se proporciona un ejemplo de una constante de esquema usada como valor por defecto, donde el Nombre de Valor Java del Valor de Consulta es "customerLanguage".
|
|
"%Context( )" | Puede establecer por defecto un valor incluido en una variable de contexto. Advertencia: Las variables de contexto deben inicializarse dentro de un script de servidor antes de que se pueda aplicar el contexto por defecto del esquema. Para obtener más información, consulte Variables de Contexto.
|
Ejemplo de variable de contexto usada como valor por defecto:
Nota: Al definir una variable de contexto en el scripting, se debe incluir el prefijo $$. Al hacer referencia a la variable en la sintaxis %Context( ), no se incluye el prefijo.
|
|
defaultRef= | "XPath" |
Use este atributo para establecer por defecto el valor de un elemento en el valor de otro elemento. |
Consulte Referencia a Otros Elementos para obtener información acerca de la sintaxis soportada para hacer referencia a otros elementos. |
Nodos y Atributos de Nivelado
El término "nivelado" se usa para describir la acción de definir uno o varios elementos únicos para un esquema que en realidad forman parte de una lista dentro del objeto de mantenimiento. Se puede efectuar el nivelado si hay otros atributos de la lista que se pueden definir para describir exclusivamente uno o varios elementos. Un caso de uso común del nivelado es una característica. En lugar de definir las características de un objeto usando una recopilación donde el usuario debe elegir el tipo de característica y, después, definir el valor, las características se definen como elementos reales con la etiqueta correspondiente ya desplegada. Esta técnica permite al diseñador del esquema y a la interface de usuario desplegar cada característica por separado en la ubicación lógica de la interface de usuario en lugar de desplegarlas todas juntas.
Identificación de la Lista o la Tabla Secundaria
Al nivelar una tabla secundaria, se requiere el nodo de fila para identificar la lista/tabla secundaria de la que proviene el elemento. En el nodo de fila, debe definirse al menos un elemento con una definición de is= que garantice que el elemento sea una fila única en la base de datos. También puede definir elementos o campos en la fila que se suprimen y se completan usando la configuración de valor por defecto.
-
Para un objeto de negocio, el nodo de fila define la tabla secundaria a la que pertenece el campo nivelado.
La sintaxis es <row mapChild="table name">. Este ejemplo es para la lista de personas de una cuenta en el producto Customer Care and Billing. Una persona se puede marcar como persona "principal". Aquí se ilustra cómo definir un elemento explícito para la ID de persona principal a fin de simplificar las referencias de dicho campo. Forma parte de la tabla secundaria CI_ACCT_PER. La gran diferencia es que el valor MAIN_CUST_SW está definido como verdadero (y solo una fila puede tener ese valor).
<custId mapField="PER_ID" mdField="CM-MainCust"> <row mapChild="CI_ACCT_PER"> <MAIN_CUST_SW is="true" /> <ACCT_REL_TYPE_CD default="MAIN" /> </row> </custId>
Nota: En el ejemplo de arriba, se muestra que el nodo de fila también puede definir elementos dentro de la lista que se suprimen y a los cuales se les asigna un valor por defecto. Esta sintaxis no se usa nunca para identificar una fila en particular. Tenga en cuenta que un valor por defecto puede ser una cadena literal o una variable de sistema. -
Para un servicio de negocio, el nodo de fila identifica el nombre de la lista a la que pertenece el campo nivelado.
La sintaxis es <row mapList="list name">. En este ejemplo, se muestra cómo se nivelan dos registros de una lista en función de un valor de campo y una descripción.
<selectList type="list" mapList="DE"> <value mapField="COL_VALUE"> <row mapList="DE_VAL"> <SEQNO is="2"/> </row> </value> <description mapField="COL_VALUE"> <row mapList="DE_VAL"> <SEQNO is="3"/> </row> </description> </selectList>
Identificación Exclusiva de una Lista o Campo Nivelado
La sintaxis is= en una fila o un elemento rowFilter se usa para identificar la fila de manera exclusiva.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
is= | "value" | Use este atributo para hacer referencia a un valor de manera directa. |
|
"%Constant( )" | Puede configurar un elemento nivelado usando una constante de esquema. Durante una interacción de servicio, el valor de la constante de esquema se usa para identificar el elemento nivelado en su fila secundaria. |
Ejemplo de una constante de esquema usada en la sintaxis de nivelado donde el Nombre de Valor Java del valor de campo de Consulta es "cmRate".
|
|
"%n" | El valor de sustitución %n se usa para hacer referencia a una instancia de lista relativa. Una instancia de lista relativa se usa en general para configurar un elemento nivelado para una tabla secundaria codificada mediante un número de secuencia. El valor de n debe ser un número entero positivo. Durante una interacción de lectura de objeto de negocio, se devuelve la instancia de lista relativa (posición) especificada por el número entero. | Ejemplo con una instancia de lista relativa donde se devuelve la primera instancia de la fila.
|
Nivelado de un Tipo de Característica Predefinida
Si el campo nivelado se encuentra en una recopilación de características, y el tipo de característica es una característica predefinida, la presentación automática de Interface de Usuario genera una lista desplegable que incluye los valores válidos. Por ejemplo, el siguiente esquema genera una lista desplegable para el elemento Uso, en la cual se muestran los valores válidos del tipo de característica Uso de Motivo de Estado (F1–SRUSG).
<usage mdField="STATUS_RSN_USAGE" mapField="CHAR_VAL">
<row mapChild="F1_BUS_OBJ_STATUS_RSN_CHAR">
<CHAR_TYPE_CD is="F1-SRUSG"/>
<SEQ_NUM is="1"/>
</row>
</usage>
Definición de Múltiples Elementos de la Lista
Si se intenta incluir múltiples columnas de una misma lista, el sistema proporciona una notación abreviada para copiar las reglas de nivelado definidas en otro elemento para que no sea necesario repetir las reglas de nivelado. Para ello, el nodo de fila incluye el atributo rowRef e indica el otro nombre de elemento que define la información de mapeo. En el siguiente ejemplo, se ilustra el nivelado de los campos ID de Cliente y Recibe Copia de Factura de la misma lista de Personas para una Cuenta (donde MAIN_CUST_SW está definido como verdadero).
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<copyBill mapField="RECEIVE_COPY_SW" rowRef="custId"/>
Tenga en cuenta que la notación anteriormente mencionada también ilustra que el valor rowRef se puede definir directamente en la definición de atributo del elemento.
Nivelado en Profundidad de Dos Capas
Si el servicio u objeto de mantenimiento tiene listas anidadas en una profundidad de dos capas, el sistema soporta el nivelado de un elemento en un elemento nivelado. Esta técnica también usa el atributo rowRef. El nivelado del segundo nivel hace referencia al elemento nivelado del primer nivel. En el siguiente ejemplo, se ilustra el nivelado de una característica en un elemento denominado legalContact para el cliente "principal". Observe que el elemento legalContact tiene dos nodos de fila: uno para hacer referencia a la información de nivelado para el registro principal y otro para definir la tabla secundaria.
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<legalContact mapField="CHAR_VAL_FK1">
<row rowRef="custId">
<row mapChild="CI_ACCT_PER_CHAR" >
<CHAR_TYPE_CD is="LEGAL" />
</row>
</row>
</legalContact>
Tenga en cuenta que la notación anteriormente mencionada también ilustra que el valor rowRef se puede definir como un atributo de un nodo de fila en lugar de definirlo directamente en la definición de atributo del elemento.
Definición de una Lista Nivelada
En algunas ocasiones, una lista o tabla secundaria soporta múltiples valores del mismo "tipo", y estos deben presentarse en una lista. Para continuar con el ejemplo anterior, la lista de personas de una cuenta puede identificar a una persona como "principal". Esta persona se ha nivelado a un único elemento (con el tipo de relación de cuenta establecido por defecto y suprimido). Para mantener a las otras personas relacionadas con una cuenta, puede definir una lista en la que cada fila captura la ID de Persona y el Tipo de Relación de Cuenta.
En lugar de un nodo de fila, la lista nivelada se configura con un elemento rowFilter. En el siguiente esquema, se ilustra el ejemplo descrito. El nodo de lista define la tabla secundaria. El elemento rowFilter incluye los criterios que identifican las filas en la tabla a incluir. Los elementos de la lista se definen en el nodo de lista, fuera del elemento rowFilter.
<custId mapField="PER_ID">
<row mapChild="CI_ACCT_PER">
<MAIN_CUST_SW is="true" />
<ACCT_REL_TYPE_CD default="MAIN" />
</row>
</custId>
<miscPersons type="list" mapChild="CI_ACCT_PER">
<rowFilter>
<MAIN_CUST_SW is="false" />
</rowFilter>
<relType mapField="ACCT_REL_TYPE_CD"/>
<personId mapField="PER_ID"/>
</custId>
Tenga en cuenta que el sistema valida que, si un esquema contiene elementos únicos nivelados y listas niveladas de la misma tabla secundaria, los criterios que definen lo que los hace únicos deben ser análogos.
Nivelado de una Lista con Fecha Efectiva
Hay algunas listas de la aplicación que tienen fecha efectiva (e incluso otras que tienen fecha y hora efectivas). Por ejemplo, hay algunas recopilaciones de características con fecha efectiva. En esas recopilaciones, el diseño captura un único valor para un tipo de característica que puede cambiar con el transcurso del tiempo. No está preparado para soportar múltiples valores de características vigentes a la vez.
Existen algunos objetos de mantenimiento que tienen características con fecha efectiva y ninguna característica basada en secuencia. En el caso de esas entidades, las implementaciones pueden usar la característica para definir un campo adicional que no requiera fechas efectivas.
Al considerar para su esquema el diseño de un elemento que represente un valor en una recopilación con fecha efectiva, tenga en cuenta si el valor se utiliza en procesos (como el cálculo de una factura), de modo que sea importante capturar los cambios de valor a lo largo del tiempo.
- Si no es importante rastrear los cambios de valor, la recomendación es definir la fecha efectiva en un valor fijo en el esquema. (Se presentan ejemplos a continuación).
- Si es importante rastrear los cambios de valor, debe considerar cómo desea diseñar el esquema.
- Una opción es definir una lista nivelada, como se describe más arriba. Tanto el valor como la fecha efectiva son elementos de esta lista. En este caso de uso, usted administra la lista al igual que cualquier otra. Puede agregar o remover valores.
- Otra opción es definir un valor único nivelado en el esquema. Con esta opción, al recuperar el registro, se devuelve el último valor efectivo. En este diseño, la pregunta importante es cómo se define la fecha de referencia.
Elementos Nivelados en los Que No Se Rastrean los Cambios
A continuación, se proporciona un ejemplo de cómo nivelar un elemento en una recopilación con fecha efectiva donde no es necesario que el valor tenga una fecha efectiva. En este caso, la recomendación es simplemente realizar una codificación rígida de la fecha en el atributo is=.
<schema>
<externalReference mapField="ADHOC_CHAR_VAL" mdField="CM_EXT_REF" dataType="string">
<row mapChild="CI_SA_CHAR">
<CHAR_TYPE is="CM_EXT_REF"/>
<EFFDT is="2000-01-01"/>
</row>
</externalReference>
</schema>
Elementos Nivelados en los Que los Cambios Tienen Fecha Efectiva
Si desea que el esquema de Objeto de Negocio nivele un valor con fecha efectiva para rastrear los cambios a lo largo del tiempo, el valor nivelado representará la última entrada efectiva. En este caso, la recomendación es definir explícitamente el campo de fecha o fecha/hora como un elemento. Existe una sintaxis para el atributo is= que indica que el campo de fecha explícito es la fecha que se utilizará para el valor.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
is= | "%effectiveDate( )" | Use esta configuración para indicar que la fecha que se debe usar es el valor de otro elemento.
Nota: Consulte Referencia a Otros Elementos para obtener información acerca de la sintaxis soportada para hacer referencia a otros elementos.
|
|
"%effectiveDateTime( )" | Use esta configuración para indicar que la fecha/hora que se debe usar es el valor de otro elemento. Nota: Consulte Referencia a Otros Elementos para obtener información acerca de la sintaxis soportada para hacer referencia a otros elementos.
|
|
Debe considerar si el elemento explícito de fecha o fecha/hora debería desplegarse en la interface de usuario cuando se muestra el campo nivelado o si debería suprimirse. Los diseñadores también deben tener en cuenta el diálogo del usuario para actualizar el valor. Podría ser más intuitivo que el campo nivelado sea de solo despliegue y tenga un diálogo separado para actualizar el valor con fecha efectiva.
Para esta opción, la sugerencia es que la página de mantenimiento del objeto incluya una zona separada que muestre el historial de los valores con fecha efectiva a lo largo del tiempo. El último valor también puede incluirse en esa zona.
Tenga en cuenta que, por motivos de compatibilidad con versiones anteriores, el sistema también soporta las siguientes opciones. No obstante, no son recomendables. Definen implícitamente la fecha de referencia como la fecha actual en todo momento. Las opciones soportan la adición de nuevas filas con fecha efectiva cuando el valor cambia. No obstante, la técnica también origina nuevas filas con fecha efectiva cuando se actualizan otros elementos del mismo esquema. Las nuevas filas tendrán la fecha o la fecha/hora actuales con el mismo valor de fila porque la fecha o la fecha/hora de referencia es la fecha actual, lo cual es un cambio. El producto no recomienda administrar una característica con fecha efectiva sin definir la fecha o fecha/hora como un elemento explícito.
Mnemotécnico | Valores Válidos | Descripción | Ejemplos |
---|---|---|---|
is= | "%effectiveDate" |
No se recomienda esta configuración |
|
"%effectiveDateTime" |
No se recomienda esta configuración |
|
Zona de Búsqueda
Un elemento de esquema de Mapa de Interface de Usuario se puede configurar para activar un diálogo de búsqueda automático cuando se incluye el esquema en un mapa de Interface de Usuario de mantenimiento.
search="search zone"
El atributo de búsqueda se puede usar en in esquema de mapa de Interface de Usuario y se usa para generar automáticamente el atributo de mapa de Interface de Usuario oraSearch. La zona de búsqueda es una zona del explorador configurada como una búsqueda.
<person fkRef="PER" search="C1_PSRCH"/>
searchField="search field:element|'literal';"
El atributo searchField solo se puede usar junto con el atributo de búsqueda. El atributo searchField se usa para crear el atributo de mapa de Interface de Usuario oraSearchField. El valor searchField se usa para completar el filtro de zona de búsqueda con un valor inicial cuando se lanza la zona de búsqueda. El valor inicial también puede ser un valor literal. El valor searchField se usa para establecer una asociación con el mnemotécnico de filtro, también denominado searchField.
Campo de búsqueda: element|'literal'. El campo de búsqueda representa el filtro de zona de búsqueda a completar en el lanzamiento. El elemento es el elemento de esquema del mapa que se usa para completar el filtro. El elemento es opcional. Si se lo deja en blanco, se establece por defecto el elemento en el que está especificado el atributo. El valor searchField también toma el valor 'literal' como valor de entrada.
<person fkRef="PER" search="C1_PSRCH" searchField="PERSON; PER_TYPE:personType;"/>
searchOut="search field:element;"
El atributo searchOut solo se puede usar junto con el atributo de búsqueda. El atributo searchOut se usa para crear el atributo de mapa de Interface de Usuario oraSearchOut. El valor searchOut value se usa para capturar un valor seleccionado de la zona de búsqueda y moverlo a un elemento de mapa de Interface de Usuario. El valor searchOut especificado debe asociarse con el mnemotécnico ELEMENT_NAME en el parámetro de zona de resultado de búsqueda.
Campo de búsqueda: element. El campo de búsqueda representa el resultado de la zona de búsqueda que se devuelve al mapa de Interface de Usuario. El elemento es el elemento del esquema del mapa a completar. El elemento es opcional. Si se lo deja en blanco, se establece por defecto el elemento en el que está especificado el atributo.
<person fkRef="PER" search="C1_PSRCH" searchField="PER_ID"
searchOut="PER_ID;PRIMARY_PHONE:personPhone;"/>
Extensión de Seguridad para Script de Servicio
Se impondrá la seguridad de servicio de aplicación cuando se invoquen un objeto de negocio o un script de servicio desde un script del Asistente de Proceso de Negocios o un mapa de Interface de Usuario, pero no cuando se los invoque desde un script de servicio. Si desea imponer la seguridad cuando se invoca el objeto de negocio o un script de servicio desde un script de servicio, debe agregar el siguiente atributo al esquema del script de servicio.
appSecurity="true"
El atributo appSecurity solo está disponible para esquemas de script de servicio. Si se lo especifica, se evaluará el acceso del servicio de aplicación de cualquier objeto de negocio o script de servicio directamente invocado por el script de servicio.
<schema appSecurity="true">
...
</schema>
Acción de Sustitución para un Servicio de Negocio
Si desea invocar un servicio de negocio con una acción que no sea "read" (leer), debe especificar el atributo de acción en el esquema de servicio de negocio de nodo primario.
pageAction="add, change, delete"
El atributo de acción se usa para sustituir la acción de lectura por defecto en un esquema de servicio de negocio. Los valores válidos son:
-
add (agregar)
-
update (actualizar, solo autorizado para el servicio de objetos de mantenimiento)
-
change (cambiar, no autorizado para el servicio de objetos de mantenimiento)
-
delete (suprimir)
-
read (leer, acción por defecto si no se especifica el valor pageAction)
Ejemplo:
<schema pageAction="change">
<parm type="group">
<ele1/>
<ele2/>
</parm>
</schema>
Especificación de searchBy para un Servicio de Búsqueda
SI desea invocar un servicio de búsqueda, debe especificar explícitamente el atributo searchBy adecuado para los elementos mapeados en el esquema.
searchBy="MAIN"
Los valores del atributo searchBy se pueden buscar mediante la visualización del esquema XML enlazado al servicio de negocio, usando el URL de Visualización de XML. Los valores típicos son:
-
MAIN
-
ALT
-
ALT2
-
ALT3
- Etc.
<schema searchBy="MAIN">
<AccountID mapField="ACCT_ID"/>
<Results type="list">
<AccountID mapField="ACCT_ID"/>
</Results>
</schema>
Inclusión de Otros Esquemas
La capacidad de incluir un esquema en otro no tiene limitaciones. Todos los tipos de esquemas se pueden incluir en cualquiera de los otros tipos. También se permiten las inclusiones anidadas, y, en la actualidad, no hay limitaciones respecto de la profundidad del anidamiento.
Para incluir un esquema, se requieren dos partes:
- El nodo de inclusión
- El atributo de nombre
En la siguiente tabla, se realzan las sentencias de inclusión soportadas.
Mnemotécnico | Descripción | Ejemplos |
---|---|---|
<includeBO name=" "/> |
Se permite incluir un esquema de objeto de negocio en otro esquema. Tenga en cuenta que las reglas de mapeo de un esquema de servicio de negocio u objeto de negocio pueden ser compatibles o no con el contexto del esquema principal. Queda bajo su responsabilidad la inclusión de otros esquemas. Sin embargo, un aspecto muy útil del procesamiento de XML es que el marco ignora los atributos no pertinentes. Es decir que no es riesgoso incluir atributos de mapeo en un esquema de script. |
|
<includeBS name=" "/> |
Se usa para incluir un esquema de servicio de negocio. |
|
<includeDA name=" "/> |
Se usa para incluir un esquema de área de datos. |
|
<includeMP name=" "/> |
Se usa para incluir un esquema de mapa de Interface de Usuario. |
|
<includeSS name=" "/> |
Se usa para incluir un esquema de script de servicio. |
|
Atributos de Compatibilidad
Estos atributos se agregaron como parte de las actualizaciones de versiones anteriores de Framework.
fwRel="2"
Este atributo se agregó a los esquemas creados en Framework 2 como parte de la actualización a Framework 4. Los nuevos esquemas no necesitan este atributo. No se recomienda modificar este atributo sin comprender las siguientes diferencias de comportamiento, ya que los cambios inadecuados podrían ocasionar errores:
<schema fwRel="2"
...
</schema>