Базовая информационная система. Что, почему и для чего?
Предыстория
Информация. Когда её становится много, и возникает потребность в упорядочивании, можно пойти разными путями. От таблиц Excel до облачных систем документооборота. Между ними есть множество вариантов сделать свою информационную систему.
Уже два десятилетия мы занимаемся информацией вокруг конструкторско-технологического документооборота в машиностроении. Это сложная сфера. Много информации, много разных методик работы с ней, много специфики на каждом предприятии, постоянное появление новых информационных задач по мере роста информационной системы и вовлечения в неё очередных сфер жизни предприятия.
Мы пробовали разные пути. В итоге идём по пути "конструктора информационных систем". Мы называем его "Базовая Информационная Система" (БИС). Слово "базовая" здесь означает основу. То, на чём строится реальная прикладная информационная система. В некоторых смыслах БИС это что-то вроде платформы или фреймворка, однако точного аналога для названия не нашлось, потому - БИС.
Базовая информационная система - это информационная система, в которой ещё нет не только данных, но и модели данных, однако есть все средства для того, чтобы сформировать модель данных, определить прикладную логику, наполнить реальной информацией, обслуживать и развивать/дорабатывать как модель данных, так и прикладную логику.
Как только в базовой информационной системе появляется прикладная модель данных, она становится прикладной информационной системой с готовым клиентским приложением.
Область применения
- В качестве СУБД наша БИС использует SQL Server или Postgres.
- Нам нравится .Net и С#, потому почти всё на нём.
- Мы работаем на Windows, .Net Framework 4.8.
- Мы думаем о .Net Core и Линуксах, но пока всё на Windows.
- БИС можно использовать и для самого себя в качестве удобной надстройки над СУБД, но основное её назначение - это коллективная работа множества пользователей для решения разного рода информационных задач.
- БИС ориентирована на интенсивный обмен данными в локальных сетях.
- Современного мобильного интернета вполне хватает для удалённой работы клиентских приложений БИС.
- Клиентские приложения БИС предназначены в первую очередь для работы с большим количеством разных сложных объектов с большим количеством атрибутов.
- О красивых иконках и высокохудожественных экранах с парой кнопок мы тоже помним.
- При желании сервер БИС вполне может служить полноценным веб-сервером, однако это не основное его назначение.
Основные компоненты БИС
- Сервер приложений. Работает в виде службы Windows, подключён к СУБД, слушает TCP порт для связи с клиентскими приложениями, слушает http/https запросы через Windows HTTP драйвер.
- Файловый сервер (один или несколько). Работает в виде службы Windows. Подключён по TCP к серверу приложений, слушает TCP порт для связи с клиентскими приложениями, хранит переданные в систему тела файлов.
- Клиентское приложение. Десктопное приложение Windows, подключается к серверу приложений и при необходимости к файловым серверам по TCP.
- Клиентская вспомогательная служба. Работает в виде службы Windows на клиентских рабочих местах, используется для локального кэширования, автообновления клиентских приложений, уведомлений пользователю и прочего.
- Модуль интеграции с проводником Windows. Используется для встраивания в контекстное меню в проводнике собственных прикладных команд.
- Мобильное приложение (пока только Android) для подключения к веб-шлюзу БИС и получения Push сообщений от скриптов прикладной логики информационной системы.
- В сфере машиностроения мы также используем многочисленные модули интеграции с КАДами и другими программами (Word, Excel, Компас, Solidworks, Inventor, Autocad, Altium Designer и др.). Они позволяют использовать клиентские компоненты БИС внутри сторонних программ.
Модель данных и прикладная логика
- Модель данных прикладной информационной системы формируется прямо в клиентском приложении путём создания шаблонов объектов и определения их атрибутов, кнопок, команд меню, вкладок, правил вложения и прочего.
- Настройка модели данных доступна пользователям конфигураторам системы через основное клиентское приложение. Настройка может производиться на ходу без перезапуска.
- Прикладная логика (скрипты) пишется на C# прямо в основном клиентском приложении, компилируется на ходу и встраивается в работающую информационную систему.
- В качестве компилятора скриптов и средства синтаксической подсветки и автоподсказки при написании скриптов мы используем Roslyn. Можно редактировать скрипты и в Visual Studio.
- БИС предоставляет C# API как для программного формирования модели данных и прикладной логики, так и для работы с объектами по сформированной модели данных.
- БИС по сути является средством разработки информационных систем, структурированного хранения прикладного кода, его автоматической сборки, группирования в отчуждаемые и переносимые на другие сервера логические модули прикладной логики. Мы называем такие модули конфигурациями.
Конфигурация - логически обособленный именованный набор объектов, определяющих модель данных и скриптов к ним.
Прикладная логика в виде скриптов означает в том числе и открытость скриптового кода. БИС хранит его в СУБД в виде исходников C# и автоматически компилирует по необходимости.
Основные подсистемы и сервисы БИС
С БИС работают разные категории пользователей:
- Конфигураторы - те, кто занимается настройкой модели данных и прикладной логики информационной системы.
- Администраторы - те, кто заведует учётными записями и правами доступа.
- Простые пользователи - те, кто использует прикладную информационную систему по прямому назначению.
Для простых пользователей БИС предоставляет:
- Централизованное хранение информации в СУБД и тел файлов в файловых хранилищах.
- Универсальное отображение доступной пользователю информации в клиентском приложении в соответствии с сформированной прикладной моделью данных. Трёхпанельная схема: дерево-состав-свойства. Навигация по объектам с историей переходов. Основное окно с возможностью открыть набор вкладок в нескольких группах вкладок.
- Авторизация в системе через логин-пароль или по учётной записи Windows.
- Подсистема поиска с конструктором поисковых запросов с использованием прикладной модели данных. Поддерживается полнотекстовый поиск.
- Быстрый минипоиск по именам объектов.
- Ролевая система прав доступа к информации дополнительно настраиваемая скриптами.
- Раздел Избранное для быстрых ссылок на то, что хочется держать под рукой.
- Раздел Задачи и рабочие процессы - для доступа к задачам, порученным пользователю через подсистему бизнес-процессов (WorkFlow).
- Раздел Почта для доступа к подсистемы внутренних почтовых сообщений.
- Раздел Сотрудники для доступа к видимым по правам доступа коллегам, подчинённым и начальникам.
- Встроенный чат для быстрого общения с другими пользователями информационной системы.
- Модуль WorkFlow (управление бизнес-процессами).
- Возможность взаимодействовать с системой через WEB, включая мобильное приложение с поддержкой Push сообщений от системы.
- Множество других возможностей, предоставляемых сформированной в БИС прикладной моделью данных и скриптами, реализующими нужное поведение системы для конечного пользователя.
Для администраторов:
- Формирование и управление учётными записями и ролевой системой прав доступа с наследованием по схеме: объект-пользователь-роль.
Для конфигураторов:
- Модуль конфигурирования в клиентском приложении. Настройка прикладной модели данных и C# скриптов для описания поведения информационной системы.
- Возможность делать свои кнопки, команды меню, кнопки верхней панели инструментов клиентского приложения.
- Возможность делать сложные кастомизированные раскладки элементов управления для карточки объекта.
- Редактор C# скриптов с синтаксической подсветкой и автоподсказкой (используем Roslyn).
- Интеграция с Visual Studio для редактирования и отладки скриптов.
- Импорт-экспорт конфигураций для переноса готовых модулей на другие сервера.
- Встроенный редактор диаграмм бизнес-процессов.
- Встроенное окно для скриптовой подготовки и формирования печатных документов.
- Возможность подключать к конфигурациям сторонние dll и делать всё, что доступно в мире .Net через C#
- C# API для формирования поисковых запросов с учётом прикладной модели данных.
- WEB доступ к серверу и возможность на C# формировать ответ на http(s) запрос.
- Скриптовая интеграция с проводником Windows: контекстные меню, операции перетаскивания, иконка в области уведомлений.
Примечание: часть подсистем предполагает использование сопутствующих конфигураций (WorkFlow, печатные документы, веб доступ, чат). Это означает, что для этих подсистем большая часть логики реализована в виде скриптового кода и прикладных объектов внутри БИС.
Что можно сделать из БИС?
С точки зрения программиста БИС - это своего рода среда разработки и исполнения сложных многопользовательских приложений на C#, объединённая с визуальными средствами конструирования модели данных для СУБД и готовым клиентским приложением с поиском, правами доступа и прочими сервисами.
БИС предоставляет простой C# API для работы с атрибутируемыми объектами, создание, сохранение, изменение, поиск, вычисляемые атрибуты, кнопки, управление отображением объектов и ещё много чего разного, что нам понадобилось за долгое время применения БИС в информационных системах уровня предприятия в машиностроительной отрасли.
Сделать из БИС можно много чего, если не выходить далеко за "область применения". Помимо документооборота для конструкторов и технологов мы или наши партнёры делали:
- модуль планирования (проекты, задачи, диаграмма Ганта),
- подсистема управления требованиями,
- подсистема управления качеством,
- система управления содержимым веб-сайта,
- система управления бизнес-процессами подготовки производства,
- почтовый клиент (читаем письма, храним в СУБД),
- модуль документации,
- модуль подготовки печатных документов (бланков по ГОСТ со многими из тонкостей оформления этих бланков).
- система многопользовательской подготовки данных для создания программ и сайтов в образовательной сфере,
- модуль для управления комментариями к c# коду для автоматизированного перевода и отслеживания изменений.
Как только появляется хоть какой-нибудь объём информации, скорее всего много полезного можно сделать вокруг него с помощью БИС. В том числе и учиться программировать на C#. Гораздо эффективнее это делать на "живых" объектах, которые можно "пощупать" руками, чем сортировать непонятные абстрактные массивы.
Что находится вне области применения БИС?
БИС ориентирована на работу пользователей с информацией. Это означает, что человек посмотрел на объект, что-то поменял, сохранил. Вокруг этих действий сработало множество скриптов на клиенте и на сервере. Результат сохранён в базе и доставлен другим пользователям системы. Человек на свою работу тратит заметно большее время, чем уходит на работу скриптов, сохранение в СУБД и прочего.
Если с БИС работают не люди, а "автоматы" в большом количестве, вполне возможно, что серверу будет тяжело справиться. БИС использует универсальную модель данных. В этом есть плюс в виде возможности всё переделать на ходу, но есть и минус, связанный с тем, что при большом объёме информации жёсткая модель данных со своей таблицей под каждую прикладную сущность может оказаться гораздо эффективнее.
Мы бы не стали делать на БИС биллинговую систему или что-нибудь высоконадёжное вроде системы автоматического управления гидрозатворами электростанции. Веб-сайт с миллионами посетителей - это тоже не наш случай.
Однако даже в этих случаях БИС может быть полезна например для того, чтобы быстро сделать прототип системы и посмотреть на него вживую. Кроме того, вокруг алгоритмически сложных случаев обычно всегда есть множество информационных задач, решение которых с помощью БИС оказывается очень эффективным.
Программирование прикладной логики
Наш замысел при создании БИС состоял в том, чтобы самим сделать сложные вещи в основе информационной системы, при этом предоставив почти полную свободу разработчикам в части прикладной логики, сделав API таким, чтобы для его использования не требовалось бы слишком высокой программистской квалификации.
Конечно, чем более подкован программист, тем лучше у него получаются даже простые вещи. Однако, толковых сотрудников и квалифицированных программистов, часто не хватает. В этом случае спасает простота API при работе с информацией внутри БИС и наша забота о том, чтобы система по-возможности адекватно работала вне зависимости от того, что конкретно сделано в прикладной логике. Чудес тут, конечно, не бывает и переполнив стек внутри скрипта, всегда можно "уронить" систему. Тем не менее на практике в большинстве случаев среди сотрудников на стороне заказчика часто находятся люди, способные освоить C# и скриптовой API БИС и начать самостоятельно поддерживать и развивать свою информационную систему.
Скриптовой код внутри БИС в большинстве случаев привязан к объектам своей модели данных и в рамках БИС он автоматически структурируется так, чтобы минимизировать степень влияния на другие модули. Это существенно упрощает разработку. Занимаясь скриптами своего прикладного модуля, обычно можно не беспокоиться, что что-то "сломается" в другом.
БИС изначально задумана в виде слоёного пирога, в котором ядро слой за слоем обрастает прикладной логикой. При этом разрабатывать отдельные модули для прикладной информационной системы могут разные разработчики, в том числе и сторонние, привлечённые заказчиком, и непосредственно сотрудники на стороне заказчика.
Дополнительно:
Разделы:
Статьи:
Что нового в БИС "Програмсоюз" версия 3 13.12.2021 |
Основные действия при переводе сервера с БИС версии 2 на версию 3 13.12.2021, изменён: 06.06.2022. |