Advertisement

bpmn-js推荐几款常用的插件

阅读量:

采用组件化架构设计的bpmn-js框架使得功能实现更加模块化。这种结构不仅简化了功能扩展的过程,并且也方便了对具体功能模块化的定制。实际上,在这个平台中已经提供了大量现成的功能模块。深入理解各个功能模块的功能特性有助于判断是否有必要自行开发。从而减少了重复建设基础功能的可能性。提升了整体开发效率。本文旨在介绍常见的bpmn-js中使用的组件库。

EmbeddedComments

该组件主要辅助功能是达成单个diagram标注,并同时提供多类型颜色配置的备注信息。

复制代码
 import BpmnViewer from 'bpmn-js/lib/NavigatedViewer';

    
  
    
 import EmbeddedComments from 'bpmn-js-embedded-comments';
    
  
    
  
    
 import BpmnViewer from 'bpmn-js/lib/NavigatedViewer';
    
  
    
 import EmbeddedComments from 'bpmn-js-embedded-comments';
    
  
    
 viewer.on('canvas.click', function() {
    
   viewer.get('comments').collapseAll();
    
 });

Bpmn Properties

该组件是一个较为常见的工具,在功能上用于展示我们所使用的bpmn各个元素的具体属性。它不仅能够单独完成相关功能操作,并且还可以配合设置相应的bpmn配置参数。可以说该组件是bpmn-js中一个非常重要的内置模块构成,在实际应用中无需我们额外引入相关的开发资源。

复制代码
 var moddle = bpmnJS.get('moddle');

    
  
    
 // create a BPMN element that can be serialized to XML during export
    
 var newCondition = moddle.create('bpmn:FormalExpression', {
    
   body: '${ value > 100 }'
    
 });
    
  
    
 // write property, no undo support
    
 sequenceFlow.conditionExpression = newCondition;
    

In order to get undo/redo support you need to dispatch the property update through our modeling stack:

javascript 复制代码
   
var modeling = bpmnJS.get('modeling');
   
 
   
modeling.updateProperties(sequenceFlowElement, {
   
  conditionExpression: newCondition
   
});

Colors

用于给元素配置颜色使用,其使用如下:

复制代码
  var viewer = new BpmnJS({

    
       container: '#diagram'
    
     });
    
  
    
     async function showDiagram(diagramXML) {
    
  
    
       await viewer.importXML(diagramXML);
    
  
    
       var overlays = viewer.get('overlays'),
    
       canvas = viewer.get('canvas'),
    
       elementRegistry = viewer.get('elementRegistry'),
    
       modeling = viewer.get('modeling');
    
  
    
       // Option 1: Color via Overlay
    
       var shape = elementRegistry.get('CalmCustomerTask');
    
  
    
       var $overlayHtml = $('<div class="highlight-overlay">')
    
                           .css({
    
                             width: shape.width,
    
                             height: shape.height
    
                           });
    
  
    
       overlays.add('CalmCustomerTask', {
    
     position: {
    
       top: 0,
    
       left: 0
    
     },
    
     html: $overlayHtml
    
       });
    
  
    
       // Option 2: Color via BPMN 2.0 Extension
    
       var elementToColor = elementRegistry.get('SelectAPizzaTask');
    
  
    
       modeling.setColor([ elementToColor ], {
    
     stroke: 'green',
    
     fill: 'rgba(0, 80, 0, 0.4)'
    
       });
    
  
    
       // Option 3: Color via Marker + CSS Styling
    
       canvas.addMarker('OrderReceivedEvent', 'highlight');
    
  
    
     }
    
  
    
     // load + show diagram
    
     $.get('https://cdn.staticaly.com/gh/bpmn-io/bpmn-js-examples/master/colors/resources/pizza-collaboration.bpmn', showDiagram, 'text');

全部评论 (0)

还没有任何评论哟~