Dépendances de module dans les portlets

Lorsqu'un portlet requiert des fonctions côté client existantes, telles que Dojo, chargées sur la page, il peut définir un ensemble de préférences de portlet déclarant les fonctions dont il dépend.

Définissez deux préférences pour chaque capacité de laquelle dépend le portlet. Une préférence qui décrit l'ID de la fonction et une préférence qui définit la valeur ou version minimale au format suivant : major.minor.revision :

ID :
Preference Name: capability.<sequence-number>.id
Preference Value : <the capability name>
Valeur :
Preference Name: capability.<sequence-number>.minValue
Preference Value: <the capability value>
Exemple
<portlet-preferences>
    <preference>
        <name>capability.1.id</name>
        <value>dojo</value>
        <read-only>true</read-only>
    </preference>
    <preference>
        <name>capability.1.minValue</name>
        <value>1.6</value>
        <read-only>true</read-only>
    </preference>
        
    <preference>
        <name>capability.2.id</name>
        <value>oneUI</value>
        <read-only>true</read-only>
    </preference>
    <preference>
        <name>capability.2.minValue</name>
        <value>3.0.1</value>
        <read-only>true</read-only>
    </preference>

    <preference>
        <name>capabilities.selfManaged</name>
        <value>false</value>
        <read-only>true</read-only>
    </preference>            
</portlet-preferences>

Dans cette version, capability.sequence-number.minValue est facultatif. Si vous ne connaissez pas le numéro de version ou si le portlet fonctionne avec n'importe quelle version de la fonction, ne spécifiez pas la préférence minValue. Le système charge la version disponible la plus récente de la fonction.

Une fonction n'est pas toujours définie pour chaque module. De nombreux modules ne font partie d'aucune fonction. Chaque module s'affiche automatiquement comme une fonction implicite ou comme une fonction portant le même nom et le même numéro de version que lui. S'il n'existe aucune fonction ou si vous connaissez uniquement le nom du module, vous pouvez indiquer le nom du module pour la valeur de capability.sequence-number.id.

Pour obtenir la liste des fonctions disponibles, voir Modules fournis avec le thème HCL Portal.

Erreurs gérées automatiquement

Outre la définition des fonctions, le portlet doit définir une préférence capabilities.selfManaged qui décrit s'il gère lui-même ou non l'erreur liée au manque de fonctions. Pour que la gestion de l'erreur soit déléguée à HCL, la valeur capabilities.selfManaged doit être affectée à la préférence false.

Remarque : Un portlet peut gérer toutes les dépendances de fonction ou aucune.

Si cette préférence n'est pas définie, la structure s'attend à ce que le portlet gère lui-même le traitement de l'erreur liée au manque de dépendance de fonction.

Traitement des erreurs qui ne sont pas gérées automatiquement

Lorsque capabilities.selfManaged a pour valeur false, HCL gère l'erreur liée au manque de dépendance de fonction. Il affiche des messages d'erreur. Un ensemble de messages d'erreur (codes d'erreur) : EJPNK0022E, EJPNK0023E et EJPNK0024E est susceptible de s'afficher en haut d'une page lorsque vous tentez d'y ajouter un portlet. L'autre ensemble de messages d'erreur (codes d'erreur) : EJPNK0026E, EJPNK0027E et EJPNK0028E est susceptible de s'afficher dans le portlet lorsque celui-ci figure déjà sur une page et que celle-ci est affichée. Les messages contiennent pour chaque portlet des informations détaillées indiquant les fonctions manquantes ou dont la version ne correspond au niveau de version minimum requis.

Le traitement des erreurs qui ne sont pas gérées automatiquement peut également être désactivé dans certains cas, par exemple, lorsque vous souhaitez optimiser les performances sur un système de production ou lors de l'utilisation du rendu distant (WSRP) alors que le client n'est pas de type HCL. Pour plus d'informations, voir Paramètres de configuration pour les filtres de fonctions.

Chargement des fonctions

Chaque portlet déclare les fonctions dont il dépend, mais ces fonctions, ainsi que les modules qui leur sont associés, ne sont pas chargés automatiquement. Le chargement des modules est effectué via le profil affecté à la page. Par conséquent, vous devez affecter un profil approprié pour les portlets qui seront utilisés sur une page.

Si les messages de traitement des erreurs qui ne sont pas gérées automatiquement s'affichent, cela signifie que le profil ne contient pas les fonctions requises. Pour résoudre les erreurs, affectez un autre profil à la page.

Chargement automatique des fonctions

Tous les portlets peuvent charger automatiquement les fonctions dont ils dépendent, quel que soit le profil affecté à la page. Cette fonction peut être activée par thème dans les métadonnées de thème en affectant la valeur true à resourceaggregation.autoLoadPortletCapabilities. Pour plus d'informations sur la définition de ces métadonnées, voir Modification du chargement automatique des fonctions de portlet.

Le chargement automatique est activé par défaut pour le thème Portal 8.5 dans le groupe de correctifs CF03 ou de niveau ultérieur. Par conséquent, si vous créez votre thème personnalisé à partir du thème Portal 8.5 sur un système doté du groupe de correctif CF03 ou de niveau ultérieur, vous n'avez pas besoin d'activer manuellement cette fonction. Si votre thème personnalisé a été créé à partir du thème Portal 8.5 sur un système doté d'un groupe de correctifs antérieur à CF03, vous devez activer manuellement cette fonction pour l'utiliser.

Il est recommandé d'utiliser la fonction de chargement automatique car elle permet de simplifier l'utilisation de l'ensemble du système. Les utilisateurs peuvent utiliser n'importe quels portlets sur une page (si les portlets déclarent les fonctions dont ils ont besoin) sans avoir à se préoccuper du thème utilisé et du profil affecté à la page. Un nombre moins important de profils est nécessaire, et la taille de chacun d'eux peut être plus petite.

Si le chargement automatique est activé, les messages de traitement des erreurs qui ne sont pas gérées automatiquement s'affichent moins souvent, et lorsqu'ils apparaissent, cela signifie que les fonctions requises ne sont pas installées ni actives sur le système. Pour résoudre les erreurs, installez les fonctions et les modules ou vérifiez qu'ils sont actifs.

Lorsque la fonction de chargement automatique est activée pour un thème, il n'est pas habituel de la désactiver ensuite. Si vous désactivez cette fonction, un grand nombre de pages peut générer des messages d'erreur relatifs à des fonctions manquantes tant que les profils appropriés ne leur sont pas affectés.

Fonctions différées

Un portlet peut également déclarer une dépendance de fonction différée.

ID :
Preference Name: deferredCapability.<sequence-number>.id
Preference Value : the capability name
Valeur :
Preference Name: deferredCapability.<sequence-number>.minValue
Preference Value: the capability minimum version
Exemple :
<portlet-preferences>
    <preference>
        <name>deferredCapability.1.id</name>
        <value>wcm_inplacEdit</value>
        <read-only>true</read-only>
    </preference>
</portlet-preferences>

Lorsque le chargement automatique est activé, une fonction différée n'est pas chargée tant que la page n'est pas en mode édition ou si l'API i$.loadDeferred est utilisée. Si le chargement automatique est désactivé, une déclaration de fonction différée se comporte comme une déclaration de fonction dans le sens où le chargement des modules de la fonction est effectué via le profil et non via le portlet.

Le numéro de séquence deferredCapability est indépendant du numéro de séquence capability. Par exemple, les deux peuvent démarrer à 1. Et, comme capability, deferredCapability.sequence-number.minValue est facultatif.