`

Flex开发web流程设计器的经验之谈(1) 转

 
阅读更多

备份一下资料,哈哈

 

一个多月之前,发了篇有关用flex开发了一个流程设计器原型的博文,详见http://blog.csdn.net/james999/archive/2008/09/22/2963367.aspx 。这一个多月来,主要忙于这边引擎的重构,以及Flex流程设计器的实际性开发工作。目前基本已经成形,所以将一些心得写出来,分享一下。

目前的外在表现,以及内部构架,已经与原型几乎不同了,进行了很大的重构。如下图,是目前的外观,是按照BPMN Modeler的样式构造。当然,这个外观是很容易改变的,因为底层提供了一套基本的 Flex GEF for Process构架。


 



在原型系统中,还只是一个Model-Figure的模式,而目前已经完全依照Model-EditPart-Figure来这个MVC思想来构架的。

 

 

接下来就这套框架的实现思路和思想,与大家分享一下。我们先从大的设计思想来入手,再讲解较为细微的设计之处。

 

 

注:以下会很多地方提到Figure这个词,在Flex中并没有这个对象,用Figure只是表示是一个图元。这个图元的实现,可以是CanvasImage,或别的什么DisplayObject

 

 

一定要采用MVC的构架。

 

Flex本身已经提供了很好的对UIComponent的操作,所以用Flex本身技术去实现绘图并不难,只需要把握好DragMouse事件操作的影响即可。

 

但如果仅仅只是操作图形,则会使你的应用非常死板,也不便于后续扩展。特别对于“流程图”这样的依赖于应用数据的绘制操作。你需要解决ModelFigure之间的关系。——但流程图又涉及到一个Model的图形化显示,可能会存在多种显示的情况:设计视图、开发视图、监控视图等等。单一的Model-Figure这种关系,可能无法进行解耦,所以在中间增加EditPart一层,是比较理想的设计模式。

 

你能想象下面这种图,与上面的图,实现与统一套GEF for Process构架之上吗,两套图形实现只是ModelFigureFactory做了不同的扩展。



 


 




使用“玻璃板”技术

 

最早接触Glass Pane这个名词是在Swing中接触过,在Flex中并没有这个说法。我们是用Glass Pane这种模式,在整个图形编辑的Editor上“罩”上一个Canvas,利用这个Canvas拦截所有的keymouse的事件,拦截之后,计算当前鼠标操作正在操作的Figure对象,并分析行为——这两者一结合,即可控制当前的图形操作逻辑

 

 

很多人开发这种Figure操作的时候,喜欢直接在UIComponent上注册MouseEvent Listener,来响应鼠标的行为。简单的图形操作,这个没有任何问题,但是对于复杂的多元图形操作,则变得非常繁琐。

 

而且,Flex本身的MouseEvent会层层穿透响应,所以过多的由Figure本身控制Event,就容易造成Event处理混乱,对于多元多层图形的情况下,这种错误一旦发生,是非常难以解决和调试的。

 

 

使用Command模式

 

这个就不多过的讲解了,图形化操作,这个Command模式是基本组成结构之一。解决undoredo的问题。

 

 

使用Layer模式

 

这就是将各种图元,按照类别、行为、影响等等因素,放置于不同的Layer上。比如将Grid放置于最底层、连接线的layer放置在较低的Layer等等。

 

当然,实现这种Layer的技术是很简单的,每个Layer都是一个Canvas,这些Canvas按层次顺序加入到另外一个Container中即可。

 

 

EditorEditDomain

 

这是模仿Eclipse GEF中的思路,用于记录当前操作图形的Editor相关的一些基础信息,以及暂存一些公用信息。比如当前的Command StackSelectionManagerModelEditPart对应关系,以及当前的行为等等。这样每个Editor就会维护自己的工作空间对象。

 

 

大的实现模式上,大体就是这些。可能熟悉Eclipse GEF的朋友,会奇怪没有提到诸如PaletteRequestToolEntryEditPart Policy等等。

 

在我的这套框架中,暂时是没有的这些。一方面我对Eclipse GEF不熟,另一方面,我故意不考虑Palette的实现。对于Flex这种应用来说,提供一套Palette的基础实现意义不大,而且反而会限制Palette的展示效果开发。

 

因为有Glass Pane模式存在,所以上层开发,可以覆盖DragEnterDragDrop等事件,来操作当图形拖入到Editor中的行为。当然,在我的Flex GEF for Process框架中,是提供了基础的ToolEntry对象的描述,但仅仅只是用于描述其所对应的需要创建的Model对象类型,而此ToolEntry是需要被放入DragSource中。

 

 

今天写到这儿,后续再讲解细化的设计和实现。

分享到:
评论

相关推荐

    基于Flex的Web流程设计器开发

    基于 Flex 的 Web 流程设计器开发 本文将详细介绍基于 Flex 的 Web 流程设计器的开发,包括其背景、技术路线选择、架构设计、前端设计和后台设计等方面的内容。 Web 流程设计器的背景 ------------------ 在开发 ...

    基于Flex的web流程设计器

    OrchestraDesigner是由北京航空航天大学计算机学院新技术研究所自主开发的一款基于Flex技术的在线协同工作流编辑工具。该建模工具针对非技术人员,采用一种比BPEL更面向业务、更直观的图元作为建模基础,生成的模型...

    flex web工作流程图

    综上所述,"flex web工作流程图"涉及到的技术点包括Flex框架、MXML和ActionScript编程、图形组件设计、数据绑定、事件处理、自定义组件开发、状态管理、布局和动画效果,以及后端服务集成。通过这些技术,开发者可以...

    Flex流程设计器

    Flex流程设计器是一款基于Adobe Flex技术开发的业务流程设计工具,其源码的提供为开发者提供了深入理解并定制流程设计功能的机会。Flex是一种用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript编程...

    流程设计,extjs、flex、web下的流程设计

    总的来说,这些文件和标签涉及到的技术和工具都集中在Web环境下的流程设计和管理上,无论是EXTJS的组件化开发,Flex的富客户端展示,还是各种流程设计器的使用,都是为了实现更高效、更直观的业务流程自动化。...

    web流程图设计器 flex版(二)

    NULL 博文链接:https://2621380266.iteye.com/blog/1774767

    flex 实现 的流程设计器

    在本场景中,我们关注的是用Flex实现的流程设计器,这是一种允许用户在网页上构建和编辑工作流图的工具。 流程设计器的核心是图形化用户界面(GUI),它允许用户通过拖放操作来创建、连接和配置工作流节点。在Flex...

    流程设计器(flex版)

    《流程设计器(flex版)详解》 流程设计器(flex版)是一种基于Adobe Flex技术的图形化工具,主要用于设计和构建业务流程。Flex是Adobe公司推出的一种开放源代码的富互联网应用(RIA)开发框架,它允许开发者创建具有...

    Flex 开发流程 了解Flex开发的流程

    Flex开发流程详解 Flex是一种由Adobe推出的用于构建富互联网应用(Rich Internet Applications,简称RIA)的框架,它包含了Flex SDK、编译器、框架、调试工具以及开发环境Flex Builder等核心组成部分。Flex 3 SDK...

    精典flex图形化流程设计器源码

    Flex图形化流程设计器源码是一套用于创建和编辑工作流的高级开发工具,它基于Adobe Flex技术,提供了直观的可视化界面,使得用户可以方便地构建、定制和管理各种业务流程。这一源码对于开发者来说是极其宝贵的资源,...

    flex wf流程设计器(Workflow)

    Flex WF流程设计器是一款基于Adobe Flex技术开发的可视化工作流设计工具。它允许用户通过图形化界面来设计和构建复杂的业务流程,最终生成的XML文件能够与各种后台系统进行集成,符合JBPM(Java Business Process ...

    flex 流程设计器

    flex 流程设计器,flex 流程设计器

    flex流程设计器源码

    Flex流程设计器源码是一款基于Adobe Flex技术开发的用于创建和编辑工作流的图形化工具。Flex是一种开源的、基于ActionScript 3.0的框架,主要用于构建富互联网应用程序(RIA)。这款设计器允许用户通过拖放操作,...

    flex4 流程设计器

    不错的流程设计器,实现了连线,拖动,修改属性等,,,

    flex画web流程(增加了删除线,选择线条,本地保持等功能)

    标题中的“flex画web流程”...以上就是关于“flex画web流程”项目的一些关键知识点,涵盖了从开发环境设置到用户交互设计等多个方面。对于想要深入学习Flex开发或者流程图应用的人来说,这些都是非常有价值的学习内容。

    Flex技术入门之如何创建flex的web工程

    【Flex技术入门:创建Web工程详解】 Flex技术是Adobe公司为了解决Flash开发难题而推出的一种专门面向程序开发人员的...在开始Flex开发之旅之前,了解其优缺点和创建Web工程的基本流程,将有助于你更好地掌握这项技术。

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版 release 2.3.6.0 --新增功能:报表编辑器支持打开/报表本地文件功能 --新增功能:单元格垂直合并 --新增功能:报表编辑器,标题行支持单个和多个单元格...

    使用Flex开发Activiti流程设计器(三)-改进版示例

    NULL 博文链接:https://cooperay.iteye.com/blog/1409863

    Flex 在web中的应用实例

    五、Flex的开发流程 1. 设计界面:使用MXML描述界面布局和组件。 2. 编写业务逻辑:在ActionScript中编写处理事件、数据操作的代码。 3. 测试调试:Flex SDK内置了Flex Builder,提供强大的调试工具。 4. 部署发布:...

    flex 自定义 制作 流程图 (五种)

    flex 流程图 制作 flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex 流程图 制作flex ...

Global site tag (gtag.js) - Google Analytics