Skip to Content
Author's profile photo George Wen

SAP HANA应用实例:个人消费分析 – Java版 【翻译】

本实例用到HANA, HTML5, Java, jQuery (AJAX) 以及Jersey (这是一个JAX-RS标准的开放源代码实现。JAX-RS是一个基于Java的web service标准)。
这是一个完整的基于HTML5, jQuery, AJAX的web应用。它通过HANA JDBC接口访问HANA的数据然后提供REST风格的web service。这个例子展示了如何完全通过Java开源方案建立web应用。除此之外,我们还需要在服务端建立HANA数据模型。我在这篇博客里有详细解释。
另外,你也可以在这篇博客里下载用SAP BOBJ Dashboard实现类似的应用。
开发环境是Eclipse. 我把全部代码都打包好了,你可以从这里下载。HANA数据模型需要手工建立。请看我博客里的步骤建立各种分析视图和计算视图。
这个例子展示了一个典型的web service访问HANA数据场景。下表列出了各个组件的及其下载链接。你可以在你本机配置同样的环境然后运行它 。至于HANA数据模型,你可以在亚马逊的web service上找到SAP HANA个人开发版。它带一个免费的开发许可。(详情参看这里
类型 描述 链接
HTML5 使用HTML5特性生成图形和交互 Rgraph
AJAX 更高效地用javascript代码定义交互过程 jQuery
REST风格的Web Service 定义一系列的API访问SAP HANA数据模型的输出。HTTP定义了很多功能,用GET读取数据,用POST新增数据,用PUT修改数据,用DELETE删除数据。我们只用到GET来获取数据。 Jersey
DAO/JDBC 连接 通过JDBC访问SAP HANA的计算视图,或者分析视图 SAP HANA 客户端
JSP应用服务 使用tomcat服务器支持JSP。我选了Xampp这个开源的跨平台web服务器解决方案包
开发工具 基于Eclipse的集成开发环境 Eclipse Java EE IDE
测试工具(可选) 帮你测试系统
curl: 测试HTTP GET的工具
现在好多信用卡公司都给客户提供下载和分析他们自己交易数据的工具。Discover卡就是其中一家。他们的网站给用户提供了详细的分析工具(www.discovercard.com)。这个工具能让用户回顾自己的消费历史记录并做出统计分析。
我们的例子就是基于与Discover卡类似的数据结构建立一个类似的个人消费分析工具。跟着我们的步骤,你就能用Java开源项目和SAP HANA构建出自己的分析工具。你可以下载自己的真实交易记录来分析,也可以扩展这个应用定制你自己的分析。我们的例子也提供了一些例子数据。
应用的通信是Web Service形式的。Web Service主要有两种风格,一种是REST规范的,一种是自由式的。REST规范的Web Service通一套标准的无状态操作符操纵Web Service的XML。而自由式的Web Service任意定义自己的操作符。
这里我们采用REST规范的Web Service。在此架构下,所有对象都是一个资源。必须通过一套基于HTTP的标准方法访问这些资源。REST规范也允许资源有不同的表示方式,比如text, xml, json等。REST客户端可以通过HTTP请求特定的表示方式。
JAX-RS把实现一套符合REST规范Web Service变得非常简单。你可以在我们的代码里看到这些JAX-RS annotation。
@GET: HTTP function
@Path: path the method responds to.
@Produces: Generate one or more response content type(s). 
下表列出了本例用到的Web Service地址。这些Web Service调用将触发Java DAO,DAO再通过HANA JDBC访问数据。我们在例子中只用到了GET方法实现如下功能:
  

方法 地址 行为
GET /psa/trans 获取所有的交易
GET

/psa/trans/category

获取交易按类别的汇总
GET /psa/trans/monthsum 获取交易按月的汇总
GET

/psa/trans/monthavg

获取交易按月的均值
GET /psa/trans/monthavgdif 获取交易按月求差异
GET /psa/trans/classification 获取交易按k均值算法的汇总
GET /psa/trans/report 获取交易报表
GET /psa/trans/search/{node} 查找名字包含node的交易
GET

/psa/trans/{i}

获取id 为 i 的交易
你可以用cURL来测试这些API。 当然,在测试之前你得先部署好你的应用,然后就可以从浏览器地址栏访问这些REST服务。比如,你可以试试:

http://localhost:8080/psa/trans

http://localhost:8080/psa/trans/search/Arizona

http://localhost:8080/psa/trans/5

此外。你也可以用FireFox里面的FireBugs或者cURL来测试这些服务。比如你看可以用这个命令获取所有的交易历史:

curl -i -X GET http://localhost:8080/psa/transaction

这条命令会访问你的REST API并把从HANA服务器传来的数据显示给你。

所有的源代码和war文件都可以从这篇博客下载。只要部署好这个war文件到你本地的tomcat服务器就可以了。当然你还得在你的HANA服务器上建好你的数据模型,然后在psa.properties文件里面配置好正确的HANA服务器信息(你可以使用开发版或者SAP HANA One作为你自己的HANA服务器)。要修改这个文件请用winrar代开你的psa.war然后找到 psa.war\WEB-INF\classes\psa.properties。当然,配置完成以后还要建好你的HANA数据模型,然后就可以运行你的应用程序了。

欢迎讨论。

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.