トリガについて
このトピックでは、次について説明します。
トリガの用途。
トリガ テーブルのデータ。
トリガの作成。
使用済みまたは不要なトリガの管理。
支給および控除の割り当てを使用した分割トリガ。
トリガの手動定義。
グローバル ペイロールでは、反復、遡及、または分割処理を引き起こすオンライン データの変更を検出する機能をトリガと呼びます。トリガを設定するには、昇給、勤務地の変更、雇用終了など、データ変更に反応させるデータベース レコードおよびフィールドを選択します。変更が行われると、トリガ テーブルというテーブルにデータ行が書き込まれ、変更の処理方法がシステムに通知されます。
トリガには以下の 3 つのタイプがあります。
反復
反復トリガは、現在のオープン カレンダーについて受給者の処理 (または再処理) が必要であることを指示します。たとえば、受給者のデータが変更された、またはバッチ処理中に受給者が一時停止モードになった場合などに使用されます。カレンダー グループ内のカレンダー数にかかわらず、1 つのオープン カレンダー グループの受給者ごとに、反復トリガは 1 つしか作成されません。データが受給者について変更されたとき、オンライン コードによって反復トリガが作成されます。このトリガにより、バッチ処理で受給者の再計算、カレンダー実行への受給者の追加、カレンダー実行からの受給者の除外が可能になります。
遡及
遡及トリガは、過去に計算した (処理済みの) カレンダーの再処理が必要であることを指示します。たとえば、受給者の給与が変更され、変更が前回のカレンダーにさかのぼって行われる場合などに使用されます。受給者が正確な支給金額を確実に受け取るためには、給与データの再処理が必要になります。
「遡及方法について」を参照してください。
分割
分割トリガは、受給者データの変更により、給与計算実行について給与計算エレメントの全てまたはサブセットの分割が必要であることを指示します。
「分割の設定について」を参照してください。
トリガは以下の 2 とおりの方法で作成できます。
手動: トリガ定義を設定する必要はありません。指定の受給者についてトリガを手動で作成します。
「自動作成されたトリガの管理とトリガの手動定義」を参照してください。
注: トリガの手動作成は、遡及トリガと分割トリガでのみ使用できます。
自動: トリガ定義を設定する必要があります。これらのトリガ定義は、データベースが変更された際に、"自動" トリガを作成する方法と時期を指定します。
手動または自動のどちらでトリガを作成した場合でも、バッチ処理によりトリガが使用され、適切なアクションが実行されます。
レコードまたはレコードとフィールドの組み合わせの変更によってトリガが作成されると、変更の処理に必要なデータがトリガ テーブルに書き込まれます。トリガ タイプごとに別々のテーブルがあり、データはそのテーブルに保存されます。
反復トリガ テーブル
反復トリガで作成される情報は、反復トリガ テーブル (GP_ITER_TRGR) に保存されます。このテーブルには、以下のデータが含まれます。
フィールド |
用途 |
---|---|
EMPLID |
反復トリガは、キー構造の一部として従業員 ID を持つレコードから作成される、受給者レベルのトリガです。EMPLID は、トリガを作成するデータ変更の影響を受ける受給者を識別します。 一括トリガの動作はこれとは異なり、キー構造の一部として従業員 ID を持っているレコードに制限されません。 「一括トリガについて」を参照してください。 |
CAL_RUN_ID |
反復トリガを処理するカレンダー実行を識別します。 |
TRGR_CREATE_TS |
トリガ作成時のシステムの日時です (参照用)。同じ反復トリガが繰り返し作成されるようなデータ変更を行った場合は、各インスタンスを一意に識別するためにタイムスタンプが必要になります。 |
ITER_TRGR_STATUS |
トリガの処理状況を識別します。オプションは、次のとおりです。 [キャンセル]: 受給者トリガの反復ページで、ステータスが [未処理] となっているトリガはキャンセルできます。 [処理中]: バッチ処理で現在使用されているトリガです。 [処理済]: 処理が既に完了し、今後は使用されないトリガです。 [未処理]: まだ処理されていないトリガです。 |
ITER_TRGR_SRC |
反復トリガの作成方法を識別します。オプションは、次のとおりです。 [バッチ]: バッチ処理中に作成されるトリガです。 [オンライン]: オンライン コードで作成されるトリガです。 |
COUNTRY |
反復トリガに関連付けられた国コードです。 |
RECNAME |
反復トリガが作成されるソース レコードを識別します。 |
FIELDNAME |
データ変更に対して反復トリガを作成するフィールドを識別します。 |
TRGR_FLD_VAL_CHAR |
反復トリガを作成する文字値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_DT |
反復トリガを作成する日付値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_NUM |
反復トリガを作成する数値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
データ変更によって反復トリガが作成されると、従業員 ID、国、およびカレンダー実行 ID が、バッチ コードによる反復処理を容易にするその他の情報と共にトリガ テーブルに書き込まれます。
たとえば、このデータにより次の事柄が認識されます。
処理または再処理対象の受給者。
処理対象のオープン カレンダー。
さらに、RECNAME、FIELDNAME、TRGR_FLD_VAL_CHAR、TRGR_FLD_VAL_DT、および TRGR_FLD_VAL_NUM フィールドで、反復トリガのソース (トリガを作成するレコード、フィールド、またはフィールド値の変更) が識別されます。この情報により、受給者の支給が反復処理される原因を明確に把握し、デバッグを簡単に行ったりクエリーに回答することができます。
注: このテーブルに保存されているトリガのソース データは、反復ページで表示できます。
「反復ページ」を参照してください。
遡及トリガ テーブル
遡及トリガで作成される情報は、遡及トリガ テーブル (GP_RTO_TRGR) に保存されます。このテーブルには、以下のデータが含まれます。
フィールド |
用途または説明 |
---|---|
EMPLID |
遡及トリガは、キー構造の一部として従業員 ID を持つレコードから作成される、受給者レベルのトリガです。EMPLID は、トリガを作成するデータ変更の影響を受ける受給者を識別します。 一括トリガの動作はこれとは異なり、キー構造の一部として従業員 ID を持っているレコードに制限されません。 「一括トリガについて」を参照してください。 |
COUNTRY |
遡及トリガに関連付けられた国コードです。 |
TRGR_EVENT_ID |
レコード、フィールド、または値の変更に関連付けられたトリガ イベント ID です。トリガの設定時に定義します。 |
TRGR_EFFDT |
有効日を使って、遡及処理の対象期間を指定します。たとえば、有効日が 2000 年 1 月 1 日の遡及トリガは、2000 年 1 月の給与計算実行で始まる全てのカレンダーを再処理するように指示します。 |
TRGR_CREATE_TS |
トリガ作成時のシステムの日時です (参照用)。同じ遡及トリガが繰り返し作成されるようなデータ変更を行った場合は、各インスタンスを一意に識別するためにタイムスタンプが必要になります。 |
RTO_TRGR_SRC |
遡及トリガの作成方法を識別します。オプションは、次のとおりです。 [自動]: オンライン コードで作成されたトリガを識別します。 [手動]: 手動で作成されたトリガを示します。 [ユーティリティ作成]: ここでは該当しません。 |
TRGR_STATUS |
トリガの処理状況を識別します。オプションは、次のとおりです。 [キャンセル]: 受給者トリガのページで、ステータスが [未処理] となっているトリガはキャンセルできます。 [処理中]: バッチ処理で現在使用されているトリガを示します。 [処理済]: 処理が既に完了し、今後は使用されないトリガを識別します。 [未処理]: まだ処理されていないトリガを識別します。 |
TRGR_DESCR |
トリガ タグ (トリガの説明) として機能します。[ユーティリティ作成] ソース値で使用されます。 |
CAL_RUN_ID |
遡及トリガを処理するカレンダー実行を識別します。 |
RECNAME |
遡及トリガが作成されるソース レコードを識別します。 |
FIELDNAME |
データ変更に対して遡及トリガを作成するフィールドを識別します。 |
TRGR_FLD_VAL_CHAR |
遡及トリガを作成する文字値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_DT |
遡及トリガを作成する日付値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_NUM |
遡及トリガを作成する数値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
最初にデータ変更によって遡及トリガが作成されると、従業員 ID、変更の有効日 (トリガ有効日)、国、および関連付けられたイベント ID が、バッチ コードによる遡及処理を容易にするその他の情報と共にトリガ テーブルに書き込まれます。
たとえば、このデータにより次の事柄が認識されます。
処理対象の受給者。
トリガ有効日に基づく遡及処理の実行期間。
過去の期間の再計算に使用するプロセス定義。
さらに、RECNAME、FIELDNAME、TRGR_FLD_VAL_CHAR、TRGR_FLD_VAL_DT、および TRGR_FLD_VAL_NUM フィールドで、遡及トリガのソース (トリガを作成するレコード、フィールド、またはフィールド値の変更) が識別されます。この情報により、受給者の支給が遡及処理される原因を明確に把握し、デバッグを簡単に行ったりクエリーに回答することができます。
注: このテーブルに保存されているトリガのソース データは、遡及ページで表示できます。
「遡及ページ」を参照してください。
注: 遡及データ変更に反応するレコードとフィールドの組み合わせを複数定義することによって、同じイベントに対しトリガ データ行を複数作成できます。たとえば、採用日の遡及変更と支給グループの遡及変更が、同じイベントに対して遡及トリガを作成する場合があります。遡及トリガが複数あるときは、最も古いトリガ有効日が限度計算の実行に使われ、次に遡及計算に使用されます。
分割トリガ テーブル
分割トリガで作成される情報は、分割トリガ テーブル (GP_SEG_TRGR) に保存されます。このテーブルには、以下のデータが含まれます。
フィールド |
用途 |
---|---|
EMPLID |
分割トリガは、キー構造の一部として従業員 ID を持つレコードから作成される、受給者レベルのトリガです。EMPLID は、トリガを作成するデータ変更の影響を受ける受給者を識別します。 一括トリガの動作はこれとは異なり、キー構造の一部として従業員 ID を持っているレコードに制限されません。 「一括トリガについて」を参照してください。 |
EMPL_RCD |
分割イベントによって影響を受ける職務を識別します。 |
COUNTRY |
分割トリガに関連付けられた国コードです。 |
TRGR_EVENT_ID |
トリガの起動条件に関連付けられたトリガ イベント ID です。トリガの設定時に定義します。適用する分割のタイプと、分割するエレメントを指定します (エレメントの分割の場合)。 |
TRGR_EFFDT |
有効日を使って、支給期間の分割方法を指定します。たとえば、有効日が 6 月 15 日の分割トリガは、6 月の支給期間を 2 つのセグメントに分割するように指示します。1 つのセグメントは 6 月 1 日 から 6 月 15 日で、もう 1 つのセグメントは 6 月 16 日 から 6 月 30 日です。 |
TRGR_CREATE_TS |
トリガ作成時のシステムの日時です (参照用)。同じ分割トリガが繰り返し作成されるようなデータ変更を行った場合は、インスタンスを一意に識別するためにタイムスタンプが必要になります。 |
SEG_TRGR_SRC |
分割トリガの作成方法を識別します。オプションは、次のとおりです。 [自動]: オンライン コードで作成されたトリガを識別します。 [手動]: 手動で作成されたトリガを示します。 |
SEG_TRGR_STATUS |
トリガの処理状況を識別します。オプションは、次のとおりです。 [アクティブ]: ユーザーがキャンセルするまで、トリガは書き込まれ、アクティブのままです。 [キャンセル]: 受給者トリガのページで、ステータスが [アクティブ] となっているトリガはキャンセルできます。 |
SEG_TRGR_LVL |
トリガが、受給者レベルのトリガか受給者の職務 (EMPL_RCD) レベルのトリガであるかを指定します。このフィールドによって、1 つの職務についてのみ処理する必要があるか、または全ての職務について処理する必要があるか指示されます。 |
RECNAME |
分割トリガが作成されるソース レコードを識別します。 |
FIELDNAME |
データ変更に対して分割トリガを作成するフィールドを識別します。 |
TRGR_FLD_VAL_CHAR |
分割トリガを作成する文字値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_DT |
分割トリガを作成する日付値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_NUM |
分割トリガを作成する数値の変更を識別します。トリガがレコード レベルでのみ定義されている場合、このフィールドの値は入力されません。 |
TRGR_FLD_VAL_PIN |
分割トリガを作成するエレメント (支給または控除) の PIN 番号を含みます。これは、支給/控除割り当てレコード GP_PYE_OVRD のエレメント割り当てから発生するトリガにのみ適用されます。 「上書きについて」を参照してください。 |
最初にデータ変更によって分割トリガが作成されると、従業員 ID、変更の有効日 (トリガ有効日)、国コード、および関連付けられたイベント ID が、バッチ コードによる遡及処理を容易にするその他の情報と共にトリガ テーブルに書き込まれます。
たとえば、このデータにより次の事柄が認識されます。
処理対象の受給者。
期間セグメントまたはスライスに使用する日付。
使用する分割のタイプと、分割対象のエレメント (エレメント分割の場合)。
さらに、RECNAME、FIELDNAME、TRGR_FLD_VAL_CHAR、TRGR_FLD_VAL_DT、TRGR_FLD_VAL_NUM、および TRGR_FLD_VAL_PIN フィールドで、分割トリガのソース (トリガを作成するレコード、フィールド、またはフィールド値の変更) が識別されます。この情報により、受給者の支給が分割される原因を明確に把握し、デバッグを簡単に行ったりクエリーに回答することができます。
注: このテーブルに保存されているトリガのソース データは、分割ページで表示できます。
「分割ページ」を参照してください。
このトピックでは、トリガ有効日タイプとトリガ レベルの概念について説明し、トリガ有効日タイプとトリガ レベルに基づいてトリガがいつ、どのような方法で作成されるかを説明します。
有効日と有効日タイプ
反復トリガを除く全てのトリガは、トリガ有効日 (TRGR_EFFDT) と共にトリガ テーブルに保存されます。トリガ有効日は、トリガ作成の原因となったデータベース変更の日付に基づいていますが、必ずしも同一ではありません。PeopleSoft システムでは、データベース変更の日付は [有効日]、[開始日]、[終了日]、および [固定日] フィールドに記録されます。これらのフィールドは中心的な役割を果たすため、遡及トリガと分割トリガは日付で管理されているレコードからのみ作成することができます。遡及トリガは、[有効日] フィールドか、[開始日] フィールドと [終了日] フィールドが指定されているレコード、または [固定日] フィールドが指定されているレコードに対してのみ定義できます。分割トリガは [有効日] フィールドが指定されているレコードに対してのみ定義できますが、例外が 1 つあります。分割トリガは、開始日と終了日が指定された支給/控除割り当てレコード GP_PYE_OVRD から作成することもできます。
トリガ有効日のソースとなる日付フィールドに基づいて、それぞれの遡及トリガおよび分割トリガは以下のいずれかの有効日タイプに属します。
[有効日]: トリガ日付は [有効日] フィールドに基づきます。
[開始/終了日]: トリガ日付は [開始日] または [終了日] フィールドに基づきます。
[固定日]: トリガ日付は、汎用の PeopleCode 関数 Generate_Triggers にパラメータとして渡された固定日に基づきます。
「トリガの導入」を参照してください。
遡及トリガと分割トリガの処理時には、有効日タイプが参照され、トリガ有効日として使用する日付が決定されます。
注: 反復トリガではトリガ有効日の概念を使用しません。特定の受給者に対する現在の支給実行の計算または再計算を起動する機能に、変更日が不要なためです。反復トリガは、有効日が指定されたレコードや開始日と終了日が指定されたレコードと同様に、有効日が指定されていないレコードでも定義できます。
トリガ レベル
PeopleSoft グローバル ペイロールでトリガを設定する際は、データベース変更に反応するレベルを指定する必要があります。レコードの任意のフィールドに対する、有効日が指定された変更、または開始日と終了日が指定された変更に反応するか ([トリガ レベル] は [レコード])、レコードの特定のフィールドに対する全ての変更に反応するか ([トリガ レベル] は [フィールド] で、値に依存しない場合)、特定の値がフィールドに入力されたときにのみトリガが作成されるように設定します ([トリガ レベル] は [フィールド] で、値に依存する場合)。トリガ レベルによって、いつ、どのような状況でトリガが作成されるかが決定されます。
反復トリガのルール: トリガの作成
反復トリガは、オープン カレンダー グループが存在する場合のみ作成されるので、カレンダー グループを指定しておく必要があります。
[トリガ レベル] が [レコード] の場合、行の追加、変更、または削除があれば、反復トリガが作成されます。
[トリガ レベル] が [フィールド] で、値に依存しない場合、反復トリガは以下のときに作成されます。
行およびフィールドが変更されたとき。
行が追加または削除されたとき。
注: [トリガ レベル] が [フィールド] で、値に依存しない場合、行の追加でトリガが作成されるのは、フィールド値が変更されたときだけです。
[トリガ レベル] が [フィールド] であり、値に依存する場合は、追加、変更、削除された行の値が指定した値と一致するとき、または値が一致しなくてもトリガが作成されるように指定されているときのみ、反復トリガが作成されます。それ以外のルールは、値に依存しない場合と同じです。
遡及トリガのルール: トリガ有効日の設定とトリガの作成
[トリガ有効日タイプ] が [有効日] の場合:
デフォルトでは、行が追加されると、その有効日がトリガ有効日として使用されます。
注: デフォルトでは、変更日 (追加された行の有効日) がトリガ有効日として使用されますが、トリガ定義のフィールド値ページで、トリガ日付が実際の変更日よりも前または後になるように遡及トリガの有効日を修正できます。
「トリガ定義 - フィールド値ページ」を参照してください。
行が削除されると、元の有効日がトリガ有効日として使用されます。
行が変更されると、元の有効日と変更後の有効日のうち、日付の古い方がトリガ有効日として使用されます。
元の有効日は、行がロードされたときの有効日です。変更後の有効日は、行が保存されたときの有効日です。有効日が変更されなければ、元の有効日と同じ日付になります。有効日が変更された場合、元の有効日とは異なる日付になります。
[トリガ有効日タイプ] が [開始 - 終了日] の場合:
デフォルトでは、行が追加されると、その開始日がトリガ有効日として使用されます。
注: デフォルトでは、変更日 (追加された行の開始日) がトリガ有効日として使用されますが、トリガ定義のフィールド値ページで、トリガ日付が実際の変更日よりも前または後になるように遡及トリガの有効日を修正できます。
「トリガ定義 - フィールド値ページ」を参照してください。
行が削除されると、元の開始日がトリガ有効日として使用されます。
行が変更され、終了日の他に変更されたフィールドがない場合は、元の終了日と変更後の終了日のうち、日付の古い方がトリガ有効日として使用されます。それ以外の場合は、元の開始日と変更後の開始日のうち、日付の古い方がトリガ有効日として使用されます。
元の開始日は、行がロードされたときの開始日です。変更後の開始日は、行が保存されたときの開始日です。開始日が変更されなければ、元の開始日と同じ日付になります。開始日が変更された場合は、元の開始日とは異なる日付になります。
元の終了日は、行がロードされたときの終了日です。変更後の終了日は、行が保存されたときの終了日です。終了日が変更されなければ、元の終了日と同じ日付になります。終了日が変更された場合は、元の終了日とは異なる日付になります。
注: 休暇欠勤については、終了日を変更した場合でも開始日が使用されます。既存の行を無効にし、新しい行を作成した場合、開始日がトリガ有効日として使用されます。
[トリガ有効日タイプ] が [固定日] の場合、関数 Generate_Triggers (PeopleCode) でパラメータとして指定した日付がトリガ日付になります。
[トリガ レベル] が [レコード] の場合:
行が追加、変更、または削除されると、遡及トリガが作成されます。
複数の行を変更した場合、トリガ有効日には、変更された行の中で最も古いトリガ日付が使用されます。
[トリガ レベル] が [フィールド] で、値に依存しない場合:
行が追加または削除されると、その行のトリガ日付より前の日付で、最も新しい有効日の行が検索されます。
前の行と追加または削除された行とでフィールド値が異なる場合は、遡及トリガが作成されます。
行とそのフィールド値が変更されると、その行の有効日が変更されたかどうかにかかわらず、遡及トリガが作成されます。
行とその行の有効日が変更された場合 (変更前の有効日が "古い日付" で、変更後の有効日が "新しい日付" と仮定) は以下のようになります。
フィールドが変更されると、遡及トリガが作成されます。
新しい日付よりも前の日付で、最も新しい有効日の行が検索されます。
前の行と変更された行でフィールド値が異なる場合は、遡及トリガが作成されます。
古い日付よりも前の日付で、最も新しい有効日の行が検索されます。
前の行と変更された行でフィールド値が異なる場合は、遡及トリガが作成されます。
前の行が見つからない場合は、追加/変更/削除された行がバッファの最初の行であることを意味します。
この場合は、トリガ定義で指定された主要イベント ID を使用して遡及トリガが作成されます。
[トリガ レベル] が [フィールド] で、値に依存する場合は、追加、変更、削除された行の値が指定した値と一致するとき、または値が一致しなくてもトリガが作成されるように指定されているときのみ、遡及トリガが作成されます。それ以外のルールは、値に依存しない場合と同じです。
分割トリガのルール: トリガ有効日の設定とトリガの作成
開始日と終了日が指定された支給/控除割り当てレコード GP_PYE_OVRD を除き、分割トリガは、[トリガ有効日タイプ] が [有効日] のレコードからのみ作成されます。
「支給および控除の割り当てを使用した分割トリガ」を参照してください。
削除された行に対して、分割トリガは作成されません。
[トリガ有効日タイプ] が [有効日] の場合:
行が追加されると、追加された行の有効日がトリガ有効日として使用されます。
行が変更されると、変更後の有効日 (元の有効日ではない) がトリガ有効日として使用されます。
注: 元の有効日は、行がロードされたときの有効日です。変更後の有効日は、行が保存されたときの有効日です。
[トリガ有効日タイプ] が [開始 - 終了日] の場合:
注: 分割トリガを定義できる、開始日と終了日を持つレコードは、支給/控除割り当てレコード GP_PYE_OVRD のみです
行が追加されると、開始日が最初のトリガの有効日として使用され、終了日 + 1 が最終トリガの有効日として使用されます。
注: 開始日と終了日が指定されたレコード GP_PYE_OVRD から分割トリガを作成すると、それぞれ異なるトリガ有効日を使用して 2 つのトリガが作成されます。1 つは開始日に基づき、もう 1 つは終了日に基づきます。たとえば、開始日と終了日に 6 月 10 日と 6 月 20 日を指定して受給者に控除を割り当て、月次カレンダーで給与計算を処理するとします。有効日 6 月 10 日を使用してトリガが作成され (最初のトリガ)、有効日 6 月 21 日を使用して別のトリガが作成されます (終了日 + 1 の有効日を使用する最終トリガ)。これらのトリガ日付に基づいて、期間は 6 月 1 日 から 6 月 10 日、6 月 11 日 から 6 月 20 日、6 月 21 日 から 6 月 30 日の 3 つのセグメントに分割されます。
行が変更され、終了日の他に変更されたフィールドがない場合は、変更後の終了日 + 1 が新しい最終トリガの有効日として使用されます。行が変更され、開始日の他に変更されたフィールドがない場合は、変更後の開始日が最初のトリガの有効日として使用されます。
元の開始日は、行がロードされたときの開始日です。変更後の開始日は、行が保存されたときの開始日です。開始日が変更されなければ、元の開始日と同じ日付になります。開始日が変更された場合は、元の開始日とは異なる日付になります。
元の終了日は、行がロードされたときの終了日です。変更後の終了日は、行が保存されたときの終了日です。終了日が変更されなければ、元の終了日と同じ日付になります。終了日が変更された場合は、元の終了日とは異なる日付になります。
[トリガ レベル] が [レコード] に指定されている場合、行が追加または変更されると、分割トリガが作成されます。
[トリガ レベル] が [フィールド] で、値に依存しない場合:
行が追加または変更されると、追加、変更された行よりも前の日付で、最も新しい有効日の行が検索されます。
前の行と現在の行でフィールド値が異なる場合は、分割トリガが作成されます。
前の行が見つからない場合は、以下のようになります。
フィールド値が変更されると、分割トリガが作成されます。
新規の行であれば、指定されたフィールド全てに対して分割トリガが作成されます。
[トリガ レベル] に [フィールド] が指定され、値に依存する場合は、追加または変更された行の値が指定した値と一致するとき、または値が一致しなくてもトリガが作成されるように指定されているときのみ、分割トリガが作成されます。それ以外のルールは、値に依存しない場合と同じです。
グローバル ペイロール システムでは、遡及トリガと反復トリガは、必要な処理を起動した後、将来の計算に影響を与えないように自動的に使用済みに指定されます。また、誤って作成してしまったり、給与計算処理に影響を与えないようにしたい遡及トリガと反復トリガを手動でキャンセルすることができます。一方、分割トリガは、システムでアクティブのまま残るように設計されています。計算期間中に分割イベントが発生した場合、期間が処理されるたびに分割を起動する必要があるためです。ただし、分割イベントがシステムに入力された後で、それらを修正または削除する必要がある場合があります。分割イベントの入力そのものが間違っていたとき、イベントの日付が誤って入力されたとき、または他のデータが誤って記録されたときなどです。グローバル ペイロール システムでは、分割イベントによって引き起こされるこうした不要なトリガを自動的に削除することで、この問題を解決しています。以下に、3 つのトリガ レベル (レコード レベル、値に依存しないフィールド レベル、値に依存するフィールド レベル) それぞれで、自動削除が可能かどうかを、データ変更の種類ごとに示します。
データ変更 |
トリガ レベルがレコード |
トリガ レベルがフィールドで、値に依存しない場合 |
トリガ レベルがフィールド で、値に依存しない場合 |
---|---|---|---|
有効日、開始日、または終了日の訂正 |
可 |
可 |
可 |
フィールド値の訂正 |
不可 |
可 |
可 |
行の削除 |
可 |
可 |
可 |
重要 削除されるのは自動的に作成されたトリガだけです。手動で作成されたトリガまたは一括トリガは削除されません。
注: 分割トリガはここで説明した状況で自動的に削除されますが、反復トリガや遡及トリガと同様に、分割トリガを手動でキャンセルすることもできます。トリガを管理したりキャンセルするには、トリガ確認コンポーネント (GP_TRIGGER) および反復トリガ確認コンポーネント (GP_TRGRITER_CALRUN) のページを使用します。
例: 行の有効日の変更に反応した分割トリガの削除
JOB レコードで設定されているトリガのレベルがフィールドで、値に依存する場合を仮定します。
トリガを作成するように定義されたフィールドおよびフィールド値は、[異動区分] と PAY (給与レートの変更) または TER (雇用終了) です。
異動区分が雇用終了 (TER) の有効日を、11 月 15 日から 11 月 20 日に変更するとします。
この異動区分に関連付けられた有効日を変更すると、以下の動作が行われます。
変更したソース行に関連付けられている古いトリガが削除されます。
新しいトリガ有効日で新しいトリガが挿入されます。
ユーザー アクション |
フィールド変更 |
有効日/有効連番 |
トリガ アクション |
トリガ有効日 |
ソース フィールド値 |
トリガ イベント ID |
---|---|---|---|---|---|---|
既存の行 |
PAY |
2005 年 10 月 20 日 |
挿入 |
2005 年 10 月 20 日 |
PAY |
イベント 1 |
既存の行 |
TER |
2005 年 11 月 15 日 |
挿入 |
2005 年 11 月 15 日 |
TER |
イベント 1 |
訂正 |
TER |
2005 年 11 月 20 日 |
削除 |
2005 年 11 月 15 日 |
TER |
イベント 1 |
挿入 |
2005 年 11 月 20 日 |
TER |
イベント 1 |
この例では、雇用終了行の有効日が 11 月 15 日から 11 月 20 日に変更されます。その結果、11 月 15 日のトリガは削除され、有効日が 11 月 20 日の新しいトリガが作成されます。
例: フィールド値の変更に反応した分割トリガの削除
JOB レコードで設定されているトリガのレベルがフィールドで、値に依存する場合を仮定します。
トリガを作成するように定義されたフィールドおよびフィールド値は、[異動区分] と PAY (給与レートの変更) または TER (雇用終了) です。
有効日が 10 月 20 日に設定された行の [異動区分] の値を、TER (雇用終了) から DTA (データ変更) に変更するとします。
この異動区分に関連付けられた有効日を変更すると、以下のように、古いトリガが削除されます。新しいトリガは作成されません。
ユーザー アクション |
フィールド変更 |
有効日/有効連番 |
トリガ アクション |
トリガ有効日 |
ソース フィールド値 |
トリガ イベント ID |
---|---|---|---|---|---|---|
既存の行 |
PAY |
2005 年 1 月 1 日 |
挿入 |
2005 年 1 月 1 日 |
PAY |
イベント 1 |
既存の行 |
TER |
2005 年 10 月 20 日 |
挿入 |
2005 年 10 月 20 日 |
TER |
イベント 1 |
既存の行 |
DTA |
2005 年 11 月 15 日 |
なし |
TER |
イベント 1 |
|
訂正 |
DTA |
2005 年 10 月 20 日 |
削除 |
2005 年 10 月 20 日 |
TER |
イベント 1 |
トリガなし |
この例では、有効日が 10 月 20 日の行の値が TER から DTA に変更されます。TER と PAY だけがトリガを作成するように設定されており、DTA はトリガを作成する値として認識されないため、有効日が 10 月 20 日のトリガが削除されても、新しいトリガは作成されません。
例: フィールド値の変更に反応した分割トリガの削除
JOB レコードで設定されているトリガのレベルがフィールドで、値に依存する場合を仮定します。
トリガを作成するように定義されたフィールドおよびフィールド値は、[異動区分] と PAY (給与レートの変更) または TER (雇用終了) です。
有効日が 2005 年 7 月 1 日に設定された行の [異動区分] の値を、DTA (データ変更) から PAY (給与レートの変更) に変更するとします。このとき、この行とは別に、値が PAY で有効日が 2006 年 1 月 1 日の既存の行があるとします。この例では、前者の行の変更によって、後者の行が影響を受ける場合を示します。
ユーザー アクション |
フィールド変更 |
有効日/有効連番 |
トリガ アクション |
トリガ有効日 |
ソース フィールド値 |
トリガ イベント ID |
---|---|---|---|---|---|---|
既存の行 |
DTA |
2005 年 1 月 1 日 |
なし |
PAY |
イベント 1 |
|
既存の行 |
DTA |
2005 年 7 月 1 日 |
なし |
TER |
イベント 1 |
|
既存の行 |
PAY |
2006 年 1 月 1 日 |
挿入 |
2006 年 1 月 1 日 |
TER |
イベント 1 |
訂正 |
PAY |
2005 年 7 月 1 日 |
削除 |
削除するトリガなし。 |
TER |
イベント 1 |
挿入 |
2005 年 7 月 1 日 |
|||||
削除 |
2006 年 1 月 1 日 |
|||||
トリガなし |
この例では、有効日が 2005 年 7 月 1 日の行の値が DTA から PAY に変更されます。トリガの作成はフィールド値の変更に基づきますが、2005 年 7 月 1 日の行と 2006 年 1 月 1 日の行の間で変更がないため (両方ともフィールド値は PAY です)、後者の行で最初は作成されていたトリガが削除され、有効日が 2005 年 7 月 1 日の新しいトリガが挿入されます。DTA はトリガを作成する値として定義されていないため、DTA 行のトリガはありません。
EFFSEQ (同一有効日連番) フィールドを含むレコードに対するフィールド ベースの分割トリガのための特殊ルール
たとえば JOB レコードのように、レコードに EFFSEQ フィールドが含まれている場合、フィールド ベースの分割トリガを管理するための特殊なルールがあります。
トリガ定義がフィールドで、値に依存しない場合、PeopleCode により有効日連番が最も大きい行だけを使用して、指定された有効日のトリガが挿入されます。つまり、トリガ定義がフィールドで、値に依存しない場合は、有効日ごとに有効日連番が最も大きい行だけが考慮されます。これにより、有効日連番の行を入力した後で、この行のエラーを訂正するために同じ有効日の別の行を入力する際に、不要なトリガが作成されるのを防ぐことができます。
トリガ定義がフィールドで、値に依存する場合、PeopleCode により、指定された有効日の有効日連番行ごとに、それぞれ別個のトリガが挿入されます。言い換えると、値に依存するようにトリガが定義されている場合、同一有効日連番の行が全て処理されます。これは、同一有効日連番の複数の行を処理することが必要、または望ましい状況に対応します。たとえば、異動と昇進を同じ日に続けて入力する JOB.ACTION のようなフィールドが該当します。このフィールドのトリガ定義は通常、値に依存するように設定されています。
グローバル ペイロールでは、分割トリガは有効日が指定されているレコードでのみ定義できますが、例外が 1 つあります。つまり、開始日と終了日が指定されている支給/控除割り当てレコード GP_PYE_OVRD でも、分割トリガを定義することができます。この例外により、受給者別エレメント割当コンポーネント (GP_ED_PYE) またはエレメント別受給者割当コンポーネント (GP_ED_ELEM) で支給/控除を受給者に割り当て、割り当ての開始日が支給期間の開始日より後の場合、または割り当ての終了日が期間終了日より前の場合に、エレメントを分割 (および比例配分) することができます。
たとえば、300 USD の支給エレメント E1 を、開始日と終了日にそれぞれ 6 月 10 日と 20 日を指定して (支給期間は月次とします) 受給者に割り当て、このエレメントの支給/控除割り当てレコードから分割が起動されるように設定するとします。割り当て/上書きの開始日と終了日に基づいて、支給期間は 3 つのセグメントにスライスされ、2 番目のスライスのエレメントが処理および比例配分されます。
エレメント |
スライス 1 6 月 1 日から 10 日 |
スライス 2 6 月 11 日から 20 日 |
スライス 3 6 月 21 日から 30 日 |
---|---|---|---|
支給 = E1 計算ルール = 金額 金額 = 300 |
スライス 1 のエレメントは変換されない。 |
変換後の金額 = 100 (比例配分係数 = .333333333) |
スライス 3 のエレメントは変換されない。 |
注: GP_PYE_OVRD レコードで定義できる分割は、エレメント分割だけです。
トリガは、自動的に作成されるように設定できますが、トリガ確認コンポーネント (GP_TRIGGER) を使用すれば、トリガのタイプ、トリガ有効日、プロセス定義、および遡及処理や分割処理を起動するために必要なその他のデータを選択して、手動で入力することもできます。
「自動作成されたトリガの管理とトリガの手動定義」を参照してください。