# Архитектура платформы

Упрощенно концепция работы основной части платформы WT представлена на рисунке:

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2Fqa81HzUB8clTmU8aUNCY%2Fimage.png?alt=media&#x26;token=4d803745-800d-40ff-a91b-16ce5b6a1c25" alt=""><figcaption></figcaption></figure>

<details>

<summary>Что такое WT-программа?</summary>

Это любое приложение или система, состоящая из набора приложений, построенных на базе платформы Workflow Technology.

</details>

<details>

<summary>Что такое инфраструктурная часть?</summary>

Это совокупность программного, лингвистического (XML-языки) и информационного обеспечения (документация), используемого разработчиком для написания исходного XML-кода WT-программ, а также для подготовки к их установке, обслуживанию и поддержке.

</details>

<details>

<summary>Что такое исполнительная часть?</summary>

Это передаваемая от разработчика к конечному потребителю совокупность исходного XML-кода, специальных трансляторов, которые переводят XML-код в готовое ПО (WT-программы), а также систем и утилит по установке, обслуживанию и поддержке WT-программ.

</details>

Подробная архитектура платформы WT представлена на рисунке:

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_eBlWEU4C3o2GVEAAr%2Fuploads%2FRNcFKkVdIuOvzMMjO5E9%2F%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0%20%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D1%8B.png?alt=media&#x26;token=4c8e1668-ca3f-41d9-91bb-198b90305b2a" alt=""><figcaption></figcaption></figure>

## Ядро платформы <a href="#platform-core" id="platform-core"></a>

### XML-языки WTML – лингвистическая основа разработки <a href="#xml-languages" id="xml-languages"></a>

Любая WT-программа состоит из двух частей – серверной и клиентской. Каждая часть программируется с помощью описания на XML-языке. Программные компоненты и механизмы их взаимодействия, используемые для описания серверной и клиентской частей, отличаются, поэтому XML-язык также разделен на **серверный XML-язык** и **клиентский XML-язык**.

Серверный XML-язык описывает алгоритмы работы с данными (SQL-запросы), специальные команды передачи и обработки данных, права доступа.

Клиентский XML-язык описывает вид форм внешнего интерфейса программы, логику работы форм и конструкции получения данных с сервера и отправки данных на сервер. При этом для описания клиентских частей десктопных приложений, мобильных приложений и веб-приложений клиентский XML-язык расширяется соответствующими специфическими терминами.

### XML-редактор Workflow XML Editor – среда разработки <a href="#workflow-xml-editor" id="workflow-xml-editor"></a>

Представляет собой удобный и производительный инструмент для быстрого написания XML-кода на WTML, состоящий из следующих элементов:

* Текстовый XML-редактор
* Набор паттернов
* Конструктор форм

XML-редактор построен в виде плагина для среды разработки Eclipse и реализует:

* Подсказки при написании XML-кода
* Синтаксическую проверку XML-кода
* Подсветку ошибок

### Трансляторы – преобразователи WTML-кода в WT-программы <a href="#translators" id="translators"></a>

Результатом работы основной части инфраструктурного блока платформы WT является исходный XML-код WT-программ. Сам по себе XML-код не является программой, это лишь набор инструкций и правил, определяющий, как должна работать WT-программа.

Для того чтобы XML-код работал как полноценная программа, используются трансляторы, которые считывают модель ПО, детально построенную в XML-файлах, и реализуют ее в виде исполняемых приложений с помощью набора библиотек ([фреймворка WT](https://wfsys.gitbook.io/workflow-technology/platform-basics#framework)), который переводит XML-описание в C#-код.

Транслятор **Workflow Forms** выполняет роль клиентской части десктопного приложения. Транслятор работает по принципу браузера: считывает описание и отображает внешние формы программы. Трансляторы **Workflow MobileForms** и **Workflow WebForms** используются для запуска мобильных и веб-приложений соответственно.

Транслятор **Workflow Engine** – это серверная часть, – реализован в виде веб-службы, работающей по протоколу REST Web API в формате JSON. Основная задача этого транслятора заключается в обеспечении приема и отправки данных с клиентских частей WT-программы в БД и обратно. Проще говоря, Workflow Engine – это прослойка между интерфейсом и БД, осуществляющая следующие функции:

* Аутентификацию и авторизацию
* Хранение и использование механизмов для чтения и записи данных в БД (SQL-запросы)
* Взаимодействие с внешними сервисами
* Запуск задач по расписанию

## Дополнительные утилиты <a href="#additional-utilities" id="additional-utilities"></a>

### Workflow Builder

Утилита, с помощью которой разработчик осуществляет **сборку** WT-программы, формируя установочный пакет в виде одного ZIP-файла со специальной структурой, передаваемый впоследствии заказчику вместе с утилитой [Workflow Installer](#workflow-installer). В установочный пакет входят: XML-файлы для серверной и клиентской частей, соответствующие трансляторы, СУБД PostgreSQL, бэкап базы данных.

### Workflow Installer

Утилита для **установки** WT-программ, передаваемая конечному потребителю для автоматической установки «в один клик», использующая установочный пакет в виде ZIP-файла, сформированный утилитой [Workflow Builder](#workflow-builder).

### Workflow Backuper

Утилита для **создания резервных копий**, передаваемая конечному потребителю для автоматического резервирования установленных WT-программ, формирующая установочный пакет в виде ZIP-файла с такой структурой, какую формирует утилита [Workflow Builder](#workflow-builder) и какую ожидает на входе утилита [Workflow Installer](#workflow-installer).

В формируемый установочный пакет входят в том числе все данные заказчика, введенные его пользователями, – словом, все, что хранится в базе, а также все файлы, приложенные пользователями. Такой пакет можно использовать как для восстановления WT-программы, так и для последующего переноса (миграции) WT-программы на другой сервер.

## Дополнительные системы <a href="#additional-systems" id="additional-systems"></a>

### Workflow Licenser

Клиент-серверная система лицензирования программ, созданных на платформе WT.

Клиентская часть системы встроена во все трансляторы – Workflow Engine, Workflow Forms, Workflow MobileForms и Workflow WebForms – и запрещает использовать WT-программы при следующих нарушениях:

* Превышение лимита на количество пользователей.
* Превышение лимита по сроку использования.

Отдельная специальная клиентская часть, расположенная на стороне разработчика, обеспечивает как общие настройки по ограничениям, так и настройки по ограничениям для конкретных заказчиков – другими словами, отвечает за выдачу лицензионных разрешений для определенной WT-программы на определенном оборудовании заказчика.

### Workflow HelpDesk

Клиент-серверная система, предназначенная для автоматизации обработки запросов пользователей заказчика.

Клиентская часть системы встроена в трансляторы Workflow Forms, Workflow MobileForms и Workflow WebForms.

Отдельная специальная клиентская часть, расположенная на стороне разработчика, обеспечивает возможность давать обратную связь на обращения пользователей.

### Workflow Updater

Клиент-серверная система для автоматического обновления установленных WT-программ.

Клиентская часть системы встроена во все трансляторы – Workflow Engine, Workflow Forms, Workflow MobileForms и Workflow WebForms – и позволяет скачивать со специального сервера последние обновления WT-программ и затем устанавливать скачанные обновления в автоматическом режиме.

Отдельная специальная клиентская часть, расположенная на стороне разработчика, обеспечивает возможность заливать обновления на сервер обновлений – как для типовых решений, так и в индивидуальном порядке для каждого заказчика.
