Иво Величков заставил меня обратить внимание на разницу между 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 является корректной.
А кроме того, если даже у вас или у инструмента, которым вы пользуетесь, есть возражения против использования ассоциаций по данным с хранилищами данных, то никто не мешает продолжать пользоваться обычными ассоциациями, которые, напомню, выглядят точно так же.
