ID objet dans les scripts XML
Toutes les ressources d'HCL Portal, à l'exception des ressources portal et settings, ont un ID objet qui les identifie de manière unique dans le portail. Cet ID est généré par le portail lors de la création de la ressource. Ces ID objet sont représentés par les attributs objectid dans une exportation XML.
Les références entre les ressources sont représentées par ces ID objet : une ressource possède un attribut de référence contenant l'ID objet d'une autre ressource. Par exemple, une instance de portlet qui n'est pas affichée dans une page doit référencer un portlet. Par conséquent, la balise portletinstance possède un attribut portletref correspondant à l'attribut objectid du portlet. Voici quelques extraits d'une exportation XML :
<portlet action="update" . . . objectid="Z3_G0Q03FH200A5202QRHAG4320G0" . . . >
. . .
<portletinstance action="update" . . . portletref="Z3_G0Q03FH200A5202QRHAG4320G0" . . . >
Toutes les ressources sont associées à un ID objet dans le portail lors de leur création. Cet ID objet ne peut pas être modifié ultérieurement. Lorsque vous créez de nouvelles ressource dans l'interface utilisateur administrative du portail, celles-ci obtiennent automatiquement un nouvel ID objet généré par le portail. Lorsque vous créez une nouvelle ressource avec XML, elle obtient également toujours un nouvel ID objet, si vous n'en spécifiez pas un dans le XML. Notez que vous ne pouvez pas simplement "inventer" des ID objet pour les nouvelles ressources : ils doivent être conformes à une représentation interne correcte. Le seul moyen d'obtenir des ID objet valides consiste à effectuer une exportation XML.
Dans les scripts XML, l'attribut objectid d'une ressource est utilisé dans les buts suivants :
- Pour rechercher la ressource, si l'action est locate, export, update ou delete.
- Pour définir l'ID objet d'une nouvelle ressource, si l'action est create.
- Pour définir l'ID objet d'une nouvelle ressource, si l'action est update et qu'il n'existe aucune ressource portant ce même ID objet.
- Pour décrire les liens d'une ressource à une autre.
Vous pouvez utiliser les ID objet pour spécifier de manière unique les ressources que vous souhaitez administrer. Par exemple, l'extrait suivant supprime une page connue spécifique. (Vous obtenez normalement l'ID objet de la page dans une exportation XML.)
<content-node action="delete" objectid="Z6_G0Q03FH200A5202QRHAG4320O0"/>
L'extrait suivant recherche une page contenant un ID objet spécifique. S'il ne parvient pas à trouver l'ID d'objet, il le crée. S'il existe déjà, il le met à jour.
<content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0" type="page" . . . >
L'extrait suivant crée ou met à jour un thème avec un ID objet spécifique, puis attribue ce thème à une balise :
<theme action="update" objectid="ZJ_G0Q03FH200A5202QRHAG4320S1" . . .>
. . .
<content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0"
type="label" themeref="ZJ_G0Q03FH200A5202QRHAG4320S1" . . . >
Si le thème existe déjà avec l'ID objet spécifié, vous pouvez utiliser directement cet ID objet dans les références sans avoir à inclure le thème dans le script XML. L'extrait suivant suppose que le thème a déjà été créé. Il peut par exemple avoir été copié à partir d'un autre serveur au cours d'une étape précédente. Par conséquent, cet extrait attribue seulement le thème à la balise :
<content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0"
type="label" themeref="ZJ_G0Q03FH200A5202QRHAG4320S1" . . . >
Dans ce cas, le thème est recherché dans le magasin de données du portail à l'aide de son ID objet ZJ_G0Q03FH200A5202QRHAG4320S1. Si aucun thème portant cet ID objet n'est défini dans le portail, vous obtenez un message d'erreur au cours de la validation XML.
Un ID objet est globalement unique. Deux ID objet automatiquement générés par différentes installations de portail ne peuvent jamais être identiques. Vous pouvez par conséquent échanger des ressources entre différentes installations de portail à l'aide d'une exportation XML et mettre à jour les requêtes sans vous préoccuper de conflits éventuels entre les ID objet. Le seul moyen de dupliquer un ID objet consiste à transférer une ressource (y compris l'ID objet) vers un autre portail avec une exportation et une mise à jour XML.
Dans de nombreux cas, il s'agit du comportement requis. Toutefois, si vous ne souhaitez pas copier la même ressource vers un autre portail, mais créer une nouvelle ressource, quels que soient les ID objet existants et sans risquer de provoquer un conflit, vous devez utiliser des ID objet symboliques ou supprimer l'attribut objectid du script XML. Dans ce dernier cas, le portail crée un nouvel ID objet.