Как определить количество работников женского пола в смену - PullRequest
0 голосов
/ 26 мая 2019

Я добавляю пользовательское правило для смены сотрудника, где у меня есть 4 типа смен, и в одном типе смены число работающих женщин должно быть фиксированным

Я попытался добавить поле в сменный класс, а именноrequiredFemalesEmployees, для которого установлено 1 // правило жесткого ограничения "OneFemaleInShiftA"

when    
$gender:Employee(gender=="F")
 $rfe:Shift(requiredFemalesEmployees==1)
 accumulate(
$a:ShiftAssignment(employee==$gender,$shift:shift.requiredFemalesEmployees),
 $total :count($a)
)

then
 if($total.intValue()!=1){
 scoreHolder.addHardConstraintMatch(kcontext, - 1);
 } 

end

любые предложения будут отличной помощью.

1 Ответ

0 голосов
/ 29 мая 2019

Сначала вы создали переменную с именем $ rfe, но она не используется, и в этой строке: $ a: ShiftAssignment (сотрудник == $ пол, $ shift: shift.requiredFemalesEmployees ), что вы назначаете для $ shift?

Это мой пример:

rule "oneFemaleInShift"
    when    
        $gender:Employee(gender=="F")
        $rfe:Shift(requiredFemalesEmployees==1)
        Number(intValue!=1) from accumulate(
            $a:ShiftAssignment(employee==$gender, ¿¿$shift:shift.requiredFemalesEmployees??),
            count($a)
        )

    then
        scoreHolder.addHardConstraintMatch(kcontext, - 1);

Нам нужна модель предметной области или источник Java-POJO, чтобы знать отношения между ними.

Я думаю, это поможет вам:

rule "oneFemaleInShift"
    when    
        $femaleEmployee:Employee(gender=="F") //GET FEMALE POJOS
        $rfe:Shift(requiredFemalesEmployees==1) // GET SHIFT WHERE FEMALE IS REQUIRED
        Number(intValue > 0) from accumulate( //COUNT NUMBER OF FEMALE EMPLOYEES IN THAT SHIFT, PENALIZE SOLUTION WHERE THERE ARE LESS THAN 1
            $a:ShiftAssignment(employee==$femaleEmployee, shift==$rfe), 
            count($a)
        )
    then
        scoreHolder.addHardConstraintMatch(kcontext, - 1); // LOOK AT THE VALUE OF HARD SCORE, PROPORTION WITH OTHER HARD CONSTRAINT
...