非同期ビジネスルールのデフォルトの動作:アップグレード中に実行バックグラウンド ビジネスルールの「詳細」セクションには、「時期」というフィールドがあります。その選択肢の 1 つに、「非同期」があります。 非同期とは、レコードアクションが「完了した後のある時点で」ビジネスルールを実行するということです。ただし、一般には完了後すぐに実行するものと想定されています。アップグレード中を除けば、普通はそうです。既存のリリースでは、アップグレードの進行中、非同期とマークされたビジネスルールは実行されません。 変更点 Rome リリース以降では、アップグレード中、「非同期」で動作するように設定された新しいビジネスルールがすべて実行されます。 既存の (Rome 以前の) 非同期のビジネスルールは、自動的に変更されることはなく、引き続きそのまま実行されます。古くなった非同期の動作は非推奨になり、アプリケーション開発チームは標準の開発、テスト、リリースのプロセスの一環として、新しい動作に移行することをお勧めします (以下の「開発者向けの移行に関する注意事項」を参照)。 変更する理由 主要なユーザーワークフローの一環として実行される非同期ビジネスルールがあります。つまり、ユーザーがアクションを実行した場合、そのユーザー (または別のユーザー) は以後の操作に備えてアクションの実行結果を想定していることになります。こうしたビジネスルールは適切なタイミングで実行しないと、そのワークフローが破損します。 これまでの議論を踏まえると、非同期ビジネスルールが現時点でアップグレード中に実行されないのは、単にそのビジネスルールがジョブシステム (sys_trigger) のスケジュールに従ってビルドされ、「upgrade_safe」フラグのデフォルト値が false であるというのが主要な理由のようです。 全部ではないにしても大多数の非同期ビジネスルールを見ても、アップグレード中にビジネスルールを安全に実行するために、特別なコーディングや考慮事項が必要であることを示唆するものはありません。 ただし、既存のすべての非同期ビジネスルールに対して、このデフォルト動作を一括して変更することはできません。この動作はしばらく前からシステムにずっと存在しており、既存の非同期ビジネスルールのワークアラウンドやその他の前提条件が導入されている可能性があるからです。 変更方法 Core Platform は、既存のすべての非同期ビジネスルールでは既存の動作を維持しながら、新規に作成したすべての非同期ビジネスルールではデフォルト動作を変更するために、Rome リリースで次の変更を行いました。 変更の一環として、「時期」フィールドの選択肢に 2 つの変更を加えています。 既存の「非同期」の廃止 以前の選択肢「時期」のラベル名を「非同期」に変更しました ラベル:「非同期 (廃止:アップグレード時に実行されません)」 選択肢のリストからこのオプションを削除するように「非アクティブ」フィールドを設定しました この結果、新規ビジネスルールの作成時には古いオプションを選択できませんが、既存の非同期ビジネスルールを編集するときには引き続き古いオプションが表示されます。 新しい「非同期」の作成 「時期」の新しい選択肢を作成しました。「async_always」 ラベル「非同期」 値「async_always」 「upgrade_safe」を「true」とした sys_trigger を作成すると、実行エンジンが新しい選択肢「async_always」を実装します 変更のタイミング Rome リリースで変更を行いました。それ以降のすべてのリリース (San Diego、Tokyo、Utah など) にも適用されます。 開発者向けの移行に関する注意事項 お客様によるアクションは必要ありません。インスタンスを Rome 以降にアップグレードしても、既存のビジネスルールや動作が自動的に変更されることはありません。Rome 以降、既存の非同期選択肢のラベルは「非推奨」に変更されましたが、引き続き以前とまったく同じように機能します。 開発チームは、所有している既存の非同期ビジネスルールをレビューし、新しい値に更新することを強くお勧めします。そうすると、アップグレード時に非同期ビジネスルールが効果的に機能します。 古くなった非同期値を廃止した場合、その副作用として、既存の非同期値が若干見つけにくくなります。「非同期」が新しい非同期となって、フィルターオプションに適切な選択肢が表示されなくなるからです。「時期」の「非同期」に新しいフィルターを作成したのにリストに何も表示されず、ユーザーが驚くことがあるかもしれません。 「従来の」非同期ビジネスルールを見つけるには、「次の値のいずれも含まない」フィルターを適用し、使用可能なすべての選択肢が表示されるようにする必要があります。 目的の選択肢を特定できれば、そのレコードを編集するだけで既存の値を新しい非同期値に切り替えることができます。 Rome 以前のインスタンスに適用される Rome 以降の非同期ビジネスルールに関する特記事項 お客様によっては、本番インスタンスをアップグレードする数か月前に、開発用またはテスト用の準本番インスタンスを Rome 以降にアップグレードすることがあります。アップグレードまでの期間中に、新しい非同期ビジネスルールが Rome 以降の準本番環境で作成され、更新セットに追加されて、Rome 以前のインスタンスに適用される可能性があります。 この場合、更新セットが適用されると、ビジネスルールは破損を回避するため Rome 以前の動作に「ダウングレード」されます。その際、ダウングレードの対象となるビジネスルールの ID が glide.async.br.reverted.ids という Glide プロパティに追加されます。インスタンスを Rome にアップグレードしたら、このプロパティを使用して、更新が必要な非同期ビジネスルールを特定できます。