Confluence中如何查询jira门票信息填写图表宏所需数据?
How to query jira tickets information to fill in the chart macro required data in Confluence?
我创建了一个 confluence 模板,我想在其中插入一个图表(饼图)来显示与特定项目相关的工单状态。我希望图表宏可以根据 JIRA 中的类型自动检索不同票证的数量,这样每次用户基于此模板创建页面时,他们都不需要手动填写图表数据。
我知道在 JIRA Report 宏中可以很容易地检索到这类信息。但是我怎样才能在图表宏的报告结果中访问这些数据呢?或者我是否必须实现另一个自己的自定义宏?如果是这样,我是否必须编写一些 Java 或 Java 脚本代码,或者只使用宏模板语言就足够了?
我是 confluence 的新手。任何想法都会有所帮助。
问题已解决。 Confluence 页面模板以存储格式编写,并在 Confluence 内部呈现,然后返回给客户端。有一种方法可以在模板中声明变量,然后通过在 Java 或 Javascript.
的模板上下文中添加条目来为它们提供数据
例如JIRA图表宏插入到下面的模板simple-template.xml中:
<ac:structured-macro ac:name="jira" ac:schema-version="1">
<ac:parameter ac:name="server">Your Company JIRA</ac:parameter>
<ac:parameter ac:name="jqlQuery"><at:var at:name="vJql" /></ac:parameter<name />
<ac:parameter ac:name="count">true</ac:parameter>
<ac:parameter ac:name="serverId"><at:var at:name="vServerId" /></ac:parameter>
</ac:structured-macro>
使用语法 <at:var at:name="varName"/>
声明了两个变量 vJql
和 vServerId
。这些变量可以在扩展 class com.atlassian.confluence.plugins.createcontent.api.contextproviders.AbstractBlueprintContextProvider
的 class 提供的模板上下文中访问。要将上下文提供程序与模板绑定,需要通过添加元素 context-provider
:
在 atlassian-plugin.xml 中配置模板声明
<content-template key="simple-template"
template-title-key="delivery.blueprint.template.title" i18n-name-key="new.template.blueprint.name">
<resource name="template" type="download" location="/templates/simple-template.xml" />
<context-provider class="com.company.atlassian.plugins.confluence.SimpleTemplateContextProvider" />
</content-template>
在 class 中,通过返回包含变量条目的上下文来提供变量:
private final String VAR_PROJECT_KEY = "jira-project";
private final String VAR_VERSION = "jira-fix-version";
private final String VAR_JQL = "vJql";
private final String VAR_SERVER_ID = "vServerId";
@Override
protected BlueprintContext updateBlueprintContext(BlueprintContext context) {
try {
String projectKey = (String) context.get(VAR_PROJECT_KEY);
String version = (String) context.get(VAR_VERSION);
String jql = "project = \'" + projectKey + "\' AND fixVersion = " + version;
String serverId = ResourceBundle.getBundle("simple-template-example").getString("jira.serverid");
context.put(VAR_JQL, jql);
context.put(VAR_SERVER_ID, serverId);
return context;
} catch (Exception e) {
e.printStackTrace();
return context;
}
}
完成。
我创建了一个 confluence 模板,我想在其中插入一个图表(饼图)来显示与特定项目相关的工单状态。我希望图表宏可以根据 JIRA 中的类型自动检索不同票证的数量,这样每次用户基于此模板创建页面时,他们都不需要手动填写图表数据。
我知道在 JIRA Report 宏中可以很容易地检索到这类信息。但是我怎样才能在图表宏的报告结果中访问这些数据呢?或者我是否必须实现另一个自己的自定义宏?如果是这样,我是否必须编写一些 Java 或 Java 脚本代码,或者只使用宏模板语言就足够了?
我是 confluence 的新手。任何想法都会有所帮助。
问题已解决。 Confluence 页面模板以存储格式编写,并在 Confluence 内部呈现,然后返回给客户端。有一种方法可以在模板中声明变量,然后通过在 Java 或 Javascript.
的模板上下文中添加条目来为它们提供数据例如JIRA图表宏插入到下面的模板simple-template.xml中:
<ac:structured-macro ac:name="jira" ac:schema-version="1">
<ac:parameter ac:name="server">Your Company JIRA</ac:parameter>
<ac:parameter ac:name="jqlQuery"><at:var at:name="vJql" /></ac:parameter<name />
<ac:parameter ac:name="count">true</ac:parameter>
<ac:parameter ac:name="serverId"><at:var at:name="vServerId" /></ac:parameter>
</ac:structured-macro>
使用语法 <at:var at:name="varName"/>
声明了两个变量 vJql
和 vServerId
。这些变量可以在扩展 class com.atlassian.confluence.plugins.createcontent.api.contextproviders.AbstractBlueprintContextProvider
的 class 提供的模板上下文中访问。要将上下文提供程序与模板绑定,需要通过添加元素 context-provider
:
<content-template key="simple-template"
template-title-key="delivery.blueprint.template.title" i18n-name-key="new.template.blueprint.name">
<resource name="template" type="download" location="/templates/simple-template.xml" />
<context-provider class="com.company.atlassian.plugins.confluence.SimpleTemplateContextProvider" />
</content-template>
在 class 中,通过返回包含变量条目的上下文来提供变量:
private final String VAR_PROJECT_KEY = "jira-project";
private final String VAR_VERSION = "jira-fix-version";
private final String VAR_JQL = "vJql";
private final String VAR_SERVER_ID = "vServerId";
@Override
protected BlueprintContext updateBlueprintContext(BlueprintContext context) {
try {
String projectKey = (String) context.get(VAR_PROJECT_KEY);
String version = (String) context.get(VAR_VERSION);
String jql = "project = \'" + projectKey + "\' AND fixVersion = " + version;
String serverId = ResourceBundle.getBundle("simple-template-example").getString("jira.serverid");
context.put(VAR_JQL, jql);
context.put(VAR_SERVER_ID, serverId);
return context;
} catch (Exception e) {
e.printStackTrace();
return context;
}
}
完成。