Syntaxe des indications uiHint

Exemples pratiques

Pour des exemples pratiques de la fonctionnalité uiHint, voir les objets métier suivants :

Objets métier avec clés affectées par l'utilisateur

Les exemples ci-dessous illustrent les modèles utilisés pour activer les indications uiHint sur un objet ayant une clé définie par l'utilisateur.

  • F1-OutcomeStyleLookup. Cet objet métier de consultation avancée ne demande pas de modification d'état, mais autorise les actions "duplicate" et "delete".
  • F1-TodoSumEmailTyp. Ce type de requête illustre les caractéristiques requises pour prendre en charge la modification d'état dans une matrice d'affichage.
  • F1-WebSvc. Cet objet métier de service Web est un bon exemple de gestion de besoins JavaScript complexes. Les matrices d'affichage et d'entrée ont toutes deux des fonctionnalités nécessitant des scripts JavaScript spécialisés.

Objet métier avec clé générée par le système

L'exemple ci-dessous illustre le modèle utilisé pour activer les indications uiHint sur un objet ayant une clé générée par le système.

  • F1-GenericAttachment. Cet objet métier de document joint a une clé affectée par le système, ce qui implique le traitement spécial suivant :
    • F1-AttachmentMain. Il s'agit de la zone de données de la section principale, qui contient les éléments communs à tous les documents joints, notamment la clé, l'objet métier et la version. Cette zone de données étant utilisée pour définir la section principale des matrices générées, la section principale de la matrice peut être étendue par une implémentation via la fonctionnalité d'extension de zone de données.
    • F1-AttachmentActions. Cette matrice d'actions d'enregistrement contient les actions standard, Modifier et Supprimer, ainsi que des actions personnalisées utilisées uniquement par les documents joints, Afficher et Importer.
    • F1-AttachmentIDFrag. Cette matrice d'informations d'enregistrement contient la clé primaire du document joint.

Script de service d'affichage de matrice

Les scripts de service d'affichage de matrice peuvent être entièrement pris en charge via la génération de HTML dynamique. Cependant, pour qu'il n'y ait pas besoin d'un script de service d'affichage de matrice, une fonctionnalité uiHint autonome a été développée pour écrire l'état d'objet métier et déterminer les modifications d'état valides. Ainsi, les deux raisons les plus courantes de recourir à un script de service ont été éliminées.

Un motif courant d'utilisation d'un pré-script d'affichage est le cas où un fragment de matrice incorporé contient un schéma de service fonctionnel. Le script de service d'affichage peut être utilisé pour appeler le service fonctionnel. Pour ce scénario, le fragment de matrice et le script de service d'affichage doivent tous deux déclarer le schéma du service fonctionnel.

Avertissement :
La zone utilisée pour afficher la matrice de l'objet doit comporter un script de dérivation, tel que F1-GncDsMpDZ ou F1-GenDss, qui appellera un script de service d'affichage pour l'objet métier s'il en a été défini un en tant qu'option d'objet métier, mais elle ne doit pas nécessiter une option d'objet métier de matrice d'affichage explicite. En outre, le schéma du script de service d'affichage doit être activé pour la fonctionnalité uiHint - puisque le schéma du script sera affiché dynamiquement par la zone - mais pas le schéma de l'objet métier.
  • F1-ExcelSpreadsheet. Cet objet métier de document joint comporte un script de service d'affichage utilisé pour manipuler l'objet métier de document joint avant de l'afficher.
  • F1-AttchDtlU. Ce schéma de script de service d'affichage de matrice a été défini avec l'espace de noms uiHint ; une matrice d'affichage sera générée pour lui.

Script de service de prétraitement de maintenance

Les scripts de service de prétraitement de maintenance peuvent être utilisés avec les indications uiHint.

  • F1-ExcelSpreadsheet. Cet objet métier de document joint comporte un script de service de prétraitement de maintenance utilisé pour manipuler l'objet métier de document joint avant l'affichage de la matrice de maintenance.
  • F1-AttchPre. Ce schéma de script de service de prétraitement reproduit un schéma de matrice de maintenance avec des éléments boGroup et action incorporés. Il sera appelé avant l'affichage de la matrice de maintenance.

Script de service de post-traitement de maintenance

Les scripts de service de post-traitement de maintenance peuvent être utilisés avec les indications uiHint.

  • F1-ExcelSpreadsheet. Cet objet métier de document joint comporte un script de service de post-traitement de maintenance utilisé pour manipuler l'objet métier de document joint après l'affichage de la matrice de maintenance.
  • F1-AttchPost. Ce schéma de script de service de post-traitement reproduit un schéma de matrice de maintenance avec des éléments boGroup et action incorporés. Il sera appelé après l'affichage de la matrice de maintenance.

Notes techniques

Les prérequis pour la prise en charge de la génération de HTML dynamique sont les suivants :

Prérequis en termes de schéma

Pour que la génération d'IU automatique soit prise en charge, le schéma d'objet métier doit contenir :

  • <schema xmlns:uiHint="http://oracle.com/ouafUIHints">. Le noeud "schema" doit nommer l'espace de noms uiHint.
  • isPrimeKey="true". Chaque élément du schéma d'objet métier qui fait partie de la clé primaire doit être identifié.

Prérequis en termes de script de maintenance

Le script de maintenance de l'objet de maintenance doit être activé pour la génération dynamique.

ATTENTION :
Le script APT de maintenance de l'objet métier doit être déclaré en tant qu'option d'objet de maintenance pour que la fonctionnalité de maintenance uiHint fonctionne.

Si le script exécute F1-BOProc, aucune fonctionnalité spéciale ne sera probablement nécessaire. Cependant, si le script de maintenance contient lui-même un appel à F1-GetValOpt, cet appel devra être précédé de l'instruction suivante :

move 'false' to "F1-GetBOOpts/input/maintenanceMapRequired";
performScript 'F1-GetValOpt';

La logique ci-dessous doit figurer après l'appel à F1-GetValOpt pour déclarer dynamiquement le schéma de la matrice si l'objet métier ne dispose pas de sa propre matrice de maintenance :

 // 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;

Formater un titre de matrice d'entrée

Remarque :
Dans cette rubrique, le terme "champ" est employé aussi bien dans le sens habituel, pour désigner un élément utilisé pour afficher et capturer des données, que pour faire référence à l'objet de métadonnées fourni dans le produit pour définir des champs. Dans le second cas, on parle de champ MD (champ de métadonnées).

Un élément uiHint peut être utilisé pour créer un titre pour une matrice de maintenance. Ce titre ne s'affichera que dans la matrice de maintenance, et non dans la matrice d'affichage. Il constituera la première ligne de la matrice, sera centré et aura un style d'en-tête.

Syntaxe Description Exemples

<uiHint:title mdField=" "/>

Affiche l'étiquette du champ MD référencé en tant que titre.

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:title 
   mdField="STATUS_RSN_LBL"/>
   ...
</schema>

<uiHint:title text=" "/>

Affiche le texte indiqué en tant que titre. (N'utilisez pas ce mécanisme lorsque plusieurs langues sont prises en charge.)

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:title 
     text="Status Reason"/>
   ...
</schema>

Créer une section

L'espace de noms uiHint prend en charge la définition d'une section de matrice IU. A noter que les sections sont actuellement créées dans les matrices IU générées lorsque le schéma comporte un noeud de groupe ou de liste avec une étiquette ou un champ MD. La fonctionnalité décrite ici permet de créer une section sans avoir besoin d'un noeud de liste ou de groupe avec étiquette dans le schéma. Chaque section doit être délimitée par une paire d'éléments startSection et endSection.

Syntaxe Attributs Description

<uiHint:startSection .../>

sectionColumn="left | right | fullWidth | float"

Par défaut, la section occupe toute la largeur des matrices d'affichage. Si vous voulez que la section soit affichée en demi-largeur, indiquez si elle doit figurer dans la colonne de gauche (left) ou de droite (right), ou si elle doit être flottante (float). Les sections marquées comme étant flottantes ("float") s'affichent en demi-largeur et sont alignées en fonction de l'affichage ou du masquage sous condition des sections précédentes. Par exemple, si une section alignée sur la gauche est suivie d'une section flottante, celle-ci apparaît dans la colonne de droite si la section de gauche est renseignée, mais elle s'affiche dans la colonne de gauche si la section de gauche est masquée / réduite.

editColumn="left | right | fullWidth | float"

Par défaut, une section apparaît en pleine largeur dans les matrices de maintenance. Si vous voulez que la section soit affichée en demi-largeur, indiquez si elle doit figurer dans la colonne de gauche (left) ou de droite (right), ou si elle doit être flottante (float). Le comportement est similaire au comportement sectionColumn.

sectionOpen="false"

Par défaut, lors de l'affichage initial, la section est ouverte. Si vous voulez qu'elle soit fermée (réduite) lors de l'affichage initial, spécifiez cet attribut.

mdField=" "

Indiquez le nom du champ MD dont l'étiquette doit être utilisée comme en-tête de section.

label=" "

Indiquez le texte explicite à utiliser comme en-tête de section.

visibleOn="displayMap | inputMap"

Par défaut, une section apparaît dans les sections d'affichage et d'entrée. Utilisez cet attribut pour limiter son affichage à la matrice d'affichage (displayMap) ou à la matrice d'entrée (inputMap).

La syntaxe de l'attribut de fin de section est la suivante : <uiHint:endSection/>

Exemples :

<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>
Remarque :
Les attributs sectionColumn, editColumn et sectionOpen sont également disponibles pour les noeuds de liste et de groupe.

Inclure un fragment de matrice

Vous pouvez utiliser un fragment de matrice IU pour injecter du HTML dans une matrice générée, à l'aide du nom d'élément includeMap. Cette possibilité permet un fonctionnement plus sophistiqué de l'interface utilisateur. Veillez à bien supprimer tout élément inclus pour affichage dans le fragment de matrice dans la définition de schéma ; sinon, du HTML sera généré automatiquement pour lui.

Syntaxe Attributs Description

<uiHint:includeMap .../>

map=" "

Indiquez le nom de la matrice.

visibleOn="displayMap | inputMap"

Par défaut, les détails du fragment de matrice apparaissent dans les sections d'affichage et d'entrée. Utilisez cet attribut pour limiter l'affichage à l'une des deux matrices.

Exemple :

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
  ...
  <uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
  ...
</schema>
Remarque :
Précision importante à propos du schéma du fragment de matrice : Si un fragment de matrice contient un schéma, la structure de schéma du fragment est injectée dans le schéma généré dynamiquement lorsque l'objet métier est affiché pour entrée. Techniquement, le schéma du fragment est inséré après la structure boGroup dans le schéma de la matrice. Cette méthode peut être utilisée pour prendre en charge l'implémentation d'un prétraitement et d'un post-traitement de script de maintenance pour un objet métier ainsi que des appels de la fonction oraInvokeBS dans du JavaScript incorporé.

Si un script JavaScript est requis dans un fragment de matrice IU XHTML, il faudra le lier dans une balise ![CDATA[ ]] de façon à obtenir un document XML valide. A noter que les balises elles-mêmes devront peut-être être transformées en commentaires pour assurer la compatibilité avec des navigateurs plus anciens. Par exemple :

		<script type="text/javascript">
/* <![CDATA[ */
//
//javascript
//
/* ]]> */
</script>		

Vider le cache : Pour des raisons de performances, Framework met automatiquement en mémoire cache les schémas d'objet métier, les zones de données et les matrices IU. Lorsque vous mettez à jour un objet métier, le cache est vidé automatiquement. Cependant, si l'objet métier comporte une zone de données ou un fragment de matrice IU incorporé, le cache doit être vidé manuellement pour que les modifications soient prises en compte. Pour plus d'informations, voir Mémoire cache serveur.

Créer une liste déroulante

La syntaxe nécessaire pour créer une liste déroulante dans une matrice d'édition est fournie. La liste déroulante peut être créée à l'aide de données renvoyées par un script de service, un service fonctionnel ou une table.

Syntaxe Description

uiHint:select="ss: "

Indiquez le nom du script de service après le caractère deux-points.

uiHint:select="bs: "

Indiquez le nom du service fonctionnel après le caractère deux-points.

uiHint:select="table: "

Indiquez le nom de la table après le caractère deux-points.

Lorsqu'un script de service ou un service fonctionnel est spécifié, des informations de mapping supplémentaires sont nécessaires pour l'échange de données avec le service.

Syntaxe Valeurs Description

uiHint:selectIn=" "

serviceXPath:élément A utiliser pour transmettre la valeur d'un autre élément au service (mapping avec le XPath du service).
serviceXPath:'Littéral' A utiliser pour transmettre une constante ou un littéral au service (mapping avec le XPath du service).

uiHint:selectOut="valuePath: ; descPath: "

Voir exemples ci-dessous. A utiliser pour indiquer quel est l'élément dans la sortie du service qui contient les valeurs et quel est celui qui contient les descriptions.

Exemples :

<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>

Masquer des éléments conditionnellement

L'attribut displayNone est utilisé pour supprimer des éléments dans la matrice en fonction de conditions.

Syntaxe Valeurs Description

uiHint:displayNone=

"'XPath','valeur','!=' | '='" A utiliser pour masquer conditionnellement l'élément selon la valeur d'un autre élément (référencé par son XPath). Pour interroger une valeur vide, indiquez pour valeur ' '. L'opérateur par défaut est '='. Il peut être remplacé par '!='.
"nom de fonction, true | false" A utiliser pour spécifier une fonction JavaScript, qui doit renvoyer une valeur booléenne.
Avertissement :

Les espaces incorporés ne sont pas pris en charge dans les valeurs de chaîne séparées par des virgules de cet attribut.

Ce paramètre peut être utilisé pour les noeuds de groupe, les noeuds de liste et les éléments, à condition qu'ils ne fassent pas partie d'une liste. Les éléments d'une liste ne peuvent pas être masqués conditionnellement.

Dans l'exemple ci-dessous, deux éléments (currencyRef et lookup) seront masqués ou affichés selon la valeur de l'élément dataType. A noter que cet exemple illustre également l'action sur un élément dépendant car la valeur de l'élément dataType peut changer ; si elle le fait, la condition de masquage des éléments ultérieurs devra être réévaluée.

<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>

Dans l'exemple ci-dessous, il est fait référence à une fonction qui reçoit des paramètres.

<uiHint:startSection mdField="F1_SE_DEFAULT_SECT" 
    uiHint:displayNone="isApplicableForSchemaType(item,'F1MP'),true"/>

Protéger des éléments conditionnellement

L'attribut protect est utilisé pour protéger des éléments de la matrice en fonction d'autres facteurs.

Syntaxe Valeurs Description

uiHint:protect=

"'XPath','valeur','!=' | '='" A utiliser pour protéger conditionnellement l'élément selon la valeur d'un autre élément (référencé par son XPath). Pour interroger une valeur vide, indiquez pour valeur ' '. L'opérateur par défaut est '='. Il peut être remplacé par '!='.
"nom de fonction, true | false" A utiliser pour spécifier une fonction JavaScript, qui doit renvoyer une valeur booléenne.

"'action','A' | 'C','!=' | '='"

Utilisez le paramètre 'action' pour protéger l'élément en fonction de l'action actuelle. Par exemple, certains éléments ne peuvent être spécifiés que lors de l'ajout d'un enregistrement. Lors de toute modification ultérieure de l'enregistrement, l'élément doit être protégé contre la modification. Lorsque cette option est utilisée, les valeurs valides pour 'valeur' sont A (ajouter) et C (modifier).
Avertissement :

Les espaces incorporés ne sont pas pris en charge dans les valeurs de chaîne séparées par des virgules de cet attribut.

L'indication uiHint protect peut être utilisée pour les noeuds de groupe, les noeuds de liste et les éléments, à condition qu'ils ne fassent pas partie d'une liste. Les éléments d'une liste ne peuvent pas être protégés conditionnellement.

L'indication uiHint suivante protège la catégorie de statistiques lorsque l'action est C.

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
 ...
 <statisticsCategory dataType="lookup" mapField="STAT_CATEGORY_FLG" 
    lookup="STAT_CATEGORY_FLG" uiHint:protect="'action','C','='"/>
 ...
</schema>

Agir sur un élément dépendant

L'attribut "dependents" est utilisé pour déclencher une action sur un élément enfant lorsqu'un élément parent est modifié.

Syntaxe Valeurs

uiHint:dependents=" "

Liste d'un ou plusieurs éléments dépendants séparés par le caractère deux-points.

Dans l'exemple ci-dessous, la liste déroulante d'un élément est déterminée par la valeur d'un autre élément. Ici, si le pays est modifié, la liste des états mise à disposition pour sélection doit être modifiée afin de ne présenter que les états du pays indiqué.

<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>
Remarque :

Les dépendants cible ne peuvent être que des éléments, et non des noeuds de groupe ou de liste.

Ne modifiez pas la valeur de l'attribut "id" des éléments parent et dépendant. Les données sont placées dans l'élément dépendant d'après la valeur de l'attribut "id".

Contrôler la cible d'affichage

Par défaut, tous les éléments qui ne sont pas supprimés sont visibles tant dans la matrice d'affichage que dans la matrice d'entrée. Utilisez l'attribut visibleOn pour qu'un élément ne soit inclus que dans la matrice d'affichage ou dans la matrice d'entrée.

Syntaxe Valeurs

uiHint:visibleOn=

"displayMap"
"inputMap"
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
  ...
  <uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"
  ...
</schema>

Générer une zone de texte

Par défaut, une zone de texte standard est affichée dans une matrice d'entrée pour tout élément de chaîne. Si le champ est plus grand et que vous désirez une zone de texte plus grande (avec une barre de défilement), utilisez l'attribut textArea.

Syntaxe
uiHint:textArea="true"
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
   ...
  <message label="Message" uiHint:textArea="true"/>
  ...
</schema>

Modifier les valeurs par défaut pour les références de clé étrangère

Par défaut, lorsqu'un élément de type fkRef est affiché, les options de chaîne d'informations, de menu contextuel, de navigation et de recherche sont activées (si la référence de clé étrangère a été configurée en conséquence). La syntaxe vous permet de désactiver sélectivement ces fonctions.

Syntaxe
uiHint:fkRef="info:false;context:false;navigation:false;search:false;"

Vous n'avez besoin de spécifier que la fonction que vous voulez désactiver. Dans l'exemple ci-dessous, la fonction de navigation est désactivée, ce qui signifie que le texte ne sera pas affiché en tant que lien hypertexte.

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
   ...
   <attachmentID fkRef="F1-ATTCH" primeKey="true" suppress="input" uiHint:fkRef="navigation:false;"/>
   ...
</schema>
Documentation de référence :
Pour plus d'informations sur chacun des paramètres de référence de clé étrangère, voir Formatage des références de clé étrangère dans la section Attributs de matrice IU.

Supprimer le formatage automatique des nombres

Par défaut, les champs numériques (dataType="number") sont formatés en tant que nombres. Un attribut permet de leur appliquer un formatage alphanumérique.

Remarque : Si le type de données n'est pas spécifié explicitement, il est dérivé de mdField ou mapField.

Syntaxe
uiHint:alphaFormat="true|false"

Par défaut, sa valeur est false (il peut donc être omis).

Exemples :

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
 ...
 <numberCount mdField="" dataType="number" uiHint:alphaFormat="true"/>
    ...
</schema>

Mettre automatiquement les données d'entrée en majuscules

Il existe une syntaxe uiHint pour mettre automatiquement en majuscules les données saisies.

Syntaxe
uiHint:capitalize="true|false"

Par défaut, sa valeur est false (il peut donc être omis).

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
 <toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/> 
</schema>
Remarque :
Cet attribut est ignoré lorsque uiHint:textArea="true" est configuré.

Cet attribut est uniquement disponible dans le concepteur de schémas lorsque isPrimeKey a la valeur true. Il peut être ajouté à tout élément de chaîne lorsque le visualiseur de code source est utilisé

Remplacer l'en-tête de ligne à des fins d'accessibilité

Lors de la génération du code HTML pour une liste, la valeur par défaut consiste à affecter scope="row" aux éléments de clé primaire non supprimés, le cas échéant, ou au premier élément non supprimé de la liste. Cette indication uiHint fournit une syntaxe permettant de remplacer les valeurs par défaut lorsqu'elles ne sont pas les éléments appropriés à utiliser par un lecteur d'écran.

Syntaxe
uiHint:rowHeader="true|false"
<iwsAnnotationTypeParameter mdField="F1_ANN_TYPE_PARMS_LBL" type="list" mapChild="F1_IWS_ANN_TYPE_PARM">
        <sequence dataType="number" mapField="SEQ_NUM" uiHint:rowHeader="false"/>
        <parameterName mapField="PARM_NAME" uiHint:rowHeader="true" dataType="string"/>
        <parameterValue mapField="PARM_VALUE" dataType="string"/>
        <isRequired dataType="lookupBO" mapField="REQUIRED_SW" lookupBO="F1-BooleanValues"/>
        <javaPackage mapField="JAVA_PACKAGE" dataType="string"/>
        <version suppress="true" dataType="number" mapField="VERSION"/>
        <description mapField="DESCR" dataType="string"/>
        <longDescription mapField="DESCRLONG" uiHint:textArea="true" dataType="string"/>
        <owner suppress="input" dataType="lookup" mapField="OWNER_FLG" lookup="OWNER_FLG"/>
    </iwsAnnotationTypeParameter>

L'attribut s'applique uniquement aux éléments d'une liste.