@tourman

Как задать декларативное представление бизнес-логики на JS?

Приветствую всех коллег. Сейчас стоит задача разделения бизнес-логики верхнего уровня (декларативный подход, скажем, для бизнес-аналитика) от логики низкого уровня (императивный подход для разработчика) для SPA на, скажем, Backbone.js. Чтобы помочь понять, приведу простой пример.

На высоком (декларативном) уровне должны приниматься решения условий и последовательности для пользователя. Приведу условные примеры.
  • Что будет при успешной регистрации пользователя?
  • Что будет при ошибке регистрации?
  • Последовательность действий после регистрации, скажем, из таких узлов: SMS-верификация, соглашение T&C?
    форма оплаты, получение бонусов.

По моему мнению для реализации этого уровня подходят, к примеру, деревья принятия решений (в т. ч. и бинарные), таблицы принятия решений, НКА.

Низкий же уровень (императивный), в свою очередь, предоставляет высокому (декларативному) гарантированно работающие независимые, но совместимые и взаимозаменяемые логические узлы. Например: регистрация пользователя, отображение ошибки, форма оплаты, форма SMS-верификации, форма соглашения T&C и т. д. Почему совместимые и взаимозаменяемые? Во-первых, это повысит уровень дуракоустойчивости высокого (декларативного) уровня. Во-вторых, это удобно: SMS-верификацию и принятие T&C можно поменять местами только поменяв местами два ключевых слова.

Вопрос в следующем. Как наиболее оптимально задать декларативное представление логики, к примеру, на тех же бинарных деревьях? Есть ли готовые решения под JS или JS-based системы? Как вы понимаете, логика должна описываться максимально просто и быть визуально понятной. Это одно из условий разделения, иначе частично теряется в этом смысл.

Делитесь мыслями, опытом. Может, кто сталкивался с таким? Может, есть идеи? Я уверен, что я уже не один задавался подобными вопросами. Спасибо заранее.
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Вы хотите и рыбу съесть и на х... сесть? Не получится.
Здесь, только объектный кодинг на императивном уровне, т.к. очень много кросс-зависимостей между вертикальными уровнями. Можно с нуля разрабатывать каркас под эти "шашечки" и испытать возможность ПОПРОБОВАТЬ ОБОЙТИСЬ БЕЗ JS-КОДЕРА.... Но это - фантастика!
Лучше - не тратьте время, а создавайте грамотную объектную архитектуру и кодируйте её на JS.
Ответ написан
Комментировать
abyrkov
@abyrkov
JavaScripter
Попытаюсь объяснить, почему такой подход, мягко говоря, не правилен и невозможен. Возьмём ваш пример, хоть.
Допустим, вы нашли модуль, который позволяет поверить, зарегистрирован ли такой пользователь. Разработчики хвастаются, что у него нет зависимостей. Но... Неожиданно оказывается, что ему нужны данные. Он действительно независим: читает данные откуда угодно, хоть с носков вашей прапрабабушки, но ему нужно указать, откуда читать. Вы берете свои ненаглядные бинарные деревья бизнес логики, но там нет ни слова о том, откуда будут браться данные...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы