HEXAGON

0

Описание

Расширение для создания метамоделей и описания архитектуры в ArchTool без использования JSONata.

Языки

  • CODEOWNERS100%
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
README.md
📙 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 ничего "не знают" о природе декларируемых объектов. Это два каких-то связанных объекта. Для того, что бы в дальнейшем оперировать такими категориями как "Участник"(экосистемы) и "Продукт", их необходимо задекларировать, как и "обычные" объекты:

Для того, чтобы "Центр" и "Эквайринг" относились к категории (классу, признаку и т.д.) "Участник" и "Продукт" соответственно, необходимо задеклариировать отношения между классами и экземплярами. В примере ниже используется отношение

map
, но можно выбрать любое отношение:

Подключите пример "Березка" и в папке ba сможете увидеть болльше примеров

Для получения перечня всех объектов и отношений можно воспользоваться jsonata-запросами:

подробнее о декларировании объектов и отношений

Запросы к графу

Запрос - это специальный атрибут

hexQ
hex.ttl-объекта, описывающий условия по наличию/отсутствию отношений с другими объектами. Запросы возвращают массив идентификаторов объектов архитектуры, удовлетворяющих заданным условиям.

Например, требуется получить перечень всех Участников:

Выполнить запрос можно с помощью jsonata:

Поскольку запрос - это hex.ttl-объект, то мы можем поместить тело запроса, например в объект mm.party:

Теперь при обращении mm.party является и обычным hex.ttl-объектом и запросом одновременно:

Подробнее о запросах

Визуализация (views)

Визуализация определенной части графа называется "view" (вью, представление). В Hexagon представления описываютяся (декларируются) кодом и строятся следующим образом:

  • hex.ttl-объект, содержащий в себе определение view -- заголовок, описание, статья выводятся в верхней части view
  • декларируемая часть (определение) -- представляет собой pattern (что показывает view) и отображается в виде графа с селекторами
  • вычисляемая часть -- результат применения паттерна к графу -- подграф, соответствующий паттерну.

Рассмотрим пример:

Смотреть данный view

Подробнее о вью модах