Sparx Enterprise Architect:BPMN 从多个通道实例中收集活动

Sparx Enterprise Architect: BPMN collecting activities from several lane instances

我有几个在 EA 中建模的业务流程。都有相同的通道,所以(正如我在一些教程中看到的那样)我添加了一个通用元素,并且流程通道都通过 "partitionElementRef" 引用到相同的通用元素。 (见屏幕,下层业务流程包含一个车道捕获,它链接到上层"Lanes assigned to Roles")。

我如何查询 EA 我可以收集引用同一通道的不同业务流程中的所有活动?这样,我可以从所有业务流程中收集具有相同通道 "Capture" 的所有元素? 因此,列表或矩阵将是完美的。

我认为您不应该对通用元素使用 Lane,而应该使用 BPMN PartnerRolePartnerEntity 元素。
使用通道将违反 BPMN 语法。

除此之外,如果您想查询模型以获取所有车道及其通用元素,您可以使用这样的查询

select o.ea_guid AS CLASSGUID, o.Object_ID as CLASSTYPE, o.Name, o.Stereotype, gen.Name as GenericElement
from ((t_object o 
inner join t_objectproperties tv on (tv.Object_ID = o.Object_ID
                                and tv.Property = 'PartitionElementRef'))
left join t_object gen on gen.ea_guid = tv.Value)
where o.Stereotype = 'Lane'

Lane 链接到 通用元素 ,其标记值 PartitionElementRef 包含通用元素的 GUID。

如果你想在你的车道上进行活动,你可以使用 ParentID

再次加入 t_object
select act.ea_guid AS CLASSGUID, act.Object_ID as CLASSTYPE, act.Name, act.Stereotype, 
o.Name as Lane,  gen.Name as GenericElement
from (((t_object o 
inner join t_objectproperties tv on (tv.Object_ID = o.Object_ID
                                and tv.Property = 'PartitionElementRef'))
left join t_object gen on gen.ea_guid = tv.Value)
inner join t_object act on (act.ParentID = o.Object_ID
                        and act.Stereotype = 'Activity'))
where o.Stereotype = 'Lane'

额外提示:如果您将泳道名称留空,它将在图表上显示 generic 元素的名称。

基于 Geert Bellekens 的解决方案,我只是添加了最后一个 where 子句...

select act.ea_guid AS CLASSGUID, act.Object_ID as CLASSTYPE, act.Name, act.Stereotype, 
o.Name as Lane,  gen.Name as GenericElement
from (((t_object o 
inner join t_objectproperties tv on (tv.Object_ID = o.Object_ID
                            and tv.Property = 'PartitionElementRef'))
left join t_object gen on gen.ea_guid = tv.Value)
left join t_object act on (act.ParentID = o.Object_ID
                    and act.Stereotype = 'Activity'))
where (o.Stereotype = 'Lane' and act.Stereotype = 'Activity')

最后在查询结果中,按Generic Element分组