Dynamics 365. Документооборот. Архитектура системы
Contents
Документооборот и его инфраструктура
Документооборот это важная часть современной системы. Инфраструктура документооборота Dynamics 365 состоит из двух подсистем, которые располагаются на сервере объектов приложения (AOS):
- документооборот “Х++ runtime”
- документооборот “managed runtime“.
Документооборот Х++ runtime
Компонент документооборот Х++ runtime включает в себя следующие элементы:
- Программный интерфейс приложения (API) среды выполнения
- Пакетные задания обмена сообщениями
- Очередь сообщений
Пакетные задания обмена сообщениями или API могуть вызывать код приложения, если это необходимо. При этом код Х++ должен быть скомпилирован в промежуточный язык (CIL).
Документооборот “managed runtime“
Документооборот “managed runtime“ состоит из расширений Windows Workflow Foundation и Finance and Operations apps.
Логически, инфраструктура является расширением и прозрачная для пользователей. Документооборот использует пакетный обработку на AOS и библиотеки .Net Interop, чтобы интегрировать обе подсистемы и выполнить передачу сообщений из одной подсистемы в другую. Код Х++, который запускается пакетной обработкой, поэтому должен быть в CIL, в тоже время сама пакетная обработка выполняется в .Net common language runtime (CLR).
На схеме ниже изображается верхний уровень архитектуры инфраструктуры документооборота.
Пользователи могут использовать формы и элементы управления документооборота в бизнес-процессах.
Пример отправки отчета
Разработчики могут создавать документообороты для объектов, которые они добавили. В следующей таблице описаны шаги, которые пользователь выполнит, чтобы отправить отчет о расходах по документобороту для утверждения.
Шаг |
Среда выполнения |
Действие |
1 |
Документооборот “Х++ runtime” |
Пользователь отправляет отчет о расходах по нажатию кнопки “Отправить” на одном из элементов управления документооборота. В результате код Х++ инициализирует класс документооборота, через вызов API среды выполнения. API ставит сообщение в очередб сообщений. Пакетное задание обмена сообщениями читает сообщение и отправляет запрос на активацию подсистемы документооборот “managed runtime“. Важно обратить внимание на то, что процесс обработки очереди сообщений проиисходит 1 раз/минуту. |
2 |
Документооборот “managed runtime“ |
.NET Interop от кода Х+ получает сообщение и запускает новый экземпляр расширения Windows Workflow Foundation. Этот экземпляр выполняет обратный вызов подсистемы документооборот “Х++ runtime” через API .NET Interop к CIL Х++ и отправляет сообщение о том, что процесс документооборота запущен. После отправки сообщения, подсистема документооборот “managed runtime“ сохраняет простаивающий экземпляр в базу данных и удаляет его из памяти. Когда подсистема документооборот “managed runtime“ получает другие сообщения из подсистемы документооборот “Х++ runtime” для данного экземпляра, она восстанавливает из базы данных и продолжает его работу. Каждый экземпляр документооборота уникальный. Если два пользователя отправляют свои отчеты о расходах на утверждения, то и запустяться два экземпляра. |
3 |
Документооборот “Х++ runtime” |
Пакетная обработка обмена сообщениями читает сообщение о начале работы экземпляра документооборота из очереди сообщений и вызывает обработчик приложения, который обрабатывает собатия о начале работы документооборота. Пакетное задание отправляет подтверждающее сообщение о том, что событие было обработано. |
4 |
Обе подсистемы |
Данный шаблон обмена сообщениями повторяется по мере необходимости, в течении всего жизненного цикла экземпляра документооборота. |
Архитектура документооборота помогает предоставить надежную и долговечную систему обмена сообщениями и также гарантирует, что состояние документооборота всегда синхронизировано с состоянием приложения. Если произойдет аппаратная или программная ошибка, состояние экземпляра документооборота возвращается к его последней сохраненной точке и сообщение остается в очереди. Поэтому с точки зрения архитектуры модель восстановления должна устранить проблему и возобновить процесс.
Comments
So empty here ... leave a comment!