Введение в Falcon Space

Основная суть 

Система позволяет создавать площадки и личные кабинеты с возможностями автоматизации различных процессов работы предприятия. Для создания элементов системы необходимо базово знать элементы верстки на Bootstrap 4 и хорошо знать SQL.

90% функций система покрывает за счет использования типовых компонентов и созданных хранимых процедур под проект. 10% - кастомная разработка под проект в отдельных areas. 

Основа системы - это база данных на SQL Server 2016 с веб-приложением на базе технологий ASP.NET MVC & Bootstrap 4. 

Рабочий workflow в системе

  • Определяем роли в системе
  • Определяем для каждой роли страницы
  • Определяем декларативную разметку для каждой страницы, используя сниппеты компонентов
  • Настраиваем компоненты (создание/правка хранимых процедур)
  • Настраиваем права доступа для страниц и компонентов

Основные строительные кирпичи системы 

  • Страницы - страницы в личных кабинетах с возможностью добавлять функциональность через сниппеты компонентов. 
  • Таблицы - создание любых таблиц с сортировкой, фильтрами и выводом колонок. 
  • Формы - универсальные формы добавления/редактирования сущностей. 
  • Дашборды - рабочий стол пользователя в личном кабинете.
  • Метрики - вывод информации некоего sql отчета в табличном и графическом виде.
  • Уведомления - оповещение пользователей о важных событиях в системе. 
  • Сущности и статусы - движение по статусам неких сущностей заявок с настраиваемым набором статусов и полей. 
  • Каталог и фильтр - товары и поиск с динамическими фильтрами по каталогу. 
  • Ресурсы - управление картинками, документами, прикрепленными к сущности
  • Универслальный API - механизм интеграции с внешними системами.

Технические моменты

  • Старайтесь создавать компоненты постепенно, начиная с простого работающего варианта, постепенно добавляя деталей. Не нужно сразу делать гигантские формы и потом пытаться понять почему она не выводится. 
  • Кастомизация компонентов достигается за счет изменения настроек компонентов через таблицы данных, а также через реализацию своих хранимых процедур. 
  • ВАЖНО! Обязательно используйте сниппеты, а не копируйте из документации разметку. При копировании символы кавычек неверно трактуются и компонент не подхватывает параметры. 
  • Хранимые процедуры имеют строгий контракт на входе и выходе. Обязательно используйте соответствующие аналогичные примеры и не пишите с нуля хранимые процедуры.
  • По возможности не используйте обходные решения и костыли (нетиповая хранимая процедура, отдельная функция по проверке доступа и т.д.). Любое нетиповое решение усложняет поддержку проекта в дальнейшем. 
  • Имена хранимых процедур генерируются автоматически с использованием префиксов подсистемы и кодов сущностей. Имена процедур - по принципу: {control}_{entityCode}_procedureName. В большинстве случаев имена формируются автоматически. 
  • Системные формы выделены красной рамкой. Не перепутайте - не нужно редактировать формы с красной рамкой.
  • Не используйте в полях code заглавные буквы (код может передаваться через URL, а URL канонизируется в lower-case вид). 
  • Практически во всех хранимых процедурах передается параметр @username - именно на основании него необходимо проверять доступ к данным у данного пользователя (в помощь есть sql функции с префиксом sec_). 
  • При удалении объекта, хранимые процедуры связанные с ним, не удаляются. Их по необходимости можно почистить через ManagementStuido.

Основные виды префиксов хранимых процедур

  • as_ - эти процедуры не меняйте, они обновляются при обновлении системы. 
  • falcon_ - это некие “системные”  процедуры, которые можно менять в проекте (например Поиск или GetLayoutInfo).
  • fm_ - запросы для форм
  • crud_ - запросы для таблиц
  • dashboard_ - запросы для панелей управления
  • pg_crumbs - запросы для получения данных для страницы (title, хлебные крошки, редиректы).
  • Префиксы тестовых таблицы tst_