ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用AJAX技术在浏览器端和RTC集成

使用AJAX技术在浏览器端和RTC集成

原创 Linux操作系统 作者:jazzcharlie 时间:2009-05-25 13:31:34 0 删除 编辑

使用AJAX技术在浏览器端和RTC集成

 

 2009-05-15

 

本文所述观点和方法只代表作者个人。所提供的方案或软件是“AS-IS”。

 

问题和需求

 

大约一年前,我所在的开发团队正式开始采用敏捷开发过程并采用Rational Team Concert 做为我们的管理系统。Rational Team Concert是一个非常全面和先进的软件开发管理系统。在我们团队逐步增加各种敏捷开发实践的过程中,RTC都提供了非常好的支持。但是由于我们开发的项目十分复杂,涉及到许多分布在世界各地不同团队的协作, RTC服务器的管理和设置无法满足我们团队的一些特殊要求。本文主要介绍我们遇到的两个具体问题和解决方案,希望对您有所启发。

 

根据我们项目的特点,我们选取了CruiseControl做为持续集成的工具。但是却发现我们的RTC目前没有设置和构建服务器的集成。开发人员无法从RTC中了解到项目构建的状态。另外,在RTC中可以浏览一个工作部件的相关部件,但是只能看到它的父母和孩子部件,无法回溯到最上层的节点。而在我们的项目中,部件的层次比较多,手工寻找出某个工作部件的出处需要好多步。

 

技术背景

 

由于我们团队无法对RTC服务器进行设置或修改,为了解决以上两个问题,我们只能从客户端入手。幸运的是RTC提供了REST风格的Web服务,只要了解了它的细节完全可以完成一些特殊的要求。由于我们的开发人员大都使用FireFox浏览器,我们决定开发一个FireFox的插件。由这个插件根据用户的输入,发送Ajax请求到RTC服务器。而插件的开发则采用了编译后的GreaseMonkey的脚本。GreaseMonkey也是一个FireFox的插件,它使用大家喜闻乐见的javascript做为开发语言,提供的API更让用户可以方便的开发自己的插件。为了更好的了解RTC Web服务的细节,我们还使用FireBug调试器来分析协议的细节。

 

RTC服务器、安装了GreaseMonkeyFireBug插件的FireFox浏览器、和一个顺手的文本编辑器,这就是所有我们需要的工具了,下面让我们一步步来解决问题吧。另外,我们的插件被命名为“Jazz Sidearm”。

 

解决方法详述

 

对于CriuseControl的集成,十分简单。因为,CC提供了一个Web界面,它的协议十分朴素。打开CC的主页,提交一个构建请求,从FireBug中可以看到一个编译构建请求的HTTP细节如下:

 

var buildurl = "http://"+hostandport+"/invoke?operation=build&objectname=CruiseControl+Project%3Aname%3D"+project;

 

buildurl 是我们要发送的GET请求

hostandport CC服务器的主机名和端口

project 是需要构建的项目名称

 

对于RTC就相对复杂一些了,首先我在Jazz论坛中找到有关工作构件的Web API好像是“IWorkItemRestService”。然后再用浏览器打开一个工作构件的孩子节点,从FireBug的所有网络通信中果然找到了它:

 

'https://'+window.location.hostname+':'+window.location.port+'/jazz/service/com.ibm.team.workitem.common.internal.rest.IWorkItemRestService/workItemDTO2?includeHistory=false&id='+node,

 

window.location.hostname/port: RTC的主机名/端口

node: 是要查询的工作构建号码

 

这个请求的返回格式是SOAP,虽然不是大家喜闻乐见的JSON。但是人类还是可以读懂的。总之,它包含了我们需要的信息:工作构件的所有父亲和孩子。所以我们只要递归的调用这个请求,就可以得到它所有的长辈了。

 

由于我们对界面的要求不高,所以将两个功能放在一个窗口中,用一个按钮来控制它的显示和隐藏。当用户打开一个RTC页面时,插件动态将按钮插入页面顶端。

用户就可以在浏览RTC页面的时候,进行CC构建操作或查询某个工作构件的树结构了。

 

我们先按照GreaseMonkey的要求,开发Jazz Sidearm,然后用编译器生产独立的FireFox插件发布给每个人。

 

使用介绍

 

如前所述,Jazz Sidearm 界面十分简单。用户可以输入CC服务器地址和项目名称,点击“Submit”来提交构建请求。用户也可以输入工作构件号码,点击“Jazz”来查询各层父辈节点。所有输出都将显示在同一窗口中。“Sidearm”按钮用来控制插件窗口的显示和隐藏。下面是Jazz Sidearm的屏幕截图:


 

未来工作和对RTC希望

 

由于RTC已经引入了dojo javascript库,在界面方面,Jazz Sidearm完全可以使用dojo的各种控件,例如将工作构件之间的父子关系在树形控件中显示。

 

我们在Jazz Sidearm的开发过程中,发现如果RTC可以提供JSONP方式的API将会大大方便用户的集成。

 

总之,RTC提供了丰富的功能和特性,我们仍在进一步的探索中,希望各位资深用户多提宝贵意见,多分享经验。

 

参考资料

 

sidearm download: http://space.itpub.net/batch.download.php?aid=15251

jazzhttp://jazz.net/?S_TACT=105AGX23&S_CMP=Jazz

greasemonkeyhttp://diveintogreasemonkey.org/toc/index.html

greasemonkey compilerhttp://arantius.com/misc/greasemonkey/script-compiler

firebughttps://addons.mozilla.org/zh-CN/firefox/addon/1843

jsonphttp://ajaxian.com/archives/jsonp-json-with-padding

dojohttp://www.dojotoolkit.org/

cruisecontrolhttp://cruisecontrol.sourceforge.net/main/configxml.html

cross domain communication

http://www.ibm.com/developerworks/library/wa-aj-jsonp1/?S_TACT=105AGX54&S_CMP=C0226&ca=dnw-1008&ca=dth-st&open&cm_mmc=4865-_-n-_-vrm_newsletter-_-10731_105741&cmibm_em=dm:0:13623310

image002.jpg

sidearm.JPG

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21737709/viewspace-604065/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: sidearm
请登录后发表评论 登录
全部评论

注册时间:2009-05-25

  • 博文量
    2
  • 访问量
    2404

最新文章