2016-03-30 18 views
0

コンフルエンステンプレートを作成しました。そこには、特定のプロジェクトに関連するチケットのステータスを示すグラフ(パイ)を挿入します。チャートマクロは、JIRAのタイプによって異なるチケットの数を自動的に取得できるようにしたいので、ユーザがこのテンプレートに基づいてページを作成するたびに、チャートデータを手動で入力する必要はありません。Confluenceのチャートマクロに必要なデータを記入するためにjiraチケット情報を照会するには?

JIRA Reportマクロでは、この種の情報を簡単に取り出すことができます。しかし、グラフマクロのレポート結果でこのデータにどのようにアクセスできますか?または別のカスタムマクロを実装する必要がありますか?もしそうなら、JavaやJavascriptのコードを書かなければならないのですか、マクロテンプレート言語を使うだけで十分ですか?

私は合流への初心者です。どんなアイデアも参考になるでしょう。

答えて

0

問題を解決しました。 Confluence PageテンプレートはStorage Formatで記述され、クライアントに返される前に内部的にConfluenceでレンダリングされます。テンプレート内の変数を宣言し、JavaまたはJavascriptのテンプレートコンテキストにエントリを追加してデータをフィードする方法があります。例えば

は、JIRAチャートマクロは、以下のテンプレート単純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> 

つVARS vJqlvServerId構文<at:var at:name="varName"/>を使用して宣言されます。これらの変数は、クラスcom.atlassian.confluence.plugins.createcontent.api.contextproviders.AbstractBlueprintContextProviderを拡張するクラスによって提供されるテンプレートコンテキストでアクセスできます。以下のためのエントリを含むコンテキストを返すことによってVARSを送り、クラス内

<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> 

:テンプレートとコンテキスト・プロバイダを結合するためには、素子context-providerを添加することにより、アトラシアン-plugin.xmlのテンプレート宣言を設定への必要バール:

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; 
    } 
} 

完了。

関連する問題