专栏首页JAVA后端开发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')!=''
        },

至此,代码全部成功!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • xml与java对象的快速互转

    做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转 查了一下activiti的转换xml方式,发现转换太麻烦了,需要一步步的解析xm...

    星痕
  • JAVA 通用寻找对象间差异的所有字段

    最近在做某个项目中,需要查找多个属性间不同的字段,但这些属性很多,一个一个的字段比较,很折腾,所以就自己写了一个快速的框架. 1.定义需要对比的结果,有新增,...

    星痕
  • VUE实现前后端分离的权限组件

    现在做前后端分离,有时要判断有某个权限时,显示某个按钮.很多时候,这个按钮很多人就写死代码了. 我在做项目的时候,就想了一下,能否把这个东东做成一个通用的权限...

    星痕
  • 云计算浪潮汹涌,成为IT业转型利器

    云不是一种IT战略,它是一种应用架构和新型的计算模型。几十年来,IT技术都努力着想要能够更接近用户。今天,云计算技术通过一个全球性的计算架构,能够触及任何智能手...

    静一
  • 【答疑解惑】什么是大小端

    首先一个问题,大小端是如何来的? 我们知道,在计算机系统中,内存是以字节为单位的,一个地址对应一个字节,一个字节8bit,那么数据类型比如int,short,l...

    程序员互动联盟
  • 错误消息Customer classification does not exist when downloading

    After I create a customer in ERP via tcode VD01 and try to download it into CRM ...

    Jerry Wang
  • 低代码!解锁运维开发新姿势,人人都是OpsDev

    “ 低代码开发模式绝不是一个页面设计工具,而是一种“所见即运行”的应用开发交付新模式。Who Design,Who Build,Who Run!”

    用户1593318
  • 这些年我们从云计算中领悟到的那些事

    云计算在十年之前就已经能够出现在我们的生活中,虽然在今天它已经拓展到多个维度,但是追根溯源,我们所说的云计算是伴随着 1999 年 Saleforce.com ...

    静一
  • 实现nodejs进程间通信

    对于有继承关系的进程,nodejs本身为我们提供了进程间通信的方式,但是对于没有继承关系的进程,比如兄弟进程,想要通信最简单的方式就是通过主进程中转,类似前端框...

    theanarkh
  • 我们从云计算中领悟到的10件事

    云计算在十年之前就已经能够出现在我们的生活中,虽然在今天它已经拓展到多个维度,但是追根溯源,我们所说的云计算是伴随着1999年Saleforce.com的上线以...

    静一

扫码关注云+社区

领取腾讯云代金券