2
1
0

Redmineからインポートした課題で、数十課題ほど課題リンクの親子が逆になっている事がわかりました。

(一括が望ましいのですが…)JIRAの課題リンク先/元を反転できないでしょうか。

    Commentコメントを追加...

    5 回答

    1.  
      4
      3
      2

      WBSガントチャートの最新版はチケットをドラッグ&ドロップで移動できるようになりました。

          http://www.ricksoft.jp/atlassian/wbs-ganttchart/wbsganttchart-whats-new.html?id=Tab5

      この機能を使って整理する事はできませんでしょうか。

      1. RYOITO

        最新版の目玉機能でしたね。この機能はとてもうれしかったです。 なるほど。。なんだか、この機能で整理できそうな気がしてきました! ちょっとテストサーバで確認してみます。

      2. RYOITO

        確認してみたので結果を残しておきます。 * 課題A1と、課題A2について直接の親子入替は不可。 * 課題A1と課題A2の親子関係を解消するために一度子チケットを別場所にD&D移動してから、逆になるようD&D移動でやりたい事はできました。 いちいちページ移動、更新する事なく、GUI上で一件2秒程度でサクサク関係整理できるので、数十件程度であれば有効ですね。

      Commentコメントを追加...
    2.  
      3
      2
      1

      参考情報までに...

      課題リンクの親子が逆になる現象が私も確認できました。

      現象理由としてはRedmine Importerの下記ソースコードが関連している可能性があります。

      リンクはfor文の処理ですが、親子課題の場合は if 文の処理かと思います。

      com.atlassian.jira.plugins.importer.redmine.transforme.IssueToRelationsTransformer
      	@Override
      	public Collection<ExternalLink> apply(Issue input) {
      		final Collection<ExternalLink> relations = Lists.newArrayList();
      		for (IssueRelation issueRelation : input.getRelations()) {
      			relations.add(new ExternalLink(
      					configBean.getLinkMapping(issueRelation.getType()),
      					issueRelation.getIssueId().toString(),
      					issueRelation.getIssueToId().toString()));
      		}
      		if (input.getParentId() != null) {
      			relations.add(new ExternalLink(
      					configBean.getLinkMapping(PARENT_LINK_NAME),
      					input.getId().toString(),
      					input.getParentId().toString()));
      		}
      		return relations;
      	}
      
      

      ExternalLink の、第1引数が課題リンクタイプ(インポートウィザードにてparentで選択した課題リンクタイプ)、第2引数が課題リンク元で、第3引数が課題リンク先でリンクが作られます。

      実装レベルで、親のIDが課題リンク先になっているのが理由なきがします。

      バグかと言われると微妙で...JIRAではリンクの考え方は自由なので、親子関係はあくまでも設定なので HAL9000 さんの通り変更することも手かもしれません。

      ご参考になりましたら幸いです。

      1. RYOITO

        ご確認ありがとうございます。 確かにJIRAとしては第二引数でも第三引数でもJRIA上のリンクとして扱いは同じでInwardLink/OutwardLinkの名称だけの問題になるのでバグではないと言われると確かに微妙なところですね。 (強いて言えば、こんなに近い場所にある処理なのにインポート元/先の考えが逆なのが惜しい…) ただ、一覧としての表示等でもWBSガントチャートで取り扱っているため、これが名称だけの問題では無くなるといった状況で困り果ています。 今インポート対象件数が数百件レベルのプロジェクトを抱えていて、Script RunnerからのJava APIを本格的に検討しなければならない状態なのですがJava APIが中々判らない状態です…。Script Consoleでエラー…。 ちなみにですが以下のようなイメージで合っていますか? 1. 対象のリンク(ID:10201)を持った課題を抽出    e.g. SELECT * FROM [jiradb].[jiraschema].[issuelink] where [LINKTYPE] = 10201 2. Java APIで1の対象課題のリンク10201を削除 for回し 3. Java APIで1の対象課題に改めてリンク10201を作成(createIssueLink?) for回し

      2. Kengo Ohsaki

        ScriptRunnerでの操作について参考情報を記載しておきました 以下要領で対象JIRA課題を検索して... https://www.ricksoft.jp/qa/questions/5275677/ 以下を参考にfor文で回して頂ければ... https://www.ricksoft.jp/qa/questions/5275685/ と思いますが、詳しく必要でしたら長くなりそうですので別QAにて...

      3. RYOITO

        先ほど確認しました。ありがとうございます。

      Commentコメントを追加...
    3.  
      3
      2
      1

      課題リンクもBulk操作ができたらいいんですけどね...

       

      ちなみにDB操作だと...

      issuelink テーブルの内課題ID(source)、外課題ID(destination)を入れ替えれば済むかと思います。

      但しキャッシュの関係上、JIRAの再起動が必須です。

      そのため手順としては、以下の順序で検証する必要があるかと思います。

      1. JIRA停止
      2. DB操作 (警告) バックアップ取得してから
      3. JIRA起動
      4. インデックス再構築

       

      またSQLは低レイヤーな操作のため保障もなく、Versionなどによって対応方法が異なるリスクがあります。

      そのため、推奨はAPI経由です。

      REST API もしくは Script Runner などから Java API を呼び出すほうが良いかと思います...

      Java APIだとIssueLinkManagerあたりを使うことになるかと思います。

       

      (情報) 参考情報:SQLで課題リンクを作成する方法の質問

       

      ご参考になりましたら幸いです。

      1. RYOITO

        ありがとうございます。 わたしもDB直操作は避けたいと思っています。 Script Runnerを入れているのでJava APIの方法も検討して実施してみます。

      Commentコメントを追加...
    4.  
      3
      2
      1

      DB 操作でもできると思いますが、 Atlassian の推奨としては REST API ですね。

         https://docs.atlassian.com/jira/REST/latest/

       

      Link の操作はこの辺です。

       https://docs.atlassian.com/jira/REST/latest/#d2e5606

      1. RYOITO

        ありがとうございます。 REST APIの使用ですか。整理して実施してみようと思います。

      Commentコメントを追加...
    5.  
      2
      1
      0

      その課題リンクが問題の課題でしか使用していないのであれば、課題リンクの設定を変更して外向きと親向きの文言を入れ替えるという手があります。外向きと内向きを入れ替えた課題リンクは「インポート用」などと名前を付けておき、通常運用では使わないようにすると、通常の課題での誤用も避けられると思います。

      あるいは……データベース操作でしょうか? → JIRAのコアなみなさん。

      1. RYOITO

        ありがとうございます。 見た目の修正としてはよさそうですね。 ただガントチャートがめちゃくちゃで…。

      2. HAL9000

        WBSガントチャートは手強そうですね。

      Commentコメントを追加...