1

JIRAv5.xのトランジションポスト関数を作成しようとしています。問題にリンクされているConfluenceページがすでに存在するかどうかを確認し、存在しない場合はページを作成してリンクする必要があります。これは、JAVAAPIにアクセスできるGroovyスクリプトとscriptrunnerプラグインを使用して開発しています。

Confluenceページを作成するのはかなり簡単でしたが、リモートの問題のリンクに苦労しています。

  • 新しいリモート課題リンクを作成するにはどうすればよいですか?
  • 問題のリンクがすでに存在するかどうかを確認するにはどうすればよいですか?

これが私がリンクを作成しようとする方法です:

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.bc.issue.link.RemoteIssueLinkService
import com.atlassian.jira.issue.link.RemoteIssueLinkBuilder

//I use a wrapper class for the moment so I can run via scriptrunner and debug it in IDEA
class myWrapper {

    def doStuff() {

        //get the issue, this would already be available in an post action
        def issueService = ComponentManager.getInstance().getIssueService();
        def authContext = ComponentManager.getInstance().getJiraAuthenticationContext()

        def issueResult = issueService.getIssue(authContext.getUser(), "DEV-1");
        def issue = issueResult.getIssue()

        //build link
        def linkBuilder = new RemoteIssueLinkBuilder()
        linkBuilder.issueId(issue.id)
        linkBuilder.applicationName("myconluence")
        linkBuilder.applicationType("com.atlassian.confluence")
        linkBuilder.relationship("Wiki Page")
        linkBuilder.title("testpage")
        linkBuilder.url("http://localhost:8090/display/LIN/testpage")
        linkBuilder.build()

        def validationResult = RemoteIssueLinkService.validateCreate(authContext.getUser(), linkBuilder)

    }
}

(new myWrapper()).doStuff()

コードを実行すると、次の例外が発生します。

javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: static com.atlassian.jira.bc.issue.link.RemoteIssueLinkService.validateCreate() is applicable for argument types: (com.atlassian.crowd.embedded.ofbiz.OfBizUser, com.atlassian.jira.issue.link.RemoteIssueLinkBuilder) values: [admin:1, com.atlassian.jira.issue.link.RemoteIssueLinkBuilder@180ca9]

私には、 RemoteIssueLinkServiceを正しく取得していないように見えますが、それを修正するために何をしなければならないのかわかりません。

4

1 に答える 1

2

アトラシアンフォーラムで同じ質問をしました。これは、将来の参考のためにJamieEchlinから受け取った実用的な回答です。


これは静的メソッドではないため、最初にクラスのインスタンスを取得する必要があります。

def remoteIssueLinkService = ComponentManager.getComponentInstanceOfType(RemoteIssueLinkService.class)

remoteIssueLinkService.validateCreate(...)

于 2012-11-08T21:55:39.647 に答える