Лучший способ выбора двух разных объектов - PullRequest
1 голос
/ 25 февраля 2012

В моем коде ниже я использую свойство id, чтобы различать два объекта ($stp2 не $stp1).Как мне лучше сделать это на уровне объекта вместо использования какого-либо свойства?

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $id:id, $period:period)
        $stp2 : SubjectTeacherPeriod(id>$id, period==$period)

1 Ответ

1 голос
/ 25 февраля 2012

Вы можете использовать специальное свойство "this":

rule "multipleSTPSamePeriod"
    when
        $stp1 : SubjectTeacherPeriod( $period:period )
        $stp2 : SubjectTeacherPeriod( this != $stp1, period==$period)

Если вы хотите, чтобы такое поведение было во всех ваших правилах, вы можете установить опцию конфигурации базы знаний, и механизм автоматически проверит это дляВы без необходимости добавлять ограничение для каждого шаблона.

Используя системное свойство или файл конфигурации, вы можете установить:

drools.removeIdentities = <true|false>

Или использовать API:

KnowledgeBaseConfiguration conf = ...
conf.setOption( RemoveIdentitiesOption.YES );
...