XML 脚本中的对象标识

WebSphere® Portal 中的所有资源(资源 portal setting 除外)都具有对象标识,该对象标识在门户网站中对资源进行唯一地标识。它是在创建资源时由门户网站生成的。这些对象标识由 XML 导出中的 objectid 属性表示。

资源之间的引用也是由这些对象标识所表示的:一个资源具有一个引用属性,该属性中又包含了另一个资源的对象标识。例如,要在页面上显示的 Portlet 实例必须引用一个 Portlet。因此,portletinstance 标记具有一个与 Portlet 的 objectid 属性对应的 portletref 属性。由此您可以在 XML 导出中看到以下片段:

<portlet action="update" . . . objectid="Z3_G0Q03FH200A5202QRHAG4320G0" . . . >
      . . .
<portletinstance action="update" . . . portletref="Z3_G0Q03FH200A5202QRHAG4320G0" . . . >

所有资源都在其创建时获得一个在门户网站中指定的对象标识。然后该对象标识即不能再改变。当您在门户网站管理用户界面中创建新的资源时,这些资源将自动获得一个由门户网站生成的新对象标识。当您用 XML 创建新的资源时,如果没有在 XML 中为资源指定对象标识,那么它也会获得一个新的对象标识。请注意,您不能随意地为新资源“创造”对象标识,因为它们还必须符合正确的内部表示法。获得有效对象标识的唯一途径是从 XML 导出中获得。

在 XML 脚本中,资源的 objectid 属性用于以下目的:

  • 当操作为 locate、export、updatedelete 时,对资源进行查找。
  • 如果操作是 create,为新资源设置对象标识。
  • 如果操作是 undate 并且不存在具有该对象标识的资源,为新资源设置对象标识。
  • 描述资源间的链接

您可以使用对象标识来唯一地指定您所要管理的资源。例如,以下片段用于删除一个已知的特定页面。(您通常会通过 XML 导出获得页面的对象标识。)

   <content-node action="delete" objectid="Z6_G0Q03FH200A5202QRHAG4320O0"/>

以下片段用于查找具有特定对象标识的页面。如果无法找到该对象标识,那么系统会创建它。如果该对象标识已经存在,那么系统会对其进行更新。

   <content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0" type="page" . . . >

以下片段用于创建或更新具有特定对象标识的主题,然后将该主题指定给某个标签:

   
        <theme action="update" objectid="ZJ_G0Q03FH200A5202QRHAG4320S1" . . .>
            . . .
        <content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0" 
                     type="label" themeref="ZJ_G0Q03FH200A5202QRHAG4320S1" . . . >

如果已经有具有指定对象标识的主题,就可以在引用中直接使用该对象标识,而不必在 XML 脚本中包含该主题。接下来一个片段假设主题已经创建完成。例如,可能先前已经从另一个服务器中复制了该主题。因此,该片段只是将主题指定给标签:

        <content-node action="update" objectid="Z6_G0Q03FH200A5202QRHAG4320O0" 
             type="label" themeref="ZJ_G0Q03FH200A5202QRHAG4320S1" . . . >

在这种情况下,将通过使用主题的对象标识 ZJ_G0Q03FH200A5202QRHAG4320S1 在门户网站数据存储器中查找主题。如果您没有在门户网站中定义具有该对象标识的主题,那么会在 XML 验证期间接收到一个错误。

对象标识具有全局唯一性。由不同门户网站安装自动生成的两个对象标识肯定是不同的。因此,您可以在不同的门户网站安装之间使用 XML 导出和更新请求来交换资源,而不必担心会有相同的对象标识存在。复制对象标识的唯一方法是通过用 XML 导出和更新将资源(包含对象标识)传送到另一个门户网站。

在多数情况下我们都想这样做。但是如果您不希望将同一资源复制到另一个门户网站,而是希望在不管现有对象标识,且不可能产生冲突的情况下新建一个资源,那您必须使用符号对象标识或从 XML 脚本中删除 objectid 属性。在后一种情形下,门户网站将创建一个新的对象标识。