2
1
0

サブタスクが全て完了になったら連動して親タスクを完了させたいです。

また、逆に親タスクを完了したら付随するサブタスクを全て完了する方法はないでしょうか?

 

    Commentコメントを追加...

    1 回答

    1.  
      3
      2
      1

      製品要望では以下課題ですかね。残念ながらWon't Fixで、対応されていません。

      • JRA-13012Auto-adjust parent issue on sub-task status

      製品標準の機能としては、親タスクのワークフローのトランジションに、「サブタスク ブロック条件」という条件を追加する方法があります。こちらを使うと、例えばサブタスクが「完了」しないと親タスクも「完了」できないなどの設定ができるようになります。

      あとはWebHooksをトリガーとしてREST APIで操作するスクリプトを作るということもあるかと思いますが、若干面倒なので…

      すでに存在するアドオン使うことをお勧めします。

      本要望を実現するときに候補として挙がってくる代表的なアドオンとしては以下になります。

      関連QA

      1. mio.kitagawa

        ご回答ありがとうございます!

        ちなみになのですが・・・・・・

        「親が完了になっているサブタスク」
        「サブタスクが完了になっている親」


        という条件をJQLで表現する方法はないでしょうか。

      2. Kengo Ohsaki

        「親が完了になっているサブタスク」
        「サブタスクが完了になっている親」

        という条件をJQLで表現する方法はないでしょうか。


        こちらも標準ではできないですね…以下のようなアドオンの機能使えばできた記憶です。

      3. mio.kitagawa

        なるほど、ちなみにちなみに、、

        Scriptrunnerでサブタスクのステータスが「全部」完了している親というJQLはどうなりますでしょうか。

        issueFunction in parentsOf ("status in (完了)")

        ↑だと複数サブタスクのうち1つが完了だとでてきてしまい、

        お知恵をおかりできるとありがたいです。

      4. RYOITO

        多分status inだと「完了」が入っているかどうかなので

        status inではなくstatus not inを使って除外をしていけばいい気がします。

        issueFunction in parentsOf ("status not in (Open, Active, Pending)")

        みたいに完了以外を指定

      5. Kengo Ohsaki

        ↑だと複数サブタスクのうち1つが完了だとでてきてしまい、

        そうですよね…

        結構ややこしい感じになりますが、以下のようなJQLでできる気がします。

        issuefunction in parentsOf("issuefunction in subtasksOf(\"issuefunction not in parentsOf('type in subTaskIssueTypes() and status not in (完了)') and type in standardIssueTypes()\")")

        ちなみにScriptRunnerを導入されているのであれば、もう1個方法があり…

         

        Script Fieldsというスクリプトで集計したフィールドを作ることができますので

        以下のようなスクリプトを設定して、再インデックスすれば

        import com.atlassian.jira.issue.Issue;
        
        // サブタスクは除外
        if (issue.isSubTask()) {
          return 0D;
        } else {
          // サブタスクが一つもない課題は除外
          if (issue.getSubTaskObjects().size() == 0) {
              return 0D
          }
        
          // 親タスクに紐づくサブタスクのステータスをチェック
          for (Issue subtask : issue.getSubTaskObjects()) {
              // 完了以外が存在する = すべてのサブタスクは完了していない課題
              if (!subtask.getStatusObject().getName().equals("完了")) {
                  return 0D;
              }
          }
          // すべてのサブタスク課題が完了した親課題  
          return 1D;
        }
        
        

        以下のようなJQLで実現することもできる気がします…

        <作成したフィールドID>= 1

         

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

      6. mio.kitagawa

        ありがとうございます!大変参考になりました。

      Commentコメントを追加...