Sintaxis de sugerencia de UI
Contenido
Formato de título de mapa de entrada
Inclusión de un fragmento de mapa
Creación de una lista desplegable
Ocultación condicional de elementos
Protección condicional de elementos
Comportamiento dependiente del disparador
Control de la representación del destino
Generación de un área de texto
Modificación de los valores por defecto de referencias de clave externa
Ejemplos de trabajo
Para ver ejemplos de la funcionalidad uiHint, consulte los objetos de negocio siguientes:
Objetos de negocio con claves asignadas por el usuario
En los ejemplos siguientes se ilustran los modelos usados con el fin de activar las uiHints para un objeto con una clave especificada por el usuario.
- F1-OutcomeStyleLookup. Este objeto de negocio de lista de valores ampliable no necesita ninguna transición de estado, pero permite acciones de duplicación y supresión.
- F1-TodoSumEmailTyp. En este tipo de solicitud se ilustran las sugerencias necesarias para soportar la transición de estado en un mapa de visualización.
- F1-WebSvc. Este objeto de negocio de servicio web es un buen ejemplo para la administración de requisitos complejos de JavaScript. Tanto los mapas de visualización como los de entrada tienen una funcionalidad que necesita JavaScript especializado.
Objetos de negocio con claves generadas por el sistema
En el siguiente ejemplo se ilustra el modelo que se usa con el fin de activar las uiHints para un objeto con una clave generada por el sistema.
-
F1-GenericAttachment. Este objeto de negocio anexo tiene una clave asignada por el sistema, que implica la siguiente gestión especial:
- F1-AttachmentMain. Este es el área de datos de la sección principal que contiene los elementos comunes a todos los anexos, incluidos la clave, el objeto de negocio y la versión. Puesto que esta área se utiliza para definir la sección principal de los mapas generados, la sección principal del mapa puede ampliarse implantando la funcionalidad de extensión del área de datos.
- F1-AttachmentActions. Este mapa de acciones de registro contiene las acciones estándar, Editar y Suprimir, además de las acciones personalizadas utilizadas solo por los anexos, Ver y Cargar.
- F1-AttachmentIDFrag. Este mapa de información de registro contiene la clave primaria del anexo.
Script de servicio del mapa de visualización
Los scripts de servicio del mapa de visualización pueden soportarse por completo mediante la generación HTML dinámica. Sin embargo, para ayudar a eliminar la necesidad de un script de servicio de visualización, se ha desarrollado la funcionalidad uiHint autocontenida, que permite escribir el estado del objeto de negocio y determinar las transiciones de estado válidas. Por tanto, los dos motivos más habituales para crear un script de servicio de visualización se han eliminado.
Un motivo típico para usar un prescript de visualización es tener un fragmento del mapa embebido que contenga un esquema de servicio de negocio. El script de servicio de visualización puede usarse para llamar al servicio de negocio. Tanto el fragmento de mapa como el script de servicio de visualización deben declarar el esquema de servicio de negocio para soportar este escenario.
- F1-ExcelSpreadsheet. Este objeto de negocio anexo tiene un script de servicio de visualización que se usa para manipularlo antes de mostrarlo:
- F1-AttchDtlU. Este esquema del script de servicio del mapa de visualización se ha definido con el espacio de nombres de uiHint, y se generará un mapa de visualización para él.
Script de servicio de preprocesamiento del mantenimiento
Los scripts de servicio de preprocesamiento del mantenimiento pueden usarse con uiHints.
- F1-ExcelSpreadsheet. Este objeto de negocio anexo tiene un script de preprocesamiento de mantenimiento que se usa para manipularlo antes de representar el mapa de mantenimiento:
- F1-AttchPre. Este esquema del script de servicio de preprocesamiento imita un esquema de mapa de mantenimiento con elementos de acción y boGroup embebidos. Se llamará antes de representar el mapa de mantenimiento.
Script de servicio de posprocesamiento de mantenimiento
Los scripts de servicio de posprocesamiento de mantenimiento pueden usarse con uiHints.
- F1-ExcelSpreadsheet. Este objeto de negocio anexo tiene un script de posprocesamiento de mantenimiento que se usa para manipularlo después de representar el mapa de mantenimiento:
- F1-AttchPost. Este esquema del script de servicio de posprocesamiento imita un esquema de mapa de mantenimiento con elementos de acción y boGroup embebidos. Se llamará después de representar el mapa de mantenimiento.
Notas técnicas
Los requisitos siguientes son necesarios para soportar la generación de HTML dinámico:
Requisitos del esquema
Para soportar la generación de la UI automatizada, el esquema de objeto de negocio debe contener lo siguiente:
- <esquema xmlns:uiHint="http://oracle.com/ouafUIHints">. El nodo del esquema debe dar nombre al espacio de nombres de uiHint.
- isPrimeKey="true". Es necesario identificar todos los elementos del esquema de objeto de negocio que forma parte de la clave primaria.
Requisitos del script de mantenimiento
El script de mantenimiento para el objeto de mantenimiento debe estar activado para la generación dinámica.
Si el script ejecuta F1-BOProc, es probable que no sea necesaria ninguna funcionalidad especial. Sin embargo, si el script de mantenimiento contiene su propia llamada a F1-GetValOpt, es necesaria la siguiente sentencia antes de esa llamada:
move 'false' to "F1-GetBOOpts/input/maintenanceMapRequired";
performScript 'F1-GetValOpt';
Después de la llamada a F1-GetValOpt, debe incluirse la siguiente lógica, para declarar de forma dinámica el esquema del mapa, si el objeto de negocio no tiene su propio mapa de mantenimiento:
// Perform Main Processing
if ("F1-GetBOOpts/output/maintenanceMap = $BLANK")
declareBOWithBOGroup "$bo" as 'map_schema';
else
declareMap "F1-GetBOOpts/output/maintenanceMap" as 'map_schema';
end-if;
Formato de título de mapa de entrada
Se puede utilizar un elemento de uiHint con el fin de crear un título para un mapa de mantenimiento. El título solo se imprimirá en el mapa de mantenimiento, no el mapa de visualización. Se imprimirá como la primera línea del mapa, centrado y con estilo de cabecera.
Sintaxis | Descripción | Ejemplos |
---|---|---|
<uiHint:title mdField=" "/> |
Muestra la etiqueta de un campo de metadatos de referencia como título. |
|
<uiHint:title text=" "/> |
Muestra el texto indicado como título. No utilice este mecanismo, si se soportan varios idiomas. |
|
Creación de una sección
El espacio de nombres de uiHint soporta la definición de una sección del mapa de UI. Tenga en cuenta que en la actualidad las secciones se crean en los mapas de UI generados cuando el esquema tiene un nodo de lista o grupo con una etiqueta o mdField. La funcionalidad aquí descrita permite crear una sección sin que sea necesario un nodo de lista o grupo etiquetado en el esquema. Cada sección debe estar unida mediante un par de elementos startSection y endSection.
Sintaxis | Atributos soportados | Descripción |
---|---|---|
<uiHint:startSection .../> |
sectionColumn="left | right | fullWidth | float" |
Con el valor por defecto, la sección tendrá el ancho completo en los mapas de visualización. Para sustituir este valor, especifique si desea que aparezca una sección con la mitad del ancho en la columna izquierda (left), derecha (right) o flotante (float). Las secciones que se marquen como 'float' se mostrarán con la mitad de ancho y se alinearán en función de si las secciones anteriores se muestran o se ocultan según determinadas condiciones. Por ejemplo, si una sección con alineación a la izquierda va seguida por una sección flotante, esta aparecerá en la columna de la derecha, si la sección de la izquierda se rellena, pero aparecerá en la columna de la izquierda si esa sección está oculta o reducida. |
editColumn="left | right | fullWidth | float" |
Por defecto, las secciones aparecerán con ancho completo en los mapas de mantenimiento. Para sustituir este valor, especifique si desea que aparezca una sección con la mitad del ancho en la columna izquierda (left), derecha (right) o flotante (float). El comportamiento es análogo al de sectionColumn. | |
sectionOpen="false" |
Por defecto, se abre una sección en la visualización inicial. Especifique este atributo para mostrar inicialmente la sección como cerrada (reducida). | |
mdField=" " |
Especifique el nombre de un campo de metadatos cuya etiqueta deberá usarse como cabecera de la sección. | |
label=" " |
Especifique el texto explícito que se utilizará como cabecera de la sección. | |
visibleOn="displayMap | inputMap" |
Por defecto, se abre una sección en los mapas de visualización y de entrada. Utilice este atributo para mostrar la visualización de una sección en el mapa de visualización (displayMap) o el mapa de entrada (inputMap). |
La sintaxis del atributo de la sección final es <uiHint:endSection/>
Ejemplos:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection label="Main" sectionColumn="left"/>
...
<uiHint:endSection/>
</schema>
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection mdField="F1-ADD-INFO" sectionColumn="fullWidth" editColumn="float" sectionOpen="false" visibleOn="displayMap"/>
...
<uiHint:endSection/>
</schema>
Inclusión de un fragmento de mapa
Puede especificar un fragmento del mapa de UI para inyectar HTML en un mapa generado con el nombre de elemento includeMap. Esto permite soportar un comportamiento más sofisticado en su interfaz de usuario. Para cualquier elemento que se incluya para representarlo en el fragmento de mapa, asegúrese de suprimir el elemento en su definición de esquema; de lo contrario, se generará el HTML para el elemento de modo automático.
Sintaxis | Atributos soportados | Descripción |
---|---|---|
<uiHint:includeMap .../> |
map=" " |
Especifique el nombre del mapa. |
visibleOn="displayMap | inputMap" |
Por defecto, los detalles del fragmento de mapa aparecen en los mapas de visualización y de entrada. Utilice este atributo para limitar la visualización de la sección. |
Ejemplo:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
...
</schema>
Si es necesario JavaScript en un fragmento del mapa de UI XHTML, debe unirlo en una etiqueta ![CDATA[ ]] para garantizar un documento XML válido. Tenga en cuenta que puede ser necesario eliminar los comentarios de las etiquetas para aumentar la compatibilidad con exploradores antiguos. Por ejemplo:
<script type="text/javascript">
/* <![CDATA[ */
//
//javascript
//
/* ]]> */
</script>
Vacíe la caché: por motivos de rendimiento, el marco almacena de modo automático en la caché los esquemas de objeto de negocio, las áreas de datos y los mapas de UI. Al actualizar un objeto de negocio, la caché se vacía de modo automático. Sin embargo, si el objeto de negocio incluye un área de datos, o un fragmento del mapa de UI embebido, es necesario vaciar de forma manual la caché para que se reconozcan los cambios. Para obtener más información, consulte Caché de servidor .
Creación de una lista desplegable
Se proporciona la sintaxis para crear una lista desplegable en un mapa de edición. La lista desplegable puede crearse con los datos devueltos desde un script de servicio, un servicio de negocio o una tabla.
Sintaxis | Descripción |
---|---|
uiHint:select="ss: " |
Especifique el nombre del script de servicio después de la coma. |
uiHint:select="bs: " |
Especifique el nombre del servicio de negocio después de la coma. |
uiHint:select="table: " |
Especifique el nombre de la tabla después de la coma. |
Al especificar un script de servicio o un servicio de negocio, es necesaria información de asignación para transferir datos al servicio y desde él.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:selectIn=" " |
serviceXPath:element | Se usa para transferir el valor a otro elemento en el servicio (asignándolo al XPath del servicio). |
serviceXPath:'Literal' | Se usa para transferir una constante o literal al servicio (asignándolo al XPath del servicio). | |
uiHint:selectOut="valuePath: ; descPath: " |
Consulte los ejemplos a continuación. | Se usa para indicar qué elemento de la salida del servicio contiene los valores y cuál contiene las descripciones. |
Ejemplos:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<boStatus mapField="BO_STATUS_CD" uiHint:select="bs:F1-BOStateReasonList"
uiHint:selectIn="boStatusBO:boStatusBO" uiHint:selectOut="valuePath:results/status;
descPath:results/description"/>
...
<algorithm mdField="ALG_CD" uiHint:select="bs:F1-RetrieveSysEvtAlgorithms"
uiHint:selectIn="algorithmEntity:'F1AA';" uiHint:selectOut="valuePath:results/algorithm;
descPath:results/description"/>
...
<outboundMsgType mdField="OUTMSG_TYPE_CD" required="true" fkRef="F1-OMTYP" uiHint:select="table:F1_OUTMSG_TYPE"/>
</schema>
Ocultación condicional de elementos
El atributo displayNone se usa para suprimir elementos del mapa en función de las condiciones.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:displayNone= |
"'XPath','valor','!=' | '='" | Se usa para ocultar condicionalmente este elemento en función de otro elemento (referenciado con su XPath). Introduzca un valor de ' ' para interrogar un valor en blanco. Por defecto, el operador es '='. Este valor se puede sustituir por '!='. |
"nombre de función, true | false" | Se usa para indicar una función de JavaScript, que debe devolver un valor booleano. |
No se soportan los espacios embebidos en los valores de cadena separados por coma de este atributo.
Este valor puede usarse en nodos de grupo y de lista y elementos, excepto los elementos de una lista. Los elementos de una lista no se pueden ocultar condicionalmente.
En el siguiente ejemplo se ilustra cómo dos elementos (lista de valores y referencia de divisa) se ocultarán o mostrarán, en función del valor del elemento de tipo de datos. Tenga en cuenta que en este ejemplo también se ilustra el Comportamiento dependiente del disparador porque el valor del elemento de tipo de datos puede cambiar y, en ese caso, la condición para ocultar los elementos siguientes debe reevaluarse.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<dataType mdField="F1_SE_DATA_TYPE" dataType="lookup" lookup="F1_SE_DATA_TYPE"
uiHint:dependents="currencyRef;lookup; "/>
<currencyRef mdField="F1_SE_CURR_REF_LBL" uiHint:displayNone="'dataType','F1MO','!='"/>
<lookup mdField="F1_SE_LOOKUP_LBL" fkRef="F1-LKUPF" uiHint:displayNone="'dataType','F1LP','!='"/>
...
</schema>
En el siguiente ejemplo se ilustra la referencia a una función en la que la función recibe parámetros:
<uiHint:startSection mdField="F1_SE_DEFAULT_SECT"
uiHint:displayNone="isApplicableForSchemaType(item,'F1MP'),true"/>
Protección condicional de elementos
El atributo para proteger se usa para proteger elementos del mapa en función de otros factores.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:protect= |
"'XPath','valor','!=' | '='" | Se usa para proteger condicionalmente este elemento en función de otro elemento (referenciado con su XPath). Introduzca un valor de ' ' para interrogar un valor en blanco. Por defecto, el operador es '='. Este valor se puede sustituir por '!='. |
"nombre de función, true | false" | Se usa para indicar una función de JavaScript, que debe devolver un valor booleano. | |
"'action','A' | 'C','!=' | '='" |
Utiliza el valor de "acción" para proteger el elemento en función de la acción actual. Por ejemplo, algunos elementos solo se pueden especificar al añadir un registro. Cualquier cambio posterior en el registro debe proteger el elemento contra los cambios. Al utilizar esta opción, los valores válidos para "valor" son A (añadir) y C (cambiar). |
No se soportan los espacios embebidos en los valores de cadena separados por coma de este atributo.
La sugerencia de UI de protección puede usarse en nodos de grupo y de lista y elementos, excepto para los elementos de una lista. Los elementos de una lista no se pueden proteger condicionalmente.
La siguiente sugerencia de UI protegerá la categoría de estadísticas cuando la acción sea 'C'.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<statisticsCategory dataType="lookup" mapField="STAT_CATEGORY_FLG"
lookup="STAT_CATEGORY_FLG" uiHint:protect="'action','C','='"/>
...
</schema>
Comportamiento dependiente del disparador
El atributo "dependientes" se utiliza para el comportamiento del disparador en un elemento secundario, cuando se cambia un elemento principal.
Sintaxis | Valores |
---|---|
uiHint:dependents=" " |
Una lista de uno o varios elementos dependientes separados por punto y coma. |
En el siguiente ejemplo se ilustra cómo la lista desplegable de un elemento se controla mediante el valor de otro elemento. En este ejemplo, cuando cambia el país, la lista de estados entre los que elegir cambia para mostrar solo los estados del país indicado.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<country label="Country" uiHint:select="table:CI_COUNTRY" uiHint:dependents="state"/>
<state label="State" uiHint:select="ss:CM-RetrieveCountryStates"
uiHint:selectIn="input/country:country;" uiHint:selectOut="valuePath:output/state/stateCode;
descPath:output/state/stateDesc"/>
...
</schema>
Los destinos dependientes solo pueden asignar un nombre a elementos, no a nodos de grupo ni de lista.
No modifique el valor del atributo "id" del elemento dependiente y principal. El rellenado de datos en el dependiente se realiza en función del valor del atributo "id".
Control de la representación del destino
Por defecto, todos los elementos que no se supriman estarán visibles en los mapas de visualización y de entrada. Utilice el atributo visibleOn para limitar la inclusión de un elemento en el mapa de visualización o de entrada.
Sintaxis | Valores |
---|---|
uiHint:visibleOn= |
"displayMap" |
"inputMap" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"
...
</schema>
Generación de un área de texto
Por defecto, un cuadro de texto estándar se representa en un mapa de entrada para cualquier elemento de cadena. Si el campo es más grande y desea tener un área de texto mayor (con una barra de desplazamiento), use el atributo textArea.
Sintaxis |
---|
uiHint:textArea="true" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<message label="Message" uiHint:textArea="true"/>
...
</schema>
Modificación de los valores por defecto de referencias de clave externa
Por defecto, cuando se muestra un elemento con fkRef, están activados una cadena de información, un menú contextual, la navegación y la búsqueda (si la referencia de clave externa se ha configurado de esa forma). Se proporciona la sintaxis para que pueda desactivar cualquiera de estas características de forma selectiva.
Sintaxis |
---|
uiHint:fkRef="info:false;context:false;navigation:false;search:false;" |
Solo es necesario especificar la característica que desee desactivar. El siguiente ejemplo se ilustra la desactivación de la capacidad de navegación, lo que significa que el texto no se representará como hipertexto.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<attachmentID fkRef="F1-ATTCH" primeKey="true" suppress="input" uiHint:fkRef="navigation:false;"/>
...
</schema>
Supresión del formato de números automático
Por defecto, los campos numéricos (dataType="number") tienen formato de números. En lugar de aplicar un formato alfanumérico, se proporciona un atributo.
Nota: si no se especifica dataType de forma explícita, se deriva de mdField o mapField.
Sintaxis |
---|
uiHint:alphaFormat="true|false" |
Por defecto, su valor es false (y por tanto, se puede dejar fuera).
Ejemplos:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<numberCount mdField="" dataType="number" uiHint:alphaFormat="true"/>
...
</schema>
Capitalización automática de los datos de entrada
La uiHint proporciona la sintaxis para capitalizar de modo automático los datos de entrada.
Sintaxis |
---|
uiHint:capitalize="true|false" |
Por defecto, su valor es false (y por tanto, se puede dejar fuera).
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/>
</schema>
El atributo solo está disponible en el diseñador de esquemas cuando isPrimeKey está definido como true. Se puede añadir el atributo a cualquier elemento de cadena al usar el visor del código fuente.