Sintaxis de Indicación de Interface Usuario
Contenido
Formato de Título de Mapa de Entrada
Inclusión de Fragmento de Mapa
Creación de una Lista Desplegable
Ocultamiento Condicional de Elementos
Protección Condicional de Elementos
Activación de Comportamiento de Elementos Dependientes
Control de Destino de Presentación
Generación de un Área de Texto
Modificación de los Valores por Defecto de la Referencia de Clave Foránea
Ejemplos de Funcionamiento
Para obtener ejemplos de funcionamiento de la funcionalidad de uiHint, consulte los siguientes objetos de negocio:
Objetos de Negocio con Claves Asignadas por Usuario
En los siguientes ejemplos, se ilustran los patrones que se usan para activar uiHints en un objeto con una clave especificada por usuario.
- F1-OutcomeStyleLookup. Este Objeto de Negocio de consulta extensible no requiere la transición de estado, pero sí autoriza acciones de duplicación y supresión.
- F1-TodoSumEmailTyp. Este tipo de solicitud ilustra las indicaciones requeridas para que se soporte la transición de estado en un mapa de despliegue.
- F1-WebSvc. Este Objeto de Negocio de servicio web es un buen ejemplo de la administración de los requisitos complejos de JavaScript. Tanto los mapas de entrada como los de despliegue tienen una funcionalidad que requiere JavaScript especializado.
Objeto de Negocio con Clave Generada por Sistema
En el siguiente ejemplo, se ilustra el patrón que se usa para activar las uiHints en un objeto con una clave generada por sistema.
-
F1-GenericAttachment. Este Objeto de Negocio de anexo tiene una clave asignada por sistema, la cual requiere el siguiente manejo especial:
- F1-AttachmentMain. Esta es el área de datos de la sección principal que contiene los elementos comunes a todos los anexos, incluida la clave, el objeto de negocio y la versión. Dado que esta área de datos se usa para definir la sección principal de los mapas generados, la implementación puede extender la sección principal del mapa mediante una funcionalidad de extensión de área de datos.
- F1-AttachmentActions. Este mapa de acciones de registro contiene las acciones standard (Editar y Suprimir) además de acciones personalizadas usadas únicamente por los anexos (Visualizar y Cargar).
- F1-AttachmentIDFrag. Este mapa de información de registro contiene la clave primaria del anexo.
Script de Servicio de Mapa de Despliegue
Los scripts de servicio de mapa de despliegue pueden tener soporte completo mediante la generación dinámica de HTML. Sin embargo, para ayudar a eliminar la necesidad de que exista un script de servicio de despliegue, la funcionalidad de uiHint autocontenida está diseñada para escribir el estado del objeto de negocio y determinar las transiciones de estado válidas. Por lo tanto, se han eliminado los dos motivos más comunes para crear un script de servicio de despliegue.
Un motivo típico para usar un pre-script de despliegue sería si tiene un fragmento de mapa embebido que contiene un esquema de servicio de negocio. El script de servicio de despliegue se puede usar para invocar al servicio de negocio. Tanto el fragmento de mapa como el script de servicio de despliegue deben declarar el esquema de servicio de negocio para que se soporte este escenario.
- F1-ExcelSpreadsheet. Este Objeto de Negocio de anexo tiene un script de servicio de despliegue que se usa para manipular el objeto de negocio de anexo antes de desplegarlo:
- F1-AttchDtlU. Este esquema del script de servicio de mapa de despliegue se ha definido con el espacio de nombre uiHint, y se le generará un mapa de despliegue.
Script de Servicio de Procesamiento Previo de Mantenimiento
Los scripts de servicio de procesamiento previo de mantenimiento se pueden usar con uiHints.
- F1-ExcelSpreadsheet. Este Objeto de Negocio de anexo tiene un script de servicio de procesamiento previo de mantenimiento que se usa para manipular el objeto de negocio de anexo antes de que se presente el mapa de mantenimiento:
- F1-AttchPre. Este esquema del script de servicio de procesamiento previo imita a un esquema de mapa de mantenimiento con elementos de acción y boGroup embebidos. Se lo invoca antes de que se presente el mapa de mantenimiento.
Script de Servicio de Procesamiento Posterior de Mantenimiento
Los scripts de servicio de procesamiento posterior de mantenimiento se pueden usar con indicaciones de UI.
- F1-ExcelSpreadsheet. Este Objeto de Negocio de anexo tiene un script de servicio de procesamiento posterior de mantenimiento que se usa para manipular el objeto de negocio de anexo antes de que se presente el mapa de mantenimiento:
- F1-AttchPost. Este esquema del script de servicio de procesamiento posterior imita a un esquema de mapa de mantenimiento con elementos de acción y boGroup embebidos. Se lo invoca después de que se presente el mapa de mantenimiento.
Notas Técnicas
Los siguientes requerimientos previos se deben cumplir para que se soporte la generación dinámica de HTML:
Requerimientos del Esquema
Para que se soporte la generación automática de Interface de Usuario, el esquema de objeto de negocio debe contener lo siguiente:
- <schema xmlns:uiHint="http://oracle.com/ouafUIHints">. El nodo de esquema debe asignar el nombre de espacio uiHint.
- isPrimeKey="true". Se debe identificar cada elemento del esquema de objeto de negocio que forma parte de la clave primaria.
Requerimientos del Script de Mantenimiento
El script de mantenimiento del Objeto de Mantenimiento debe estar activado para la generación dinámica.
Si el script ejecuta F1-BOProc, lo más probable es que no se necesite ninguna funcionalidad especial. Sin embargo, si el script de mantenimiento contiene su propia llamada a F1-GetValOpt, se requiere la siguiente sentencia antes de la llamada:
move 'false' to "F1-GetBOOpts/input/maintenanceMapRequired";
performScript 'F1-GetValOpt';
Después de la llamada a F1-GetValOpt, se debe incluir la siguiente lógica para realizar la declaración dinámica del esquema de mapa si el objeto de negocio no tiene un mapa de mantenimiento propio:
// 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 usar un elemento de uiHint para crear un título para un mapa de mantenimiento. El título se imprimirá solamente en el mapa de mantenimiento, no en el mapa de despliegue. Se imprimirá centrado en la primera línea del mapa, con estilo de encabezado.
Sintaxis | Descripción | Ejemplos |
---|---|---|
<uiHint:title mdField=" "/> |
Despliega la etiqueta de un campo de metadatos de referencia como título. |
|
<uiHint:title text=" "/> |
Despliega el texto indicado como título. (No se debe usar este mecanismo si se soportan múltiples idiomas). |
|
Creación de una Sección
El espacio de nombre uiHint soporta la definición de una sección de mapa de Interface de Usuario. Tenga en cuenta que las secciones se crean actualmente en los Mapas de Interface de Usuario generados cuando el esquema tiene un nodo de lista o de grupo con una etiqueta o mdField. La funcionalidad que se describe aquí activa la creación de una sección sin que se requiera nodo de lista o de grupo con etiqueta en el esquema. Cada sección debe estar vinculada por un par de elementos startSection y endSection.
Sintaxis | Atributos de Soporte | Descripción |
---|---|---|
<uiHint:startSection .../> |
sectionColumn="left | right | fullWidth | float" |
Por defecto, la sección tiene el ancho completo en los mapas de despliegue. Para sustituir esa configuración, debe especificar si desea que una sección de la mitad del ancho completo aparezca en la columna izquierda (left), en la columna derecha (right) o que sea flotante (float). Las secciones que se marcan como "flotantes" se despliegan con la mitad del ancho y se alinean en función de cómo se despliegan las secciones anteriores o si se ocultan condicionalmente. Por ejemplo, si una sección que está alineada a la izquierda está seguida por una sección flotante, la sección flotante aparece en la columna derecha si la sección izquierda está completa, pero en la columna izquierda si la sección izquierda está oculta/cerrada. |
editColumn="left | right | fullWidth | float" |
Por defecto, las secciones aparecen con el ancho completo en los mapas de mantenimiento. Para sustituir esa configuración, debe especificar si desea que una sección de la mitad del ancho completo aparezca en la columna izquierda (left), en la columna derecha (right) o que sea flotante (float). El comportamiento es similar al de sectionColumn. | |
sectionOpen="false" |
Por defecto, una sección está abierta en el despliegue inicial. Especifique este atributo para que inicialmente la sección se despliegue cerrada. | |
mdField=" " |
Especifique el nombre de un campo de metadatos cuya etiqueta deba usarse como encabezado de la sección. | |
label=" " |
Especifique el texto explícito que se debe usar como encabezado de la sección. | |
visibleOn="displayMap | inputMap" |
Por defecto, una sección aparece en los mapas de despliegue y de entrada. Use este atributo para limitar el despliegue de la sección al mapa de despliegue (displayMap) o al mapa de entrada (inputMap). |
La sintaxis para el atributo de 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 Fragmento de Mapa
Puede especificar un fragmento de mapa de Interface de Usuario para insertar HTML en un mapa generado usando el nombre del elemento includeMap. Esto permite que se soporte un comportamiento más complejo en la interface de usuario. Para cualquier elemento que se incluya para la presentación en el fragmento de mapa, asegúrese de suprimir el elemento en la definición del esquema. De lo contrario, el HTML se generará automáticamente para el elemento.
Sintaxis | Atributos de Soporte | 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 despliegue y de entrada. Use este atributo para limitar el despliegue de la sección. |
Ejemplo:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
...
</schema>
Si se requiere JavaScript en un fragmento de Mapa de Interface de Usuario de XHTML, es necesario vincularlo con una etiqueta ![CDATA[ ]] para garantizar que el documento XML sea válido. Tenga en cuenta que es posible que las etiquetas se deban convertir en comentarios para favorecer la compatibilidad con browsers antiguos. Por ejemplo:
<script type="text/javascript">
/* <![CDATA[ */
//
//javascript
//
/* ]]> */
</script>
Eliminar el caché: A fin de mejorar la performance, Framework almacena automáticamente en caché los esquemas de objeto de negocio, las áreas de datos y los mapas de Interface de Usuario. Cuando actualiza un objeto de negocio, el caché se elimina automáticamente. Sin embargo, si el objeto de negocio incluye un área de datos o un fragmento de mapa de Interface de Usuario embebido, el caché debe eliminarse manualmente para que se reconozcan los cambios. Consulte Caché del Servidor para obtener más información.
Creación de una Lista Desplegable
Se proporciona sintaxis para crear una lista desplegable en un mapa de edición. La lista desplegable se puede crear usando datos que provengan de un script de servicio, un servicio de negocio o una tabla.
Sintaxis | Descripción |
---|---|
uiHint:select="ss: " |
Especificar el nombre del script de servicio después de los dos puntos. |
uiHint:select="bs: " |
Especificar el nombre del servicio de negocio después de los dos puntos. |
uiHint:select="table: " |
Especificar el nombre de la tabla después de los dos puntos. |
Al especificar un script de servicio o un servicio de negocio, se necesita información adicional acerca del mapeo para transmitir los datos desde el servicio y hacia él.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:selectIn=" " |
serviceXPath:element | Se usa para transmitir el valor de otro elemento al servicio (mapeo al XPath del servicio). |
serviceXPath:'Literal' | Se usa para transmitir un valor constante o literal al servicio (mapeo al XPath del servicio). | |
uiHint:selectOut="valuePath: ; descPath: " |
Ver ejemplos a continuación. | Se usa para indicar qué elemento de la salida del servicio tiene los valores y cuál tiene 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>
Ocultamiento Condicional de Elementos
El atributo displayNone se usa para suprimir elementos en el mapa según las condiciones.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:displayNone= |
"'XPath','value','!=' | '='" | Se usa para ocultar condicionalmente este elemento según el valor de otro elemento (al que se hace referencia mediante su XPath). Ingrese un valor de ' ' para consultar un valor en blanco. Por defecto, el operador es '='. Este valor se puede sustituir usando '!='. |
"function name, true | false" | Se usa para indicar una función de JavaScript, la cual debe devolver un valor buleano. |
No se soportan los espacios embebidos dentro de los valores de cadena separados con coma de este atributo.
Esta configuración se puede usar en nodos de grupo, nodos de lista y elementos, salvo por los elementos incluidos en una lista. Los elementos incluidos en una lista no se pueden ocultar condicionalmente.
En el siguiente ejemplo, se ilustra cómo dos elementos (referencia de divisa y consulta) se ocultan o se despliegan según el valor del elemento de tipo de dato. Tenga en cuenta que, en este ejemplo, también se ilustra la Activación de Comportamiento de Elementos Dependientes porque el valor del elemento de tipo de dato puede cambiar y, en ese caso, la condición para ocultar los elementos subsiguientes se debe revaluar.
<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 cómo hacer referencia a una función cuando esta recibe parámetros:
<uiHint:startSection mdField="F1_SE_DEFAULT_SECT"
uiHint:displayNone="isApplicableForSchemaType(item,'F1MP'),true"/>
Protección Condicional de Elementos
El atributo de protección se usa para proteger elementos en el mapa según otros factores.
Sintaxis | Valores | Descripción |
---|---|---|
uiHint:protect= |
"'XPath','value','!=' | '='" | Se usa para proteger condicionalmente este elemento según el valor de otro elemento (al que se hace referencia mediante su XPath). Ingrese un valor de ' ' para consultar un valor en blanco. Por defecto, el operador es '='. Este valor se puede sustituir usando '!='. |
"function name, true | false" | Se usa para indicar una función de JavaScript, la cual debe devolver un valor buleano. | |
"'action','A' | 'C','!=' | '='" |
Use el valor 'action' para proteger el elemento en función de la acción actual. Por ejemplo, ciertos elementos solo se pueden especificar cuando se agrega un registro. Cualquier cambio subsiguiente que se haga en el registro debe proteger el elemento para que no cambie. Cuando use esta opción, los valores válidos para 'value' son A (agregar) y C (cambiar). |
No se soportan los espacios embebidos dentro de los valores de cadena separados con coma de este atributo.
La Indicación de Interface de Usuario de protección se puede usar en nodos de grupo, nodos de lista y elementos, salvo por los elementos incluidos en una lista. Los elementos incluidos en una lista no se pueden proteger condicionalmente.
La siguiente Indicación de Interface de Usuario permite proteger la categoría de estadísticas cuando la acción es "C".
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<statisticsCategory dataType="lookup" mapField="STAT_CATEGORY_FLG"
lookup="STAT_CATEGORY_FLG" uiHint:protect="'action','C','='"/>
...
</schema>
Activación de Comportamiento de Elementos Dependientes
El atributo de elementos dependientes se usa para activar el comportamiento en un elemento secundario cuando se cambia un elemento principal.
Sintaxis | Valores |
---|---|
uiHint:dependents=" " |
Una lista de uno o más elementos dependientes separados por punto y coma. |
En el siguiente ejemplo, se ilustra cómo la lista desplegable de un elemento se controla con el valor de otro elemento. En este ejemplo, cuando cambia el País, la lista de Estados que se pueden elegir debería cambiar para que se muestren solamente 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 de elementos dependientes solo pueden designar elementos, no nodos de lista ni de grupo.
No modifique el valor de atributo "id" de los elementos principal y dependiente. En el elemento dependiente los datos se completan según el valor de atributo "id".
Control de Destino de Presentación
Por defecto, todos los elementos que no se suprimen quedan visibles en el mapa de despliegue y en el mapa de entrada. Use el atributo visibleOn para limitar la inclusión de un elemento en el mapa de despliegue 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 casillero de texto standard se presenta en un mapa de entrada para cualquier elemento de cadena. Si el campo es más grande, y desea tener un área de texto más grande (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 la Referencia de Clave Foránea
Por defecto, cuando se despliega un elemento con fkRef, se activan una cadena de información, un menú contextual, la navegación y la búsqueda (si la referencia de Clave Foránea está correctamente configurada). Se proporciona la sintaxis para que pueda desactivar cualquiera de estas funciones según lo desee.
Sintaxis |
---|
uiHint:fkRef="info:false;context:false;navigation:false;search:false;" |
Solo debe especificar la función que desea desactivar. En el siguiente ejemplo, se ilustra cómo desactivar la capacidad de navegación, lo cual implica que el texto ya no se presentará como hipertexto.
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<attachmentID fkRef="F1-ATTCH" primeKey="true" suppress="input" uiHint:fkRef="navigation:false;"/>
...
</schema>
Supresión de Formato Automático de Números
Por defecto, los campos numéricos (dataType="number") tienen el formato de números. Se proporciona un atributo para aplicar en su lugar el formato alfanumérico.
Nota: Si el valor de dataType no se especifica de manera explícita, se lo deriva de mdField o mapField.
Sintaxis |
---|
uiHint:alphaFormat="true|false" |
Por defecto, el valor es falso (y, por lo tanto, se puede excluir por completo).
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
Esta uiHint proporciona la sintaxis para capitalizar automáticamente los datos de entrada.
Sintaxis |
---|
uiHint:capitalize="true|false" |
Por defecto, el valor es falso (y, por lo tanto, se puede excluir por completo).
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/>
</schema>
El atributo está disponible solamente en el diseñador de esquemas cuando el valor isPrimeKey está definido como verdadero. El atributo se puede agregar a cualquier elemento de cadena si se usa un visor de origen.