BPMN.js 依附在节点上的边界事件dockers对象中的x和y怎么算
时间: 2024-02-25 16:52:12 浏览: 85
vue使用 bpmn.js
在BPMN.js中,边界事件的dockers对象中的x和y是相对于节点的边界框(bounding box)的坐标值,具体计算方式如下:
1. 首先获取节点的边界框,可以通过以下代码获取:
```
var bounds = element.businessObject.di.bounds;
```
其中,element是一个节点元素对象,businessObject是该元素对应的BPMN模型对象,di是BPMN模型的图形描述对象。
2. 然后获取边界事件的dockers对象,可以通过以下代码获取:
```
var dockers = element.businessObject.eventDefinitions[0].$type.indexOf('Cancel') !== -1 ?
element.businessObject.cancelEventDefinition.extensionElements.values[0].cancelationDelay :
element.businessObject.eventDefinitions[0].get('eventDefinitionRefs')[0].timerEventDefinition.timeDuration.body;
```
其中,element是一个边界事件元素对象,eventDefinitions是该元素对应的事件定义对象,$type是事件定义对象的类型,indexOf('Cancel') !== -1 判断是否为取消事件,extensionElements是事件定义对象的扩展元素,values[0].cancelationDelay 是取消事件的延迟时间,get('eventDefinitionRefs')[0].timerEventDefinition.timeDuration.body 是定时器事件的持续时间。这里我们假设该边界事件只有一个事件定义,且为定时器事件。
3. 最后计算dockers对象中的x和y值,可以通过以下代码计算:
```
var x = dockers[0].x - bounds.x;
var y = dockers[0].y - bounds.y;
```
其中,dockers[0]表示dockers数组中的第一个元素,即边界事件的连接点,x和y分别是该连接点相对于边界框左上角的坐标值。
阅读全文