[Java][посоветуйте] Движок для сценариев

kill-still

Дабы не тратить время на изобретение велосипедов, ищется библиотечка на яве для построения сценариев.
Что понимается под сценарием:
- Что-то вроде блок-схемы из блоков (степов) выполняющей простой алгоритм
- Его можно редактировать без перекомпиляции и перезапуска приложения
Требования (что должна уметь):
- Принимать асинхронные сообщения.
- В зависимости от параметров сообщения (юзер, тип операции) запускать нужный сценарий.
- Уметь выполнять сложные "составные" сценарии. Т.е. должна запоминаться позиция, на которой остановилось выполнение сценария юзера, и при приёме следующего сообщения от него продолжить с того же места. Пользователей сотни тысяч, хранить в оперативке не вариант. Так что эту информацию надо динамически подгружать.
- Один из блоков (степов) это "ждать N часов". Движок должен уметь такое обрабатывать в пассивном ожидании.
- Естественно при возникновении ошибки в степе падать должно только выполнение данного сценария.
- Формат хранения данных - JSON (Сценарии будут храниться в no-sql БД).
- Библиотека должна быть бесплатной, желательно с открытым кодом.
Опционально:
- Уметь откладывать запуск "тяжёлых" степов, и класть их в очередь выполнения.
- Уметь шардироваться (масштабироваться в распределённый отказоустойчивый кластер).
- Позволять задавать вложенные друг в друга сценарии (запускать из одного сценария другой)
Ко всему этому неплохо иметь удобный гуёвый WEB-интерфейс для редактирования. Типа такого: http://code.google.com/p/blockly/. Интерфейс должен позволять редактировать и создавать сценарии как из уже заготовленных блоков (для манагеров и аналитиков так и при необходимости позволять написать свой скрипт на Groovy/MVEL/Janino/Kawa/и пр.. Скрипт должен иметь возможность использовать классы и объекты из запускающего приложения. Желательно, чтобы движок поддерживал один из этих скриптовых языков из коробки.

okis

Уметь шардироваться (масштабироваться в распределённый отказоустойчивый кластер).
непонятно что имеется в виду
вообще в требованиях понамешано почти все что вообще бывает в ИС (скриптинг, обработка очередей, "кластер", гуй).
Попробуй объяснить, что ты по сути хочешь, и почему это начинается именно со скриптового языка а не с очередей, например.

kill-still

Что хочется я подробно описал.
Попробую зайти с другой стороны - объяснить на примере использования:
Аналитик придумывает новую "фичу", заходит в WEB-редактор сценариев, рисует блок-схему. На следующий день смотрит выхлоп от фичи, возможно меняет параметры, и так итерациями до посинения.
Реализовывать каждую хотелку бизнеса и каждый день передеплоивать приложение на десяток серверов кластера это моветон. Поэтому нужен такой "конструктор", чтобы аналитики и манагеры могли с ним играться.

kill-still

Гуи может выглядеть не как blockly, а скажем как-то так:
http://www.pentaho.com/images/PDI_job.png

ava3443

так сходу приходит в голову jBPM 5

kill-still

Спасибо, большое, интересная тулза.
Получается, я не там искал (в категории http://en.wikipedia.org/wiki/Category:Visual_programming_lan... , там всё не о том).
Ещё яя тут подумал - с JSON я погорячился. Это совсем не нужно (просто я думал что гуи возможно самому придётся писать).

6yrop

:grin:

kill-still

и что ты этим хотел сказать?

6yrop

то что ты забиваешь голову себе и окружающим тем, что не нужно.

Bayur19

поботай http://en.wikipedia.org/wiki/Drools и http://www.jboss.org/drools/, может подойдет

luna89

Реализовывать каждую хотелку бизнеса и каждый день передеплоивать приложение на десяток серверов кластера это моветон.
Сдается мне, что если вы не можете организовать мгновенный редеплой мелкого скрипта, то тем более не сможете внедрить какой-то мега фреймворк.
Оставить комментарий
Имя или ник:
Комментарий: