Слюни правило начинает стрелять во время стресс-тестов

У нас есть правило, которое должно срабатывать, когда у клиента есть определенный код продукта, и изначально мы указали это правило следующим образом:

rule "DENTAL"

    when
        $bill : Bill ( $client : Client != null )
        Client ( (productCode/1000) >= 102 && (productCode/1000) < 103 ) from $client
    then
        $bill.add(13300);

end

Во время стресс-тестирования мы отправляли код продукта, который попадает в диапазон 101. Правило срабатывало не так, как ожидалось, пока в определенный момент оно не начало снова и снова. Журналы (= System.out в "тогда") ясно указывали, что рассчитанный (productCode/1000) productCode был 101.

Мы изменили правило на:

rule "DENTAL"

    when
        $bill : Bill ( $client : Client != null )
        Client ( productCode >= 102000 && productCode < 103000 ) from $client
    then
        $bill.add(13300);

end

Что кажется лучшим определением правила в целом, и, как и ожидалось, правило перестало срабатывать во время стресс-тестов.

Возможно, первое правило является примером плохого кодирования, и мы не должны применять разделение внутри правила по определенной причине, но я ищу подтверждение этому. Возможно, это связано с Mvel. Может быть, кто-то может пролить свет.

Некоторые подробности о структуре:

  • Правило оценивается только в сеансах без сохранения состояния
  • В сеансы без сохранения состояния вставляется только один объект Bill
  • Каждый счет имеет только одного клиента
  • Одно из предположений заключается в том, что атрибут productCode всегда имеет 6 цифр (в первом определении 0 productCode вызовет ошибку).
  • KIE / Drools версия 6.5.0
  • Проект скомпилирован с JDK6 и работает на IBM WAS7.
  • Объект KieBase создается один раз, а затем извлекается из кэша IBM.

Мы собираемся перейти на WildFly и JDK8, и поэтому локальное тестирование JMeter было выполнено на WildFly 10.1.x с JDK8 и кешем Java. С этими настройками у нас не возникло никаких проблем с правилом.

Заранее благодарю за любую помощь.

0 ответов

Другие вопросы по тегам