2.2.5.2. 従業員のシフト数のバランスを取るガイド付きルールの作成
ガイド付きルール BalanceEmployeesShiftNumber
は、可能な限りバランスを取るように従業員にシフトを割り当てるソフト制約を作成します。これは、シフトの分配が平等でなくなると増えるスコアペナルティーを作成することで行います。ルールによって実装されたスコア式により、Solver がよりバランスの取れるようにシフトを分散させます。
手順
- Business Central で、Menu → Design → Projects に移動して、プロジェクト名をクリックします。
- Add Asset → Guided Rule の順にクリックします。
-
Guided Rule 名 に
BalanceEmployeesShiftNumber
と入力し、Package でemployeerostering.employeerostering
を選択します。 - OK をクリックして、ルールアセットを作成します。
- WHEN フィールドで をクリックして、WHEN 条件を追加します。
-
Add a condition to the rule ウィンドウで
Employee
を選択します。+OK をクリックします。 -
Employee
条件でクリックして制約を修正し、変数名$employee
を追加します。 WHEN 条件
From Accumulate
を追加します。-
From Accumulate
条件の上で click to add pattern をクリックし、ドロップダウンリストでファクトタイプNumber
を選択します。 -
変数名
$shiftCount
をNumber
条件に追加します。 -
From Accumulate
条件の下で click to add pattern をクリックして、ドロップダウンリストでShiftAssignment
ファクトタイプを選択します。 -
変数名
$shiftAssignment
をShiftAssignment
ファクトタイプに追加します。 -
ShiftAssignment
条件を再度クリックし、Add a restriction on a field ドロップダウンリストでemployee
を選択します。 -
employee
制約の横にあるドロップダウンリストでequal to
を選択します。 - ドロップダウンボタンの横の アイコンをクリックして変数を追加し、Field value ウィンドウで Bound variable をクリックします。
-
ドロップダウンリストで
$employee
を選択します。 -
Function ボックスに
count($shiftAssignment)
と入力します。
-
- THEN フィールドで をクリックしてTHEN 条件を追加します。
Add a new action
ウィンドウで Modify Soft Score を選択します。+OK をクリックします。-
ボックスに
-($shiftCount.intValue()*$shiftCount.intValue())
と入力します。
-
ボックスに
- 右上隅の Validate をクリックし、ルール条件がすべて有効であることを確認しますルールの妥当性確認に失敗したら、エラーメッセージに記載された問題に対応し、ルールの全コンポーネントを見直し、エラーが表示されなくなるまでルールの妥当性確認を行います。
- Save をクリックして、ルールを保存します。