Главное не результат, главное процесс

BPM-блог Анатолия Белайчука

Еще раз о межпроцессном взаимодействии через данные

Иво Величков заставил меня обратить внимание на разницу между BPMN 1.x и BPMN 2.0 в части моделирования обмена данных.

Обмен данными в BPMN 1.x моделируется при помощи объектов данных (Data Objects):

Рис. 1 Объекты данных в BPMN 1.x

Объект данных в рамках BPMN 1.x  - это артефакт, помогающий описывать процессы. При помощи ассоциации (association) его можно связать с задачей (task), потоком управления (control flow) или сообщением (message flow), при этом никакого воздействия на них он оказывать не будет.

Объектом данных можно изображать самые разнообразные объекты, физические или электронные. Например, мы имеем право изобразить объект данных вне пула и назвать его “база данных заказов”, чтобы смоделировать таким способом межпроцессное взаимодействие через данные.

Однако, как справедливо указал Иво, в рамках BPMN 2.0 приведенная выше диаграмма становится некорректной!

Дело в том, что в BPMN 2.0 объект данных привязан к контексту процесса: он изображается внутри процесса или подпроцесса и существует только в интервале времени от момента запуска экземпляра процесса  (подпроцесса) до его завершения. Соответственно, доступ к ним из другого внешнего процесса невозможен.

Для изображения персистентных данных, не привязанных к жизненному циклу процесса, в BPMN 2.0 служит хранилище данных (Data Store). Его и надо использовать для моделирования межпроцессного взаимодействия через данные в BPMN 2.0:

Рис. 2. Объекты и хранилища данных в BPMN 2.0

BPMN 2.0 различает единичные объекты данных и коллекции (collection) - последние помечаются специальным маркером. В нем также введены специальные обозначения для данных-входов и данных-выходов (Data Input, Data Output) и новые элементы - наборы входных и выходных данных (Input Sets, Output Sets).

BPMN 2.0 также определяет ассоциацию по данным (Data Association) в добавок к обычной ассоциации (Association), унаследованной из 1.x. Если обычная ассоциация, как и в BPMN 1.x, служит чисто для целей документирования, то ассоциация по данным является “исполняемой”: вы можете определить для нее на уровне атрибутов модели процесса входные и выходные данные и, опционально, трансформацию. Таким образом можно на уровне диаграммы описать манипуляции с данным при старте и завершении активности, отправке или получении сообщения. Изображаются на диаграмме ассоциации по данным так же, как и обычные - точечным пунктиром с V-образной стрелкой.

В спецификации BPMN 2.0 есть небольшое противоречие, относящееся к ассоциации по данным:

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

Так что я все же полагаю, что схема на рис.2 является корректной.

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

07.04.11 | Статьи | ,    

Комментарии (3)

  1. Bruce Silver 08.04.11 06:47

    I think your diagram using data store is correct. Data object is an instance variable local to the process level where it is defined. Data store is persisted data. It is a root element in BPMN. What you see in the diagram is actually called Data Store Reference, which is defined as a flow element, i.e. belongs to a process. See p208-209 of the spec. But when you pass data between processes, which process owns the DSRef? The only way out of this that I can see is that each process contains a DSRef, both pointing to the same root dataStore element. And in BPMNDI, the shape points to the root dataStore as well. I agree w/you that p221 is a bug in the spec… one of many, sorry to say.

  2. Denis 07.06.11 17:28

    Вы пишете: “BPMN 2.0 различает единичные объекты данных и коллекции (collection) - последние помечаются специальным маркером. В нем также введены специальные обозначения для данных-входов и данных-выходов (Data Input, Data Output) и новые элементы - наборы входных и выходных данных (Input Sets, Output Sets).
    BPMN 2.0 также определяет ассоциацию по данным (Data Association) в добавок к обычной ассоциации (Association), унаследованной из 1.x.”

    Анатолий! А можете эту тему подробнее осветить: как выглядят новые обозначения, для чего они появились, когда и как их применять и т.д. А то насколько я помню на тренинге Вы про это не упоминали…

    Спасибо!

  3. Anatoly Belychook 08.06.11 13:50

    Денис! Рад, что у Вас в голове улегся весь объем материала, полученного на тренинге, раз Вы просите добавки :)

    Если серьезно, то, во-первых, материала этого и так много. Обо всем не расскажешь. А во-вторых, ни иструментария, ни практики применения для этих конструкций пока толком нет. Может быть со временем…

Комментирование закрыто

Copyright © 2008-2024 Анатолий Белайчук. Спасибо Wordpress и Yahoo.  Контент  Комментарии