アレイ エレメントの定義

ページ名

定義名

用途

アレイ名ページ

GP_PIN

エレメント名を付け、基本パラメータを定義します。

フィールド マップ/キー ページ

GP_ARRAY_KEYS

  • SQL ステートメントの FROM 句に対するデータベース テーブルを指定します。

  • アレイ、およびアレイのデータ取得時に使用する SQL ステートメントの WHERE 句に対するキーおよび検索条件を定義します。

  • アレイによって値を取得するフィールドとその値がセットされるエレメントを定義します。このデータは SQL ステートメントの SELECT 句で使用され、アレイが呼び出されたときに変換されるエレメントを指定します。また、データベースから取り込まれる各行のソート順も定義します。

処理フォーミュラ ページ

GP_ARRAY_PROCESS

必要な処理フォーミュラを定義します。

アレイを使って、HR テーブルなど、給与計算ルールで使用、評価、または処理する必要のある外部ソースのデータを取得することができます。

アレイを作成するには、アレイ定義コンポーネントで FROM 句、SELECT 句、および WHERE 句から成る構造化照会言語 (SQL) ステートメントを組み立てる必要があります。

  • FROM 句を定義するには、フィールド マップ/キー ページの [レコード (テーブル) 名] フィールドに、必要なデータを持つテーブルを指定します。

  • SELECT 句を作成するには、フィールド マップ/キー ページの [取得フィールドと変数エレメントのマッピング] グループ ボックスに、必要なデータを持つテーブルの列 (フィールド) を指定します。

  • WHERE 句を作成するには、アレイのキーと検索条件を定義します。アレイのキーの値に基づいた条件に従って、データベース テーブルからデータ行が取得されます。

    これを行うには、フィールド マップ/キー ページの [キー/検索条件] グループ ボックスのフィールドを使用します。

  • SQL ステートメントを定義したら、アレイ内のデータベース列の値をグローバル ペイロールの変数にマッピングする必要があります。

    これらの変数に列の値を格納して、グローバル ペイロールのルールで使用できるようにします。

    これを行うには、フィールド マップ/キー ページの [変数エレメント名] フィールドを使用します

注: SQL ステートメントを構築したら、フォーミュラを定義することもできます。アレイで取得したデータの評価が必要な場合があるからです。

これは、処理フォーミュラ ページで行います。

注: アレイは、有効日で管理されていません。アレイを変更すると、遡及処理に影響が出る可能性があります。

アレイを使用すると、システム エレメントでは取得できないデータベース テーブルやビューのデータにアクセスすることができます。アレイは値には変換されませんが、その代わりに処理を呼び出します。

フィールド マップ/キー ページで、受給者別のアレイも、受給者別でないアレイも作成できます。受給者別のアレイの場合、現在処理されているスライスまたはセグメントで変換されます。

アレイは、セグメントおよびスライスごとに変換する必要があります。アレイによって値がセットされるエレメントが、スライスされる別のエレメントでも使用されている場合、そのアレイおよびアレイの全ての戻り列のエレメントも確実にスライスされるように、アレイそのものをイベント リストに加える必要があります。そのため、アレイをイベント リストに入力する作業は必須となります。

受給者別に管理されるアレイの処理

受給者別に管理されるアレイの処理は、以下の手順で行われます。

  1. カレンダー実行中に初めてこのアレイが検出されると、アレイによりデータベースが呼び出されます。

    指定されたキーに基づいた WHERE 条件を満たすデータ行が全て、メモリに読み込まれます。カーソルは、従業員 ID (昇順)、雇用レコード番号 (昇順)、有効日 (降順) の順でソートされます。

  2. 受給者ごとに、適切なデータ行にアクセスできるようにカーソルが設定されます。適切なデータ行とは、フィールド マップ/キー ページのフィールドで指定された受給者有効日のフィールドのデータ行です。

    受給者別のアレイは、支給期間終了日を基準にして支給ごとに並べられます。分割が発生していて、アレイがイベント リストに含まれている場合、あるいは、スライスまたはセグメントに分割される支給、控除、休暇欠勤エレメントで使用されている場合は、アレイは、スライスまたはセグメントの終了日の順に並べられる必要があります。

  3. アレイ処理フォーミュラは、メモリに格納されている受給者データ (受給者カーソルが指している受給者のデータ) に対して、処理コードを基に適用されます。

  4. データベース フィールドは、処理フォーミュラが適用されたデータの最後の行になります。

アレイにアクセスするたび、手順の 2 から 4 までが繰り返し実行されます。手順 1 は、受給者が変わった、または新しいスライスまたはセグメントが変換される場合に限り、再度実行されます。

受給者別に管理されないアレイの処理

受給者別に管理されないアレイの処理は、以下の手順で行われます。

  1. カレンダー実行中に初めてこのアレイが検出されると、アレイによりデータベースが呼び出されます。

    指定されたキーに基づいた WHERE 条件を満たすデータ行が全て、メモリに読み込まれます。そのため、処理フォーミュラでも有効日行の判定ロジックを使用する必要があります。

  2. テーブルが有効日付きの場合、適切な日付 (セグメント、スライス、期間) を照会するシステム エレメントが、検索フォーミュラによって参照されます。

    分割が発生していて、アレイがイベント リストに含まれている場合、あるいは、スライスまたはセグメントに分割される支給、控除、休暇欠勤エレメントで使用されている場合は、アレイは、スライスまたはセグメントの終了日の順に並べられる必要があります。アレイはデータベースから得た複数の行を戻すことができます。処理フォーミュラは、複数の行に対して適用されます。

  3. アレイ処理フォーミュラが実行されます。

  4. データベース フィールドは、処理フォーミュラが適用されたデータの最後の行になります。

アレイにアクセスするたび、手順の 2 から 4 までが繰り返し実行されます。手順 1 は、フィールド マップ/キー ページで [変換毎に再ロード] または [セグメント毎に再ロード] が選択されている場合に限り、実行されます。

アレイ名ページ (GP_PIN) を使用して、エレメントに名前を付け、基本パラメータを定義します。

画像: アレイ名ページ

次の例では、アレイ名ページのフィールドおよびコントロールを説明します。

アレイ名ページ

アレイは、処理が実行されている間だけ結果を保持する一時テーブルであり、処理が終了すればそれらのデータを保存しておく必要はなくなります。そのため、[保存] および [ゼロのとき保存] チェック ボックスはオフに設定され、入力できないようになっています。

さらに、アレイは有効日で管理されないため、このページには [定義の指定日] フィールドは用意されていません。アレイの定義を変更する場合は、新しいアレイを作成し、そのアレイを参照する有効日付きのエレメントを新規に作成します。データベース テーブル名またはビュー名を変更した場合も、新しいアレイを作成する必要があります。

注: GP_PIN というオブジェクト名のエレメント名共通ページで、エレメント名やその基本パラメータを全て定義します。エレメント名共通ページのページ タイトルや内容は、定義するグローバル ペイロール エレメントのタイプによって変わります。このページのフィールドについては全て、この製品ドキュメントの他のトピックで説明されています。

フィールド マップ/キー ページ (GP_ARRAY_KEYS) を使用して、以下の作業を行います。

  • SQL ステートメントの FROM 句に対するデータベース テーブルを指定します。

  • アレイ、およびアレイのデータ取得時に使用する SQL ステートメントの WHERE 句に対するキーおよび検索条件を定義します。

  • アレイによって値を取得するフィールドとその値がセットされるエレメントを定義します。このデータは SQL ステートメントの SELECT 句で使用され、アレイが呼び出されたときに変換されるエレメントを指定します。また、データベースから取り込まれる各行のソート順も定義します。

画像: フィールド マップ/キー ページ

次の例では、フィールド マップ/キー ページのフィールドおよびコントロールを説明します。

フィールド マップ/キー ページ

フィールドまたはコントロール

定義

レコード (テーブル) 名

PeopleSoft で定義されているテーブルのリストから、SQL ステートメントで使用するテーブルを選択します。SQL ステートメントの FROM 句では、選択したテーブル名に自動的にプレフィックス "PS_" が付けられます。

ビューを選択することもできます。検索結果リストには、データベースにある全ての SQL テーブルとビューが表示されます。

ロード処理オプション

アレイ データをデータベースから取得し直す周期を選択します。

値は以下のとおりです。

[従業員ベースの検索]: 受給者別のアレイを作成する場合に選択します。

受給者ごとに 1 回、データを取得します。1 人の受給者の処理が終わると、アレイのストレージが開放され、次の受給者の処理で使用できるようになります。

[1 回のみロード (小さいテーブル)]: 受給者別でないアレイを作成する場合に選択します。処理中にアレイが最初に参照されたときに 1 回だけ、データを取得します。他の 2 つの "再ロード" と比較してこのオプションでは、データ ロードのためのデータベースへのアクセスが 1 回しか行われないため、パフォーマンスが大幅に向上します。明記されているように、このオプションは小さいテーブルに対してのみ使用してください。このオプションに関連付けられているアレイのバッファは全体で、5000 行しか格納することができません。プロセス自体によってテーブルのデータを変更する場合 (この場合、プロセス内部でその更新内容を反映させるのが望ましいのですが)、[1 回のみロード (小さいテーブル)] オプションは選択しないでください。

[変換毎に再ロード]: 受給者別でないアレイを作成する場合に選択します。

アレイが変換されるたびに、データベースからデータを取得します。

[セグメント毎に再ロード]: 受給者別でないアレイを作成する場合に選択します。

各セグメントでアレイが変換される回数に関係なく、セグメントが処理されるたびに 1 回、データベースからデータを取得します。

注: 選択されたロード処理オプションによって、[キー タイプ] フィールドに入力できるキー タイプは変わります。

製品ドキュメントの『PeopleTools: Data Management』を参照してください。

取得フィールドと変数エレメントのマッピング

[取得フィールドと変数エレメントのマッピング] グループ ボックスで、選択された行から値を取得する列を指定します。これは、SQL ステートメントの SELECT 句の一部として使用されます。また、選択された列の値をロードする変数エレメントを指定します。受給者別のアレイの場合、従業員 ID (および、指定されていれば、雇用レコード番号や有効日) でソートされます。従業員 ID と雇用レコード番号は昇順、有効日は降順でソートされます。

フィールドまたはコントロール

定義

フィールド使用

以下のオプションから選択します。

[通貨]: 通貨換算が必要な場合に選択します。

[ポインタ]: 列で PIN が使用されている場合に選択します。

[その他]: 上記以外の場合に選択します。デフォルトはこの値です。

フィールド

データベース テーブルの列の中からフィールドを選択します。検索結果リストには、SELECT 句や ORDER BY 句で使用することができる、データベース テーブルの列が全て表示されます。

変数エレメント名

選択されたフィールドの値をロードする変数を定義します。[変数エレメント名] フィールドは、必須フィールドではありません。このフィールドが空白の場合、データベース フィールド名の列にある値は、ORDER BY 句でだけ使用されます。

注: 複数の異なるフィールド名に対し、同じ変数名を指定することはできません。

通貨フィールド

データベースから取得するフィールドが金額の場合、そのフィールドの通貨コードを保存しているフィールドの列名をデータベースから選択します。この通貨コードが処理通貨と異なる場合、データベース上の金額は処理通貨の値に換算されます。このフィールドは、[フィールド使用][通貨] が選択されている場合にのみ入力できます。

ソート基準

データベースから取り込まれる各行のソート順 (昇順、降順、またはなし) を定義します。検索フォーミュラによっては、取得する最初の行だけを必要としたり、ソート順によって結果が変化する特別なフォーミュラのロジックを使用したりするため、ソート順序は非常に重要です。

注: 同じフィールドを複数のグローバル ペイロールの変数に割り当てることはできますが、昇順と降順など、複数のソート順序を指定することはできません。

キー/検索条件

フィールドまたはコントロール

定義

キー タイプ

キー タイプを選択します。

[ロード処理オプション][従業員ベースの検索] の場合、キー タイプは [有効日][雇用レコード番号][従業員 ID][その他] のいずれかです。キーとして照会しているテーブル内の他のデータベース フィールドを使う場合は、[その他] を選択します。

[ロード処理オプション][1 回のみロード (小さいテーブル)][変換毎に再ロード]、または [セグメント毎に再ロード] の場合、キー フィールドは全て [その他] として定義されます。

ユーザー定義アレイに対するキーを指定する場合、少なくとも 1 つのキーを指定する必要がありますが、指定しなくてもこのページを保存することはできます。(指定がない場合は、テーブル全体がロードされます。)

警告 アレイのキーを変更すると、[キー/検索条件] グループ ボックス、および処理フォーミュラ ページのデータがクリアされます。

フィールド

データベースに定義されているレコード (テーブル) の列の名前を正確に入力します。これは、WHERE 句の条件式の左辺になります。たとえば、"WHERE EMPLID = PAYEE ID1" (PAYEE ID1 はシステム エレメント) という WHERE 句を作成する場合、[フィールド] に EMPLID を指定します。

フィールド名は、データベース テーブルの、フィールド ラベルやフィールド名称ではなく、列の名称と一致している必要があります。

演算子

WHERE 句の演算子を指定します。演算子を入力できるのは、キー タイプが [その他] の場合のみです。有効な演算子は、<<=<>=>=>該当なしです。

エレメント タイプ

[ブラケット][フォーミュラ][システム エレメント]、または [変数] を選択します。入力タイプを入力できるのは、キー タイプが [その他] の場合のみです。

エレメント名

WHERE 句の条件式の右辺になるエレメントを指定します。たとえば、"WHERE EMPLID = PAYEE ID1" (PAYEE ID1 はシステム エレメント) という WHERE 句を作成する場合、[エレメント名] に PAYEE ID1 を指定します。キー タイプが [その他] の場合にのみ、エレメント名を指定することができます。

生成 SQL ステートメントの確認

フィールドまたはコントロール

定義

実行時にステートメントをログに記録

このチェック ボックスをオンにすると、バッチ処理中にアレイ モジュールにより動的に作成される SQL ステートメント テキストを見ることができます。PeopleTools Configuration Manager でリダイレクト出力のオプションを選択すると、それらのアウトプットをファイルに出力することができます。

生成されるクエリーの表示

クリックすると、リアルタイムで SQL ステートメントを確認することができます。アレイにデータを取り込むのに、どのような SQL が作成されるかが表示されます。また、[レコード (テーブル) 名] フィールドに定義されたテーブルの行数がリストされます。

システム エレメントのキー値としての使い方

ロード処理オプションの値によっては、[従業員 ID][雇用 Rcd]、および [有効日] をキー フィールドとして使用できます。

アレイ キーとして [従業員 ID] または [雇用レコード番号] を選択すると、[演算子] および [エレメント名] フィールドが非表示になり、現在の [従業員 ID] および [雇用レコード番号] に対して (=) 演算子が使用されます。[有効日] の場合は、[有効日との比較] フィールドで指定された日付に対して (<=) 演算子が使用されます。

たとえば、[ロード処理オプション] で [従業員ベースの検索] を選択して [キー タイプ] に [従業員 ID] を、[フィールド] に EMPLID を指定し、次に (行を追加して) [キー タイプ] に [雇用 Rcd] を、[フィールド] に EMPL_RCD を指定すると、現在の受給者のデータだけを取得する SQL ステートメントが作成されます。

受給者別のアレイ、および受給者別でないアレイでのキー タイプ [その他] の使い方

用意された 3 つのキー タイプを使用しない場合、またはそれ以外のフィールドをキーとして入力したい場合、キー フィールド名、演算子、入力タイプ、および適切なエレメント名を入力する必要があります。

  1. 指定したキー フィールド (レコード列) に対する正しい演算子を選択します。これは、WHERE 句で使用される演算子になります。

  2. 入力タイプを選択します。

  3. 入力タイプに対応したエレメント名を入力します。ここで指定するエレメントは、選択されたタイプの定義されているエレメントである必要があります。

ここで指定された値が、アレイにデータを取り込む際に必要となる SQL ステートメントの WHERE 句に使用されます。設定に合わせて、複数のキー フィールドを指定できます。

注: このページで複数のキーを入力した場合、それらの複数の条件は常に AND 条件として処理されます。

例: ユーザー定義のキー構造

たとえば、部門 ID が一致するデータ行をデータベースから検索する場合を考えてみましょう。

[その他]、DEPTID、[=]、システム エレメント、DEPTID の順に選択します。このアレイが検出されると、部門テーブル (DEPT_TBL) の行の中から、現在処理中の受給者に対するシステム エレメント DEPTID と値の一致する部門 ID (DEPTID) を持つ行が検索されます。

処理フォーミュラ ページ (GP_ARRAY_PROCESS) を使用して、必要な処理フォーミュラを定義します。

画像: 処理フォーミュラ ページ

次の例では、処理フォーミュラ ページのフィールドおよびコントロールを説明します。

処理フォーミュラ ページ

フィールドまたはコントロール

定義

処理オプション

フォーミュラをいつ、どのように適用するかを、以下の値の中から選択します。値は以下のとおりです。

[フォーミュラ別、全行に適用]: アレイで必要とされる全ての行が選択されます。まず最初のフォーミュラが全ての行に適用され、その次に 2 番目のフォーミュラ、というように全てのフォーミュラが順に適用されます。

[行別、全フォーミュラを適用]: データベースからデータ行が 1 行選択され、その 1 行に対してこのページの各フォーミュラが適用されます。その後、次の行が選択され、その行に対して各フォーミュラが適用されます。同様にして、各行ごとに全てのフォーミュラが適用されます。

[検索]: データベースからデータ行が 1 行選択され、その 1 行に対してこのページの各フォーミュラが適用されます。その後、次の行が選択され、その行に対して各フォーミュラが適用されます。フォーミュラの値が 1 になった時点で、ループは停止されます。したがって、たとえば特定の値のデータを検索する場合、その値が見つかった時点でデータの検索は停止されます。

注: 検索処理について、処理オプションで [検索] を選択して [フォーミュラ名] を指定しない場合、アレイによって返された最初のデータ行が使用されます。

エラー処理フォーミュラ

行が 1 行も選択されなかった場合に、エラー処理に使用するエラー処理フォーミュラ名を選択します。

フォーミュラ名

アレイの変換で使用される、各データ行に適用するフォーミュラを選択します。

[処理オプション] で [検索] を選択した場合、ここにはブール値を返すフォーミュラを選択する必要があります。

注: フォーミュラを使用する代わりに、必要なデータ行が常に最初に返されるようなアレイを定義することも検討してください。アレイによって返されるデータ行が常に 1 行だけで、その行に必要なデータが必ず含まれている場合、処理オプションが [検索] であっても [フォーミュラ名] フィールドの値を指定する必要はありません。

注: 各フォーミュラには自動的に連番が割り当てられます。割り当てられた連番は変更できません。順番を間違えてしまった場合は、間違えたフォーミュラとそれ以降のフォーミュラを全て削除して、もう一度正しい順番で追加し直します。