Atlassian JIRA小工具REST API

时间:2014-03-15 23:49:46

标签: ajax jira jira-plugin jira-rest-java-api jira-rest-api

我编写了一个JIRA小工具,它对JIRA REST API进行AJAX调用然后使用数据;创建日期,分辨率日期和状态以创建两个包含数据的独立数组:

var dateCreated;
dateCreated =[[<created>, <daily total>],...];

所以,如果在'2011-1-1'上创建了两个问题,那么数组的元素块将是

[ [‘2011-1-1’, 2],...]

另一个数组是:

var statusDate;
statusDate=[[<resolutiondate>, <daily total>],...]

所以,如果在'2011-1-1'上创建了两个问题,那么数组的元素块将是

[ [‘2011-1-1’, 2],...]

我使用JIRA小工具中的ajaxOptions来进行AJAX调用,并且我能够使用Javascript获取数据并进行数组操作,并将数据绘制为在时间序列图上创建和关闭的总问题。但是,有些项目比其他项目有更多问题,将数据加载到图表中需要大约30秒。 有了JIRA,我可以使用后端服务器脚本,在将数据移植到基于html并加载到客户机上的图表之前,可以在服务器端进行数组操作吗?我在JIRA中听说过Velocity模板,但我不确定这是否是解决方案之一,而且在JIRA和Velocity模板上找到例子非常困难。

感谢任何帮助。

提前致谢

1 个答案:

答案 0 :(得分:1)

以下是使用JIRA(或您自己的REST服务)的Velocity模板的示例 从UI到REST服务进行ajax调用,您将获得所需的html内容(或其他数据)。 HtmlPresentationHelper 类用作html数据的包装器 您可以使用Jira集成工具来调试此(或您的)REST服务: REST API浏览器https://developer.atlassian.com/display/DOCS/Using+the+REST+API+Browser/
别忘了添加你的Velocity模板!

@Path("/")
public class CustomRestResource
{
    private String pathToTemplate = "templates/reports/timesheet-report/";
    private String templateFileName = "view.vm";

    @GET
    @Path("someMethod")
    @AnonymousAllowed
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Response anyName(@QueryParam("param") String param)
    {
        VelocityManager vm = ComponentAccessor.getVelocityManager();
        try
        {
            return Response.ok(new HtmlPresentationHelper(
                    vm.getBody(pathToTemplate, templateFileName, prepareVelocityParams(param))
            )).build();
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
            return Response.serverError().build();
        }
    }

    Map<String, Object> prepareVelocityParams(String x)
    {
        Map<String, Object> velocityParams = new HashMap<String, Object>();
        velocityParams.put("someParam", x);
        velocityParams.put(...);
        ...  

        return velocityParams;
    }
}

@XmlRootElement
public class HtmlPresentationHelper
{
    @XmlElement
    private String html;

    private HtmlPresentationHelper()
    {
        // for JAXB
    }

    public HtmlPresentationHelper(String html)
    {
        this.html = html;
    }
}