开始的前
本教程通过

个举例快速演示如何扩展 WebSphere Commerce V7

预览功能

添加预览选项

让业务用户可以在区别购物者

上下文中预览 Web 商店

然后讨论如何定制 WebSphere Commerce Management Center 界面以显示新

预览选项

接下来

介绍如何扩展预览业务上下文

添加更多预览参数

最后

介绍如何定制市场营销子系统

检查正在浏览 Web 商店

购物者是否按特定

客户细分市场预览商店
掌握了这些知识后

就可以提供新

预览选项

可以在其他属性

上下文中预览

例如

如果希望在某

Sales Catalog

上下文中预览

可以开发通过右键单击 Sales Catalog 条目预览它

功能
目标
学习如何:
通过定制 Management Center 添加新

预览选项

扩展 WebSphere Commerce 框架以处理和存储定制

预览属性

让业务用户能够在客户细分市场

上下文中预览

图 1 介绍说明业务用户如何选择

个客户细分市场并在此上下文中预览

右键单击

个客户细分市场

在出现

上下文菜单中会显示新

Preview In Segment 选项
图 1. 新

Preview In Segment 选项
前提条件
本教程适合那些熟悉 Java™ 和 XML

WebSphere Commerce V7 开发人员

在开始定制 Management Center 的前

您应该熟悉 WebSphere Commerce

模型-视图-控制器扩展模型和 Management Center 框架

使用 IBM® Rational® Application Developer

经验也会有帮助

系统需求
在开始学习本教程的前

确认您符合以下条件:
正在使用 WebSphere Commerce Version 7

本教程不 讨论以前

版本

正在使用 WebSphere Commerce Developer 环境

已经发布了基本

商店

学习时间
学习本教程大约需要

个半小时

在 WebSphere Commerce Management Center 界面中添加预览属性
首先

在客户细分市场对象中添加

个新

上下文项

当业务用户右键单击

个客户细分市场时

会看到新选项 “Preview In Segment”


定要在 J2EE 透视图中打开 WebSphere Commerce Developer
添加客户机操作

把本教程

举例代码 中

ExtStorePreviewClientAction.lzx 文件复制到 LOBTools\WebContent\WEB-INF\src\lzx\commerce\marketing\ExtStorePreviewClientAction.lzx 目录

在库中包含这个新文件

打开文件 LOBTools\WebContent\WEB-INF\src\lzx\commerce\marketing\MarketingExtensionsLibrary.lzx
在 <library> 标记后面

插入下面

新代码并保存文件:
<
href="ExtStorePreviewClientAction.lzx" /> 在 Enterprise Explorer 视图中

打开 LOBTools 项目

找到并打开文件 LOBTools\WebContent\WEB-INF\src\lzx\commerce\marketing\objectDefinitions\CustomerSegmentPrimaryObjectDefinition.lzx

搜索文本 <mktExcludedCustomerAssociationDefinition/>

在其下插入下面

新代码并保存文件:
<!-- Preview client action -->
<extStorePreviewClientAction/> 这样就在客户细分市场上下文菜单中添加了新

Preview In Segment 选项

当业务用户右键单击

个客户细分市场时

他们会看到 Preview In Segment 选项

这个选项会打开商店预览对话框

下

个目标是在商店预览对话框中显示所选

客户细分市场

见图 2
为了在这个对话框中显示所选

客户细分市场

打开本教程提供

举例代码

把文件 ExtStorePreviewCustomerSegmentOption.lzx 复制到 LOBTools\WebContent\WEB-INF\src\lzx\commerce\foundation\ExtStorePreviewCustomerSegmentOption.lzx 目录

现在在扩展库中包含这个新文件

打开文件 LOBTools\WebContent\WEB-INF\src\lzx\commerce\foundation\FoundationExtensionsLibrary.lzx

在 <library> 标记后面

插入下面

新代码并保存文件:
<
href="ExtStorePreviewCustomerSegmentOption.lzx" /> 为了在预览对话框中添加选项

打开文件 LOBTools\WebContent\WEB-INF\src\lzx\commerce\foundation\StorePreviewCustomOptions.lzx 并添加新

客户细分市场选项

在打开

文件中添加下面

粗体代码行:
<
name="wcfStorePreviewCustomOptions">
<simplelayout axis="y" spacing="10" />
<extStorePreviewCustomerSegmentOption name="customerSegmentOption" />
</
> 恭喜!WebSphere Commerce Management Center 定制已全部完成了

保存所有修改过

文件

右键单击 LOBTools 项目并选择 Build OpenLaszlo Project

编译所有 OpenLaszlo 文件的后

检查是否有任何编译


如果 OpenLaszlo 成功地编译了

打开 Web 浏览器并清除所有临时 Internet 文件

完成的后

启动 WebSphere Commerce Management Center

会看到图 1 和图 2 所示

输出

图 1. 新

Preview In Segment 选项

图 2. 在 Store Preview Options 对话框中查看所选

细分市场

通过扩展 WebSphere Commerce 引擎在购物者会话中存储细分市场信息
本节讨论如何捕捉来自 WebSphere Commerce Management Center

客户细分市场数据并存储在购物者会话中

实现这个功能需要扩展 3个命令

图 3 介绍说明从 WebSphere Commerce Management Center 到 Web 商店

命令流

当业务用户启动

次预览时



个控制器命令 (CMWSPreviewSetupCmdImpl) 来

化用户预览业务上下文
可以认为业务上下文是

段会话信息

它在用户购物期间直接和用户相关联

我们要扩展预览上下文

把在 Management Center 中选择

成员组持久化

当用户浏览网站WebSite时

每个请求都保留在购物者预览上下文中

这些信息决定用户是否属于某

客户细分市场

在 CheckUserInMemberGroupCmdImpl 命令中判断购物者属于哪个客户细分市场

我们将通过扩展这个命令添加

条新规则

它根据用户正在预览

客户细分市场检查每个细分市场评估
图 3. 预览启动命令流

在 WebSphere Commerce Developer 环境中

进入 J2EE 透视图

通过 Servers 视图停止 WebSphere Commerce 测试服务器

下面几步将添加本教程提供

举例代码 中

定制逻辑

把文件 ExCheckUserInMemberGroupCmdImpl.java 复制到工作空间中

WebSphereCommerceServerExtensionsLogic 项目

应该把这个文件放在 \src\com\ibm\demoas

\membergroup\commands\ExCheckUserInMemberGroupCmdImpl.java
把文件 ExPreviewContextImpl.java 复制到工作空间中

WebSphereCommerceServerExtensionsLogic 项目

应该把这个文件放在 src\com\ibm\demoas

\context\previewimpl\ExPreviewContextImpl.java
把文件 ExCMWSPreviewSetupCmdImpl.java 复制到工作空间中

WebSphereCommerceServerExtensionsLogic 项目

应该把这个文件放在 src\com\ibm\demoas

\content\preview\command\ExCMWSPreviewSetupCmdImpl.java

在启动测试服务器的前

要确保定制代码

编译没有出现

为了让 WebSphere Commerce

新

命令

必须在数据库

CMDREG 表中指定覆盖

连接数据库

执行清单 1 中

insert 或 update SQL 语句

从而添加这些新命令

引用:
清单 1. 创建或更新命令引用
insert
o cmdreg (storeent_id,
erfacename,
name, target) values
(0,'com.ibm.commerce.membergroup.commands.CheckUserInMemberGroupCmd',
'com.ibm.demoas
.membergroup.commands.ExCheckUserInMemberGroupCmdImpl',
'Local');
insert
o cmdreg (storeent_id,
erfacename,
name, target) values
(0,'com.ibm.commerce.content.preview.command.CMWSPreviewSetupCmd',
'com.ibm.demoas
.content.preview.command.ExCMWSPreviewSetupCmdImpl',
'Local');
update cmdreg
name=
'com.ibm.demoas
.membergroup.commands.ExCheckUserInMemberGroupCmdImpl'
where
erfacename=
'com.ibm.commerce.membergroup.commands.CheckUserInMemberGroupCmd';
update cmdreg
name=
'com.ibm.demoas
.content.preview.command.ExCMWSPreviewSetupCmdImpl'
where
erfacename=
'com.ibm.commerce.content.preview.command.CMWSPreviewSetupCmd';
为了让 WebSphere Commerce

化新

预览上下文

WC 项目中

businessContext.xml 文件必须引用它

打开文件 WC\xml\config\businessContext.xml

找到预览上下文定义

用扩展

上下文

引用更新它
<BusinessContext ctxId="PreviewContext"
factoryClassname
="com.ibm.commerce.context.factory.SimpleBusinessContextFactory">
<parameter name="spiClassname"
value="com.ibm.demoas
.context.previewimpl.ExPreviewContextImpl" />
</BusinessContext> 代码定制完成了

现在可以启动 WebSphere Commerce 测试服务器并测试修改
在商店预览标题中添加预览参数(可选)
本节将在商店预览标题中添加客户细分市场名称

图 4 给出预览时

显示举例
图 4. 商店预览窗口

下面使用本教程中

举例代码

复制两个 JSP 并更新它们

Struts 引用
把文件 ExtStorePreviewer.jsp 和 ExtStorePreviewerHeader.jsp 复制到工作空间中

Stores 项目

应该把这些文件放在 \Stores\WebContent\tools\preview 目录中

为了更新引用

打开 Struts 文件 Stores\WebContent\WEB-INF\struts-config-ext.xml

在 </action-mappings> 标记前面添加以下代码
<action path="/PreviewStore"
forward="/tools/preview/ExtStorePreviewer.jsp" />
<action path="/PreviewStoreHeader"
forward="/tools/preview/ExtStorePreviewerHeader.jsp" /> 重新启动 WebSphere Commerce 测试服务器

让修改生效

结束语
本教程讲解了如何通过定制 WebSphere Commerce Management Center 添加预览选项

让业务用户可以在所选

客户细分市场中预览 Web 商店

根据这个举例

可以以相似

方式添加其他预览参数
已知

限制
从 WebSphere Commerce Management Center 传递给预览窗口

参数

大小有限制

URL 大小受到 Web 浏览器支持

最大 URL 长度

限制

因此

如果为预览选择过多

客户细分市场

URL 请求就会太长

请求就会失败
本文举例源代码或素材下载