WebLogic的行为跟踪是跟踪用户在您的门户应用程序中的行踪的强大的解决方案,它还可以用来得知哪些变更改进了销售。BEA曾建议您雇用一家营销分析公司来完成对这种行为跟踪数据的一次性分析工作。但为每个营销活动都进行这样一次分析将会使成本变得非常高,而且分析工作只有在这些活动都完成后才有用。让我们来看看一个成本要低得多的解决方案,它能使您在活动进行中和活动之后都能进行实时分析。
什么是行为跟踪?
日志跟踪被长期用于跟踪用户在Web站点上的行踪,并提供有用的信息,例如,哪些活动吸引顾客,哪些特性迷惑或妨碍顾客,以及哪些内容是顾客最喜欢的等等。这些信息可用于改进您的Web站点,并引导更多的顾客购买您的产品或服务。
日志分析的问题是,它除了提供给定顾客访问的页面之外,不能提供其他信息。例如,这位顾客是谁?他购买了什么?他是否放弃了他的购物车?并且,其他有用的数据也难于(有时是不可能的)可靠地确定下来。
行为跟踪自动把所有这些有用的信息记录到数据库,从而解决了以上问题。这样做需要给门户控件添加一个特殊的监听器。每次用户登录或退出,或者往他的购物车中添加一项物品、或者购买一项物品、或者点击一个广告、或者观看目标内容时,这些动作信息就被记录到数据库中(参见表
1,获得WebLogic Portal中内置的完整动作列表)。更为强大的是,您能创建您自己的能被记录到数据库中的自定义控件和事件。用这种方法,WebLogic将保证您总能得到您需要的信息,使您的网站访问者转变为顾客。
| 事件 |
描述 |
| AddToCartEvent |
添加项到购物车中 |
| BuyEvent |
购买一项物品 |
| CampaignUserActivityEvent |
触发一次促销活动 |
| ClickCampaignEvent |
单击活动促销 |
| ClickContentEvent |
单击特殊内容 |
| ClickProductEvent |
单击查看产品或服务 |
| DisplayCampaignEvent |
查看促销活动 |
| DisplayContentEvent |
查看特别内容 |
| DisplayProductEvent |
查看有关产品或服务的信息 |
| PurchaseCartEvent |
开始结帐流程 |
| RemoveFromCartEvent |
从购物车中移去的产品或服务 |
| RuleEvent |
触发门户规则 |
| SessionBeginEvent |
访问者进入站点 |
| SessionEndEvent |
访问者离开站点 |
| SessionLoginEvent |
客户登录 |
| UserRegistrationEvent |
访问者注册客户帐户 |
|
表1 WebLogic Portal 内置的动作
使行为跟踪变得如此有用的一个原因是,它保存了与每个事件对应的信息。例如,AddToCartEvent保存了SKU、标价、数量等字段,而ClickContentEvent则保存了文档id和文档类型等字段。可以断定,获得这种灵活性是要付出代价的。
当生成了一个事件后,行为跟踪监听器就在BT_Event表中保存一个XML格式的CLOB(Character Large Object)。这就出现了问题,即数据库不能再对存储的数据运行SQL查询语句。ReportingEngines在它的Formula
One e.Report Engine报告生成器中为我们提供了一种解决方法。它的界面与在Microsoft Access或者Crystal Reports中创建的报告非常类似。该报告可以在WebLogic
Portal Server中开发,并直接在Web中运行。这种独特的方法使Formula One成为运行WebLogic Portal Server的首选。然而,Formula
One的真正强大之处则在于它的查询引擎。
为了使数据库、对象层次以及XML文档得到最大限度的兼容,ReportingEngines在它的Formula One产品中建立了一个强大的查询引擎。而为了行为跟踪,ReportingEngines又加强了这个查询引擎,使得每个事件类型如同一张表一样。这就意味着Formula
One能允许您为行为跟踪数据进行标准数据分析。
注意:本文中的例子是以WebLogic Workshop为IDE的,这是因为它和WebLogic Portal Server紧密集成在一起。但是,事实上,Formula
One能与任何Java IDE一起使用。
现在,我们就进行行为跟踪的准备步骤,然后实现一个行为跟踪示例。
准备跟踪
让我们假设您已经安装了WebLogic Portal和WebLogic Workshop。虽然任何应用程序都可以使用,但如果您需要一个用来测试和学习的平台,就只能用WebLogic
Sample application。该示例应用程序位于<install folder>\weblogic81\samples\portalApp下。
在您启动WebLogic Workshop之前,请访问www.reportingengines.com并下载Formula One e.Report
Engine Evaluation Copy。当您运行安装程序时,要确定您选择了“WebLogic Portal Integration”选项。没有这个组件,您就不能分析行为跟踪数据。假如您已经安装了Formula
One而没有安装这个组件,那就重新运行安装程序。
默认状态下,行为跟踪在WebLogic Portal中不可用,但可以很容易地启动它。首先,您需要访问Portal官方网站。您能容易地通过选择Portal,再选择WebLogic
Workshop 菜单中的Portal Administration到达那里。假如您正在使用示例应用程序,那么登录和密码都是“weblogic”。
一旦您登录到Portal官方网站,点击右上方角落中的Service Administration,然后点击左边菜单中的Event Service链接。这时会显示给您一个有同步和异步监听器的列表(见图
1)。输入“com.bea.p13n.tracking.listeners.BehaviorTrackingListener”到Synchronous
Listeners下面的文本框并点击Update。到此,行为跟踪就可以使用了。要确保为您想要跟踪的每个WebLogic Portal环境都重复了以上步骤。

图 1 一旦您登录到Portal官方网站,点击右上方角落中的Service Administration,然后点击左边菜单中的Event Service链接。这时会显示给您一个有同步和异步监听器的列表
测试行为跟踪
现在,让我们创建一个简单的报告以显示每个用户都是何时登录到您的网站,以及他们登录的全部次数。这样一个报告能用来确定大客户。而且假如您收集了这些顾客的足够信息,在协助您开发市场定位模式方面,它的功能会非常强大。
启动前,加载WebLogic Workshop并直接在您的Portal文件夹下创建一个名为“reports”的新文件夹(假如您正在使用示例Portal应用程序,那就在sampleportal文件夹下创建这个新文件夹)。接着,在这个新文件夹中创建一个类型为Other
File Types的新文件。这会产生一个完整的文件选项表(见图 2)。在ReportingEngines目录下选择Report Design类型。输入报告的文件名,例如“UserLogins.jod”,然后点击Create。
图 2 在您的Portal文件夹下创建一个名为“reports”的新文件夹,接着,在这个新文件夹中创建一个类型为Other File Types的新文件。这会产生一个完整的文件选项表。
选择报告类型:您现在应该看见一个窗口,它要求您在不同的报告风格中选择一项。每个选项都提供了一个不同的向导来协助您创建所需要的报告。由于我们要从不止一个表中提取信息,所以我们应该选择Multiple
Table report,然后点击OK。
这会触发Select Data Source屏。该屏的目的是使您为所要生成的报告连接正确的数据源。它为给最终用户创建灵活的报告提供了很多选项。在这里,我们仅仅使用报告工具来做内部数据分析。因此您应该点击BEA
Portal Data选项,这样,Formula On就会知道如何解析行为跟踪数据。
获取报告数据:下一个向导在我们输入完整的数据库连接信息处出现。对于那些已经使用过WebLogic Workshop的人,这看起来像多余的一屏。为什么它不能简单地允许您从JNDI树中的DataSources中选择一个呢?答案是因为出于安全考虑。因为您很可能会为一个面向内部的应用程序创建一个报告,结果却报告了面向客户的应用程序。由于面向客户的DataSource或许不能在内部服务器中配置,因此Formula
One使您拥有一个更加健壮的数据库连接模式。
接下来,只要将您的数据库的信息输入到每一屏中。假如您正在使用示例应用程序,您可以使驱动为Pointbase JDBC驱动。输入“jdbc:pointbase:server://localhost:9093/workshop”作为数据库连接字符串,输入“weblogic”作为用户名以及密码。向导的最后一屏会告诉您是否已正确连接。
理解多表向导:我们想要做的事情的核心就是创建一个能显示每个用户和他们登录次数的报告。为了达到这个目的,我们需要BT_Event和XML_SessionLoginEvent表中的字段。XML_SessionLoginEvent是一个由Formula
One引擎创建的虚表。如果您好奇的话,可以花一点时间去研究一下field标签下不同的XML虚表。您会发现每张表都有一组对应于它记录的事件的字段。
要创建我们的报告,首先要进入Fields 标签,并选择BT_Event.USER_ID、BT_Event.Event_Date和XML_SessionLoginEvent.EVENT_ID。前面两个字段将提供给我们所需要的信息,而第三个字段用来使事件仅限于Logins。
在Group标签下,选择BT_Event.USER_ID字段。它能使每个用户局限在他/她自己的域中,并允许报告提供每个用户的全部信息。
在Joins标签下,您会注意到Formula One引擎能在Event_ID字段中准确地确定SQL Join。这也是您能添加一个where clause到您的报告中的地方。您可以使用where
clause特性把结果限制到一个最近的时间段,例如上个月。
在Data标签下,您能为您的报告添加题目、页脚中的某些格式的标语、甚至一个公司的徽标。假如我们不想在第一次就做得太花哨,那就简单地输入“User Logins”作为报告题目,然后点击Finish。
完成报告:您现在有一个基本而有用的由您支配的报告了(见图 3)。您可以通过点击Preview标签查看它的结果。您将会发现报告呈现相当的线性,并且Event_ID字段显示出在WebLogic引擎内部的一个值。虽然这并非是个不好的开始,但是该报告还是能在Design标签下实现几个清除动作。

图3 完成本文中展示的步骤时,您应该有一个由您支配的有用的报告了
Event_ID字段仅被用在背景中,因此我们可以去掉它。首先,点击Event_ID字段并在键盘上按delete键。也可以点击Event_ID头来完成。这样可以删除它以前显示的多余数据。
接下来,我们要添加一个能显示每个用户登录数的字段。我们将给我们的报告添加一个规则字段来实现它。这个规则字段能计算每个用户的登录数并产生总数。
要创建这个字段,我们先选择工具栏中的Formula选项。然后,点击GFTR_USER_ID字段的某个地方,最好是直接点击已存在的字段下方。这样会创建一个新的规则字段并弹出一个向导来配置它。弹出的窗口的顶部有一个很大的用来输入的文本框。由于用图形化的方式做事情总是会更容易些,所以就点击那个椭圆形(有三个点
“…”的按钮)来启动一个规则编辑器。
我们需要告诉引擎我们想要进行计算以及计算什么。选择Functions文件夹下的Built-In Functions列表。从右边滑动该列表直到您看见“count”。假如您双击“count”,“count(obj)”函数会在顶部的文本框中出现。接着,点击Reporting
Fields文件夹并在列表中找到CID_FLD_0(CID_FLD_0是一个USER_ID字段。这些字段可以为了更明确而被重新命名)。假如您双击这个字段,顶部的文本框就会读取计数(CID_FLD_0)。点击OK,返回上一屏。
最后,您应该点击Change Format...按钮,选择Number标签,并点击OK。这样就不会使报告在显示总数时出现小数。点击OK,退出规则弹出对话框,大功告成。点击Save按钮,然后可以自由使用preview标签来观看您的成果了。
开发
现在,我们已经创建了一个报告,把它部署到我们的WebLogic Portal Server中会很有用。这个过程相当简单。首先,您需要创建一个JSP页面来嵌入这个报告。然后,把该JSP页面拖入一个“.portal”文件。WebLogic
Workshop会自动把JSP页面转换为一个portlet,而您的报告也会同时完成。
创建一个JSP文件:首先,直接在应用程序的当前portal文件夹下创建一个新的JSP文件。假如您正在操作示例应用程序,您就需要在sampleportal文件夹下创建该文件。
一旦该文件出现在Workshop的设计窗口中,您就需要手动添加一些代码了。点击Source标签,然后在taglib语句下的空余处添加“<% taglib
uri="erdje" prefix="erdje" %>”。这条命令告诉JSP文件要导入必需的Formula
One支持模块。这样,我们才能图形化编辑文件。
在切换回设计视图后,在屏幕左下角的Workshop Design Palette中寻找Formula One目录。用鼠标拖动名为viewer的控件到设计窗口中,就会出现Viewer
Insert向导。
向导中唯一需要的字段是JOD Report Design文件的路径。尽管它最初会引起一些困惑,但这个字段会提供给我们先前创建的JOD文件(例如Formula
One报告)一个相对URL。这个URL与部署在WebLogic Portal Server上的JSP文件有关。因此,对于示例应用程序,我们要输入../../../sampleportal/reports/UserLogins.jod。
假如您想得到一个报告输出格式而不是DHTML,那就在此时从下拉框中选择它。否则,只需要简单地点击OK把这个控件插入到JSP文件中。对于大多数Workshop控件,Formula
One视图有多个选项可在右上角的属性框中被修改。最后,您可以修改宽度和高度参数以更加适合您的布局。
作为一个Portlet报告:您现在可以准备把JSP文件转换为portlet了。尽管听起来很麻烦,但这并不是个复杂的操作。只需简单地双击项目中的“.portal”文件(示例应用程序中则是示例.portal文件),然后把我们创建的JSP文件拖到我们选定的门户页面中。为了显得整洁,很多开发人员喜欢创建一个新的站点域来集合报告,但是这并不是部署所必需的。自由地部署您的报告,它们会对您的门户用户非常有用。
严密的数据分析
我们仅仅粗浅地谈论了行为跟踪和Formula One一起使用,如何能增加您的利润和降低您的成本。通过WebLogic Portal,BEA提供了一个最佳解决方案来获得与您的用户习惯有关的及时准确的数据。这个数据是其他任何服务解决方案都无法提供的。为之构建的ReportingEngines和它的Formula
One产品能够快速地得出信息高度丰富的报告。报告不只包含简单的文本信息,还包含图表、图形、PDF和其他有用特性,以便进行严密的数据分析。假如您正想增加利润并节省开支,那么这个解决方案或许正适合您。
关于作者
Jerason Banes是一位资深Java开发人员和架构师,他特别喜欢应对Java架构方面的挑战。他把大量的时间用来进行编程工作,而空闲时间则陪伴他的妻子和两个孩子。可以通过jbanes@gmail.com联系他。
原文出处:http://www.fawcette.com/weblogicpro/2004_09/magazine/features/jbanes/
|