workflow - 如何自定义 mxgraph 工具栏和属性面板

标签 workflow bpmn mxgraph

我正在编写一个网络应用程序。 我的应用程序中有工作流程,这意味着我们应该创建工作流程并从中提取数据并保存在数据库中。

我选择 mxgraph 来设计工作流程。现在我需要为我的项目定制它: 1. 自定义工具栏,仅包含一些 bpmn 和工作流程工具。 2.能够双击元素并打开模态来创建元素属性。

我该怎么做? 我阅读了文档,但我不清楚。

最佳答案

我假设您正在使用 GraphEditorExample

  1. 您可以使用下面的代码创建新的侧边栏:

在您的Sidebar.js


Sidebar.prototype.init = function()
{
    var dir = STENCIL_PATH;

    this.addYourPalette(true); // HERE YOU CAN ADD A NEW PALLETE
    this.addSearchPalette(true);
    this.addGeneralPalette(true); 
    this.addMiscPalette(false); 
    this.addAdvancedPalette(false); 
    this.addBasicPalette(dir);   
    this.addStencilPalette('arrows', mxResources.get('arrows'), dir + '/arrows.xml',
        ';whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#000000;strokeWidth=2');
    this.addUmlPalette(false);
    this.addBpmnPalette(dir, false);
    this.addImagePalette('clipart', mxResources.get('clipart'), dir + '/clipart/', '_128x128.png',
        ['Earth_globe', 'Empty_Folder', 'Full_Folder', 'Gear', 'Lock', 'Software', 'Virus', 'Email',
         'Database', 'Router_Icon', 'iPad', 'iMac', 'Laptop', 'MacBook', 'Monitor_Tower', 'Printer',
         'Server_Tower', 'Workstation', 'Firewall_02', 'Wireless_Router_N', 'Credit_Card',
         'Piggy_Bank', 'Graph', 'Safe', 'Shopping_Cart', 'Suit1', 'Suit2', 'Suit3', 'Pilot1',
         'Worker1', 'Soldier1', 'Doctor1', 'Tech1', 'Security1', 'Telesales1'], null,
         {'Wireless_Router_N': 'wireless router switch wap wifi access point wlan',
          'Router_Icon': 'router switch'});
};

您可以在创建函数的新调色板中定义所需的元素:


Sidebar.prototype.addYourPalette = function(expand)
{
    var lineTags = 'line lines connector connectors connection connections arrow arrows ';

    var fns = [
        this.createVertexTemplateEntry('rounded=0;whiteSpace=wrap;html=1;', 120, 60, '', 'Rectangle', null, null, 'rect rectangle box'),
        this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;', 120, 60, '', 'Rounded Rectangle', null, null, 'rounded rect rectangle box'),

    ];

    this.addPaletteFunctions('New', 'New', (expand != null) ? expand : true, fns);
};

上面的示例将有 2 个元素:一个矩形和一个圆角矩形,但您可以将元素放在您喜欢的任何位置。

  • 您可以使用以下示例向单元格添加新属性:
  • 在您的Dialogs.js中使用该函数

    
        function addProps(name) {
            // Avoid ':' in attribute names which seems to be valid in Chrome
            if (name.length > 0 && name != 'label' && name != 'placeholders' && name.indexOf(':') < 0) {
                try {
                    var idx = mxUtils.indexOf(names, name);
    
                    if (idx >= 0 && texts[idx] != null) {
                        texts[idx].focus();
                    } else {
                        // Checks if the name is valid
                        var clone = value.cloneNode(false);
                        clone.setAttribute(name, '');
    
                        if (idx >= 0) {
                            names.splice(idx, 1);
                            texts.splice(idx, 1);
                        }
    
                        names.push(name);
                        var text = form.addTextarea(name + ':', '', 2);
                        text.style.width = '100%';
                        texts.push(text);
                        addRemoveButton(text, name);
    
                        text.focus();
                    }
    
                    nameInput.value = '';
                } catch (e) {
                    mxUtils.alert(e);
                }
            } else {
                mxUtils.alert(mxResources.get('invalidName'));
            }
        }
    

    然后调用函数,传入新属性的名称作为参数

        addProps('yourPropName');
    

    关于workflow - 如何自定义 mxgraph 工具栏和属性面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55119807/

    相关文章:

    javascript - 如何设置 mxGraph 顶点的最小尺寸(以便工具提示适用于最小的顶点)?

    Workflow FoundationExternalDataExchange 消息已排队且具有事务性?

    git - Git 的索引概念如何改进或改变您的工作流程?

    spring-boot - Spring 启动应用程序中的 Camunda 集成

    jbpm - 业务流程管理系统抽象

    javascript - mxgraph 避免边缘重叠节点或其他边缘

    javascript - 使用工作流检查问题字段是否变为 "In Progress"时出现异常

    workflow - 如何使用 GitHub 操作跳过矩阵配置?

    java - Activiti Tomcat 配置

    javascript - 约束 mxGraph