diff --git a/.github/workflows/generate-puml-svg.yml b/.github/workflows/generate-puml-svg.yml new file mode 100644 index 00000000..e19e53ef --- /dev/null +++ b/.github/workflows/generate-puml-svg.yml @@ -0,0 +1,23 @@ +name: generate plantuml +on: push +jobs: + generate_plantuml: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + repository-projects: write + name: plantuml + steps: + - name: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: plantuml + id: plantuml + uses: grassedge/generate-plantuml-action@v1.5 + with: + message: "Render PlantUML files" + path: docs/images + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git "a/docs/ER\320\224\320\270\320\260\320\263\321\200\320\260\320\274\320\274\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217\320\274\320\270.md" "b/docs/ER\320\224\320\270\320\260\320\263\321\200\320\260\320\274\320\274\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217\320\274\320\270.md" new file mode 100644 index 00000000..882e5a6d --- /dev/null +++ "b/docs/ER\320\224\320\270\320\260\320\263\321\200\320\260\320\274\320\274\320\260\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\321\217\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\321\217\320\274\320\270.md" @@ -0,0 +1,3 @@ +# ER-диаграмма подсистемы управление интеграциями + +![image](images/ERArchitectureIntegrationsSubsystem.svg) \ No newline at end of file diff --git a/docs/images/ERArchitectureIntegrationsSubsystem.svg b/docs/images/ERArchitectureIntegrationsSubsystem.svg new file mode 100644 index 00000000..6c448a69 --- /dev/null +++ b/docs/images/ERArchitectureIntegrationsSubsystem.svg @@ -0,0 +1 @@ +ER-Diagram integrations subsystemER-Diagram integrations subsystemСправочник: Интегрируемые системыУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИдентификаторНастройки : строка (100)Справочник: Настройки интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия групп) : uuid «FK»ИнтегрируемаяСистема : uuid «FK»ТипИнтеграции : uuid «FK»СтрокаПодключения : строка (100)Порт : строка (7)ВнешняяКомпонента : хранилище значенийУчетнаяЗапись : uuid «FK»ТипАвторизации : uuid «FK»ИдентификаторНастройки : строка (100)ИспользоватьПользовательскиеФункции : булевоИмя объекта : строка (100)ИзмененВручную : булевоИмяФайлаВнешнейКомпоненты : строка (100)Безопасное хранилищеСсылка : uuid «FK»Ключ : строка : "Логин", "Пароль", "Токен"Значение : строкаСправочник: Типы интеграцийУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»Справочник: Типы интеграций - предопределенные элементыФайловые обмены:КаталогFTP-ресурсыПочтовый клиентПрямое подключение к БД:-Вызов внешней процедуры:SOAPREST APICOMВнешняя компонентаКомандная строкаБрокеры сообщений:RabbitMqKafkaСправочник БСП: Учетные записи электронной почтыУникальныйИдентификатор : uuid «generated»Перечисление: Типы авторизацииБазоваяТокенСправочник: Интеграционные потокиУникальныйИдентификатор : uuid «generated»Код : строка (9)Наименование : строка (100)Родитель (иерархия элементов) : uuid «FK»ИдентификаторНастройки : строка (100)НастройкаИнтеграции : uuid «FK»ТочкаВхода : строка (неогр)ПользовательскаяФункция : uuid «FK»ИзмененВручную : булевоПараметры входаНомерСтрокиИмя : строка (неогр)Тип : uuid «FK»ПараметрURL : булевоЗначениеПоУмолчанию : булево, строка, число, дата, любая ссылкаПолеОбъекта : строка (100)Перечисление: Методы запроса RESTGETPOSTPUTPATCHDELETEСправочник: Пользовательские функцииУникальныйИдентификатор : uuid «generated»Перечисление: Типы параметров интеграцийСтрокаЧислоБулевоNullМассивОбъектДатаСправочник: История интеграцииУникальныйИдентификатор : uuid «generated»Код : строка (36)ДатаИнтеграции : дата и времяДатаИнтеграцииВМиллисекундах : число (20, 0)ИнтегрируемаяСистема : uuid «FK»Статус : uuid «FK»ФорматИнтеграции : uuid «FK»ИсходящееСообщение : строка (неогр)ВходящееСообщение : строка (неогр)ОписаниеОшибки : строка (неогр)ПротоколОбмена : строка (неогр)ИнтеграционныйПоток : uuid «FK»Ошибка : булевоПользователь : uuid «FK»ДлительностьОбмена : число (5, 0)ДлительностьВызова : число (5, 0)Объекты интеграцииНомерСтрокиОбъектИнтеграции : любая ссылкаСозданОбновлен : uuid «FK»Перечисление: Статусы интеграцииВыгруженоЗагруженоОшибкаВыгрузкиОшибкаЗагрузкиПеречисление: Форматы интеграцииXMLJSONDBFCSVTXTXLS / XLSXBAT / SHDLLHTMLПроизвольныйФорматСправочник БСП: ПользователиУникальныйИдентификатор : uuid «generated»Перечисление: Создан обновленСозданОбновленРодительРодительИнтегрируемаяСистемаТипИнтеграцииХранение параметров подключенияУчетнаяЗаписьТипАвторизацииРодительНастройкаИнтеграцииПользовательскаяФункцияТип (параметры входа)ИнтегрируемаяСистемаСтатусФорматИнтеграцииИнтреграционныйПотокПользовательСозданОбновлен (объекты интеграции) \ No newline at end of file diff --git a/docs/puml/ERArchitectureIntegrationsSubsystem.puml b/docs/puml/ERArchitectureIntegrationsSubsystem.puml new file mode 100644 index 00000000..a01a4c41 --- /dev/null +++ b/docs/puml/ERArchitectureIntegrationsSubsystem.puml @@ -0,0 +1,210 @@ +@startuml integrations_subsystem + +title ER-Diagram integrations subsystem + +entity "Справочник: Интегрируемые системы" as eSysInt { + *УникальныйИдентификатор : uuid <> + -- + *Код : строка (9) + *Наименование : строка (100) + Родитель (иерархия групп) : uuid <> + ИдентификаторНастройки : строка (100) +} + +entity "Справочник: Настройки интеграции" as eIntSettings { + *УникальныйИдентификатор : uuid <> + -- + *Код : строка (9) + *Наименование : строка (100) + Родитель (иерархия групп) : uuid <> + ИнтегрируемаяСистема : uuid <> + ТипИнтеграции : uuid <> + СтрокаПодключения : строка (100) + Порт : строка (7) + ВнешняяКомпонента : хранилище значений + УчетнаяЗапись : uuid <> + ТипАвторизации : uuid <> + ИдентификаторНастройки : строка (100) + ИспользоватьПользовательскиеФункции : булево + Имя объекта : строка (100) + ИзмененВручную : булево + ИмяФайлаВнешнейКомпоненты : строка (100) +} + +entity "Безопасное хранилище" as eSecureStorage { + *Ссылка : uuid <> + *Ключ : строка : "Логин", "Пароль", "Токен" + Значение : строка +} + +entity "Справочник: Типы интеграций" as eIntTypes { + *УникальныйИдентификатор : uuid <> + -- + *Код : строка (9) + *Наименование : строка (100) + Родитель (иерархия элементов) : uuid <> +} + +enum "Справочник: Типы интеграций - предопределенные элементы" as eIntTypes_predetermined { + + Файловые обмены: + - Каталог + - FTP-ресурсы + - Почтовый клиент + + Прямое подключение к БД: + - - + + Вызов внешней процедуры: + - SOAP + - REST API + - COM + - Внешняя компонента + - Командная строка + + Брокеры сообщений: + - RabbitMq + - Kafka +} + +entity "Справочник БСП: Учетные записи электронной почты" as eEmailAccounts { + УникальныйИдентификатор : uuid <> +} + +enum "Перечисление: Типы авторизации" as eAuthorizationTypes { + + Базовая + + Токен +} + +entity "Справочник: Интеграционные потоки" as eIntFlows { + *УникальныйИдентификатор : uuid <> + -- + *Код : строка (9) + *Наименование : строка (100) + Родитель (иерархия элементов) : uuid <> + ИдентификаторНастройки : строка (100) + НастройкаИнтеграции : uuid <> + ТочкаВхода : строка (неогр) + ПользовательскаяФункция : uuid <> + ИзмененВручную : булево + -- + Параметры входа + -- + - НомерСтроки + - Имя : строка (неогр) + - Тип : uuid <> + - ПараметрURL : булево + - ЗначениеПоУмолчанию : булево, строка, число, дата, любая ссылка + - ПолеОбъекта : строка (100) +} + +enum "Перечисление: Методы запроса REST" as eRestMethodTypes { + + GET + + POST + + PUT + + PATCH + + DELETE +} + +entity "Справочник: Пользовательские функции" as eUserFunctions { + УникальныйИдентификатор : uuid <> +} + +enum "Перечисление: Типы параметров интеграций" as eIntParamsTypes { + + Строка + + Число + + Булево + + Null + + Массив + + Объект + + Дата +} + +entity "Справочник: История интеграции" as eIntHistory { + *УникальныйИдентификатор : uuid <> + -- + *Код : строка (36) + ДатаИнтеграции : дата и время + ДатаИнтеграцииВМиллисекундах : число (20, 0) + ИнтегрируемаяСистема : uuid <> + Статус : uuid <> + ФорматИнтеграции : uuid <> + ИсходящееСообщение : строка (неогр) + ВходящееСообщение : строка (неогр) + ОписаниеОшибки : строка (неогр) + ПротоколОбмена : строка (неогр) + ИнтеграционныйПоток : uuid <> + Ошибка : булево + Пользователь : uuid <> + ДлительностьОбмена : число (5, 0) + ДлительностьВызова : число (5, 0) + -- + Объекты интеграции + -- + - НомерСтроки + - ОбъектИнтеграции : любая ссылка + - СозданОбновлен : uuid <> +} + +enum "Перечисление: Статусы интеграции" as eIntStatuses { + + Выгружено + + Загружено + + ОшибкаВыгрузки + + ОшибкаЗагрузки +} + +enum "Перечисление: Форматы интеграции" as eIntFormates { + + XML + + JSON + + DBF + + CSV + + TXT + + XLS / XLSX + + BAT / SH + + DLL + + HTML + + ПроизвольныйФормат +} + +entity "Справочник БСП: Пользователи" as eUsers { + УникальныйИдентификатор : uuid <> +} + +enum "Перечисление: Создан обновлен" as eCreatedUpdated { + + Создан + + Обновлен +} + + + +eSysInt <- eSysInt : Родитель + +eIntSettings <- eIntSettings : Родитель +eIntSettings ---> eSysInt : ИнтегрируемаяСистема +eIntSettings ---> eIntTypes : ТипИнтеграции +eIntSettings ..> eSecureStorage : Хранение параметров подключения +eIntSettings ---> eEmailAccounts : УчетнаяЗапись +eIntSettings ---> eAuthorizationTypes : ТипАвторизации +eIntSettings .. eIntTypes_predetermined + +eIntFlows <- eIntFlows : Родитель +eIntFlows --> eIntSettings : НастройкаИнтеграции +eIntFlows --> eUserFunctions : ПользовательскаяФункция +eIntFlows --> eIntParamsTypes : Тип (параметры входа) + +eIntHistory --> eSysInt : ИнтегрируемаяСистема +eIntHistory --> eIntStatuses : Статус +eIntHistory --> eIntFormates : ФорматИнтеграции +eIntHistory --> eIntFlows : ИнтреграционныйПоток +eIntHistory --> eUsers : Пользователь +eIntHistory -> eCreatedUpdated : СозданОбновлен (объекты интеграции) + + +newpage + + +note as eIntSettings_predetermined + Справочник: Настройки интеграции - предопределенные элементы + <#lightblue,#black>|= Код |= Наименование |= Родитель |= ИнтегрируемаяСистема |= ТипИнтеграции |= СтрокаПодключения |= Порт |= ВнешняяКомпонента |= УчетнаяЗапись |= ТипАвторизации |= ИдентификаторНастройки |= ИспользоватьПользовательскиеФункции |= Имя COM-объекта |= ИзмененВручную | + <#white>| 000000001 | RabbitMQ | <пустая ссылка> | RabbitMQ | RabbitMQ | <путь к серверу> | <порт сервера> | - | <пустая ссылка> | "базовая" по умолчанию | <идентификатор> | Ложь | - | Ложь | + <#white>| 000000002 | Kafka | <пустая ссылка> | Kafka | Kafka | <путь к серверу> | <порт сервера> | - | <пустая ссылка> | "базовая" по умолчанию | <идентификатор> | Ложь | - | Ложь | + <#white>| 000000003 | ActiveDirectory | <пустая ссылка> | ActiveDirectory | COM | Provider="ADsDSOObject" | - | - | <пустая ссылка> | "базовая" по умолчанию | <идентификатор> | Ложь | ADODB.Connection | Ложь | +end note + +@enduml \ No newline at end of file