Слюни правило начинает стрелять во время стресс-тестов - PullRequest
0 голосов
/ 07 февраля 2019

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

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 цифр (в первом определении productCode 0 будет вызывать ошибку).
  • KIE / Drools версия 6.5.0
  • Проект скомпилирован с JDK6 и работает на IBM WAS7.
  • Объект KieBase создается один раз и впоследствии извлекается из кэша IBM.

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

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

...