32FastFormula
この章の内容は次のとおりです。
Formulaの使用の概要
FastFormulaは、様々な入力変数を使用して繰り返す計算または比較の汎用的な式です。このトピックでは、特定のFormulaの入力および出力が必要な、1つ以上のFormulaタイプに対応する各Formulaの使用方法の要約を示します。
Formulaは翻訳可能です。事前定義済Formulaは任意の言語の英数字です。Formulaテキストは翻訳の対象ではなく、英語以外のユーザー定義エレメント、入力値またはバランスを処理できます。たとえば、エレメント名を中国語で定義した場合、ベース・エレメント名は中国語で保存されます。データベース・アイテムはベース表のデータを使用して生成されるため、生成されたデータベース・アイテムには中国語のエレメント名が含まれ、Formula内でこのようなデータベース・アイテムを参照できます。
給与の計算
支給項目と控除項目を表すエレメントに対して、給与計算およびスキップ・ルールを記述できます。
FastFormulaを使用して次のタスクを実行できます。
-
各エレメントに複数の給与計算Formulaを関連付けて、ステータスの異なる従業員アサイメントに対して異なる処理を実行します。
-
複数のデータベース・コールが必要となる非常に複雑な計算を使用する支給項目および控除項目に対して、エレメントおよびFormulaを定義します。
-
スキップ・ルールFormulaをエレメントに関連付けて、それを処理する状況を定義します。
-
中間時点でのエレメント・エントリ値の変更など、イベントの発生時に給与計算で按分エレメント・エントリをどのように実行するかを制御する、事前定義済の按分Formulaを変更します。
福利厚生管理の計算の定義
Formulaを使用して、福利厚生プランを構成できます。Formulaは、提供されているビジネス・ルールの柔軟な代替手段として使用できます。Formulaを使用して、次のものを構成します。
-
日付計算(登録開始日と終了日、レートや補償範囲の開始日と終了日、待機期間と登録期間、処理項目の期日など)
-
レート額と補償範囲額、最小値と最大値、または上限と下限の計算
-
証明要件
-
不完全月と按分の計算
-
適格性および加入の評価
たとえば、提供された適格基準では特定の要件が満たされない場合に福利厚生適格を計算するFormulaを記述できます。
エレメント入力またはユーザー定義表の検証
ユーザー・エントリを検証するには、参照または最大値と最小値を使用します。
より複雑な検証を行う場合、エントリをチェックするFormulaを記述できます。また、ユーザー表のエントリを検証するFormulaを使用することもできます。
雇用関係または給与関係グループへの移入のルールの編集
給与関係グループまたは雇用関係グループを動的に移入するための基準を定義できます。
給与関係グループまたは雇用関係グループのFormulaタイプを作成する際には、式エディタまたはテキスト・エディタを使用できます。式エディタを使用すると、グループを定義するための基準を簡単に作成できます。検証など、より複雑な条件の場合は、テキスト・エディタを選択できます。
報酬の構成の定義
Formulaを使用して変更でき、既存の報酬プラン構成に柔軟性を追加できるものを次に示します。
-
個別報酬プランの報酬割付の開始日と終了日
-
ワークフォース報酬プランの個人選択、階層決定、列のデフォルト値および通貨選択
-
総合報酬文書に表示される項目のソース
勤怠管理用のルール・テンプレートを作成するためのFormulaの定義
Formulaを時間リポジトリ・ルール・テンプレートで使用して、ルールを作成します。Formula内には、ルール・パラメータと出力結果の組合せが提供されています。テンプレート構成を変えることにより、1つのFormulaを複数のルール・テンプレートで使用できます。
ルール・テンプレートを作成する際には、Formula名を選択してから、パラメータ・タイプと、パラメータおよび変数の表示名を構成します。どの詳細を変更すると特定の結果を達成できるかを判断するために、Formula文全体を再実行する必要はありません。
Formulaを使用して勤怠管理に適用できる内容は次のとおりです。
-
時間を処理または計算するためのロジック
-
ルールが計算で使用する式に値を渡すことを可能にするパラメータ
-
Formulaが計算結果をルールに返すために使用する出力変数
たとえば、期間最大時間数テンプレートでは、WFM_PERIOD_MAXIMUM_TIME_ENTRY_RULE Formulaを使用して、レポートされた時間カテゴリの時間数を、定義された最大時間数と比較します。
Formulaテキストを使用したFastFormulaの記述の例
この例では、テキスト・エディタを使用して、2つの異なる予定時間数の範囲(マネージャの範囲と他の就業者の範囲)を返すFastFormulaを作成します。
作成するFormulaを決定する際の主な検討事項は次のとおりです。
主な決定事項 | この例の場合 |
---|---|
このFormulaは特定の国別仕様データ・グループに対するFormulaですか。 |
いいえ、これはどの国別仕様データ・グループでも使用できるグローバルFormulaです。 |
このFormulaのFormulaタイプは何ですか。 |
予定時間数の範囲 |
このFormulaで使用されるコンテキストはありますか。 |
いいえ |
データベース・アイテムのデフォルトはありますか。 |
はい、ASG_JOBです |
入力値のデフォルトはありますか。 |
いいえ |
戻り値は何ですか。 |
MIN_HOURS、MAX_HOURS、FREQUENCY |
テキスト・エディタを使用したFastFormulaの作成によるマネージャの予定時間の決定
-
「設定および保守」作業領域で、次のオプションを選択します。
オファリング: ワークフォース配置
機能領域: 給与
タスク: FastFormula
-
「タスクに進む」をクリックします。
-
「FastFormula」ページで、「作成」アイコンをクリックします。
-
「FastFormulaの作成」ページで、次のようにフィールドに入力します。
FastFormulaのフィールド FastFormulaの値 Formula名
マネージャの予定時間数の範囲
Formulaタイプ
予定時間数の範囲
説明
マネージャの時間数の範囲
有効開始日
2010年1月1日
-
「続行」をクリックします。
-
「Formulaテキスト」セクションに次のFormula詳細を入力します。
/* DATABASE ITEM DEFAULTS BEGIN */ DEFAULT FOR asg_job IS ' ' /* DATABASE ITEM DEFAULTS END */ JOB_1 = ASG_JOB IF JOB_1 = 'Manager' then (MIN_HOURS = 25 MAX_HOURS = 40 FREQUENCY = 'H') else (MIN_HOURS = 20 MAX_HOURS = 35 FREQUENCY = 'H') return MIN_HOURS, MAX_HOURS, FREQUENCY
-
「コンパイル」をクリックします。
-
「保存」をクリックします。
式エディタを使用したFastFormulaの記述の例
この例では、レポートおよび処理のために役員をグループ化するFastFormulaを作成します。すべての役員は、部門EXECT_10000に属します。Formulaを作成した後、それをオブジェクト・グループ・パラメータに追加して、EXECT_10000部門に属する就業者のみが処理で使用されるようにする必要があります。
作成するFormulaを決定する際の主な検討事項は次のとおりです。
主な決定事項 | この例の場合 |
---|---|
このFormulaは特定の国別仕様データ・グループに対するFormulaですか。 |
はい、InVisionです |
このFormulaのFormulaタイプは何ですか。 |
給与関係グループ |
式エディタを使用したFastFormulaの作成
-
給与計算タスク・ページで、「FastFormula」タスクをクリックします。
-
「FastFormula」ページで、「作成」アイコンをクリックします。
-
「FastFormulaの作成」ページで、次のようにフィールドに入力します。
FastFormulaのフィールド FastFormulaの値 Formula名
役員の給与関係グループ
タイプ
給与関係グループ
説明
役員
国別仕様データ・グループ
Vision LDG
有効基準日
2010年1月1日
エディタのタイプ
式ビルダー
注意: より複雑な条件を使用してグループを作成する場合は、「テキスト」を選択できます。ただし、Formulaを保存した後でエディタのタイプを変更することはできません。 -
「続行」をクリックします。
-
「Formula詳細」セクションで、「後に追加」をクリックして行を追加し、次のフィールドに入力します。
結合 データベース・アイテム名 データ型 オペランド リテラル値 適用なし
DEPARTMENT
文字
=
'EXECT_10000'
and
SELECT_EMP
文字
=
'YES'
-
「コンパイル」をクリックします。
-
「保存」をクリックします。
Formulaコンパイル・エラー
コンパイル・エラーは、Formulaのコンパイル後に「FastFormula」ページに表示されます。エラーが発生すると、コンパイラはコンパイル・プロセスを停止します。エラー・メッセージには、行番号およびエラー・タイプが表示されます。
一般的なコンパイル・エラー
一般的なFormulaコンパイル・エラーをいくつか次に示します。
Formulaコンパイル・エラー | 説明 |
---|---|
構文エラー |
FormulaテキストがFormula言語の文法に違反しています。たとえば、 |
文の順序が正しくない |
|
|
次のいずれかの条件が存在する場合に発生します。
CHANGE_CONTEXTS文をFormulaで使用できます。 |
|
|
|
デフォルト値を指定するデータベース・アイテムにはDEFAULT文が必要です。 |
|
DEFAULT文は、入力またはデータベース・アイテム以外の変数に対して指定します。 |
変数が初期化されていない |
コンパイラは、使用する変数が初期化されていないことを検出しました。すべての場合、コンパイラがこれを行うことはできません。このエラーは、Formulaタイプでサポートされていないコンテキストを必要とするデータベース・アイテムがFormulaに含まれている場合によく発生します。Formulaは、データベース・アイテムをローカル変数として処理します。たとえば、バランス・データベース・アイテムには、PAYROLL_REL_ACTION_ID、PAYROLL_ASSIGNMENT_IDおよびCALC_BREAKDOWN_IDのコンテキストが必要です。通常、これらの文は「Oracle Payroll」タイプのFormulaで使用します。 |
関数コールがない |
コンパイラは関数コールを認識していません。戻りタイプ、関数名およびパラメータ・タイプの組合せが、いずれの使用可能な関数とも一致しません。 |
演算子の使用方法が間違っている |
Formulaの演算子を使用しているインスタンスが、その演算子の許可される使用方法と一致していません。 たとえば、+演算子には2つの使用方法が許可されています。オペランドのデータ型は、両方とも |
データ型の使用方法が整合していない |
Formulaで複数のデータ型のFormula変数が使用されています。あるいは、間違ったデータ型のデータベース・アイテムまたはコンテキストがFormulaで使用されています。 たとえば、Formulaの開始部分で変数Aに |
|
最終的にfalseになるか、ループを抜けるための |
コンテキストの使用方法が間違っている |
コンテキストとしての変数、または変数としてのコンテキストがFormulaで使用されています。 たとえば、Formulaで |
Formula実行エラー
FastFormula実行エラーは、Formulaの実行中に問題が生じたときに発生します。通常、Formulaまたはアプリケーション・データベースでデータ関連の問題があると、このようなエラーが発生します。
Formula実行エラー
Formula実行エラーをいくつか次に示します。
Formula実行エラー | 説明 |
---|---|
変数が初期化されていない |
変数またはコンテキストが初期化されているかどうかをFormulaコンパイラが完全には判断できない場合、変数が初期化されているかどうかをテストするコードが生成されます。 Formulaの実行時に、変数またはコンテキストが初期化されていないと、このコードによりエラーが表示されます。 |
ゼロで除算 |
数値がゼロで除算された場合に発生します。 |
データが見つからない |
非配列型のデータベース・アイテムが予期せずデータの戻しに失敗した場合に発生します。データベース・アイテムがデータを戻せない場合は、デフォルト値を提供する必要があります。
|
行が多すぎる |
非配列型のデータベース・アイテムが予期せず複数のデータ行を返した場合に発生します。原因は、データへのアクセスの状況に関する前提が間違っていることです。 また、Formula関数コードにエラーがある場合も、このエラー・メッセージが表示されることがあります。 |
|
データベース・アイテムが予期せず 注意: 一部のデータベース・アイテムは、
NULL 値を返すことができません。データベース・アイテムがNULL 値を返すことができる場合は、そのデータベース・アイテムのデフォルト値を指定できます。
|
値が許容範囲を超えている |
文字列の最大許容長を超えているなど、様々な理由で発生します。 |
無効な数値 |
Formulaが数値以外の文字列を数値に変換しようとした場合に発生します。 |
ユーザー定義関数エラー |
Formula関数内で発生します。このエラー・メッセージ・テキストは、Formulaエラー・メッセージの一部として提供されます。 |
外部関数コール・エラー |
Formula関数がエラーを返しますが、Formulaコードに追加情報を提供しません。関数が実行コードのロギング先にエラー情報を送信している可能性があります。 |
関数が |
Formula関数が |
反復が多すぎる |
単一の |
配列データ値が設定されていない |
Formulaがデータ値のない配列索引へのアクセスを試みています。このエラーは、Formulaコード内で発生します。 |
|
|
格納済アイテムのデータ型が間違っている |
|
コールされた式が見つからない |
FormulaからFormulaをコールしようとしたときに、コールされたFormulaが見つかりません。このエラーは、コール元Formulaの問題またはインストールの問題によって発生する可能性があります。 |
再帰Formulaコール |
FormulaをそのFormula自体からコールしようとしました。コールは、別のコール先Formulaから直接または間接的に行うことができます。再帰的な方法でFormulaをコールすることは許可されていません。 |
コール先Formulaとコール元Formula内の入力データの型が異なる |
FormulaからFormulaをコールする際に、コール先のFormula内の入力データ型がコール元Formulaで指定されているデータ型と一致しません。 |
コール先Formulaとコール元Formula内の出力の型が異なる |
FormulaからFormulaをコールする際に、コール先のFormula内の出力データ型がコール元Formulaで指定されているデータ型と一致しません。 |
Formulaコールが多すぎる |
Formulaがそのテキスト内で別のFormulaをコールしたために、階層になった場合。階層の最大の深さは10です。 |
FastFormulaに関するFAQ
「Formulaのコンパイル」プロセスを実行するタイミング
複数のFastFormulaを同時に作成または更新する場合、「給与管理」作業領域の「プロセスまたはレポートの送信」ページで「Formulaのコンパイル」プロセスを実行します。
Formulaコンパイル・エラーと実行エラーの違いは何ですか。
コンパイル・エラーは、Formulaをコンパイルするときに「FastFormula」ページで発生します。エラー・メッセージにエラーの性質が説明されます。よくあるコンパイル・エラーは、入力ミスによる構文エラーです。ダッシュボードでエラー・メッセージを参照することも、プロセスの実行直後に「メッセージ」タブに移動することもできます。
実行エラーは、Formulaの実行中に問題が発生した場合に発生します。通常、Formulaまたはアプリケーション・データベースでデータ関連の問題があると、このようなエラーが発生します。