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

Упрощенно концепция работы основной части платформы 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](/workflow-technology/platform-description/platform-basics.md#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-программ и затем устанавливать скачанные обновления в автоматическом режиме.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wfsys.gitbook.io/workflow-technology/platform-description/platform-architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
