Нужен сервис, который будет рассчитывать и решать, как вести себя какой-то внешней системе, когда у нее возникает некоторое событие.
Это выглядит примерно так:
Или - то же самое событие, но с другими условиями, когда система получает два решения одновременно:
Условия задачи таковы, что система "Клиент" является очень "глупой" и не может принять решение даже по самым очевидным действиям.
Калькулятор будет получать события по http-запросу или из сервера очередей.
Входящее событие представляет собой строковый код (sid - уникальное имя события - я на улице), и набор уточняющих данных (я мокрый, идет дождь).
Калькулятор хранит правила, по которым он будет принимать решение. Для последней схемы - на одно и то же событие "я на улице" будет два правила::
// правило первое
| 1 | im_on_street | rain === true | go_home |
// правило второе
| 2 | im_on_street | rain === true AND umbrella === true | use_umbrella |
Выражение rain === true является псевдо-языком, который означает, что "если в данных события есть ключ rain и он равен true".
В данном примере при входящем событии сработают оба правила, следовательно калькулятор должен отправить два сигнала - go_home и use_umbrella.
Предметная область (базовая схема таблиц в базе данных):
Нужен сервис, который будет рассчитывать и решать, как вести себя какой-то внешней системе, когда у нее возникает некоторое событие.
Это выглядит примерно так:
Или - то же самое событие, но с другими условиями, когда система получает два решения одновременно:
Условия задачи таковы, что система "Клиент" является очень "глупой" и не может принять решение даже по самым очевидным действиям.
Калькулятор будет получать события по http-запросу или из сервера очередей. Входящее событие представляет собой строковый код (sid - уникальное имя события - я на улице), и набор уточняющих данных (я мокрый, идет дождь).
Калькулятор хранит правила, по которым он будет принимать решение. Для последней схемы - на одно и то же событие "я на улице" будет два правила::
Выражение rain === true является псевдо-языком, который означает, что "если в данных события есть ключ rain и он равен true".
В данном примере при входящем событии сработают оба правила, следовательно калькулятор должен отправить два сигнала - go_home и use_umbrella.
Предметная область (базовая схема таблиц в базе данных):
Условия реализации:
Задача должна быть решена на основе Laravel в виде пакета (http://laravel.com/docs/packages)