Pull to refresh

Использование бинарных отношений над множествами для решения практической задачи

Reading time3 min
Views5.5K
При разработке компьютерной системы управления бизнес-процессами мы столкнулись с проблемой назначения на роли конкретных исполнителей.
Традиционных подходов к реализации такого назначения два:
  • Внутри системы задается организационная структура предприятия и назначение на роль производится при помощи указания параметров этой структуры
  • Процедура инициализации роли выносится в какую-то другую информационную систему
У обоих этих подходов есть существенные неудобства.
  • Организационная структура предприятия является отдельной сущностью и помещать ее в систему управления бизнес-процессами нежелательно, так как это очень сильно усложняет систему.
  • Вынос назначения на роль в другую систему и организация удаленного вызова процедуры из этой системы является сложной технической задачей
Оказалось, что использование в данном случае бинарных отношений над множествами позволяет разработать очень простое, но весьма эффективное решение задачи построения инициализатора роли.

Бинарное отношение для конечных множеств A и B можно задать, определив набор упорядоченных пар, в которых первый элемент принадлежит множеству A, а второй — множеству B. Ниже показано, как эта простая концепция помогает решить задачу инициализации роли бизнес-процесса.
Системы автоматизации процессного управления раздают задания исполнителям в соответствии со схемами бизнес-процессов, а также контролируют их выполнение
Роли в бизнес-процессе используются для связывания узлов бизнес-процесса с исполнителями заданий. При разработке бизнес-процесса создается роль и ставится в соответствие определенным узлам схемы бизнес-процесса. Инициализация роли – это назначение на роль конкретного исполнителя.
В бизнес-процессе, как правило, в момент его запуска уже известны значения некоторых ролей. Например, известно, какой пользователь запустил бизнес-процесс. В большинстве случаев требуется по известным значениям ролей найти значения для других ролей. Если сотрудник предприятия запустил бизнес-процесс оформления заявки на какой-то ресурс, то подтвердить, или отказать в этой заявке должен руководитель данного сотрудника. То есть для инициализации новых ролей по значениям уже инициализированных ролей надо как-то задать связи между сотрудниками предприятия.
Обдумывая эту проблему, я вспомнил, что в МГУ, на втором курсе, изучал бинарные отношения над множествами. Если сотрудников предприятия рассматривать как элементы множества, то при помощи этой конструкции как раз можно задать упорядоченные связи между сотрудниками.
Тогда инициализацию роли можно производить следующим образом:
1. Задаем для множества сотрудников предприятия бинарные отношения, представляющие собой наборы упорядоченных пар сотрудников.
2. Для инициализируемых при помощи бинарных отношений ролей бизнес-процессов указываем уже известную к моменту инициализации роль.
3. В процедуре назначения исполнителя на роль берем значение-исполнителя уже известной роли, связанной с инициализатором. Это значение будет соответствовать правой части бинарного отношения. Строим множество значений всех левых элементов пар отношения, в которых правый элемент совпадает с исполнителем уже известной роли.
4. Этим множеством и инициализируем роль. То, что в данном случае у роли может появиться более одного возможного исполнителя, не страшно: всем возможным исполнителям будет послано соответствующее задание, но выполнит его только один исполнитель, — тот, который первый возьмет задание на исполнение.
Однако задавать бинарные отношения перечислением всех определяющих его пар исполнителей не всегда удобно, так как таких пар может быть очень много. Поэтому расширим множество, на котором определяются бинарные отношения. Разрешим в парах кроме исполнителей также использовать группы исполнителей.
Тогда по уже известной роли будем отбирать пары, в правой части которых находится либо исполнитель – значение этой роли, либо группа, содержащая данного исполнителя. Таким образом можно существенно сократить количество задающих отношение пар.
Реализация алгоритма инициализации роли

Алгоритм был реализован на практике, — в свободной системе с открытым кодом RunaWFE. В главное меню системы был добавлен еще один пункт — Отношения:
image
В этом пункте можно посмотреть/добавить/удалить отношение, открыть отношение и отредактировать множество составляющих его пар:
image
Инициализация роли при помощи бинарного отношения в редакторе бизнес-процессов

В редакторе в бизнес-процессе при редактировании инициализатора роли можно выбрать закладку «задать роль с помощью отношения». В этом случае можно задать настройки соединения с сервером и импортировать отношения в редактор:
image
Далее отношение можно поставить в соответствие роли. В форме выбирается имя отношения и переменная или константа, соответствующая правой части отношения, задающая пользователя или группу пользователей:
image
Tags:
Hubs:
+2
Comments5

Articles