• 为什么要扩展
        最近项目打算用activiti工作流中activiti modeler来做模块的可视化订阅,但是原生的activiti任务节点,有一些不符合业务需要,比如
    • 配置项多,属性暴露。比如service task,配置时就要暴露其Java Degelete方法类,这样以后实施人员去配置的时候,第一他每次去配个service task都要去配置,第二他不会知道这个任务要配什么委托类,所以这对职责单一的一个service task来说,比如就需要一个解析xml的任务,那么我除了id ,name,其他都是不需要的,内部封装属性,不暴露出去。
    • 图标单一,一眼看不出任务职责。
    • 子流程内容跟父流程内容在一个面板,流程定制面视觉效果不好,而且固定子流程不能得到复用。
            对以上一些不足,其实对activiti来说,他要考虑的当然是多开放配置,更容易兼容场景,或许有些人会认为这都不是事,做这种扩展没有必要,大题小作。仁者见仁智者见智吧,我认为这种扩展,
            对使用会更便捷,用户友好性也更好,具有一定的业务特色,也不改变原生activiti任务的职能,何乐不为。
  • 如何扩展
         首先考虑一下可行性,这种扩展以什么为切入点。扩展任务节点,那就得发现service task这个任务的特性,它不想user task,script task的只能那么单一,它可以指定委托处理类,来达到执行目的。
          因此,在任务定制这方面,完全可以由service task进行属性扩展和封闭。具体扩展细节,如下考虑
 
     
          那么还有一个难题,就是子流程的改造,原生的子流程是一个类似于容器面板,里面可以再放一个流程;现在的想法是,讲子流程变成类似任务节点的一个节点独立展示,这个节点可以通过属性来关联到子
          流程,这个子流程可以自成一个模型,用属性关联达到复用,实现构思还是基于原生子流程节点进行改造
 
         
  • 编后语
       在子流程这方面需要考虑的还很多,比如后续的流程跟踪该如何处理,以及上述部署组装bpmn文件的坐标问题等。这要继续看下activiti源码(ps:activiti 源码写的很漂亮,very  good,建议去看,
        然后一起探讨),后续会更新一些现有的实现。
 

浅谈Activiti Modeler 的扩展的更多相关文章

  1. 浅谈Manacher算法与扩展KMP之间的联系

    首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解.网上解法颇多.时间复杂度也不尽同样,这里列述几种常见的解法. 解法一   ...

  2. 浅谈云计算之SAN扩展系统设计

    设计背景:不管是公有云还是私有云,为了提供服务的持续性(Business Continuity,BC)和数据的灾难恢复(Disaster Recovery,DR)都不可能只有一个数据中心(Data C ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  4. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  5. Abp vNext 番外篇-疑难杂症丨浅谈扩展属性与多用户设计

    说明 Abp vNext基础篇的文章还差一个单元测试模块就基本上完成了我争取10.1放假之前给大家赶稿出来,后面我们会开始进阶篇,开始拆一些东西,具体要做的事我会单独开一个文章来讲 缘起 本篇文章缘起 ...

  6. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  7. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

  8. 浅谈Hybrid技术的设计与实现第二弹

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...

  9. 浅谈Hybrid技术的设计与实现

    前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...

随机推荐

  1. HMC5883L地磁传感器驱动

    霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域.HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带霍 ...

  2. &简单使用记录

    最近阅读juce代码发现有很多&的用法,例如:(array.size() & 1 == 0) 的判断,仔细分析了下和1做与 操作是为了判断低位是否为0或者1,直观的说就是判断左值的奇偶 ...

  3. 转:HTTPS 升级指南

    上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我 ...

  4. 笔记整理——linux程序设计

    数据库 (2013/2/27 16:07:11) 线程 (2013/2/27 15:47:51)   信号 (2013/2/27 15:31:28)         消息队列.共享内存 (2013/2 ...

  5. mysql 和excel相互转换

    原文地址:http://blog.sina.com.cn/s/blog_43eb83b90100h0mc.html 今天是全国数学建模比赛,同学选的一个题目需要对一个large的Excel表格进行统计 ...

  6. 判断js对象的数据类型,有没有一个最完美的方法?

    先来一个例子: var string1=""; var string2=new String(""); alert(typeof string1); // st ...

  7. C++第一天学习

    代码1 #include<iostream> int main(){ int a; std::cout << "hello c++" << st ...

  8. 编写快速、高效的JavaScript代码

    许多Javascript引擎都是为了快速运行大型的JavaScript程序而特别设 计的,例如Google的V8引擎(Chrome浏览器,Node均使用该引擎).在开发过程中,如果你关心你程序的内存和 ...

  9. log4net的分类型输出文件的配置

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  10. RocketMQ源码 — 三、 Consumer 接收消息过程

    Consumer pull message 订阅 在Consumer启动之前先将自己放到一个本地的集合中,再以后获取消费者的时候会用到,同时会将自己订阅的信息告诉broker 接收消息 consume ...