Я работаю для школьного округа, и мы планируем использовать Drools для реализации следующих типов для правил для учащихся из районов учредительных школ:сохраняющихся Drools знаний Сессия
- Если студент имеет 3 Отсутствие в течение года метрики посещаемости переходит в состояние WARN.
- Если студент имеет 6 отсутствий в течение года, их показатель посещаемости переходит в статус КРИТИЧЕСКОГО.
- Если у студента 3 основных случая поведения в течение года, их показатель поведения переходит в состояние WARN.
- Если учащийся имеет 2 младших и 2 основных случая поведения в течение года, их показатель поведения переходит в статус КРИТИЧЕСКОГО.
- ... это только примеры из верхней части моей головы, но есть еще много правил аналогичного характера.
Все эти правила могут быть просто выражены с использованием эксперта Drools. Кроме того, обработка правил для ученика не обязательно должна быть синхронной. У меня есть пара вопросов о наилучшем способе реализации этого.
С одной стороны это можно рассматривать как систему мониторинга потока событий. Это заставило меня подумать о создании сеанса с состоянием, в которое будет вставлено каждое новое событие. Однако события происходят в течение 9 месяцев и являются относительно нечастыми. Кроме того, мы могли бы построить сеанс в школе или сеанс для каждого учащегося.
- Будет ли держать сессию в памяти на долгое время проблемой?
- Если сервер не удался, нам нужно было бы перестроить состояние сеанса с нуля или было бы целесообразно делать регулярные снимки и просто восстанавливать факты, которые произошли со времени моментального снимка.
Другим вариантом является сохранение сеанса для каждого учащегося после обработки события для этого учащегося. Когда придет следующее событие, мы извлечем их сессию из хранилища и вставим новый факт. Таким образом, нам не нужно будет извлекать все факты для каждого запуска двигателя, чтобы получить статус студента. Будет ли поддерживаться такая конфигурация? Есть ли недостатки в этом?
Третий подход заключается в том, чтобы отреагировать на новый факт для учащегося, извлекая все другие факты, которые необходимо выполнить правилам, создать новую KnowledgeSession и запустить правила.
Любые советы о том, что может быть лучшим подходом, будут очень признательны.
Dave