- 浏览: 896858 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (319)
- Thinking / 反思 (27)
- 我读的技术类图书 (3)
- 我读的非技术图书 (3)
- Java & Groovy (55)
- Ruby/Rails (9)
- Python (10)
- C/C++ (14)
- C# & .net (9)
- 互联网相关技术 (6)
- Database (6)
- Unix/Linux (6)
- WindowsDev (21)
- 工具使用 / Tips (62)
- 编程技术杂谈/咨讯 (6)
- 软工 / 敏捷 / 模式 (6)
- 易筋经 / 各种内功 (3)
- 充电 / 他学科知识 (6)
- 外语学习 (16)
- 我和宝宝的甜蜜生活 (24)
- 八卦 (3)
- 健康 (0)
- 无类别 (0)
- mTogether (4)
- 一页纸 (3)
- SAP (7)
- baby (2)
- abap (2)
- temp (1)
- network (1)
- 生活 (1)
最新评论
-
daliang1215:
收藏一下,好东西。 xp 的快捷键用的非常爽,到win7缺没有 ...
Windows7: 右键任务栏上的一个窗口, 用快捷键c关闭它 -
Alice南京:
感谢
Java GC 监视方法与工具 -
wjason:
今天在excel 2010上面写了一些代码,果然lookup有 ...
Excel 公式: 根据一个单元格的用户输入值, 自动设置另一个单元格的值 -
wjason:
因式分解:http://zh.wikipedia.org/wi ...
教孩子学编程: 数学题1 -
bbls:
不错 找了好久了
VS2010: 在Solution Explorer中,自动关联当前正在编辑的文件
写在前面
如果使用Mantis来管理bug, 项目比较小, 项目比较少的情况下,项目的bug状况还是一目了然,
但对于我们公司来说, 现在运行中的mantis有上百个项目, 1W余件bug,
在这种情况下, mantis提供管理功能就稍显薄弱,
比如, Mantis提供的能帮助管理层把握全局的功能比较少, 对bug数据的分析功能也比较少.
为此我们希望能够针对mantis做一些自己的工具,
一来,希望能够对上面的功能做一个补充,
二来,也希望透过这个工具, 让所有人都能够, 更方便的了解到他们应该知道的,以及他们想知道的bug信息.
我打了一个比方, 这个工具更像是我们的一个朋友, 或者一个很贴心的秘书.
针对bug的各种各样的问题, 我们都可以把答案交给他/她来办~
这些问题包括: 日常的, 例行的, 统计起来枯燥繁琐的, 还有一些靠我们自己不太好办到的....
明确了目标, 接下来是调查工作
为了办到上面的事情, 首先面临的第一步就是如何从mantis中,把bug数据取出来.
我们的做法正如标题那样:
使用Java调用Mantis提供的webservice, 获得Mantis数据
在MantisBT Frequently Asked Questions 上面, 有下面这样的介绍.
See the MantisConnect project which provides a PHP webservice that can be used from any language that supports SOAP webservices. MantisConnect also includes client libraries for .NET, Java and Cocoa.
MantisConnect also includes sample applications that uses the provided client libraries to provide useful tools. This includes an Eclipse plug-in written in Java, a NAnt task to submit MantisBT issues written in .NET, and many others.
MantisConnect now comes as part of the standard MantisBT installation package and can be found under the ‘{$mantis_install_dir}/api/soap’ directory. To see what functionality is currently provided via MantisConnect, check the WSDL available here.
就是说,有一个项目叫做MantisConnect, 他可以在server端, 为我们提供webservice服务. 而且这个项目现在已经默认集成到了mantis的安装包中. 也就是这些webservices会随mantis安装自带. 另外这个项目还未我们提供了client端, 方便我们连接这些webservice借口, 包括java, .net, 还有cocoa的.
我们来到了MantisConnect 这个项目, 查看了他的许可 , 如下:
■Professional - This license allows distributing an application with MantisConnect client libraries as part of it. It also allows installation of MantisConnect web service on a single website.
■Standard - This license allows the use of MantisConnect client libraries and an installation of the web service on a single website. This license doesn't allow distributing MantisConnect outside the licensed company.
■Free for Open Source - This license allows free usage of MantisConnect client libraries and web service for Mantis instances that ONLY host open source or freeware applications.
看来在公司内部使用, 只要不发布他, 没有问题.
所以下面上来的就是demo
下载MantisConnect client的source包的时候, 里面有对应的单元测试文件.
这个demo及时我参照单元测试抽出来的.
import java.math.BigInteger; import java.net.URL; import org.mantisbt.connect.axis.AccountData; import org.mantisbt.connect.axis.IssueData; import org.mantisbt.connect.axis.IssueHeaderData; import org.mantisbt.connect.axis.MantisConnectLocator; import org.mantisbt.connect.axis.MantisConnectPortType; /** * see the following links for the document of APIs. * http://www.mantisforge.org/dev/phpxref/api/soap/index.html * http://www.mantisforge.org/dev/phpxref/nav.html?api/soap/mc_project_api.php.html * http://www.mantisforge.org/dev/phpxref/nav.html?api/soap/mc_issue_api.php.html */ public class GetDataFromMantisDemo { public static void main(String[] args) throws Exception { String user = "administrator"; String pwd = "mypassword"; URL url = new URL("http://localhost/mantis/api/soap/mantisconnect.php"); MantisConnectLocator mcl = new MantisConnectLocator(); MantisConnectPortType portType = mcl.getMantisConnectPort(url); BigInteger project_id = new BigInteger("1030"); // demo 01 // get a bug by bug_id IssueData aIssueData = portType.mc_issue_get(user, pwd, new BigInteger("13547")); System.out.println(aIssueData.getId()); System.out.println(aIssueData.getSummary()); // demo 02 // get the account of a project. AccountData[] users = portType.mc_project_get_users(user, pwd,project_id, new BigInteger("90")); for (AccountData ad : users) { System.out.println(ad.getName()); } // demo 03 // get the issue headers of a project. IssueHeaderData[] headers = portType.mc_project_get_issue_headers(user,pwd, project_id, BigInteger.valueOf(1), BigInteger.valueOf(50)); for (IssueHeaderData header : headers) { System.out.println(header.getId() + "\t" + header.getSummary()); } //demo 04 // get the issues of a project. IssueData[] issues = portType.mc_project_get_issues(user, pwd, project_id, BigInteger.valueOf(1), BigInteger.valueOf(10)); for (IssueData issueData : issues) { System.out.println(issueData.getId() + "\t"+ issueData.getStatus().getName() + "\t"+ issueData.getSummary()); } } }
最后上的是trouble shooting.
在调上面的程序的时候, 我的确遇到了很多trouble(都是些让人郁闷的问题), 下面说说怎么解决的.
首先要确定我们的用户名密码还有url写的没错.
关于url, 我下载的客户端中的build.properties.sample文件里是这样配置的:
http://localhost:8080/mantis-1.1.1/api/soap/mantisconnect.php
但是很多公司的端口可能不是8080,
使用的url名字也很可能不是mantis-1.1.1, 而是形如<mycompanyname><myprojectname>这样的名字.
接下来就要搞懂各个函数的参数的意义, 确保你给各个函数传递了正确的参数.
关于参数的意义, 比较遗憾的是: 下载的javadoc中不够详细.
不过还好, 我们可以求助下面的链接.
http://www.mantisforge.org/dev/phpxref/api/soap/index.html
http://www.mantisforge.org/dev/phpxref/nav.html?api/soap/mc_project_api.php.html
http://www.mantisforge.org/dev/phpxref/nav.html?api/soap/mc_issue_api.php.html
这些文档是webservices的server端php代码.
因为java client端在包装这些代码的时候使用了相同的方法名字,所以我们可以很容易确认到服务器端对应的php source.
比如下面这段:
No description
从上面的信息一看, mc_project_get_issues的参数意义就一目了然了.
参数的类型就交给编译器,
通过上面方法可以找到你想要的函数, 如果需要上面函数的示例, 参见对应函数的单元测试代码.
通常情况下, 故事到这里就差不多该结束了.
因为一般情况下通过上面的步骤, client端的代码应该就没有问题,
而server端的代码是随安装过程自带的, 而且理论上你也应该没有动过他, 所以他也应该没有问题.
但是我的情况没有那么幸运,
因为我们的mantis已经被前仆后继的定制过了.
(如果一个mantis达到了我前面提到的规模, 很多重量级人物必然都知道了他的存在, 然后大家就会提出很多关怀性质的改善意见, 然后自己定制mantis的过程就开始了.....)
其中便有两处改动影响到了mc_project_get_issues和mc_project_get_issue_headers这两个方法.
使其不能正常运行, 抛出了很深的异常(如果我把它贴上来, 我想你一定会因为太长而感到郁闷 ^_^).
因为我用java调用mc_project_get_users和mc_issue_get这些方法都没有问题.
所以我确定,
一定是server端的mc_project_get_issues和mc_project_get_issue_headers这两个函数对应的代码出了问题.
我的解决办法是参照服务器端调试PHP程序 这篇blog, 配置好debug环境,
然后找个入口, 直接debug服务器端对应的php函数, 这些php函数调通了.
webservices调用的异常也自然跟着修正了.
评论
当我把用于连接soap的账号的语言设置改成中文的时候,soap无法成功
改回英文,便又成功了.
继续把语言改成日语, 成功
再把语言改成bulgarian(据字典说这叫保加利亚语),依然成功
我们在定制mantis的时候,平时主要注重的是英语和日语,简体中文对应和确认都不全
其他语言从来没有对应过.
问题很明显, 出现在简体中文的语言文件上面,
把问题写在这里, 希望对做类似事情的人有所帮助.
http://www.mantisbt.org/bugs/api/soap/mantisconnect.php#
http://www.mantisbt.org/bugs/api/soap/mantisconnect.php?wsdl
发表评论
-
批量替换,一个文件夹中, 所有文件中的某个特定字符串(For Lync Update)
2015-10-10 10:31 1966因为Office升级, 需要对所有的脚本内容, 做如下字符 ... -
Snagit: "在截图中自动添加时间戳"功能的开启与关闭
2015-07-21 16:27 1624Snagit有这样一个功能 - "在截图中自动添 ... -
网易公开课 - 让我们教孩子编码吧
2014-01-05 15:44 1361看了这个网易公开课. http://v.163.com/m ... -
Alias for Command Parameter for Bash
2013-12-30 12:25 1446bash的alias(别名)不直接支持$1,$2,$3,这 ... -
grep tools on windows
2013-12-28 19:52 1368最开始一直使用这个工具. FileLocator Lit ... -
VIM: 编写自己的“高亮显示syntax文件"
2013-10-13 08:52 950The following link is very use ... -
AutoHotKey: 从资源管理器中,获取被选择的文件的路径(及文件夹)的API
2013-10-12 11:49 7142从下面的URL中,获得了这个Library. Ge ... -
Everything Command Line Option
2013-09-14 10:56 1278Run "everything --help&q ... -
Links
2013-07-27 21:03 1149Reference Card DZone refc ... -
Wireshark Filters
2013-06-23 16:18 1708Wireshark是一款非常好用的网络抓包工具: htt ... -
在linux的VMware虚拟机中, 无法访问VMware的Shared Folders
2013-06-11 21:41 2415在一个VMware虚拟机的Setting中可以设置Shar ... -
Excel条件格式: 根据某一列单元格的值, highlight整行
2013-06-11 10:43 13798[追记 about excel Conditional F ... -
VIM: 查看log文件时的一些技巧, 关于如何展示搜索结果
2013-05-25 08:21 2259最近的学习工作中, 查看log文件需求特别多, 于是我对 ... -
Vim: Windows7中, 通过右键菜单加快捷键v, 快速启动vim
2013-05-22 14:39 3632在xp时代, 安装了vim之 ... -
Windows7: 右键任务栏上的一个窗口, 用快捷键c关闭它
2013-05-10 21:34 3424右键任务栏上的一个窗口, 在弹出菜单之后, 按下字母c, ... -
Windows 7: 单显示器, 窗口布局快捷键
2013-05-09 17:24 1706使用但显示器, 尤其是使用笔记本的用户, 应该有过这样的感 ... -
下述PDF文件无法保存解决办法: There was a problem reading this document(135)
2013-04-15 08:38 4889手头有一个PDF文档, 是加密的. 所以无法对他进行编辑和 ... -
Windows命令行中, 类似于linux的history命令
2012-10-31 09:43 7949在写这篇博客的时候: ImageMagick: 图像处理工具包 ... -
VS2010: 在Solution Explorer中,自动关联当前正在编辑的文件
2012-09-01 14:03 2895在Eclipse中有这样的功能:Link with edit ... -
AutoHotkey:使用快捷键,在双显示器间,移动最大化的窗口
2012-07-11 11:09 4495无意间看了我以前写的一篇博客:VC++: 在双显示器间,移动最 ...
相关推荐
本篇将详细讲解Mantis的基本概念、安装与配置,以及如何进行日常使用。 **一、Mantis基本概念** 1. **问题(Issue)**: 在Mantis中,问题指的是软件开发过程中发现的任何错误、需求或建议。每个问题都有唯一的ID,...
本文将围绕Mantis的备份与恢复展开,结合Oracle 10G数据库的相关操作,为初学者提供详尽的学习资料。 1. 数据库数据安全的重要性 在数字化时代,数据已成为企业和组织决策的基础。数据安全不仅关乎网络安全,更直接...
### Mantis基本使用教程知识点详解 #### 一、Mantis简介 Mantis是一款非常流行的开源缺陷跟踪系统,它主要用于管理软件开发过程中的错误报告、需求变更以及任务分配等。Mantis支持多种数据库,并且可以通过插件扩展...
《Mantis1.2.11搭建与使用详解》 Mantis是一款开源的缺陷跟踪系统,常用于项目管理和软件开发中的问题追踪。本文将详细阐述如何在Linux环境下搭建并使用Mantis1.2.11。 首先,我们需要将Mantis的压缩文件上传至...
Mantis 缺陷管理系统使用手册 Mantis 缺陷管理系统是一种功能强大且灵活的缺陷跟踪系统,它提供了完善的项目管理、团队协作和缺陷跟踪功能,旨在帮助开发团队和项目经理更好地管理项目中的缺陷和问题。本手册将从...
通过Mantis,团队可以更好地协调工作,确保每个bug都能得到及时处理。 首先,让我们了解Mantis的基本功能: 1. **问题报告**:用户可以通过Mantis的直观界面提交新问题,包括详细描述、复现步骤、影响版本等信息。...
Mantis 默认添加用户时 Email 提醒设置如下:可以看出很多情况下 Mantis 都是默认发送邮件,如果 Mantis 里面的用户和项目过多且操作频繁时就会有大量的邮件数据产生并写入数据库。 解决问题 解决问题的关键是检查...
### Mantis详细使用教程知识点概览 #### 一、Mantis简介及登录流程 - **Mantis**是一款开源的问题跟踪系统,主要用于管理软件缺陷、需求变更等项目中的问题跟踪任务。 - **登录流程**: - 访问Mantis登录界面...
标题提到的"mantis资源,直接解压使用",意味着你得到了一个MantisBT的压缩包,版本为1.2.4,可以直接解压到本地环境中进行安装和使用。下面我们将详细探讨MantisBT的安装、配置和使用。 首先,你需要准备一个合适...
### Mantis简介及使用方法详解 #### 一、Mantis概述 Mantis是一款非常流行的开源缺陷跟踪系统,专为软件开发团队提供了一种简便的方法来记录、管理和追踪软件中的问题和缺陷。它不仅具备基本的功能,如缺陷提交、...
《Mantis使用教程详解》 Mantis是一款开源的缺陷跟踪系统,广泛应用于软件开发和项目管理中。本教程将深入浅出地介绍如何配置、使用Mantis,帮助用户熟悉其核心功能。 首先,获取Mantis的用户名是使用系统的第一步...
此外,Mantis支持多语言,这极大地扩展了其在全球范围内的适用性,使得不同地区的团队成员都能无障碍地使用。 在功能性方面,Mantis Version 1.1.8增加了许多实用的功能。例如,图形报表功能使得管理者能够通过图表...
1. **统计分析**:通过自定义字段,您可以收集特定数据,然后使用Mantis的内置报表功能或导出数据进行进一步分析。 2. **自动化流程**:利用自定义字段可以实现某些工作流程的自动化,例如,基于优先级自动分配任务...
Mantis提供了丰富的功能集,包括但不限于: - **项目管理**:允许创建多个项目并为每个项目分配不同的访问权限。 - **错误追踪**:提供强大的错误报告和追踪机制,支持通过Web界面或电子邮件提交错误。 - **自定义...
在IT领域,Mantis是一款广泛使用的开源缺陷跟踪系统,它能有效地帮助开发团队管理软件开发过程中的各种问题和缺陷。然而,在将Mantis部署到IIS(Internet Information Services)服务器时,用户可能会遇到一系列配置...
在实际使用中,Mantis提供了一些关键功能: 1. **问题报告**:用户可以详细描述问题,包括标题、描述、严重性、优先级、所属模块等,并附上日志、截图等辅助信息。 2. **分类与优先级**:管理者可以定义问题类别和...