スケジュール済プロセスにオブジェクト関数を使用
スケジュール済プロセスは、データを取得し、オブジェクトがそのデータを処理できるようにするバッチ・ジョブです。
スケジュール済プロセス・ツールを使用してジョブを実行し、特定のビジネス・ニーズのレコードのセットを操作したり、特定のレコードに関する情報を含む印刷可能な出力を取得します。 ビジネス・ロジック・コードをスケジュールし、オブジェクトの名前とその関数を指定するだけで、レコードを毎日、週単位または月単位で定期的に更新します。
スケジュール済プロセスは複数のシナリオで使用できます。 次に、プロセスのスケジュールが必要な場合の例をいくつか示します:
-
特定の基準に基づいてレコードの一括更新を実行します。
-
時間ベースのワークフローの回避策として、将来満たされる基準に基づいてワークフローをトリガーします。
-
時間外にスケジュールできる大量のアップデートでカスタム・ロジックを実行する場合。
次の手順では、Groovyオブジェクト関数のスケジュール済プロセスを作成する方法について説明します。
オブジェクト関数のスケジュールを開始する前に、次のステップを実行することをお薦めします:
-
オブジェクトのAPI名をオブジェクト名として記録します。
-
オブジェクト関数名を記録します。
-
ランタイム・メッセージ・デバッグがサポートされるアプリケーション・コンポーザ内の検証またはトリガー起動メカニズムを使用して、オブジェクト関数が適切にコンパイルおよび実行されることを確認します。
-
容量をテストして、大規模なデータ・セットを処理するための最適なバッチ・サイズを決定します。 「オブジェクト関数のスケジュールのベスト・プラクティス: 容量実行のテスト」を参照してください。
前述のステップは、本番環境内の既存の操作やデータに影響を与えないようにするためのベスト・プラクティスです。
Groovyオブジェクト関数のスケジュール済プロセスを作成するには:
-
「ナビゲータ」をクリックし、「スケジュール済プロセス」を選択します。
-
「スケジュール済プロセス」作業領域で、「新規プロセスのスケジュール」をクリックします。
-
タイプをジョブのままにして、「名前」ドロップダウン・リストで「カスタムGroovyオブジェクト関数のスケジュール」を検索して選択し、OKをクリックします。
-
「プロセス詳細」ページで、次の手順を実行します:
-
「オブジェクト名」フィールドに、オブジェクトのAPI名を入力します。 たとえば、OpportunityVOです。
ノート: ここで指定するオブジェクト名は、「アプリケーション・コンポーザのオブジェクト概要」ページのオブジェクトのAPI名と同じである必要があります。 また、以前のリリースからスケジュールされたジョブがある場合は、「アプリケーション・コンポーザのオブジェクト概要」ページのオブジェクトのAPI名と一致するようにオブジェクト名を変更する必要があります。 -
「オブジェクト関数」フィールドに、オブジェクト関数名を入力します。 たとえば、OpptyMsgです。
-
次のいずれかを実行します。
-
詳細ボタンをクリックして、スケジュールと文書出力、通知を定義します。
-
デフォルトのスケジュールで送信します。
-
詳細は、Oracle Applications Cloud共通機能の使用ガイドのスケジュール済プロセスの発行および「プロセス・セット」の項を参照してください。
-
次の点に注意してください。
-
必要に応じて、関数を複雑に記述できます。
-
.txtファイルに値を返す関数を記述できます。
.txtファイルには、Groovyコードが返すすべての値が表示されます。 プロセスの.txtファイルを表示するには、そのプロセスのステータス・リンクをクリックします。
-
各スケジュール済プロセスの実行時制限は、オブジェクト関数を実行するために30分です。 これは、大量のデータで動作するオブジェクト関数をサポートするために大量のリソースを消費する可能性がある長時間実行ジョブを防止するためです。
ノート: 30分の制限は、その実行に指定されたオブジェクト関数操作の検証と実行にのみ適用されます。 必要なデータベース・トランザクション処理が、割り当てられた30分以内に開始されているかぎり、スケジュール済プロセスの完了は30分の制限を超えている可能性があります。 これにより、大規模なデータ・セットの操作の完了に時間がかかることが多いデータベース挿入および更新が可能になります。 したがって、エンド・ツー・エンドの処理時間は30分を超えることがあります。GroovyスクリプトがESS/PLSQLを介して実装された長時間実行プロセスをトリガーした場合、ターゲット・オブジェクトにすでに作成されているGroovyトリガーはコールされません。 これは、ESS/PLSQLがADFおよびモデル・レイヤーをバイパスして、データベース・レベルで直接動作するためです。
-
各ジョブ実行はトランザクションを構成します。 つまり、オブジェクト関数のGroovyスクリプトで指定されたすべての操作を完了まで実行して、トランザクションを完了する必要があります。 それ以外の場合、トランザクションはロールバックされ、レコードは更新されません。
-
ジョブの実行が開始されると、「取消」ボタンは機能せず、ジョブを取り消すことはできません。
-
レコードが更新されると、「最終更新者」値がジョブを発行したユーザーに変更され、「最終更新日」値が更新の日時に変更されます。
-
ログ・ファイルには、プロセス中に発生したエラーが表示されます。 プロセスのログ・ファイルを表示するには、そのプロセスのステータス・リンクをクリックします。
スケジュール済プロセスとその使用方法の詳細は、製品の実装ガイドを参照してください。
Groovyオブジェクト関数のスケジュール済プロセスのトラブルシューティング
スケジュールされたGroovyオブジェクト関数で多数のオブジェクト行を同時に処理するには、デバッグが必要な場合があります。
このようなスケジュール済プロセスをトラブルシューティングする方法を次に示します。 トラブルシューティングを支援するには:
-
文字列(または文字列を構成するstringBuilder)を返すオブジェクト関数を定義します。 処理および失敗した行数やスローされた例外などの情報を移入します。 この値は、デバッグに使用できるジョブ出力に出力されます。
-
オブジェクト関数にprintln関数を追加し、ランタイム・メッセージを有効にして、失敗の正確な原因を特定できるようにします。
printlnファンクションの詳細は、「ランタイム・メッセージ」を参照してください。
-
ただし、スケジュール済Groovyオブジェクト関数のランタイム・メッセージにはprintlnメッセージは表示されません。 そのため、回避策として、println関数を使用してオブジェクト関数のカスタム・ボタンを作成し、オブジェクトの詳細ページからそのボタンを起動できます。
ボタンの作成の詳細は、「処理およびリンク」を参照してください。
ログ・ファイルおよびジョブ出力を表示するには:
-
をクリックします。
-
スケジュール済プロセスを見つけて選択します。
検索結果をリフレッシュして、最新のステータスを確認できます。
-
Log and Outputセクションで、添付リンクをクリックしてコンソール・ログ・ファイルをダウンロードします。ノート: オブジェクト関数が戻り値を持たないよう定義されている場合、コンソール・ログ・ファイルのみが表示され、リンクをクリックするとダウンロードされます。 それ以外の場合は、Attachmentダイアログが開き、コンソール・ログファイルとコンソール・テキスト・ファイルが表示されます。
-
ログおよびジョブの出力を確認します。