Share via


バックグラウンド ワークフロー プロセスのベスト プラクティス

このトピックは、バックグラウンド ワークフロー プロセスの作成と管理のためのベスト プラクティスを紹介します。

無限ループの回避

無限ループを開始する、バックグラウンド ワークフローのロジックを作成する可能性があります。無限ループは、サーバーのリソースを消費し、パフォーマンスに影響を及ぼします。 無限ループが発生する可能性のある一般的な状態は、属性が更新されたときに開始され、ワークフローのロジックでその列を更新するように構成されている、バックグラウンド ワークフローがある場合です。 更新アクションが行を更新する同じバックグラウンド ワークフローをトリガーし、バックグラウンド ワークフローを何回も反復して開始します。

作成するワークフローには、無限ループを検出して停止するためのロジックが含まれます。 バックグラウンドのワークフロー プロセスが、短時間に特定の行に対して一定の回数を超えて実行されると、次のエラーでそのプロセスは失敗します: このワークフロー ジョブは、それを開始したワークフローに無限ループが含まれるので取り消されます。ワークフロー ロジックを修正して、もう一度やり直してください。回数の制限は 16 です。

バックグラウンド ワークフロー テンプレートを使用する

同様なワークフローが存在し、同じパターンに従ったワークフローをさらに作成する予定の場合、バックグラウンド ワークフローをワークフロー テンプレートとして保存します。 このように、同様なワークフローを次回作成する必要があるときに、テンプレートを使用してバックグラウンド ワークフローを作成すると、一からすべての条件とアクションを入力する必要がなくなります。

プロセスの作成ダイアログ ボックスで、既存テンプレートからのプロセスの新規作成 (一覧から選択) を選択します。

子ワークフローの使用

別のワークフローでまたは条件分岐で同じロジックを適用する場合、ロジックを子ワークフローと定義すると、各バックグラウンド ワークフローまたは条件分岐でそのロジックを手動で複製する必要がなくなります。 これにより、ワークフローの維持が容易になります。 同じロジックを適用する可能性のある多くのワークフローを調べるのではなく、1 つのワークフローを更新するだけとなります。

完了したバックグラウンド ワークフロー ジョブを自動的に削除する

バックグラウンド (非同期) のワークフローでは、バックグラウンド ワークフロー定義で 完了したワークフロー ジョブを自動的に削除する (ディスク容量の確保) オプションをオンにすることを推奨します。 このチェック ボックスを選択すると、成功した実行のバックグラウンドのワークフロー ログを削除してスペースを節約することができます。 失敗したバックグラウンド ワークフロー実行のログは、トラブルシューティングのために常に保存されます。

ワークフロー ジョブの保持。

同じテーブルを更新するワークフローの数を制限する

同じテーブルを更新するバックグラウンド ワークフローが複数実行していると、リソース ロック問題が発生することがあります。 各営業案件の更新プログラムが関連取引先企業に対して更新をトリガーしている状況で実行している複数のワークフローを考えてみてください。 これらのワークフローの複数のインスタンスを実行し、同じ取引先企業の行を同時に更新しようとすると、リソースロックの問題が発生する場合があります。 バックグラウンド ワークフローの失敗が発生すると、SQL タイムアウト: リソース リソース名 のロックを取得できません などのエラー メッセージが記録されます。

変更の追跡にメモを使用

ワークフローを編集するときは、メモ タブを使用して、実行した内容と実行した理由を入力する必要があります。 これにより、加えた変更点を他のユーザーが理解することができます。

次の手順

バックグラウンド ワークフロー プロセスの構成
バックグラウンド ワークフロー プロセスの監視と管理