タスク・イテレータを使用して複数のQuickPay実行のロールバックを自動化する方法
この例では、「別のタスクの発行」オプションを使用して、単一のフロー送信でマルチ・パイプQuickPay実行を自動的にロールバックします。
たとえば、会社でQuickPay実行の支払を処理していないため、給与計算を実行する前に、給与期間内のすべてのQuickPay実行をロールバックする必要があります。 QuickPay実行をロールバックしない場合、QuickPay実行で処理された個人は給与計算で取得されないため、支払は受信されません。
個々のQuickPay実行を手動でロールバックするのではなく、タスク・イテレータを使用して、指定した期間内のQuickPay実行のトランザクションIDを動的に識別し、QuickPay実行のロールバックを自動化します。
QuickPay実行のロールバックの自動化を開始する前に、次のタスクを完了します:
-
値セットを作成して、すでに処理されているQuickPaysのトランザクションIDを導出します。 フロー・イテレータは、複数反復のトランザクションIDを使用します。
-
タイプが「タスク繰返し」のタスク・イテレータFastFormulaを作成します。
-
ユーザー定義フローを作成し、タスクを反復するための「別のタスクの発行」オプションを含めます。
値セットの作成方法
すべてのQuickPayトランザクションIDを返す値セットを作成するステップを見てみましょう。-
「設定およびメンテナンス」作業領域で「給与値セット」タスクを選択します。
-
「値セット」ページで、「作成」をクリックし、これらの値を入力します。
フィールド
値
値セット・コード
ROLLBACKQPAY_VS
摘要
QuickPayロールバック
モジュール
給与フロー
検証タイプ
Table
値データ型
数値
FROM句
pay_payroll_actions pa、pay_requests pr
値列名
pa.payroll_action_id
値列タイプ
VARCHAR2
値列長
200
ID列名
pa.PAYROLL_ACTION_ID
ID列タイプ
数値
ID列長
18
WHERE句
pa.pay_request_id(+) = pr.pay_request_id and pr.pay_request_id =( select pay_request_id from ( select t1.pay_request_id,rownum cnt from( select pr.pay_request_id,pfi.instance_name ,nvl(pa.payroll_action_id,-1) payroll_action_id from pay_flow_instances pfi, pay_flows pf, pay_requests pr, pay_payroll_actions pa where pfi.base_flow_id =pf.base_flow_id and pf.base_flow_name IN ('QUICK_PAY', 'QUICK_PAY_ONLY', 'QUICK_PAY_SIMPLIFIED') AND pr.flow_instance_id=pfi.flow_instance_id AND pa.pay_request_id(+) = pr.pay_request_id and pfi.instance_name like 'QuickPay_XXXX,' and pr.call_type='FLOW_TASK_INSTANCE' order by pr.pay_request_id desc )t1 ) where cnt=:{PARAMETER.COUNT} )
ORDER BY句
ノート:-
この表のSQLは、値セットを使用してQuickPayロールバック反復のトランザクションを取得する方法を示すサンプルです。
-
SQLの下のWhere句は、指定された名前で始まるフロー・インスタンスのみを処理するようにロールバックの反復を制限することです。 たとえば、この例では、'QuickPay_XXXX'がフロー名として使用されます。 'XXXX'は、QuickPayの実行が処理される日および月を表すことができます。
-
-
オプションで、値セットを保護するには、「データのセキュリティ」チェック・ボックスを選択し、「データ・セキュリティ・リソース名」を指定します。
ノート:データ・セキュリティを使用可能にできるのは、値セットが単一の表またはビューに基づいている場合のみです。
-
「保存」をクリックします。
値セットを作成した後、次の処理を実行して、値セット問合せが正しいかどうか、および期待どおりに機能しているかどうかを確認します:
-
この値のみが設定されたフローを設定します。
-
フローが処理されたQuickPaysのトランザクションIDのリストを生成することを確認します。
-
フロー発行ページで、QuickPay IDがフロー・パラメータ値として取得されていることを確認します。
-
タスク繰返し式の作成方法
タスク繰返し式では、すでに処理済のQuickPaysのQuickPayトランザクションIDのリストを取得するために定義した値セットがコールされます。 式の戻り値は、反復ロジックで現在のQuickPayを各反復でロールバックするために、ロールバック・プロセスのタスク・パラメータを検証するために使用されます。
テキスト・エディタを使用してFastFormulaを作成し、ロールバックQuickPayプロセスの実行に必要な値を戻します。
次のステップを実行して繰返しFormulaを作成します。
-
「設定およびメンテナンス」作業領域のFast Formulasタスクを使用します。
-
「FastFormula」ページで、「作成」をクリックしてFormulaを作成します。
-
「FastFormulaの作成」ページで、次のフィールドに入力します。
フィールド
値
Formula名
QP_Rollback
Formulaタイプ
タスクの繰返し
摘要
QuickPayをロールバックする式
有効開始日
値を入力しないでください。 タスク繰返し式によって導出されます。
国別仕様データ・グループ
このFormulaは、国別仕様データ・グループ(LDG)に固有ではないため、このフィールドを空白のままにできます。
エディタのタイプ
テキスト
-
「続行」をクリックします。
-
「Formulaテキスト」セクションに次のFormulaテキスト詳細を入力します。
1. FORMULA NAME: QP_ROLLBACK 2. FORMULA TYPE: Task Repeat 3. DESCRIPTION: Formula to roll back the QuickPays 4. Formula Results: Iterates the Roll Back QuickPay process 5. /* Inputs */ 6. INPUTS ARE FLOW_INSTANCE_ID, REPEAT_COUNTER, BASE_TASK_NAME (text) 7. DEFAULT FOR REPEAT_COUNTER IS 1 8. DEFAULT FOR FLOW_INSTANCE ID IS 1 9. DEFAULT FOR PAYROLL_PROCESS IS 1 10. COUNTER = to_char(REPEAT_COUNTER) 11. PAYACTION_ID = GET_VALUE_SET ('ROLLBACKQPAY_VS' ,'|=COUNT='|| COUNTER) 12. BASE_TASK_NAME = 'JAVA_API_ROLLBACK' 13. EXECUTION_MODE = 'SUBMIT' 14. EFFECTIVE_DATE = trunc(to_date(GLOBAL_PAY_INTERFACE_EXTRACTION_DATE,'YYYY-MM-DD')) 15. PAYROLL_PROCESS = PAY ACTION_ID 16. REPEATFLAG = 'Y' 17. /*Results*/ 18. RETURN REPEAT_COUNTER, REPEAT FLAG, BASE_TASK_NAME, EXECUTION_MODE, EFFECTIVE_DATE, PAYACTION_ID, PAYROLL_PROCESS 19. /* End Formula Text */
-
「コンパイル」をクリックします。
-
「保存」をクリックします。
ユーザー定義フロー・パターンの作成方法
次のステップを実行してフロー・パターンを作成します。-
ホーム・ページで、「自分のクライアント・グループ」の「給与」に移動し、「給与フロー・パターン」タスクを選択します。
-
「作成」をクリックしてフロー・パターンを作成します。 既存のフロー・パターンを検索して選択し、コピーすることもできます。
-
「国別仕様データ・グループ」フィールドは空白のままにして「続行」をクリックします。
-
「基本情報」ページで、次の基本的なフロー情報フィールドに情報を入力します。
フィールド
値
フロー・パターン名
ロールバックQuickPay
摘要
フローの摘要を入力します。
LDG要
いいえ
追加するアクティビティ
「計算」を選択します。
-
「別のタスクの送信」を選択してフロー・パターンに含めます。
-
フローの「所有者タイプ」および「所有者」を選択します。
-
「タスク順序」ページでは、順序がここに示されているように表示されます。
タスク
次のタスク
タスクの開始
別のタスクの送信
別のタスクの送信
タスクの終了
-
「パラメータ」ページで、「追加」アイコンを使用し、必要なフロー・パラメータを追加してフロー・パターンを完了します。
-
パラメータを追加する前に、「次」をクリックしてタスク・パラメータを確認します。 「別のタスクの発行」に関連付けられたパラメータは自動的に使用可能になります。 パラメータがこの表に示されているとおりに定義されていることを確認してください。
これらのフロー・パラメータはフロー・パターン内のタスクを送信して完了するために使用されます。または、フロー・パターン内の残りのタスクを送信するための値を導出するための基礎として使用されます。名前
実行モード
データ型
パラメータ基準
基準値
パラレルで実行
送信
テキスト
フローにバインド
パラレルで実行
国別仕様データ・グループ
送信
Long
コンテキスト・バインド
国別仕様データ・グループ
タスク名
送信
テキスト
フローにバインド
タスク名
タスク繰返しFormula
送信
テキスト
フローにバインド
タスク繰返しFormula
最大繰返しカウンタ
送信
Long
フローにバインド
最大繰返しカウンタ
リクエスト
送信
Long
コンテキスト・バインド
リクエスト
最大パラレル・スレッド
送信
数値
フローにバインド
最大パラレル・スレッド
-
必要に応じて、パラメータを更新します。 必要なフロー・パラメータが完了したら、「次」をクリックします。
-
フロー・パターンの結果チェックリストを確認します。
-
「送信」をクリックします。
フローの送信方法
次のステップを実行して、新しく作成されたフロー・パターンを送信します。-
クイック・アクションから、またはホーム・ページの「自分のクライアント・グループ」の「給与」で、「フローの送信」タスクを選択します。
-
「ロールバックQuickPay」フローを検索し、「次」をクリックします。
-
次のパラメータを入力します。
フィールド
値
フロー・パターン
ロールバックQuickPay
給与フロー
フロー・インスタンスに適した名前を入力します(例:ロールバックQuickPay_0105)。
タスク名
ロールバック・プロセス
タスク繰返しFormula
QP_Rollback
最大繰返しカウンタ
フローによる送信の最大数または反復数。
ノート:繰返しカウンタNは、1個の親とN-1個の子の送信を示します。
パラレルで実行
送信がパラレルかシリアルかを決定します フロー・インスタンスをパラレルで実行する場合は、「はい」を選択します。
ノート:大量のデータに対してスレッドをパラレルに実行することをお薦めします。
最大パラレル・スレッド
パラレルで実行される最大送信数
ノート:「最大繰返しカウンタ」は、タスクの1回送信に対して実行できるインスタンスの最大数です。 これは、給与期間に処理されたQuickPaysの数で、このフローを使用してロールバックします。 反復実行がエラーになった場合は、このパラメータによって、プロセスが無限ループに入るのを回避します。
-
「次」をクリックします。 フロー相互関係をチェックします。
-
「次」をクリックし、スケジュールを選択します。 「できるだけ早く」を選択すると、タスクを即時に実行できます。
-
「レビュー」、「送信」の順にクリックします。
タスクの反復を表示およびモニターする方法
フローを送信すると、「チェックリスト」ページが表示され、フロー内のタスクおよびその他のパラメータを管理およびモニターできます。-
「チェックリスト」ページで、送信した「別のタスクの発行」フローを検索してクリックします。 タスクの反復ページが表示されます。
-
特定のタスク反復の詳細情報を表示するには、タスク反復名をクリックします。 このページから、タスク反復パラメータ、および特定のタスク反復のプロセス出力およびログ・ファイルを表示できます。
-
ページをリフレッシュして最新のタスク反復数を表示するには、「リフレッシュ」をクリックします。
-
「処理」>「ロールバック」をクリックして、すべてのタスクの反復をロールバックします。
結果およびログ・ファイルの表示方法
送信されたフローの対応する結果およびログ・ファイル出力を表示するには、次のステップを実行します。-
「プロセス結果要約」ページにナビゲートし、送信された別のタスクの発行フローを検索します。 フロー名をクリックして、「タスク反復」ページを開きます。
-
タスクの反復名をクリックし、タスク反復のプロセス結果の詳細を表示します。
-
「個人プロセス結果」セクションを使用して、個人プロセスの結果を表示します。
-
プロセスの出力を表示するには、「出力」および「ログ・ファイル」セクションをクリックします。
-
最初の行の「プロセスID」をクリックして、フローのログ出力の詳細を表示します。
-
タスクの反復または子発行のログ出力を表示するには、次の2行または他の行の「プロセスID」をクリックします。