IF ELSE ブロック条件を含む予定された自動化ルールが Jira で予想どおりに動作しない
プラットフォームについて: Cloud と Data Center - この記事は クラウド プラットフォームとデータセンター プラットフォームの両方に等しく当てはまります。
Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。
*Fisheye および Crucible は除く
要約
IF/ELSE ブロック条件を含む予定された自動化ルールは、期待どおりに動作するために複数回の実行する必要が生じる場合があります。
診断
自動化ルールには、予定されたトリガー (JQL を使用) と少なくとも 1 つの IF/ELSE ブロックがあります。次に例示します。
1
2
3
4
IF (condition A)
THEN action A
ELSE
THEN action B
あるいは
1
2
3
4
5
6
7
8
IF (condition A)
THEN action A
ELSE IF (condition B)
THEN action B
ELSE IF (condition C)
THEN action C
ELSE
THEN action D
ルールの初回実行時には「アクション A」のみが実行されます。
ルールの 2 回目の実行では、アクション B のみが実行されるかアクション A が再度実行されます。
ルールの 3 回目の実行では、アクション C のみが実行されて以下同様に実行されます。
IF/ELSE ブロックのすべてのアクションを実行するには、数回連続して実行する必要があります。
原因
これは、実際に Automation for Jira で IF/ELSE ブロックが動作する方法です。
予定されたルールでは、条件は各課題に対して個別に反復されるのではなく、トリガー JQL によって取得された課題セットに全体として適用されます。
したがって、10 個の課題のセットで「条件 A」の結果が空以外の場合は、「アクション A」が実行され、IF/ELSE ブロックが完了します。「条件 A」の結果が空で次の「条件 B」の結果が空以外の場合は、「アクション B」が実行され、ブロック全体が完了します。
これは、アクション A で 3 個の課題が、アクション B で 2 個の課題が、アクション C で 4 個の課題が更新されるといった具合になるため、各アクションが個別の条件に一致する特定の課題に適用されることを予想する可能性があるプログラマーの直観に反します。
この警告をドキュメンテーションに追加するために、以下のオープンな改善を行っています。JIRAAUTOSERVER-209 - IF ELSE 条件の動作に関するドキュメンテーション改善
ソリューション
1つの代替案は、互いに分離された複数の IF/ELSE ブロックを使用することです。
1
2
3
4
5
6
7
8
9
10
11
IF (condition A)
THEN action A
IF (condition B)
THEN action B
IF (condition C)
THEN action C
IF (condition "not A and not B and not C")
THEN action D
最後の「else」条件は 1 つの条件で他のすべての条件を無効にする必要があるため、扱いにくい場合があります。
また、条件は相互に排他的であるか、そうでなければ前の条件を無効にする必要があります。
1
2
3
4
5
6
7
8
9
10
11
IF (condition A)
THEN action A
IF (condition B and not A)
THEN action B
IF (condition C and not A and not B)
THEN action C
IF (condition "not A and not B and not C")
THEN action D
視覚的な例
この内容はお役に立ちましたか?