论坛首页 Java企业应用论坛

为Tapestry做了个额外的功能:Tapestry webflow

浏览 8289 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-09-01  
嘿,Tapestry4-beta5修正了Tapestry-552bug,TWF与T4终于完成融合。

我现在很开心,郁闷了近两个星期终于完成了TWF与Tapestry4的融合。其实我一直想与更多朋友交流一下TWF的设计与实现。下面我先介绍一下:

TWF---Tapestry webflow。我为Tapestry量身定做了webflow实现。只所以要构造webflow实现,是因为我们公司技术框架整合的需要。我们公司有两个开发团队,一个团队使用存储过程+JSP的开发方式,一个团队使用Hibernate+Spring+Tapestry。为了技术整合,需要形成 存储过程+Spring+Tapestry的开发方式。而且其中要求或许有些特殊,Spring仅仅是作为存储过程与表现层的媒介,以单一接口的方式对存储过程进行调用,也就是说,Spring不承担任何业务逻辑。在这种情况下,Tapestry原有的开发方式显得不太方便。因为对于Tapestry来说,业务逻辑层是不可见的,而对于Spring来说,业务逻辑是不可控的。关于Spring与存储过程的单一接口方式融合,我一个同事在做。而Tapestry方面,则由我来添加一个额外的功能,即:webflow。

文档和示例的下载地址,希望大家多多提意见,以便我可以更完善TWF。
www.cdmcs.com/MyTapestry4-TWF.rar

文档是前段时间为Tapestry3开发webflow时所写,现在升级为T4以及JDK 5,因此文档有些地方的叙述并不准确,我不喜欢写文档,因为语文学得差嘛:)不过我觉得,代码就是程序员的第二语言,看示例或许更简单直接。这次我公布了源代码,并且也没有剔除注释,总之一句话,希望有兴趣的朋友能够多给点意见。

有很多不足的地方,我也正在优化中。~
   发表时间:2005-09-01  
这是我以前写的,对TWF的一些看法。其实每样东西都是有利有弊的。不同的立场和不同的环境,对同一事务的看法也就不一样。。。。其实对于我个人来说,TWF会不会真的成为公司框架的一部分,并且确实用起来。我反而并不怎么关心。。。我喜欢挖沙写代码,呵呵,足已。


引用
昨天,花了一天的时间终于写了个文档出来。我讨厌写文档,尤其讨厌花类图。。。。。唉,语文学得不好,就是这么没自信。

TWF,基本上整体的运作模式,已经确定下来,并且做了一个购物车示例。可能从来没有以系统分析师的角度来考虑整体表现层与业务逻辑层的关系,所以这个购物车示例花了我不少时间。我不得不承认,对于系统分析师的思维方式,我很不适应。不过,当我做完购物车示例,再写文档来讲解TWF的运作过程之后,我发觉,其实系统分析师这个角色,对于一个项目的整体设计来说,有其存在的价值。

前两天,飞哥发了一份办公室主任去参加什么四川省软件大会之后的报告给我。四川省,70%以上的软件公司是不超过50人的小公司。实际上,记得《程序员》杂志对2004年的统计,全国接近60%的软件公司是不超过40人的小公司,我们公司也是其中之一。在这种作坊式小公司,一个人可能必须得担当多个角色的工作。因此绝大多数情况下,项目经理也只能把有限的精力投入到项目的灵魂中去:业务逻辑层的设计。只要业务逻辑层设计合理,那么业务逻辑层的开发相当迅速,而且直接影响项目运行效率的绝大多数不合理,也都是出在业务逻辑层。而表现层,实际上是处于一种无关紧要却又非常影响项目进度的尴尬地位。很多时候,项目经理将目光投向表现层,并不是因为关注表现层,而是表现层的开发效率实在太慢,到了难以忍受的地步。而且,表现层这破玩意看似简单,实际上其深奥复杂及其重要性并不亚于业务逻辑层。

在javaeye上,已经有人在大声疾呼“Spring MVC的灵魂是Spring webflow”。可能每一个接触过表现层的程序员都知道MVC:Model-View-Control。MVC几乎是表现层的灵魂定律。可是又有几个人能够说得清楚,Model-View-Control的明显界限是什么?并且能够在程序中实实在在,界限分明地体现出来?

到目前为止,我见过MVC最界限分明的框架,是Spring webflow。首先,Spring webflow是建立在Spring MVC之上的,Spring MVC能够将view与Java逻辑分离出来。其次,Spring webflow通过对XML的定义,能够将Model从Java逻辑中脱离出来,这样Java逻辑就变得非常单纯,仅仅是Control。当做到MVC界限分明之后,一切就变得很有趣。。。这种有趣性可以在大公司,特别是外企体现出来。在外企,核心代码都是老外写的,普通程序员只需要调用接口就可以了。同样在表现层,只需要完成View即可,至于页面要怎么跳转,跳转到哪里去,怎么与业务逻辑层打交道。这些核心东西,当然不应该是一个普通程序员所需要关心的。

上次和冰箱去参加IBM的Webspere培训,课间闲暇,我们就和那个培训讲师闲聊,我们说:“HO~,你们这个Webspere上的页面做得好冈,里面有很多JS,开发花了不少时间吧?”那个讲师答曰:“无所谓呀,反正我们有的是人,webspere我们投资了10亿,有几千个程序员在开发。一个人一个月就只做一个页面嘛,也够了。”。。。。就算一个人一个月做一个页面,有100个人在做页面。如何协调这100个人的工作成果?。。。靠的就是统一的项目管理,靠的就是MVC界限分明。只要有个高级程序员开发小组来开发核心Control层,那么有多少个人做View层又有什么关系呢?。。。我打赌,在IBM做View层的程序员可能压根就不知道下一个跳转页面在哪里。

如果说,TWF承担了Spring webflow的工作,那么Tapestry就如同Spring MVC。这就是TWF存在的价值。
0 请登录后投票
   发表时间:2005-09-05  
恭喜,精华贴了!
0 请登录后投票
   发表时间:2005-09-13  
不明白你们公司为什么要整合框架
旧的框架开发效率低,应该可以淘汰了

而且整合框架肯定免不了降低两套框架的灵活性
0 请登录后投票
   发表时间:2005-09-14  
致楼主:
语文学的不好,并不能作为讨厌写文档的理由。

写文档需要很好的语文基础吗?不需要吧,只要你是中国人,会说中国话。

做出TWF这么好的东东,不好好写文档实在大可惜了!
0 请登录后投票
   发表时间:2005-09-14  
引用
不明白你们公司为什么要整合框架
旧的框架开发效率低,应该可以淘汰了

而且整合框架肯定免不了降低两套框架的灵活性

如果单纯讲技术的话呢,我也不支持公司这样做。但是公司有公司层面的理由,我也只能尽力做好公司安排的工作。

引用
语文学的不好,并不能作为讨厌写文档的理由。

写文档需要很好的语文基础吗?不需要吧,只要你是中国人,会说中国话。

你的看法很正确,“天下之事败于懒与私”,我会尽力克服懒病的:)呵呵。

这两天的《Java中国》大会,到是令我开了眼界。技术这东西实在更新太快。看着老虎JDK5的那么多新规范,着实有些头大。至于野马JDK6嘛,我也就只有一声长叹了。。。呵呵。。汗颜呀。。。每一个技术,如果没有实践磨练的温床,只会半路夭折。对于TWF嘛,就我目前的情况考虑,其实仅仅是自己练手的试验品而已。。。我不期望它能够带来任何收获,如果作为新手教程,能够为希望了解Tapestry4以及JDK 5的朋友带来一点点启示,我到是甚感欣慰。

另外,我很希望与大家对IOC及DI的设计模式进行讨论。因为TWF最开始是仿照Spring的配置文件做的,所以Spring的IoC及DI我也仿照做了一些,逐渐到后来,TWF才渐渐有了与webflow相关的特性,而剔除了与Spring类似的东西。我觉得自己好像是实现了IoC及DI,但是似乎心里又觉得不怎么妥当。。。查阅老外的一些资料,主要都是关于思想方面的讨论。。。因此我更有兴趣听听大家在实现方面的讨论。
0 请登录后投票
   发表时间:2005-11-09  
刚做的项目中采用了Spring WebFlow ,最开始我还是满怀欣喜的使用着,绝的很Cool.到后来开始感觉不爽了,先是DTD的低级错误。然后是刷新页面的问题。
这里问下楼主,可能是我使用的不当,在使用webflow中刷新页面会跳转到下一步,然而这是错误的,怎么解决呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics