プロセスエンティティに対してクエリのサイズを変更する
プロセスのランタイム情報を問い合わせる機能を設計する場合は、通常、プロセスエンティティを使用します。
各プロセスエンティティにより、OutSystemsに保存されているプロセスのランタイム情報全体の中から、その一部が利用できるようになります。このような処理のため、実行中のプロセスインスタンスが何百万レコードという数に増えると、プロセスエンティティに対するクエリの処理が遅くなります。
このケースでは、以下の方法が推奨されます。
-
エンティティを作成して、そのプロセスに関して必要なランタイム情報を手動で保存します。このエンティティの名前は、<ProcessName>Processにする必要があります。
-
プロセスコールバックアクションまたはアクティビティコールバックアクションを使用して、必要なランタイム情報を手動で保存するロジックを追加します。
このエンティティを作成することにより、ロジックを拡張し、必要とする他のランタイム情報を保存することもできます。
例
例として、サプライヤからの請求書に対して支払いを行うプロセスを考えます。請求は第1レベルの承認を通過し、第2レベルの承認に移ります(支払い金額によって異なります)。そして、いずれかの承認が却下された場合は、サプライヤにメールで通知されます。
第1承認と、次の第2承認にかかる時間についてレポートを作成するという要件があります。支払うべき請求書は何千とあるため、プロセスエンティティを使用するべきではありません。
プロセスエンティティは無効にしておきます。
次に、InvoiceProcessエンティティを作成し、請求書の作成、第1承認、第2承認の日時を保存します。
ここでコールバックアクションを使用して、以下のように新しいエンティティにアトリビュート値を設定します。
-
On Process Startコールバックアクションをプロセスに追加し、請求書の識別子と作成日時を持つInvoiceProcessレコードを作成します。
-
Level1Approval Human ActivityにOn Closeコールバックアクションを追加して、第1承認の日時でInvoiceProcessレコードを更新します。
-
Level2Approval Human ActivityにOn Closeコールバックアクションを追加して、第2承認の日時でInvoiceProcessレコードを更新します。