自動化では、ブランチを (メイン スレッドと) 並行して実行すると、正しくない/予期しない結果が生じる可能性がある

プラットフォームの注記: Cloud のみ - この記事は、 クラウド プラットフォーム上のアトラシアン製品にのみ適用されます。

要約

自動化ルールでは、スマート ブランチを使用して一連の課題やオブジェクトの個々の要素を柔軟に繰り返し処理できます。これらは非常に便利で、強力な自動化ルールを構築するのに役立ちますが、設計上、ブランチ操作の結果が後続のアクションに影響するような複雑な自動化ルールではボトルネックになる可能性があります。

診断

場合によっては、ブランチの直後のアクションがブランチ操作からの有効な出力なしに実行されることが確認されています。これは、直後のアクションが前のブランチ操作の出力に依存する IF 条件である場合、さらに重要です。

原因

これは、ブランチがルールのメイン実行スレッドと並行して動作するために起こります。つまり、ブランチで多数の課題に取り組んでいる場合は、終了するまでに時間がかかる可能性があります。ブランチ操作が進行中であってもメイン実行スレッドではブランチ後のアクションの実行が継続されることから、ブランチ後の後続のアクションがブランチ操作の結果に依存する場合は、正しいデータを取得できない可能性があります。

ソリューション

この問題に対する確実なソリューションまたは回避策の 1 つは、ルールを 2 つのルールに分割し、最初のルール (ブランチが存在するもの) が完全に終了するまで、2 つ目のルールに含まれる残りのロジック (最初のルールの結果に依存するもの) が実行されないようにすることです。

ケースの例:

Web リクエストを送信していて、課題フィールドの値と Webhook レスポンスで返されたデータ セットを比較する必要があるものとします。課題フィールドの値の条件が Webhook レスポンスで返された課題と一致する場合は、続いて特定のアクションを実行する必要があります。同じルールで後続のすべてのアクションをブランチ後に置くと、比較が失敗するリスクがあります。これは、ブランチの実行が終了し、関連するすべてのデータが処理されるまでに、メイン ルール スレッドで後続のアクションの実行が開始されるためです。これを避けるには、次のアプローチをとります。

ルールを 2 つの自動化ルールに分割します。

  • 最初のルールでは、Web リクエストを送信して、課題フィールドの値を Webhook レスポンスで返されたデータと比較します。

  • 比較結果に基づいて、結果をカスタム フィールドに保存して、後の 2 つ目のルールで使用します。このカスタム フィールドは、比較が成功したかどうかを示すフラグとして機能します。ルールをトリガーするために、ニーズに合った任意のトリガーを設定できます。

  • 2 つ目のルールでは、フィールド値の変更時をトリガーとし、最初のルールの比較結果に使用したフィールドを監視対象フィールドとします。

  • ルール詳細に、[他のルールのアクションによってこのルールがトリガーされることを許可する場合はチェックします。このルールが別のルールに反応して実行される必要がある場合のみ有効にしてください。] というチェック ボックスがあります。

    比較結果がカスタム フィールドに保存されるときに最初のルールによってこのルールがトリガーされるようにするには、このチェック ボックスをオンにする必要があります。

    ルール詳細で [他のルールのアクションによってこのルールがトリガーされることを許可する場合はチェックします] オプションをオンにしています。

  • ルールが 1 つのルールで許容されるコンポーネントの最大数のしきい値に達した場合も、同様のアプローチをとることができます。自動化サービスの制限」を参照してください。

更新日時: 2024 年 6 月 17 日

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。