activiti explorer跨模板复制流程节点

简介: 最近的项目是用activiti explorer做流程前端。功能做出来后,经常被用户反馈 ,说流程页面不好用。画一个流程图后,再画一个,都要重头开始,如果导入及导出,用户又嫌麻烦。

最近的项目是用activiti explorer做流程前端。
功能做出来后,经常被用户反馈 ,说流程页面不好用。
画一个流程图后,再画一个,都要重头开始,如果导入及导出,用户又嫌麻烦。
用户希望能同时打开多个流程模板页面,将一个模板当前配的节点,复制到另外一个模板中。
这个可以做到吗?
答案是肯定的!
先找到activiti-explorer的复制粘贴代码
通过跟踪代码,找到代码的复制地方。
oryx.debug.js页面中的editCopy为原生的复制代码,而editPaste为粘贴的相关代码
怎么改?
考虑使用localStorage将复制的内空存在localStorage,而粘贴时,要将代码从localStorage读取出来。
经验证,修改代码如下

 editCopy: function( will_update, useNoOffset ){
        var selection = this.facade.getSelection();
        
        //if the selection is empty, do not remove the previously copied elements
        if(selection.length == 0) return;
        
        this.clipboard.refresh(selection, this.getAllShapesToConsider(selection), this.facade.getCanvas().getStencil().stencilSet().namespace(), useNoOffset);
       
        if( will_update ) this.facade.updateSelection();
        //将复制内容
        localStorage.setItem('flowclipboard', JSON.stringify(this.clipboard));  
       
    },
    
    /**
     * Performs the paste operation.
     */
    editPaste: function(){
         //从  h5中复制内容
         this.clipboard= JSON.parse(localStorage.getItem('flowclipboard'));
         //这个一定要序列化对象才可能,否则getChildShapes报错
         this.clipboard.shapesAsJson= JSON.parse( this.clipboard.shapesAsJson);
        // Create a new canvas with childShapes 
        //and stencilset namespace to be JSON Import conform

其实代码的修改只有三行,一个是将复制的内容转为字符串,存入localStorage,一个是从localStorage读取出来,注意,读取出来时,要转回jSOn对象,在转换过程中,shapesAsJson为一个字符串,需要再转换成JSON对象

 //这个一定要序列化对象才可能,否则getChildShapes报错
         this.clipboard.shapesAsJson= JSON.parse( this.clipboard.shapesAsJson);

至此,功能修改完成,但还有点小问题。 粘贴按钮总是要点了复制才有效,不能在页面初始化时,显示,找到修改代码toolbar.js,修改内容如下:

,
        {
            "type" : "button",
            "title" : "TOOLBAR.ACTION.PASTE",
            "cssClass" : "editor-icon editor-icon-paste",
            "action" : "KISBPM.TOOLBAR.ACTIONS.paste",
            "enabled" : localStorage.getItem('flowclipboard')!=''
        },

至此,代码全部成功!

相关文章
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
54 0
|
4月前
|
缓存 前端开发
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
50 1
|
5月前
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之依赖脚本实际运行成功了,但其状态却显示为未运行,从而导致下游脚本没有运行,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之如何通过接口单独触发业务流程里面的某些节点运行
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
DataWorks API 调度
DataWorks产品使用合集之在调度配置配置了节点的上游节点输出,没办法自动生成这个flow的依赖,该怎么操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7月前
|
前端开发
基于jeecgboot的flowable流程增加节点自动跳过功能
基于jeecgboot的flowable流程增加节点自动跳过功能
511 2
|
7月前
|
API
工作流JBPM操作API删除流程&部署流程
工作流JBPM操作API删除流程&部署流程
53 0
|
前端开发 测试技术 数据库
【测试平台开发】十七、接口编辑页面实现下拉级联选择,绑定接口所属模块
【测试平台开发】十七、接口编辑页面实现下拉级联选择,绑定接口所属模块
【测试平台开发】十七、接口编辑页面实现下拉级联选择,绑定接口所属模块
|
关系型数据库 MySQL API
组复制插件架构
组复制插件架构
128 0
|
XML JSON JavaScript
工作流控制台Activiti Explorer使用指南!使用Activiti Explorer定义部署执行工作流
本篇文章详细地介绍了工作流Activiti控制台的使用。工作流Activiti控制台是一个简单的工作流客户端程序,默认使用内存数据库。主要包括四个功能模块:任务管理模块,流程定义模块,历史数据模块和流程引擎模块。通过了解使用Activiti控制台,可以很方便地通过Web界面使用工作流。
872 0
工作流控制台Activiti Explorer使用指南!使用Activiti Explorer定义部署执行工作流
下一篇
DataWorks