Приложения в системе электронного документооборота. Часть 4: Конструктор бизнес-процессов

от автора

Вторым важнейшим компонентом приложения СЭД, помимо документов или карточек документов (в модели приложения, реализованной в платформе Docsvision), являются процессы. Если машина состояний, контекстно-ролевая модель и скрипты определяют поведение и логику отдельного документа в системе, то бизнес-процессы предназначены для реализации сложных сценариев маршрутизации, взаимодействия с внешними по отношению к СЭД приложениями, для обработки событий, не связанных с активностью пользователей, и другой серверной активности в отношении документов.
Например, БП может автоматически создавать новые документы в случае необходимости, обеспечивать передачу информации между документами при возникновении тех или иных событий, рассылать уведомления и т.д.

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

Язык описания процесса

Отмеченная мною выше особенность – совмещение задач моделирования и имплементации в одном инструменте приводит к тому, что для описания процесса используется специальная нотация, ориентированная на конкретную среду исполнения и ее особенности.
С одной стороны, язык описания процесса (нотация) должен содержать элементы, которые представляют логику процесса на высоком уровне – функции для обозначения активностей пользователя и системы, логику последовательности обработки — ветвления и объединения, а также средства декомпозиции процесса (подпроцессы для организации иерархического моделирования).
С другой стороны, необходимы стандартные компоненты, которые позволяют описывать алгоритм обработки, реализовывать в процессе конструкций типа (if – then – else, do-while) работу со счетчиками, коллекциями, операторы сравнения и пр. Также необходимы низкоуровневые функции, ориентированные на работу с конкретными бизнес объектами и их данными, функции обработки специфических для системы событий, управление синхронизацией процесса.
Дополнительно необходимы инструменты для программного расширения стандартного набора функций и функции для реализации сценариев интеграции с другими приложениями.
Все это приводит к тому, что каждая реализация реальной промышленной Workflow системы и Docsvision, в частности, реализует собственную нотацию, которая может использоваться как для моделирования (визуального представления процесса для человека), так и программирования (низкоуровневого описания). При этом модель описания процессов Docsvision содержит все конструкции нотации BPMN (визуально с ней не совпадая), что позволяет импортировать в Docsvision процессы, смоделированные на языке BPMN для дальнейшей имплементации.


Рис. 1. Дизайнер процессов Docsvision реализует собственную нотацию, ориентированную на создание работоспособных приложений, реализующих логику обработки документов в приложениях.

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

Структура процесса (шаблоны, экземпляры, функции, параметры, шлюзы)

Для описания (программирования) процессов Docsvision используется шаблоны. Помимо функций и связей шаблоны содержат параметры.
Параметры — это внутренние переменные процесса, используемые для хранения информации конкретного экземпляра процесса. Например, в процессе обработки договора переменные – это сам файл документа, сумма договора, имя ответственного и согласующих лиц, сроки согласования, контрагент, вид услуги или продукции и пр. Переменные процесса используются для двух целей.
• Первая очевидна – для определения логики обработки процесса и передачи информации между функциями. Например, при старте обработки процесс получает на вход файл договора, который передается между участниками в процессе согласования, а сумма договора используется в функциях условного ветвления для определения логики согласования договора – формы финансового контроля.
• Вторая функция переменных менее очевидна – это параметризация исполняемых функций. Шаблон процесса может содержать функции, которые не содержат конкретных значений параметров (например, имени исполнителя задачи, или срока выполнения). Эти параметры функций могут определяться (или даже вычисляться) по ходу выполнения процесса и на предыдущих шагах, и передаваться в функцию в момент ее инициализации. Это позволяет моделировать сложные процессы, адаптируемые к обрабатываемой в них информации и существенно сокращать количество шаблонов. Если бы данная функция отсутствовала, для каждого частного случая потребовался бы отдельный шаблон, что сильно усложнило бы сопровождение приложений.

Процесс может быть запущен вручную, из другого процесса или с использованием программного интерфейса (API).

Еще один компонент подсистемы управления процессами – шлюз. Шлюз позволяет настраивать те или иные сценарии взаимодействия с внешними приложениями, например, с электронной почтой, приложениями на базе платформ 1С или SharePoint. При установке того или иного шлюза в системе появляется дополнительный набор функций данного шлюза и соответствующие переменные.
Например, шлюз в электронную почту добавляет специфические переменные для работы с сообщениями – сообщение, получатель сообщения и аттачменты, а также дополнительный набор функций для создания и посылки сообщения, поиска новых сообщений и получения из них информации (текста, аттачментов, адресатов).
Шлюз к «1С» привносит переменные для работы с данными 1С – документ 1С, строка с документе 1С, справочник 1С и прочие, а также соответствующие функции – для поиска документа в БД 1С, создания документа, передачи и получения информации.
Разные шлюзы реализуют разные наборы функций, но типовыми являются функции поиска объекта, работы с его данными, выполнение тех или иных методов объекта и маршрутизации его в заданиях. Например, можно настроить сценарий, в котором определенный документ из «1С» будет маршрутизироваться в задании Docsvision и пользователю системы не нужно открывать «1С» и находить там документ, он будет открываться автоматически из задания.
Шлюз позволяет настраивать сценарии взаимодействия с внешними приложениями без программирования и даже без глубокого понимания того, как устроена внешняя система. К примеру, шлюз в «1С» позволяет настраивать не очень сложные сценарии взаимодействия Docsvision и «1С» даже тем, кто не является специалистом по настройке «1С», а шлюз в SharePoint позволяет настраивать интеграционные процессы без глубокого понимания архитектуры SharePoint.

Переменные

Конструктор бизнес-процессов поддерживает работу со следующими видами переменных. К простым относятся следующие типы переменных:
• целое;
• дробное;
• строка;
• да/нет;
• дата/время;
• строковые перечисления.

Большинство переменных позволяет обрабатывать в процессе различные сущности платформы Docsvision:
• карточка;
• файл;
• секция карточки;
• строка секции карточки;
• папка;
• ярлык;
• подразделение: выбирается из справочника сотрудников;
• сотрудник: выбирается из справочника сотрудников;
• группа: выбирается из справочника сотрудников;
• роль: выбирается из справочника сотрудников;
• тип карточки;
• перечисление;
• процесс;
• переменная процесса;
• значение переменной процесса;

2 шлюза — шлюз к файловой системе (ФС) и шлюз к электронной почте входят в конструктор процессов по умолчанию, они несут с собой следующие переменные:

• папка ФС: выбирается из дерева папок файловой системы;
• файл ФС: выбирается из дерева папок файловой системы;
• почтовое сообщение;
• почтовое вложение;
• почтовый адресат.


Рис.2. При настройке переменных можно указать ее тип, значение по умолчанию и другие свойства параметра.

Переменные в процесс передаются одним из следующих способов:
• Они могут быть заданы по умолчанию;
• Вводятся вручную при старте процесса;
• Переданы в подпроцесс при автоматическом запуске из родительского процесса;
• Сформированы в ходе процесса, в частности, с помощью скриптов;
• Получены из обрабатываемых процессом документов и других объектов;
• Сформированы автоматически при выполнении операции запуска процесса из интерфейса работы с конкретным документом, если процесс запускается бизнес логикой обработки документа;
• И, наконец, переданы в процесс программно с использований функций API, если процесс стартует с помощью программного кода.

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

Функции

Процесс состоит из функций.
Первая группа функций позволяет описать общую структуру процесса – это функции:

Старт – точка начала процесса;
Cтоп – остановка процесса;
Разветвление – создание параллельных веток процесса;
Объединение по И и по ИЛИ – объединение веток процесса;
Подпроцесс – функция служит для декомпозиции процесса при моделировании. Она запускает определенный шаблон и передает туда переменные из родительского процесса. Подпроцесс может быть синхронным, тогда родительский процесс ждет его окончания и получает обратно переменные, и асинхронным – родительский процесс просто запускает подпроцесс. Этот способ запуска процессов используется, в частности, для обработки различных событий. Например, родительский процесс ожидает появления новых документов в системе и запускает параллельные процессы по их обработке.

Вторая группа функций позволяет расширять логику обработки процесса:

Условное ветвление позволяет определить условия, по которым будет определяться дальнейшая логика обработки процесса. Например, в зависимости от суммы договора он может проходить по различным процедурам финансового контроля.
Счетчик — функция, которая используется для организации циклов, при каждом проходе она изменяет с определённым шагом значение переменной, которое может быть использовано для условного ветвления или в других функциях. Также с помощью этой функции можно организовать перебор и обработку коллекционных значений в цикле.
Коллекция – функция для работы с коллекцией, например, добавления элемента в коллекцию, удаления элемента, изменения значения и пр. Эта функция может работать в паре с функцией счетчик для обработки коллекций.
Удаление объекта – с её помощью можно удалить любой объект системы – документ, карточку, папку.
Расписание – позволяет инициализировать работу процесса в определенное время или с определенным периодом, а также производить временную синхронизацию процесса по времени. Например, искать новые объекты в системе с определенной периодичностью.
Сценарий — очень важная функция, которая позволяет расширить поведение системы. Она запускает произвольный скрипт .NET, а также можно подключить готовые сборки и скомпилировать итоговый текст программы.


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

Следующая группа функций предназначена для управления данными и переменными процесса, обработки данных и реализации методов внешних систем с помощью шлюзов:

Универсальный обмен – функция используется для передачи данных между переменными и объектами, обрабатываемыми в БП, в частности, между переменными различных шлюзов. При этом производится приведение типов, реализованное как для стандартных типов в сервисе БП, так и для переменных шлюзов в соответствующих шлюзах.
Например, с помощью этой функции может быть получен текст сообщения электронной почты для поиска в нем уникального идентификатора согласуемого документа и файл вложения, после чего файл может быть приложен к карточке согласования в качестве очередной версии. Такие единичные акты обмена могут объединяться в последовательности и реализоваться в одной функции обмена данными.

Универсальная функция – еще одна очень важная функция, которая используется для выполнения операций с объектами и переменными без программирования. Функции реализуются как сервисом бизнес-процессов для стандартных объектов Docsvision, так и компонентами шлюзов для внешних по отношению к Docsvision системам. При настройке функции определяется, в отношении какого типа объекта будет реализовываться действие, с помощью переменных процесса определяется указатель на объект и другие параметры функции. В системе есть несколько десятков поддерживаемых типов объектов и соответственно сотни функций по их обработке. В статье нет смысла их подробно рассматривать, в качестве примера приведу только список функций, доступных для обработки объекта типа бизнес-процесс.

Функции Параметры функции Тип значения параметра
Создать экземпляр процесса Название экземпляра
Шаблон процесса
Папка
Запустить процесс
Возвращаемое значение
Строковое
Карточка DV
Папка DV
Да/Нет
Процесс DV, выходной параметр
Запустить процесс
Остановить процесс
Получить переменную процесса по имени Имя переменной
Возвращаемое значение
Строковое
Переменная процесса DV, выходной параметр
Приостановить процесс
Создать переменную Имя переменной
Идентификатор шлюза
Тип переменной в шлюзе
Коллекционная переменная
Возвращаемое значение
Строковое
Строковое
Целое
Да/Нет
Переменная процесса DV, выходной параметр

Функции мониторинга шлюзов – каждый шлюз приносит с собой набор переменных, дополняющих список переменных, доступных функции универсального обмена, и дополнительные методы в универсальную функцию. Он также может привносить свои специфические функции, которые реализуют сценарии, специфичные для конкретной системы, с которой работает этот шлюз. Любой шлюз включает функцию мониторинга – ее задача обнаруживать в той или иной внешней прикладной системе новые объекты, соответствующие критериям фильтрации или следить за фактом изменения конкретного объекта. Например, функция мониторинга шлюза файловой системы позволит находить новые документы в папке, которые соответствуют критериям фильтрации (например, типу расширения и размеру), а также обнаруживать факт внесения изменения в конкретный файл, обрабатываемый в процессе, лежащий на файловой системе. Естественно в системе имеется функция мониторинга объектов Docsvision.

Есть еще одна важная группа функций, отвечающая за маршрутизацию заданий и документов в системе, но про нее мы расскажем в следующей статье.

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

Таким образом, подсистема управления бизнес-процессами Docsvision выполняет в системе несколько функций:

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

В следующей статье мы расскажем о подсистеме управления задачами и средствах маршрутизации, которые используются для создания приложений СЭД.

ссылка на оригинал статьи https://habrahabr.ru/post/281959/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *