著者:森和哉
近年、ビジネスのさまざまな分野において、業務の熟練者の高齢化と、後継者不足が深刻化しています。中でも、「計画策定」業務は、豊富な経験や特殊なスキルが必要とされることから、特に属人化が進行しています。「Red Hat Business Optimizer」は、そのような企業の計画策定業務を標準化し、より効率的な計画の立案を可能にします。
シェルスクリプトマガジン Vol.70は以下のリンク先でご購入できます。![]()
![]()
図8 制約条件「すべてのシフトに従業員が割り当てられていること」のコード
■employeeRosteringScoreRules.drl
(略)
rule "Assign every shift"
when
Shift(employee == null)
then
scoreHolder.penalize(kcontext);
end
(略)
■RosterConstraintConfiguration.java
(略)
public static final String CONSTRAINT_ASSIGN_EVERY_SHIFT = "Assign every shift";
(略)
@ConstraintWeight(CONSTRAINT_ASSIGN_EVERY_SHIFT)
private HardMediumSoftLongScore assignEveryShift = HardMediumSoftLongScore.ofMedium(1);
(略)
図9 制約条件「従業員が勤務を希望している時間帯へのシフトの割り当て」のコード
■employeeRosteringScoreRules.drl
(略)
rule "Desired time slot for an employee"
when
$availability: EmployeeAvailability(
state == EmployeeAvailabilityState.DESIRED,
$e : employee,
$startDateTime : startDateTime,
$endDateTime : endDateTime)
Shift(employee == $e,
$startDateTime < endDateTime,
$endDateTime > startDateTime)
then
scoreHolder.reward(kcontext, $availability.getDuration().toMinutes());
end
(略)
■RosterConstraintConfiguration.java
(略)
public static final String CONSTRAINT_DESIRED_TIME_SLOT_FOR_AN_EMPLOYEE = "Desired time slot for an employee";
(略)
@ConstraintWeight(CONSTRAINT_DESIRED_TIME_SLOT_FOR_AN_EMPLOYEE)
private HardMediumSoftLongScore desiredTimeSlot = HardMediumSoftLongScore.ofSoft(10);
(略)