技术开发7年总结

长期以来一直做技术类工作,对于项目构架上有一定的理解,也做了一些尝试。

首先从开发框架来说,SSH基本上没有什么可说的,当然也也有人用一些其他的开源框架例如playframe等这类东西。但是我还是看好SSH这种三层架构模式,很清晰,即使在一些特殊需求下,可能会在控制层之前加装一些权限拦截层,在服务层之后加入一些例如日志或者自动通知等功能,都可以靠简单的扩展即可实现。对于小公司和中小项目比较实用,框架不必要太复杂。

简单列举下使用与研究过的开源JAVA项目:框架类的 acegi (Spring security) ,lucene,james,Ibatis( mybatis),FreeMark,CGLIB,axis(axis2)等等,还有一些偏向工具类的例如dom4j,ant.poi,jacob,等等。
 
对于OA工作流,这样的产品也有接触,JBPM3、activite5都了解过,但是没有进行商用,这个主要的原因是项目的需求问题,党政内网的OA系统,其办事流程比较随意,基本上是以人为单位进行流转,对角色的概念比较模糊,且流转过程比较随意,也没有必要针对每个模块定义工作流程。因此目前我实施的项目基本上都是使用自己开发的一个简单的工作流系统,记录简单的分发流水账,实现基本的工作流实例建立、发送、退回、取回、转发、办结、流转历史查询等功能。已经能够满足当前的项目需求。

对于一个项目给最终用户的感觉是否好用,主要是还是在前台展现上。而且对于一个开发人员来讲,现在前台的开发时间可占到7成以上,因此前台UI组件直接影响到整个项目的成功与否(用户体验的上升,开发成本的下降,以及未来维护成本的下降)。

目前我现在基本关注还都在JavaScript UI上,因此其他技术的前台展现先不提,市面上主要分为类似以Jquery这类JS框架封装的,轻量级UI组件,以及Extjs这样的重量级的组件。我感觉没有什么优劣之分,项目适用最好。适用就有个什么样的项目倾向什么东西的问题。例如我在门户前台展现上,喜欢使用Jquery,其大量的特效插件可以很好的支持项目运行,在后台管理的界面上, Extjs其优秀的设计与功能齐全的widget组件能得到更好的使用体验。




有关快速开发平台之类的也做了一些尝试,由于目前没有机会去真正的实现一回。因此定义为思考更好一点。目前我接触到的快速开发平台基本上两类,第一类,运行期间配置化,表单定制+数据绑定+工作流,第二类,运行前代码生成(appFuse) 的思想。第一类流程驱动表单和数据,第二类,是先抽象好业务的模型,然后根据业务配置模型,然后自动生成代码,当然,也有第三类,先代码生成,如果再有特殊需求,可以用一些工具进行配置化。

作为所有平台核心的工作流与业务表单的集成,现在也基本上两个方案,第一,表单的数据作为工作流中的流程变量,进入到工作流系统当中去,第二,就是流程与表单完全解耦,独立存储。其实两种实现没有本质的区别,只是在查询的时候需要按照不同的设计去实现。我比较倾向的一种方案是,表单独立存储,但是流程环境变量中也存表单数据,这样能兼顾两种存储方法的优点。

对于大多数的工作流应用来讲,流程变量一般都是表单字段,将表单数据存储在流程中,对流程控制有着先天的优势。而表单独立存储,是为了让表单数据的结构话,以便分析利用。

这里也有一个问题,表单数据一定是结构化的吗?在一开始最初接触到表单定制的时候,最关心的是如何让自定义的表单产生的数据存储在数据库中,一个表单一张表这个似乎是一个定式。当有表单字段加减或者修改的时候,如何通过工具在修改表单的时候同时也修改数据库结构?如果一个表单字段是多值的,如何保存这样的字段?对所有的表单进行查询的时候,我要怎么做?遍历所有表吗? 老的表单数据按照新的模板显示是否合理?

其实这些东西现在随着NoSql这种非结构化的数据库存储应用的出现感觉是不是能有一个简单的实现方法?

呵呵,最近在关注互联网、大数据这样的概念。也许是该动一动了,换换行业与环境不然就老了。

猜你喜欢

转载自rainytimes.iteye.com/blog/1971271