bpmn.js 更新节点 di中的属性
时间: 2024-03-10 07:44:53 浏览: 108
可以使用以下代码更新BPMN.js中节点的`di`属性:
```
// 获取节点元素对象
var elementRegistry = viewer.get('elementRegistry');
var taskShape = elementRegistry.get('Task_1');
var task = taskShape.businessObject;
// 更新节点的 di 属性
task.di.bounds.width = 100;
task.di.bounds.height = 80;
```
这里以更新任务节点(Task)的`di`属性为例,获取节点元素对象后,可以通过访问节点的`di`对象来更新节点的`di`属性。在上述示例中,我们将任务节点的宽度设置为100,高度设置为80。
需要注意的是,更新完节点的`di`属性后,需要调用BPMN.js提供的`elementRegistry.update()`方法来更新节点的显示。例如:
```
// 更新节点的显示
elementRegistry.update(taskShape);
```
这样就可以更新节点的`di`属性并更新节点的显示了。
相关问题
bpmn 7.x 更新节点 di中的属性
如果你使用的是bpmn-js 7.x版本,更新节点的`di`属性的代码如下所示:
```
// 获取节点元素对象
var elementRegistry = viewer.getRegistry();
var taskShape = elementRegistry.get('Task_1');
var task = taskShape.businessObject;
// 更新节点的 di 属性
task.di.set('width', 100);
task.di.set('height', 80);
// 更新节点的显示
viewer.get('canvas').updateAll();
```
这里我们通过`viewer.getRegistry()`方法获取元素注册表,然后通过元素注册表获取节点元素对象。更新节点的`di`属性可以通过调用`task.di.set(key, value)`方法来实现,其中`key`是要更新的属性名称,`value`是要更新的属性值。在上述示例中,我们将任务节点的宽度设置为100,高度设置为80。
更新完节点的`di`属性后,需要调用`viewer.get('canvas').updateAll()`方法来更新节点的显示。
需要注意的是,如果更新节点的`di`属性后,节点的显示不正确,你可能需要重新布局或刷新相关的节点。
BPMN.js 依附在节点上的边界事件dockers对象中的x和y怎么算
在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分别是该连接点相对于边界框左上角的坐标值。
阅读全文