3
2
1

例えば、カスタムフィールドでテスト開始日、テスト終了日という日付フィールドがあったとします。

課題編集画面でこの2つの日付フィールドに値を入力した際、開始日<終了日となるようにバリデーションをかけたいと考えています。

ワークフローであれば、Script Runner のバリデーターでいけそうな気がするのですが、課題編集時に入力チェックをすることは可能なのでしょうか?

https://scriptrunner.adaptavist.com/4.3.4/jira/recipes/workflow/validators.html

    Commentコメントを追加...

    1 回答

    1.  
      4
      3
      2

      課題編集時画面では、ワークフローのバリデータは動かないので

      実現するとして、ScriptRunner を使用しているということであれば

      以下 Behaviours の機能を使えば 見た目上 はできるかと思います。

       

      例えば、開始日というカスタムフィールドが(customfield_10000)があったとして

      終了日が期限(duedate)とすると、以下をScriptRunner のValidation Scriptに設定すれば

      def startDate = getFieldById("customfield_10000"); 
      def dueDate = getFieldById("duedate"); 
      def startDateValue = (Date)startDate.getValue();
      def dueDateValue = (Date)dueDate.getValue();
      
      if (startDateValue == null) {
          startDate.setError("開始日が入力されていません")
      }
      if (dueDateValue == null) {
          dueDate.setError("期限が入力されていません")
      }
      if (startDateValue != null && dueDateValue != null) {
       if (startDateValue.getTime() > dueDateValue.getTime()) {
           dueDate.setError("開始日は期限よりも先を指定できません。")
        } else if (startDateValue.getTime() == dueDateValue.getTime()) {
           dueDate.setError("開始日と期限が同日です")
        } else {
           startDate.clearError();
           dueDate.clearError();
        }
      }

      以下のようにすることができました。

       

      ちなみに、見た目上 という部分ですが Behaviours はJavaScript+REST APIで実現しているため

      あくまでも課題編集画面上でしか有効になりません。

      例えば、REST APIや課題を更新するアドオンなどから開始日と期限を更新しても、この条件は発動しませんので、開始日に期限よりも先の日付も指定できてしまいます。

      そのため、ワークフローのバリデーターでも日付が期待する結果を指定しているかチェックするようにして、ワークフローを変更するタイミングでも2重チェックするようにしたほうがいいとは思います。

       

       

      1. 伊藤看寿

        すばらしい。ありがとうございます!

        Behaviours でバリデーションもできるんですね。

        勉強になりました。

      Commentコメントを追加...