1

JIRA プラグイン SDK を使用して、変更された課題に取り組んでいます。

IssueListener を実装しており、Issue 自体と IssueEvent にアクセスできます。

問題のどのプロパティ (概要、説明、見積もりなど) が変更されたかを確認するにはどうすればよいですか?

4

1 に答える 1

1

変更ログには変更内容が含まれている可能性が高く、IssueEvent オブジェクトにはこれを取得するメソッド ( getChangeLog) があり、GenericValueオブジェクトを返します。

Atlassian Answers サイトのこの投稿では、 JIRA イベント リスナーの作成方法に関する Atlassian チュートリアルに関連するコードを紹介しています。

関連するコード スニペットを以下に示します。

if (eventTypeId.equals(EventType.ISSUE_UPDATED_ID)) {
    List<GenericValue> changeItems = null;

    try {
        GenericValue changeLog = issueEvent.getChangeLog();
        changeItems = changeLog.internalDelegator.findByAnd("ChangeItem", EasyMap.build("group",changeLog.get("id")));
    } catch (GenericEntityException e){
        System.out.println(e.getMessage());
    }

    log.info("number of changes: {}",changeItems.size());
    for (Iterator<GenericValue> iterator = changeItems.iterator(); iterator.hasNext();){
        GenericValue changetemp = (GenericValue) iterator.next();
            String field = changetemp.getString("field");
            String oldstring = changetemp.getString("oldstring");
            String newstring = changetemp.getString("newstring");
            StringBuilder fullstring = new StringBuilder();
            fullstring.append("Issue ");
            fullstring.append(issue.getKey());
            fullstring.append(" field ");
            fullstring.append(field);
            fullstring.append(" has been updated from ");
            fullstring.append(oldstring);
            fullstring.append(" to ");
            fullstring.append(newstring);
            log.info("changes {}", fullstring.toString());

            /* Do something here if a particular field you are
               looking for has being changed.
            */
            if(field == "Component") changeAssignee(changetemp, issue, user);
    }
}
于 2015-08-20T09:58:47.313 に答える