HEXAGON
Описание
Расширение для создания метамоделей и описания архитектуры в ArchTool без использования JSONata.
Языки
- CODEOWNERS100%
📙 Hexagon entry article (readme.md)
Hexagon
Hexagon – это функциональное расширение для создания метамоделей и описания архитектуры в DocHub без использования jsonata. В SEAF 1.0 слой Бизнес-архитектуры реализован с помощью Hexagon
Для описания архитектуры в виде кода в Hexagon используетсятся ограниченный набор yaml-конструкций, образующих hex-native язык:
- декларирование объектов и отношений в формате направленного графа, где объекты представлены вершинами (узлами, nodes), а отношения -- ребрами (связями, edges);
- запросы (queries) к графу следующего вида: все ноды, которые имеют связь (любую или определенную) с нодами, которые имеют связь... Не путать с jsonata-запросами.
- описание представлений архитектуры в виде pattern(комбинация запросов) + landscape(результат комбинации запросов)
- интерпретация кода архитектуры, написанного в других схемах (TBD)
Декларирование объектов и отношений
Все объекты архитектуры с точки зрения Hexagon являются однотипными или True Typeless (hex.ttl). То есть и объект "Медиа-платформа", и объект "Центр" будут относиться к типу hex.ttl. Поэтому декларирование этих объектов будет выглядеть следующим образом:
Если между парой объектов архитектуры существует отношение, например "'Центр' владелец 'Оплаты онлайн' ", то объявляение такого отношения осуществляется следующим образом:
На данном этапе ни DH, ни Hexagon ничего "не знают" о природе декларируемых объектов. Это два каких-то связанных объекта. Для того, что бы в дальнейшем оперировать такими категориями как "Участник"(экосистемы) и "Продукт", их необходимо задекларировать, как и "обычные" объекты:
Для того, чтобы "Центр" и "Эквайринг" относились к категории (классу, признаку и т.д.) "Участник" и "Продукт" соответственно, необходимо задеклариировать отношения между классами и экземплярами. В примере ниже используется отношение , но можно выбрать любое отношение:
Подключите пример "Березка" и в папке ba сможете увидеть болльше примеров
Для получения перечня всех объектов и отношений можно воспользоваться jsonata-запросами:
подробнее о декларировании объектов и отношений
Запросы к графу
Запрос - это специальный атрибут hex.ttl-объекта, описывающий условия по наличию/отсутствию отношений с другими объектами. Запросы возвращают массив идентификаторов объектов архитектуры, удовлетворяющих заданным условиям.
Например, требуется получить перечень всех Участников:
Выполнить запрос можно с помощью jsonata:
Поскольку запрос - это hex.ttl-объект, то мы можем поместить тело запроса, например в объект mm.party:
Теперь при обращении mm.party является и обычным hex.ttl-объектом и запросом одновременно:
Визуализация (views)
Визуализация определенной части графа называется "view" (вью, представление). В Hexagon представления описываютяся (декларируются) кодом и строятся следующим образом:
- hex.ttl-объект, содержащий в себе определение view -- заголовок, описание, статья выводятся в верхней части view
- декларируемая часть (определение) -- представляет собой pattern (что показывает view) и отображается в виде графа с селекторами
- вычисляемая часть -- результат применения паттерна к графу -- подграф, соответствующий паттерну.
Рассмотрим пример: