如何移除 bpmn节点元素中businessObject的$attrs中的属性并更新模型
时间: 2023-11-22 08:56:12 浏览: 96
要移除BPMN节点元素中businessObject的$attrs中的属性并更新模型,你可以使用以下代码:
```javascript
// 获取要移除属性的节点元素
const element = bpmnModeler.get('elementRegistry').get('elementId');
// 移除属性
delete element.businessObject.$attrs.attrName;
// 更新模型
bpmnModeler.get('moddle').toXML(bpmnModeler.get('definitions'), function(err, xml) {
if (err) {
console.log(err);
} else {
bpmnModeler.importXML(xml, function(err) {
if (err) {
console.log(err);
} else {
console.log('属性已成功移除并更新模型');
}
});
}
});
```
其中,`elementId` 应替换为要移除属性的节点元素的ID,`attrName` 应替换为要移除的属性名。在执行完上述代码后,BPMN模型中的该节点元素的对应属性会被成功移除并更新模型。
相关问题
如何给BPMN的子流程中的节点的$attrs 赋值 用js代码举例
要通过JS代码给BPMN的子流程中的节点的$attrs赋值,可以按照以下步骤进行操作:
1. 获取子流程节点的引用,可以使用以下代码实现:
```javascript
var subProcess = elementRegistry.get('SubProcess_1');
```
这里的`SubProcess_1`是子流程节点的ID,可以根据实际情况进行修改。
2. 获取子流程节点内部的任务节点,可以使用以下代码实现:
```javascript
var taskShape = subProcess.children[0];
```
这里假设子流程中只有一个任务节点,如果有多个节点需要根据实际情况进行修改。
3. 给任务节点的$attrs属性赋值,可以使用以下代码实现:
```javascript
var businessObject = taskShape.businessObject;
businessObject.di.set('$attrs', {
'attr1': 'value1',
'attr2': 'value2'
});
```
这里的`attr1`和`attr2`是自定义的属性名,`value1`和`value2`是对应的属性值,可以根据实际情况进行修改。
4. 最后需要更新BPMN图表,以便将修改保存到XML文件中,可以使用以下代码实现:
```javascript
modeling.updateProperties(taskShape, {
'di': businessObject.di,
'businessObject': businessObject
});
```
这样就可以通过JS代码给BPMN的子流程中的节点的$attrs赋值了。
bpmn.js 更新节点 di中的属性
可以使用以下代码更新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`属性并更新节点的显示了。
阅读全文