基于Atom协议的数据接入规范

基于Atom协议的数据接入规范

基于Atom协议的数据接入规范... 1

读者对象... 2

简介... 2

本文... 2

导读... 2

被接入系统需要做的:提供XML... 2

.NET系统:利用Atom.NET框架来提供atom... 3

java系统:利用abdera框架提供atom... 3

action中添加getAtomLists方法... 4

1)从当前系统查询出对应的记录以及记录总数... 4

2)从当前系统查询出对应的记录以及记录总数... 5

3)最后将feed输出到response流中... 5

java生成atom源的源代码... 6

atom各属性说明... 7

工单列表接入... 8

信息发布接入... 9

导航树接入... 9

 


 

读者对象

被接入系统开发人员

简介

 Atom 发布协议是一种基于 HTTP 的用于创建和编辑 Web 资源的方法。它基本上围绕着这样一种观念设计,即利用 HTTP 协议提供的基本操作(如 GETPUT DELETE)传输表示 blog 项、博客、wiki 页面、日程记录等内容的 Atom 1.0 Feed and Entry 文档实例。

本文

本文是介绍门户基于atom规范的接入待办工单、待处理事宜、信息发布等列表的开发规范(目前只支持接列表),web系统提供符合规范的atom源,并提供http访问路径,门户系统就能利用来读取并解析web系统提供的列表数据。需要注意的是,被接入方需要协助解决我方利用程序URL访问权限问题,需提供一个访问通道。

导读

       读者可先从简介了解,再从提供XML一节获得感性了解,知道要提供的atom源具体是什么样,然后可以根据您的系统是java或者.net系统对应选择java系统提供atom或者.net系统提供atom。然后当知道如何编写代码后,您会发现还需要了解atom的属性,接下来您可根据接入的是工单列表或者信息发布等选择阅读对应章节。

 

被接入系统需要做的:提供XML

1)需要提供一个xml格式的源,并提供完整的访问路径(如:http://ip:port/eoms/workbench/memo/tawWorkbenchMemoMain.do?method=getLists)xml内容示例如下图所示:

 

 

.NET系统:利用Atom.NET框架来提供atom

Atom.NET 是一个开源的用于处理 ATOM C# 组件

项目主页: http://atomnet.sourceforge.net/

文档地址: http://atomnet.sourceforge.net/doc/index.html

下载地址:

http://sourceforge.net/project/showfiles.php?group_id=98691&package_id=105862&release_id=253304

java系统:利用abdera框架提供atom

使用apache abdera框架接入java web应用的列表,在工程中导入所有需要的jar包。当前使用的版本是Abdera 0.4.0,可以从官方网站http://abdera.apache.org/下载。

 

action中添加getAtomLists方法

1)从当前系统查询出对应的记录以及记录总数

代码说明:

    1)参数pageIndexpageSize直接从request中可以取到,访问时由读源方提供;

2)查询条件由提供atom源方确定,where 1=1 可以读取所有记录;

3mgr替换成对应模块的mgr,该mgr需要返回查询得到的记录集合和记录总数。

2)从当前系统查询出对应的记录以及记录总数

代码说明:

    1 以下两条语句创建了一个Feed

Factory factory = Abdera.getNewFactory();

       Feed feed = factory.newFeed();

2)接下来就是把查询到的所有记录循环插入到Feed中,在循环体中利用

Entry entry = feed.insertEntry();

Feed创建一个子节点,可以存一条记录,依次循环即可。

       3entry.setText(tawWorkbenchMemo.getUserName());

这句代码插入后的效果是提供xmlxml示例图中的entrytext字段

       4title一般是存储如工单流水号这样的字段,通过链接可以直接访问到详细页面

entry.setTitle(tawWorkbenchMemo.getTitle());

   5entry的其它字段存储请参考提供xml一节中介绍。主要就是区分StringDate的输入。

  6) 下面这条语句是提供xml一节的xml示例中的 “38”,该字段约定用来存储总记录数。

feed.setText(map.get("total").toString());

3)最后将feed输出到response流中


java生成atom源的源代码

所有代码如下,

    /**

     * 创建atom

     */

    public ActionForward getAtomLists(ActionMapping mapping, ActionForm form,

           HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

 

       try {

           // --------------用于分页,得到当前页号-------------

           final Integer pageIndex = new Integer(request

                  .getParameter("pageIndex"));

           final Integer pageSize = new Integer(request

                  .getParameter("pageSize"));

 

           TawWorkbenchMemo tawWorkbenchMemo = null;

           // 得到查询的条件

           String whereStr = " where 1=1";

           ITawWorkbenchMemoManager mgr = (ITawWorkbenchMemoManager) getBean("ItawWorkbenchMemoManager");

           Map map = (Map) mgr.getTawWorkbenchMemos(pageIndex, pageSize,

                  whereStr);

           List list = (List) map.get("result");

 

           // 创建ATOM

           Factory factory = Abdera.getNewFactory();

           Feed feed = factory.newFeed();

           // 分页

           for (int i = 0; i < list.size(); i++) {

              tawWorkbenchMemo = (TawWorkbenchMemo) list.get(i);

              Entry entry = feed.insertEntry();

              entry.setTitle(tawWorkbenchMemo.getTitle());

entry.setContent(“http://www.google.com”);

              entry.setSummary(tawWorkbenchMemo.getContent());

              entry.setLanguage(tawWorkbenchMemo.getReciever());

              entry.setText(tawWorkbenchMemo.getUserName());

              entry.setRights(tawWorkbenchMemo.getLevel());

              entry.setUpdated(tawWorkbenchMemo.getCreattime());

              entry.setPublished("2009-01-21");

              entry.setEdited(tawWorkbenchMemo.getCreattime());

              Person person = entry.addAuthor(tawWorkbenchMemo.getUserid());

              person.setName(tawWorkbenchMemo.getUserName());

           }

           // 每页显示条数

           feed.setText(map.get("total").toString());

 

           OutputStream os = response.getOutputStream();

           PrintStream ps = new PrintStream(os);

           feed.getDocument().writeTo(ps);

 

       } catch (Exception e) {

           e.printStackTrace();

       }

       return null;

       }

atom

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值