扩展WebSphere Portal V6个性化功能
使用资源域
资源域 可以查找或创建资源实例。资源域必须实现 com.ibm.websphere.personalization.resources.ResourceDomain3。在选择或建议规则运行时,引擎将调用资源域以定位资源。具体来说,引擎将调用 findResourcesByQuery 方法以运行选择或建议规则的查询。
以 com.ibm.websphere.query.base.Query 对象的形式,向 findResourcesByQuery 方法传递查询的抽象表示。资源域的首要任务是将查询对象转换为一组资源。这通常可以通过下面的方法来实现:使用回调(com.ibm.websphere.query.base.ISelectQueryCallback)将查询对象转换为查询字符串,针对一个数据源执行查询,将结果包装在资源中并返回该资源。
创建资源管理器
只能针对用户资源集合使用资源管理器方法。资源管理器必须实现 com.ibm.websphere.personalization.resources.ResourceManager3。本系列文章关注于内容资源集合,并没有讨论资源管理器接口的方法。对于内容资源集合,可以不必实现这些资源管理器方法,在我们的 Feeds 资源集合中便是如此。
即时可用的资源集合
Portal User、Web Content 和 Documents 资源集合使用了本文中介绍的相同的公开接口。与那些即时可用的应用程序对象一样,在安装的过程中,在一个隐藏的文件夹中对这些资源集合进行了定义。它们被定义为与您可以创建的资源集合非常类似。
资源集合的非常好的实践
仅当需要从一个集合中选择列表时使用资源集合。
添加大量的跟踪代码,以进行调试。
确保您的资源中所存储的所有内容都是可序列化的。
在构造查询时,不要使用 RequestContext 中的信息。用于缓存的键将不包括这些信息。
本系列教程介绍
本系列中的第一个教程(第 2 部分)将介绍如何集成一个非常简单的自定义对象,以便您能够了解如何扩展 Personalization 功能。可以将它看作扩展 Personalization 的工作中的“Hello World”。对于您自己的解决方案,您可能发现其中有些地方需要进行修改,并且在这些地方您可以调用 Web 服务以集成其他数据源。
在这个 Hello World 教程中,您将:
创建一个自定义的 Personalization 应用程序对象
将这个对象部署到服务器
使用该对象的属性来决定是显示还是隐藏 Portlet
在第二个教程(第 3 部分)中,您将构建一个比较复杂的自定义对象,该对象将进行 Web 服务调用以获取规则中使用的数据。除了采取与第一个教程中相同的步骤之外,对于第二个教程,您将实现一个 Personalization 应用程序对象以便从 Web 服务获取相应的数据。
前两个教程重点关注于集成用户数据,而第三个教程(第 4 部分)重点关注于扩展 Personalization 的内容源。在这个示例中,您将了解如何使用 ATOM Feed 作为 Web Content Management 的个性化内容源。
在第三个教程中,您将:
创建一个自定义的 Personalization 资源集合
实现该集合以便从 ATOM Feed 中获得数据
将资源集合部署到服务器
在规则中使用资源集合
在 Web Content Management Personalization 组件中呈现该规则的内容
结束语
编写应用程序对象和资源集合的代码可能非常简单,也可能非常复杂。您所编写的代码的复杂程度,可能因您的对象中所引用的 API 和数据源的不同而有所不同。应用程序对象提供了相应的机制以使用附加的“当前”信息(如当前用户信息、当前业务统计信息、当前日期信息、当前天气条件,等等)对引擎进行扩展。资源集合允许从外部内容源选择内容的列表。在正确使用的情况下,应用程序对象和资源集合都是可重用的组件,它们扩展了 Personalization 规则引擎。
资源域 可以查找或创建资源实例。资源域必须实现 com.ibm.websphere.personalization.resources.ResourceDomain3。在选择或建议规则运行时,引擎将调用资源域以定位资源。具体来说,引擎将调用 findResourcesByQuery 方法以运行选择或建议规则的查询。
以 com.ibm.websphere.query.base.Query 对象的形式,向 findResourcesByQuery 方法传递查询的抽象表示。资源域的首要任务是将查询对象转换为一组资源。这通常可以通过下面的方法来实现:使用回调(com.ibm.websphere.query.base.ISelectQueryCallback)将查询对象转换为查询字符串,针对一个数据源执行查询,将结果包装在资源中并返回该资源。
创建资源管理器
只能针对用户资源集合使用资源管理器方法。资源管理器必须实现 com.ibm.websphere.personalization.resources.ResourceManager3。本系列文章关注于内容资源集合,并没有讨论资源管理器接口的方法。对于内容资源集合,可以不必实现这些资源管理器方法,在我们的 Feeds 资源集合中便是如此。
即时可用的资源集合
Portal User、Web Content 和 Documents 资源集合使用了本文中介绍的相同的公开接口。与那些即时可用的应用程序对象一样,在安装的过程中,在一个隐藏的文件夹中对这些资源集合进行了定义。它们被定义为与您可以创建的资源集合非常类似。
资源集合的非常好的实践
仅当需要从一个集合中选择列表时使用资源集合。
添加大量的跟踪代码,以进行调试。
确保您的资源中所存储的所有内容都是可序列化的。
在构造查询时,不要使用 RequestContext 中的信息。用于缓存的键将不包括这些信息。
本系列教程介绍
本系列中的第一个教程(第 2 部分)将介绍如何集成一个非常简单的自定义对象,以便您能够了解如何扩展 Personalization 功能。可以将它看作扩展 Personalization 的工作中的“Hello World”。对于您自己的解决方案,您可能发现其中有些地方需要进行修改,并且在这些地方您可以调用 Web 服务以集成其他数据源。
在这个 Hello World 教程中,您将:
创建一个自定义的 Personalization 应用程序对象
将这个对象部署到服务器
使用该对象的属性来决定是显示还是隐藏 Portlet
在第二个教程(第 3 部分)中,您将构建一个比较复杂的自定义对象,该对象将进行 Web 服务调用以获取规则中使用的数据。除了采取与第一个教程中相同的步骤之外,对于第二个教程,您将实现一个 Personalization 应用程序对象以便从 Web 服务获取相应的数据。
前两个教程重点关注于集成用户数据,而第三个教程(第 4 部分)重点关注于扩展 Personalization 的内容源。在这个示例中,您将了解如何使用 ATOM Feed 作为 Web Content Management 的个性化内容源。
在第三个教程中,您将:
创建一个自定义的 Personalization 资源集合
实现该集合以便从 ATOM Feed 中获得数据
将资源集合部署到服务器
在规则中使用资源集合
在 Web Content Management Personalization 组件中呈现该规则的内容
结束语
编写应用程序对象和资源集合的代码可能非常简单,也可能非常复杂。您所编写的代码的复杂程度,可能因您的对象中所引用的 API 和数据源的不同而有所不同。应用程序对象提供了相应的机制以使用附加的“当前”信息(如当前用户信息、当前业务统计信息、当前日期信息、当前天气条件,等等)对引擎进行扩展。资源集合允许从外部内容源选择内容的列表。在正确使用的情况下,应用程序对象和资源集合都是可重用的组件,它们扩展了 Personalization 规则引擎。
0
相关文章