Технология LogicEditor

Тулкит для создания визуальных редакторов бизнес‐логики

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

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

Хорошо, если на ранних этапах разработки программисты могут предугадать все функции, которые понадобятся специалисту в приложении. Тогда можно передать эксперту заданные элементы управления и настройки, научить его ими пользоваться, и он сможет работать.

Но в реальной жизни всё происходит иначе — рынок меняется, предположения, сделанные на ранних этапах, оказываются неверными или неполными, и внезапно программисты говорят, что нужно все переписать с нуля. (Не говоря уже о том, сколько времени потребуется, чтобы продумать и реализовать систему, которая бы обладала достаточной гибкостью.)

Чтобы не допустить этого, программное обеспечение стараются создавать гибким и расширяемым. API помогает отделить бизнес‐логику от системы. Нередко в систему встраиваются скриптовые языки программирования, чтобы менее квалифицированные программисты могли легко настраивать и изменять бизнес‐логику.

В итоге нам нужно минимум три человека в цепочке:

  1. эксперт в определенной области знаний,
  2. программист бизнес‐логики («скриптер»),
  3. системный программист (люди, достаточно квалифицированные, чтобы быть системными программистами, обычно не любят кодировать бизнес‐логику).
И это не считая менеджера.

Что будет делать специалист, если ему нужна новая функциональность в бизнес‐логике?

  • Подробно опишет эту функциональность,
  • Утвердит предложение по добавлению функциональности на встрече с менеджером.
  • Убедится, что задача назначена на программиста бизнес‐логики.
  • Дождется внедрения правки.
  • Протестирует её и либо поймет, что программист не так его понял, или что исходное описание было немного неверно, либо найдет серьезные ошибки.
  • Начнёт сначала.

В зависимости от доступности и загруженности программиста может пройти более недели между возникновением идеи и её конечным внедрением, вне зависимости от реальной сложности требуемых изменений. Обычно нужно даже больше времени, чтобы эта правка попала в рабочую систему. Такой цикл занимает слишком много времени.

Когда новая функциональность требует внесения изменений в логику системы, то, как правило, нет способа ускорить процесс. Но нередко требуемые изменения тривиальны.

Если эксперт сможет сам вносить нужные изменения, то он будет способен быстро испытывать свои идеи, экспериментировать с ними, отказываться от неудачных и совершенствовать жизнеспособные. Быстрая обратная связь значительно увеличивает производительность.

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

Проблемы с интерфейсами подобного рода обычно заключаются в том, что они недоступны конечным пользователям, и, как правило, на их систематическую доработку не хватает ресурсов. К тому же, обычно их невозможно повторно использовать в других проектах. В зависимости от сложности подобный внутренний интерфейс для управления бизнес‐логикой может потребовать десятки человеко‐месяцев для завершения.

Тулкит для создания визуальных редакторов бизнес‐логики (или просто «Тулкит») — продукт, разработанный для того, чтобы снять бремя разработки подобного редактора с вашей команды. Инструментарий предназначен для создания редакторов бизнес‐логики, но также пригоден и для получения других редакторов, например для любых иерархических данных, сложных фильтров, конструкторов запросов и т.д.

Тулкит позволяет программисту описать API, который в дальнейшем будет использоваться для задания бизнес‐логики (это описание называется «схема»). Далее Тулкит генерирует пользовательский интерфейс редактора («редактор») для этого API и внутренний модуль («генератор»), который генерирует результирующий код из данных редактора. (Иерархические данные обрабатываются так же, но в этом случае программист пишет не схему API, а схему формата данных.)

Эксперт задаёт и модифицирует бизнес‐логику в редакторе. Далее автоматически генерируется код, который будет выполнен приложением (либо генерируются данные, которые приложение использует).

Редактор и генератор проводят валидацию данных автоматически. Если схема составлена верно, то не может быть сгенерирован синтаксически некорректный код. Ошибочные данные, написанные вручную в редакторе, будут отклонены генератором как не соответствующие схеме.

Пользовательский интерфейс, сгенерированный Тулкитом, легко настраивается и удобен в использовании после минимальной доработки. Тулкит позволяет легко создать такой интерфейс, который позволит эксперту работать в поле удобных и понятных ему понятий, а не пользоваться смутными и неясными терминами из программистского описания API.

Работа Тулкита не зависит от того, на каком языке или в каком формате должны быть сгенерированы результирующие данные. Если требуется формализованный текст (т.е. код на каком‐то языке программирования, XML, JSON и т.д.) или даже бинарные данные, всегда можно создать для них редактор. (Однако для сложных случае может понадобиться добавить промежуточный уровень абстракции для обработки результата.)

Формат описания схемы прост для понимания и использования программистами. Он содержит набор правил для построения дерева данных, а также правил преобразования, описывающих как представлять это дерево данных в пользовательском интерфейсе редактора и в виде результирующего кода / генерируемых данных.

Тулкит поддерживает обновление данных по мере изменений схемы. Таким образом, если в схему внесены правки, то можно сделать апгрейд уже существующих данных редактора. Для большей части случаев код для апгрейда данных будет сгенерирован автоматически. Для более редких и сложных случаев программистам нужно будет написать несколько строчек кода. Программы апгрейда данных пишутся на Lua (lua.org, легко осваиваемый динамический язык программирования), и, фактически, являются набором вызовов при обходе дерева данных.

Тулкит позволяет с лёгкостью создавать визуальные редакторы для бизнес‐логики и иерархической информации, а также для сложных формуляров, фильтров данных, запросов к базам данных и прочего подобного.

Тулкит обладает следующими функциями.

  • Гибкий, простой в обращении и не требующий поддержки интерфейс визуального редактора.
  • Полнофункциональная автоматическая валидация данных.
  • Поддержка обновления данных при изменении схемы описания проблемной области.
  • Дополнительная опциональная подсветка ошибок в процессе работы.

Демо

Некоторые демонстрационные примеры редакторов Тулкита доступны по ссылке demo.logiceditor.com (подсказка: нажмите на красный флажок в правом верхнем углу, чтобы посмотреть на результат работы генератора). Дополнительные примеры доступны по запросу. Учитывайте, что большинство демо‐редакторов — это ознакомительные, не финальные продукты. Также обратите внимание, что сам редактор находится в правой части страницы, а всё вокруг него — левая панель и верхний тулбар — это элементы демонстрационного фреймворка.

Если вы заинтересованы в прототипе для конкретного варианта использования или хотите задать вопросы, пожалуйста, свяжитесь с нами: toolkit@logiceditor.com.

Веб

Тулкит генерирует редактор на HTML и JavaScript, который легко встроить в HTML страницы вашего бек-офиса. Всем пользователям редактора потребуется достаточно современный браузер. (Отметим, что мобильные браузеры пока поддерживают используемые в редакторе технологии не полностью.)

Генератор, который преобразовывает данные редактора в результирующий код / данные, создаётся в виде библиотеки на Lua. Мы предоставляем к этой библиотеке враппер, чтобы её можно было использовать сразу как консольную программу или HTTP-сервис под Linux. При необходимости мы можем предоставить пакеты для предпочтительного дистрибутива Linux. Генератор для других ОС (включая Windows) также может быть реализован.

Альтернатива

Lua — легко‐встраиваемый язык. Поэтому для получения автономного приложения, вы можете использовать элемент управления браузера (например, Awesomium или иную бесплатную альтернативу), встроить Lua и получить свой автономный редактор бизнес-логики.

Если вариант встраивания Lua в браузер вам не подходит, обычно легко реализовать альтернативный редактор и генератор для вашей конкретной ситуации. Свяжитесь с нами, чтобы узнать подробности.

SaaS

В качестве альтернативы хостингу на стороне заказчика, существует вариант предоставления Тулкита как услуги — мы размещаем на своих мощностях генератор (в форме HTTPS-сервиса) и, опционально, редактор. Мы также предоставляем вам удаленный доступ к инструментам для создания схемы (эти инструменты нужны для получения генератора и редактора); таким образом вы получаете рабочую систему без лишних усилий.

Свяжитесь с нами, чтобы узнать подробности: toolkit@logiceditor.com.