logo

自定义BPMN-JS的右侧属性面板

作者:搬砖的石头2024.01.18 06:43浏览量:33

简介:本文将介绍如何自定义BPMN-JS的右侧属性面板,通过创建一个自定义的properties-panel。

BPMN-JS是一个强大的流程模型和表示法(BPMN)的JavaScript库,用于创建、查看和编辑BPMN 2.0图。默认情况下,它提供了预定义的一组属性面板来描述模型中的各种元素。然而,有时候我们需要更复杂的属性或更定制的UI体验,这就需要我们来自定义右侧的属性面板。
以下是如何自定义BPMN-JS的右侧属性面板的步骤:

  1. 创建自定义properties-panel
    首先,我们需要创建一个新的properties-panel。这个panel需要继承自bpmn-js的base properties panel,并实现必要的方法。例如:
    1. import BpmnPropertiesPanel from 'bpmn-js/lib/features/properties-panel';
    2. import propertiesPanelModule from 'bpmn-js/lib/features/properties-panel/moddle-properties';
    3. import propertiesProviderModule from 'bpmn-js/lib/features/properties-panel/provider/bpmn';
    4. export default class CustomPropertiesPanel extends BpmnPropertiesPanel {
    5. constructor(eventBus, elementRegistry, modeling) {
    6. super(eventBus, elementRegistry, modeling, {
    7. propertiesProvider: new CustomPropertiesProvider(),
    8. });
    9. }
    10. }
    在上面的代码中,我们创建了一个新的CustomPropertiesPanel,它继承自BpmnPropertiesPanel。我们通过调用super方法来配置我们的propertiesProvider。
  2. 创建自定义propertiesProvider
    接下来,我们需要创建一个新的propertiesProvider。这个provider需要继承自bpmn-js的DefaultPropertiesProvider,并实现必要的方法。例如:
    1. import { is } from 'bpmn-js/lib/util/ModelUtil';
    2. import { getBusinessObject } from 'bpmn-js/lib/util/ModelerUtil';
    3. import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil';
    4. import { isShape } from 'bpmn-js/lib/features/properties-panel/util/PropertiesPanelUtil';
    5. import { isFlowElement } from 'bpmn-js/lib/features/modeling/util/FlowElementUtil';
    6. import { isEventSubProcess } from 'bpmn-js/lib/features/modeling/util/EventSubProcessUtil';
    7. import { isCallActivity } from 'bpmn-js/lib/features/modeling/util/CallActivityUtil';
    8. import { isRootElement } from 'bpmn-js/lib/features/modeling/util/ElementUtil';
    9. import { getExtensionElements } from 'bpmn-js/lib/features/modeling/util/ElementExtensionUtil';
    10. import { isMessageFlow } from 'bpmn-js/lib/features/modeling/util/MessageFlowUtil';
    11. import { isSequenceFlow } from 'bpmn-js/lib/features/modeling/util/SequenceFlowUtil';
    12. import { isMessageEventDefinition } from 'bpmn-js/lib/features/modeling/util/EventDefinitionUtil';
    13. import { isBoundaryEvent} from 'bpmn-js/lib/features/modeling/util/BoundaryEventUtil';

发表评论

活动