背景:

小弟工作已有十年有余,期间接触了不少工作流产品,个人比较喜欢的还是JBPM,因为出自名门Jboss所以备受推崇,但是现在JBPM版本已经与自己当年使用的版本(3.X)大相径庭,想升级也不太容易,后来得知JBPM的老大转战到了Activiti,处于对JBPM的喜欢所以研究了一下Activiti,发现Activiti不但保留下JBPM优秀的DNA而且还进行了优化,相比之前JBPM设计更简单更清晰更容易掌握。

三年前Activiti开始进入公司的正式项目中并且表现非常良好,但是它的Web版的定制器无法满足我们的需求,可能是由于当初Activiti刚发布不久这方面的成型的产品比较少,所以没有找到合适的替代产品,那该怎么办呢?经过一番的思想斗争,小弟决定先自己做一个Demo,如果可行则自己研发。

经过研究其他工作流引擎的定制器,小弟发现找到一个能够支持多浏览器的绘图脚本库很关键,所以开始在网上疯狂的寻找,俗话说:黄天不负有心人,最后终于发现一个新大陆——Draw2d,但是接下来一个问题来了,这个脚本库是收费的,怎么办?谁叫咱们是做JAVA出身的呢!对免费的开源的情有独钟,后来在网上找到早期的版本是免费的,下载下来研究一番发现功能基本够用,哈哈哈。。。。搞定!

好了罗嗦的这么多,就是想引出本篇的主人公——Draw2d,至于它有多牛可以访问官网了解一下,不过现在都是收费的而且比早期的版本功能强大很多。

下面进入正题,详细讲解一下Draw2d,讲解之前请注意以下内容都是基于Draw2d早期版本而且都是本人通过研读代码获得(由于收费所以没有文档,只能靠自己),如果与现在版本有出入或者理解错误的地方请指正。

Draw2d类图:


 以上是Draw2d中各种组件(如:窗口、对话框、菜单、图形、线的起点和终点、注释等等)类图,这些组件在绘图时经常用到,其中带颜色的类是本设计器使用的组件(后面的章节会着重介绍)。

以上是Draw2d中连接线类图,设计器中的连接线就是Connection扩展而来,一个Connection实例一般由三个部分组成:Color、ConnectionDecorator和ConnectionRouter。

Color:定义连接线的颜色(RGB)

ConnectionRouter:定义连接线是折线还是曲线等

ConnectionDecorator:定义连接线是否有箭头

后面会重点介绍,这里不在赘述。


 以上是Draw2d中画布类图,绘图时在画布上添加图形(上面提到的类的实例)即可实现相应图形的绘制。Draw2d中已经内置了WorkFlow类型的画布这为定制器的开发带来了很大的方便。


 这幅图是Draw2d中指令类图,Draw2d中使用了Command模式响应事件处理,方便实现自定义工具栏功能按钮,如:设置颜色、设置文本功能等等。

除了以上类图中展示的类,Draw2d中还有很多静态工具方法和工具类(如:XML解析、序列化/反序列化、ArrayList、String等),这里不在过多的展开查看源代码很容易理解,有问题的话可以给我留言。

基于easyui开发Web版Activiti流程定制器详解(五)——Draw2d详解(一)的更多相关文章

  1. 【转】基于easyui开发Web版Activiti流程定制器详解(一)——目录结构

    题外话(可略过): 前一段时间(要是没记错的话应该是3个月以前)发布了一个更新版本,很多人说没有文档看着比较困难,所以打算拿点时间出来详细给大家讲解一下,由于本人平时要工作还要陪老婆和孩子而且还经营着 ...

  2. 基于easyui开发Web版Activiti流程定制器详解(三)——页面结构(上)

    上一篇介绍了定制器相关的文件,这篇我们来看看整个定制器的界面部分,了解了页面结构有助于更好的理解定制器的实现,那么现在开始吧! 首先,我们来看看整体的结构: 整体结构比较简单,主要包括三个部分: 1. ...

  3. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(三)

    题外话: 最近在忙公司的云项目空闲时间不是很多,所以很久没来更新,今天补上一篇! 回顾: 前几篇介绍了一下设计器的界面和Draw2d基础知识,这篇讲解一下本设计器如何扩展Draw2d. 进入主题: 先 ...

  4. 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)

    题外话: 这两天周末在家陪老婆和儿子没上来更新请大家见谅!上一篇介绍了调色板和画布区的页面结构,这篇讲解一下属性区的结构也是定制器最重要的一个页面. 属性区整体页面结构如图:  在这个区域可以定义工作 ...

  5. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d详解(二)

    回顾: 上一篇我们介绍了Draw2d整体结构,展示了组件类关系图,其中比较重要的类有Node.Canvas.Command.Port.Connection等,这篇将进一步介绍Draw2d如何使用以及如 ...

  6. 基于easyui开发Web版Activiti流程定制器详解(二)——文件列表

    上一篇我们介绍了目录结构,这篇给大家整理一个文件列表以及详细说明,方便大家查找文件. 由于设计器文件主要保存在wf/designer和js/designer目录下,所以主要针对这两个目录进行详细说明. ...

  7. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室

    转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/88110111 在“为网站开发远程直播教室的折腾过程及最终实现”中,介绍了如何使用f ...

  8. Node学习笔记(三):基于socket.io web版你画我猜(一)

    经过惨淡的面试,也是知道了自己的不足,刚好最近在学习node,心中便有了做一个web版的你画我猜的想法 首先说下思路,在做准备工作的时候,有两个大概的思路: 1.规定一块div,捕捉鼠标事件,动态生成 ...

  9. 基于canvas和Web Audio的音频播放器

    wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件.通过wavesurfer.js你能够使用它来制作各种HTML5音频播放器,它能够在各种支持 Web A ...

随机推荐

  1. 边框阴影box-shadow

    边框的阴影: 参数说明: box-shadow:1px 2px 3px 4px #ccc inset: 1px 从原点开始,沿x轴正方向的长度(倘若为负值,为沿x轴负方向的长度) 2px 从原点开始, ...

  2. 针对Eclipse闪退的两种解决方案

    闪退情况是:双击Eclipse登陆按钮,显示图标后,紧接着关闭: 1. 到eclipse文件夹中的eclipse.ini打开编辑在最后加入下面代码保存即可 -Dorg.eclipse.swt.brow ...

  3. SpringBoot整合mybatis-plus入门

    pom.xml中加入如下依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>myba ...

  4. JavaScript之Array

    JavaScript是一门非常灵活的动态语言,涵盖的内容也挺多,<JavaScript高级程序设计>看了也有两遍,但是在实际开发的时候,还是有很多东西记不清,然后还得去翻书,特别是一些Ar ...

  5. thinkPHP的几个系统常量

    echo "当前请求:" . __SELF__ . '<br>'; echo "当前分组:" . __MODULE__ . '<br>' ...

  6. python条件判断和循环

    条件判断 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> e ...

  7. ZZCMS8.2 用户密码重置漏洞

    前言 一个找回密码处的逻辑漏洞, 还是有点意思的. 正文 首先是定位找回密码功能对应的代码位置,使用找回密码的功能,然后抓包即可 下面去 getpassword.php 里面看看, 首先包含了一些文件 ...

  8. jdk下载及安装

    下载下载 jdk 下载 java se 版本的即可. web 开发前不需要像安装 java se 一样安装java ee,只要在项目中添加 java ee 的jar 包就可以了,里面大多是接口和抽象类 ...

  9. 【Python】Java程序员学习Python(一)— 为什么学习Python

    现在是6月份,毕业快3年了,虽然不能说对Java掌握的程度达到了如火纯青的地步,但是依然感觉到了瓶颈期,Java用的多了,也到了随心所欲的地步了,所以学第二门语言的想法一直在我脑海里闪现,有想法了就要 ...

  10. ASP.NET Claims-based认证实现认证登录-claims基础知识

    claims-based认证这种方式将认证和授权与登录代码分开,将认证和授权拆分成另外的web服务.活生生的例子就是我们的qq集成登录,未必qq集成登录采用的是claims-based认证这种模式,但 ...