`
edi
  • 浏览: 24286 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

基于Flex的Web流程设计器开发第一季---Kick off

    博客分类:
  • flex
阅读更多
最近大家都较有兴趣的讨论关于jbpm的web流程设计器,气氛热烈,并有想大干一场的劲头,俺骚动的心也被感染了。曾在08年4月份开发过一个Web流程设计器,下面把开发过程与经验和大家分享一下。首先来张插图,看看Web流程设计器样式:


原来的流程设计器与jbpm的流程设计器一样是基于Eclipse的GEF实现的,eclipse流程设计器如下图所示:


Web流程设计器产生的背景
   看过了Web流程设计器的样式后,再说说Web流程设计器产生的背景。公司原来的工作流产品的流程设计器是eclipse插件形式的,流程设计器的定位是给开发人员和客户的IT人员使用的。但在实施一个项目的过程中,客户希望部门秘书也可以自定义流程。这样问题出现了,部门秘书通常都没有IT背景,别说使用eclipse这样复杂的工具,估计安装JDK也要搞半天。客户原来系统中的Web流程设计器是列表式的,列表式的无法展现选择和并发等复杂的结构,而且也不如图形化的形象直观。Web流程设计器就是在这样的背景下产生的。

Web流程设计器技术路线选择
   当时主要的可选择的技术路线有两种:一是AJAX+SVG,二是Flex。两种技术对比,AJAX+SVG方案的优势,公司的工作流产品中的流程监控是采用AJAX+SVG实现的,有一定的技术积累,熟悉AJAX和SVG的开发人员比较多。AJAX+SVG方案的劣势,Java Script的代码调试困难,没有太好的2D图形框架。Flex的优势,首先Flex是开源的,业界当时已有很多成功的案例可以参考,Flex的交互和互动可以做出更炫更酷的效果,执行效率也比较高。再加上出了问题,Java Scipt的调试实在是让人头疼。恰逢Flex 3刚刚发布,当时我也是跃跃欲试啊,最终决定采用Flex来开发Web流程设计器。

Web流程设计器架构设计
    Web 流程设计器的架构约束是很多的,当时必须完成的目标和遵守的约束是Web流程设计器的流程样式风格必须与Eclipse流程设计器一致。Web流程设计器与Eclipse流程设计器可以互相读写流程。也就是说用Web流程设计器和Eclipse流程设计器可以打开同一个流程,而且流程样式是完全一样的。后来看这个约束是耗时最多的,比如在Web流程设计器中两个节点对齐后,再用Eclipse流程设计器打开,发现在eclipse流程设计器中两个节点没有对齐。
    因为有Eclipse平台GEF的开发经验,所以当时Web流程设计器是参考GEF框架来设计的,这样也体现了MVC的思想。提到MVC大家估计耳朵已经磨出茧子了,但真正做起来并不容易。M层对应的是流程定义模型,流程定义模型包括:Process(流程)、Node(节点)和Transation(连接线)等对象。V层对应流程元素的展现,包括:ProcessRender、NodeRender和TransationRender等对象。这些对象的职责是决定流程展现的样式,也就是大家在上面的图中看到流程的样式。C层即控制层,包括:添加节点、删除节点、更改节点名称、移动、选择等操作。C层将M层和V层有机的联系在一起,举个例子具体说明一下。当更改节点名称时,M层对象的变化,可以被V层的对象监听到,那么V层对象的名称就会随着M层的对象自动改变。
    再说说GEF框架,熟悉Eclipse平台开发的人,大概对GEF都有所了解。GEF是2D图形编辑框架,个人认为这个框架最大的优点就是良好的扩展性。在GEF框架下,可以方便定义图形的样式和风格、也可以自定义连接线的路由方式。EditPart是GEF框架中重要的对象,在Web流程设计器中的Render对象是与EditPart相对应的。当然Web流程设计器没能做到像GEF功能那么全,灵活的扩展性。这样的不足,也让我有了继续奋斗的动力。但参照GEF的设计使得像增加节点的类型,更改节点样式和改变连接线路由的方式等扩展变的很容易。
    前面说的都是Web流程设计器的前端是如何设计的,可能有人更关心Web流程设计器的流程是如何持久化的?Web流程设计器的前端是采用Flex开发的,后台是采用Java开发的,当保存流程时,Flex向Java发送HttpService请求,把流程以xml格式字符流的形式传递给Java程序,由Java来完成流程的持久化,保存流程定义到数据库中。

Web流程设计器的特性
    Web流程设计器有哪些功能,这个话题是我羞于提的,因为没有什么创新,Web流程设计器的功能与Eclipse流程设计器的功能是对等的。Web流程设计器的主要功能包括:新建流程、发布流程(存储到数据库中)、导出流程(以文件形式导出到本地)、导出流程图片、流程打印、增加删除节点、增加删除传输线、拖拽节点、拖拽传输线、复杂结构的展开与折叠、复制与粘贴、对齐和放大缩小等功能。

一些经验和体会
1、采用Flex开发Web流程设计器这个路线选择是正确的。有Java的基础,AS语言很容易上手。随着Adobe Flash Player的升级,Flash的执行效率已经很高了,比Applet快很多,尤其是首次加载。调试也比Java Script方便很多,与Java的调试一样。
2、Flex可以通过CSS配置样式与风格,非常方便易用。
3、Flex与Java的通信,在某些环境下有Bug,需要多做各种兼容性测试,等到客户现场实施时,才发现问题,乱子就大了。
4、在项目中,因为特殊的需求,Web流程设计器的流程元素的属性编辑页是采用JSP开发的。如果大家没有特殊的需求,属性编辑建议也采用Flex来开发。用JSP做属性页,不但样式很难统一,并且数据在Flex和JSP之间传来传去也非常麻烦。
5、Web流程设计器的样式和风格与Eclipse流程设计器一致。因为公司的工作流产品有Eclipse版本和Web两个版本的设计器,并且要保证两个设计器对流程的展现一模一样。其间最麻烦的问题就是节点的位置,因为在Eclipse流程设计器中,节点采用的是相对座标;而Web流程设计器,节点采用的是绝对座标。相对座标与绝对座标的相互转换是件很麻烦的事。希望大家在开发过程中,可以尽量回避这个问题。

参考资料
   有很多人向我咨询,开发Flex有哪些资料,我无一例外的向他们推荐了Adobe的Flex开发中心。http://www.adobe.com/devnet/flex/



the end.
  • 大小: 43.6 KB
  • 大小: 42.1 KB
30
2
分享到:
评论
17 楼 wind2154 2012-07-10  
这是我做的流程设计器
http://wind2154.iteye.com/blog/1464359
16 楼 damoqiongqiu 2011-09-03  
不错,Mark之后学习
15 楼 liuhaoyi490 2011-03-22  
liuhaoyi490 写道
感觉很不错.
这是我做的玩的
http://liuhaoyi490.iteye.com/admin/blogs/941550多提宝贵意见

14 楼 liuhaoyi490 2011-03-22  
感觉很不错.
这是我做的玩的
http://liuhaoyi490.iteye.com/admin/blogs/941550
多提宝贵意见
13 楼 escape_2007 2010-05-11  
哥们,你好,请问你这里面有鹰眼功能么?有的话,可否大概介绍一下,多谢。
12 楼 jprobe 2009-03-05  
对你做的东东很感兴趣,能交流一下吗,qq:4548288,zergo@163.com
11 楼 whiller 2008-12-26  
你好edi
    我也想用flex做web流程设计器,分成三部分:
左边流程元素列:select+start+end+node+...,中间绘流程图,下面的properties部分。
这三部分分别采用什么组件啊?现在我只选择了左边的组件是ToggleButtonBar
10 楼 edi 2008-11-27  
yangsheng 写道

请问flex生成的xml如何转换成jbpm能实别的流程定义文件

flex生成的xml格式和内容要符合jBPM流程定义的schema,这样jBPM就能够识别了。不知道我回答的是不是,你期望知道的。
9 楼 yangsheng 2008-11-27  
请问flex生成的xml如何转换成jbpm能实别的流程定义文件
8 楼 天机老人 2008-11-21  
谢谢你最后给出的网站,最近公司需要,我也在研究flex!
7 楼 laozhou 2008-11-21  
能不能发个具体的实例出来,我最近也在做这个东西,一头雾水
6 楼 whaosoft 2008-11-21  
jbpm 听说挺好的 可一直没时间学
现在的项目ui 我们也改flex了
5 楼 edi 2008-11-20  
china8jie 写道

請教一下: ActionScript4 和 FlexBuilder 4 出了嗎?

Flex 4 发布了,但现在还是preview版本,正式版09年初会释放。Flex Builder 3 可以兼容 Flex 4。Flex 4 在编译性能上好像有提高,个人还是很期待的。
4 楼 04023129 2008-11-20  
厉害,学习中。。。
3 楼 王者之剑 2008-11-20  
牛人 ,估计很多人的大部分是想问开发Flex有哪些中文的资料
2 楼 china8jie 2008-11-20  
請教一下:

ActionScript4 和 FlexBuilder 4 出了嗎?
1 楼 yuanye218 2008-11-20  
我们也做了一个流程设计器(Flex+java)也晒一晒,呵呵。
本来也行贴个图,但是不知道怎么放链接,呵呵。

相关推荐

    javaee-kickoff-app.zip

    【JavaEE Kickoff 应用...总的来说,"javaee-kickoff-app.zip"是一个理想的起点,它让你快速体验JavaEE应用的开发流程。通过学习和实践,你将逐渐掌握企业级应用开发的核心技术,并为更复杂的系统设计打下坚实基础。

    TEMPLATE_KICK-OFF_MEETING

    **启动会议(Kick-Off Meeting)**是项目管理中的一个重要环节,旨在确保所有项目参与者对项目的范围、目标及期望有清晰一致的理解。通过这样的会议,可以有效地提高团队成员之间的沟通效率,减少后续工作中可能出现...

    kick-off-koa-workshop

    "kick-off-koa-workshop" 是一个以Koa框架为主题的编程工作坊,主要关注JavaScript技术。Koa是Node.js平台上的一款轻量级Web应用框架,由Express团队成员开发,设计目的是提升开发体验和效率,强调使用现代...

    Kickoff一个连续的网站监控工具

    "Kickoff"是一个专为此目的设计的工具,它是一个连续的网站监控解决方案,能够在项目启动前或部署后自动对需求列表中的进程进行验证。这个工具的引入旨在集成到标准的软件交付流程中,帮助开发者及时发现并解决问题...

    kick-off-koa-answers:完整的所有启动Koa练习的答案

    **Koa 框架详解** Koa 是一个由 Express 团队开发的下一代 Node.js Web 应用框架,它以其简洁的语法和...通过 "kick-off-koa-answers" 练习,你可以深入理解 Koa 的核心概念,并提升你的 JavaScript 和 Web 开发技能。

    【船级社】 BV NR 540 R04 Kick-off meeting templates for newbuilding

    【船级社】 BV NR 540 R04 Kick-off meeting templates for newbuilding Kick-off meeting templates for newbuilding 2021-07.pdf

    kick off longan

    kick off longan the document

    ERP系统信息化资料:SAP专业文档资料DIS-SCM Solution Kick-Off41.ppt

    ERP系统信息化资料:SAP专业文档资料DIS-SCM Solution Kick-Off41.ppt

    ERP信息化系统:Kickoff-Presentation for BP for Flat_SAP项目启动PPT-英文版.ppt

    在"ERP信息化系统: Kickoff-Presentation for BP for Flat_SAP项目启动PPT-英文版.ppt"中,我们看到了一个SAP项目启动的关键环节——项目启动会议的介绍。这个会议通常标志着项目正式开始,并确定了项目的整体方向和...

    Apache CXF开发Web Service 开发Web Service之Kick Start

    4. 在Eclipse中,可以使用CXF插件生成服务端点和客户端代理类,简化开发流程。 5. 编译并运行项目,将服务发布到一个支持CXF的服务器,如Jetty或Tomcat。 6. 最后,编写客户端代码,使用生成的代理类调用Web服务。 ...

    hudl-kickoff-dark-syntax:Hudl启动深色语法主题

    【hudl-kickoff-dark-syntax】是一个专门为编程环境设计的深色语法主题,它源于Hudl公司的启动项目。在编程领域,语法主题是编辑器或IDE(集成开发环境)中用于高亮显示代码的不同部分的颜色方案。深色主题尤其受到...

    Python库 | kickoff-0.5.6.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:kickoff-0.5.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    ERP系统信息化资料:SAP专业培训教材 SAP 制药-Kick off Meeting.ppt

    ERP系统信息化资料:SAP专业培训教材 SAP 制药-Kick off Meeting.ppt

    App Developer Day Kickoff

    Start the day with valuable recommendations for your iOS 7 development. Get inspired by the powerful new capabilities of iPhone 5s and gain key insights into creating next-generation apps on iOS 7.

    ERP系统信息化资料:SAP专业培训教材 kick off 2006-11-5.ppt

    ERP系统信息化资料:SAP专业培训教材 kick off 2006-11-5.ppt

    01-bootstrap-kickoff-template:引导启动模板

    "01-bootstrap-kickoff-template" 是一个基于Bootstrap框架的起始模板,旨在为开发者提供一个快速构建网页布局的基础。Bootstrap是一种广泛使用的开源前端开发框架,它提供了丰富的组件、响应式设计和易于定制的特性...

    Spring-Carnival-Kickoff

    Spring MVC是Spring框架的一部分,专为构建Web应用设计,提供了模型-视图-控制器模式的实现。 对于HTML,它是超文本标记语言,是创建网页的标准标记语言。HTML5是其最新版本,增加了许多新特性,如离线存储、拖放...

    kick-off-bootstrap:bootstrap 教程

    例如,GitHub上的"kick-off-bootstrap-master"项目就是一个很好的起点,它提供了简单的示例代码,帮助你开始你的Bootstrap之旅。 总结: Bootstrap通过提供简洁的HTML类名和强大的组件库,降低了前端开发的复杂性,...

    LDL-Legacy-Kickoff:Bootstrap 2.3.2 的 Kickoff 版本

    关于 LDL-Kickoff 入门套件 入门套件是 Codekit 的“启动”脚手架,基于由 The Hive Media 制作的“CODEKIT Kickoff”脚手架。 它的工作是简化和分离我们可能用来将网站组合成一组部件的所有离散元素,加快设计和...

    ERP系统信息化资料:ERP II Kickoff大纲.ppt

    ERP系统信息化资料:ERP II Kickoff大纲.ppt

Global site tag (gtag.js) - Google Analytics