Прикладная разработка для dia$par — с чего начать
Приближение кибернетической модели
Собственно прикладная разработка
Квалификация разработчиков:
-
Для реализации > 90% практически возникающих задач по модификации цифрового двойника предприятия достаточно разработчиков среднего уровня со знанием:
- C# 6.0 (объектно-ориентированное программирование, LINQ, асинхронные расширения)
- SQL
-
Экстремальные эксплуатационные случаи (сверхвысокая нагрузка в сочетании с уникально-сложной бизнес-логикой) могут потребовать от разработчика дополнительной компетенции в частных инструментах обработки данных Oracle Database EE (или PostgreSQL).
-
Кастомизация клиентских приложений dia$par не отличается от разработки любого другого приложения на данной платформе (Windows, Android, iOS, промышленные операционные системы специального назначения).
-
Для разработки десктопных клиентских приложений dia$par под Windows будет полезен опыт работы с Windows Forms.
При использовании браузерных интерфейсов потребуется стек web-разработчика (HTML, CSS, JS, React/Bootstrap).
Приближение кибернетической модели
Собственно цифровой двойник организации описывается пятью классами сущностей:
- цепочки создания стоимости (mchains)
- пакеты изменения состояния модели (mpacks)
- проекции численных показателей состояния модели (mfaces)
- сценарии реакции dia$par на внешние и внутренние события (mflexes)
- классические справочники
Соответственно, вмешательство в логику работы модели прикладной разработчик dia$par производит путем изменения состояний объектов перечисленных сущностей.
Если чуть углубиться в детали, то для описания модели также используются:
- табличные части (tableparts)
- развязочные таблицы (linktables)
- положение mpack в цепочке создания стоимости (mstep)
- constants
-
localization structures
- … и еще около 40 видов объектов в основном технического назначения.
Структура и описание этих объектов формируют метаданные конкретной конфигурации dia$par.Matrix.
… используются для хранения разного рода статичных данных.
Как правило, — об объектах реального мира.
В простейшем случае справочник в базе данных представлен одной таблицей, например — «Stores».
Компактный блок-контейнер логически связанных объектов (может быть пустым), двигающихся вдоль цепочки создания стоимости (mchain) по ее этапам (msteps), и изменяющих свои свойства вплоть до превращения в объекты другой природы.
Довольно сложные сущности, имеющие богатую внутреннюю структуру, насыщенность которой обусловлена жесткими практическими требованиями к объему и гетерогенности хранимой информации.
Вырожденным случаем является любой бухгалтерский документ.
В простейшем смысле можно провести параллель с бухгалтерским учетом: mface — развитие идеи счета.
Параллель с OLAP: mface — развитие идеи куба.
mfaces используются для хранения и учета измеримых показателей модели. Например, остатки товара на складе или долги контрагентов.
История mfaces есть совокупность изменений, описываемых квантами эволюции mutual mapping — equants.
Вырожденным случаем equant является бухгалтерская проводка.
В OLAP-терминологии совокупность equants является таблицей фактов.
На все события, происходящие в периметре мета-системы, dia$par реагирует.
Сценарий реакции на событие называется mflex (отсылка к рефлексам — биологическим аналогам mflexes).
Все события dia$par разделены на 21 тип.
Соответственно, эмэмайзер dia$par реплицирует 21 тип mflexes, каждый из которых имеет свои уникальные особенности.
Так, например, кванты эволюции dia$par эксклюзивно генерируются лишь одним типом mflexes — traflexes (рефлексы, отрабатываемые при mstep-переходе конкретного контейнера mpack, контекстно свойствам как самого экземпляра mpack, так и свойствам объектов, в нем содержащихся).
Наиболее часто используемые при трансляции бизнес-логики типы событий dia$par (в скобках указаны названия отвечающих mflexes) :
- обслуживание web-запросов по протоколам SOAP/REST (oflex)
- генерации equants (traflex)
- обработчик событий эволюции mpack (mpack mflex)
- обработчик событий эволюции для справочников (dictionary mflex)
- mflexes, запускаемые пользователем для заданного mpack, mchain или dictionary (deflex)
-
compleX face (xface mflex)
- mflex для расчета аналитической части mface (fprocessor)
- валидатор equantов (fvalidator)
- выполняющиеся по расписанию сценарии (sheflex)
- сценарии логики клиентских интерфейсов (rflex)
Тип события или mflex (что в данном случае эквивалентно) определяет метод инициации ответного рефлекса (сценария реакции), и привязку этого сценария к данным, метаданным и другим композиционным блокам dia$par.
Абстрактно сформулированная бизнес-логика управляемого предприятия практически транскрибируется в mflex, срабатывающие по соответствующим событиям и/или расписанию.
Собственно прикладная разработка
В общем случае деятельность прикладного аналитика-разработчика dia$par есть цикл:
- спроецировать логику Изменения на метаданные кибернетической модели (справочники, mchains, mfaces, etc), сформулировать и имплементировать дельты
- транскрибировать изменения бизнес-логики и разложить их по изменениям конкретных mflexes
- реализовать логику эффекторов — специальных форм для отображения или ввода данных или oflexes
- проверить (в том числе регрессионными тестами)
- передать в тестирование (в случае ошибок — исправить и повторить)
- выгрузка изменений в рабочую конфигурацию модели
В случае проекта внедрения — этапа подготовки к переходу в dia$par — Изменением является в целом задача приведения базовой версии dia$par.Matrix из дистрибутива к реальности конкретного предприятия.
Код mflexes пишется во встроенной среде разработки на C#, редактор поддерживает автоподстановку (аналог IntelliSense).
Собственная система контроля версий позволяет иметь одновременно любое количество параллельных конфигураций dia$par.Matrix одного и того же предприятия.
С каждой конфигурацией может работать отдельная команда разработчиков, не влияя на результат работы друг друга.
Важно, что все версии конфигурации dia$par.Matrix работают с одними и теми же реальными данными.
Что, в сравнении с разработкой для устаревших enterprise systems, вносит дополнительный вклад в выдающуюся производительность труда разработчиков dia$par, в данном случае — на этапе тестирования.
Выпуск изменений в рабочую версию модели производится нажатием одной кнопки в интерфейсе разработчика.
Еще одно преимущество встроенной системы версионирования — легко понять, какие, собственно, изменения произведены (средства для просмотра structured diff on model objects, etc).
Экранная логика базового полнофункционального desktop-клиента реализуется в виде форм WinForms приложения.
Рисовать их можно в чем угодно: например, в том же VisualStudio.