草稿思路之企业开发平台 - (一)
序:
前两天写了份三年工作总结,被入选到了CSDN首页,对我个人是莫大的鼓励,说实话我的csdn账号是2003年注册的,至今已有十年,
这十年我很少发表技术文章,深感惭愧。以后要多写,在多写的过程中更容易能让自己做细致的思考,能到一个更深的深度。
在我的总结文章里面提到了2013年要做企业开发平台的计划,有很多朋友也都给留言提了很好的意见,也有很多朋友在csdn上把我加了关注,
所以自己的计划既然公布了出来就不能不负责任的销声匿迹吧,所以只要有一点点新的想法就及时写出来跟大家分享和讨论,
在这里一律都先暂时起名"草稿思路"开头。
国内并不缺少有想法的程序员,缺的是把想法付诸于实践并最终实现的人,我目前只是把这个开发平台纳入2013年计划,年底是否能够全部顺利完成尚不能确定,
但是在2013年里面至少我去努力去做,一步一步向目标靠近,有努力有行动才能让自己真正有收获,而不是在这呐喊几句空头志向就没了下文。
2008年上半年在我读完struts2代码的时候就有写本书来揭秘其底层实现的想法,但是后来因为种种原因一直没行动,这件事情现在想想多少有点遗憾。
地点:济南大明湖畔
客户需求
1.要求运行在JDK4环境下,这点让我放弃了很多其他的设计思路;
2.所有的组件开发都要符合业务上需要
1,技术平台
技术平台基本就是写出个类SSH的思路,从前端到中间到数据库端完全自己封装原始的API来实现。
持久层框架:难度:低
客户不希望用一些配置繁琐的持久层框架,比较青睐直接写原生态的sql来编码,所以我在这一块打算就是对jdbc做一个
简单的封装即可了,至于数据库事务和存储过程是要必须支持的。核心方法就是需要客户传递2个参数,一个是原生态的sql,
一个是参数的数组对象,底层就是用java执行jdbc的数据库操作。
额外需要在数据库连接中判断数据库的类型,然后根据数据库的类型根据需要来自动添加能分页的SQL片段。
中间层框架:难度:低
这一块不打算重新做轮子,就是直接使用spring框架即可,不过需要选个版本低的,保证能在jdk4下运行
前端层框架:难度:中
说白了这块就是封装核心的处理类,一般都是经过某一个专门的servlet或filter,
然后统一根据url映射到客户自定义的处理类并返回到定义的页面,
依照现在客户的需求来看,写出类似struts1简单小巧的mvc框架就可以满足.
稍微复杂点尤其是难调试的就是封装标签库上,因为我现在客户那边的业务翻来覆去基本就是那么几个界面要求,
页面控件就是那么固定几个,页面控件都是用js来辅助达到要求的,所以需要在标签库里面封装的时候需要和JS代码进行结合。
一种结合方式是采用struts1的方式:java代码里面直接套入html标签和调用js代码
一种结合方式是java代码里面调用模板引擎生成html代码和调用或含有js的代码
页面前端控件实现的核心还是js,需要用js来实现一些效果,
比如:分页效果,页面局部刷新控制,对话框效果,信息提示,加载等待信息,数据验证,带分页的表格,选项卡,日期,手风琴,树形控件等还有封装ajax提交工具方法。
打算这块直接采用开源的js库,目前考虑的是jquery和yui3,比较而言jquery更容易接受,
而且还有很多的jquery插件提供了实现我说的页面控件效果,所以这块可以考虑在上面进行二次开发。
在这里再声明下,我目前要求的控件效果完全是根据我的业务来定制开发的,并不是对所有万能业务都适合。
页面控件实现形式基本都是采用jquery插件形式,这样在使用的时候会更加方便。
手工写js代码,也要求一律用面向对象的思维来编写,统一进行封装。
在控件里面最复杂的算是表格控件了,先介绍下表格控件的实现要求:
大家可以先看看jquery的一个插件FlexiGrid,官方网站:http://code.google.com/p/flexigrid/
实现效果跟Extjs表格很相似,不过这个控件提供的功能还不足以满足业务的需要,还需做些二次开发。
技术平台扩展要求:
a:客户如果需要改用其他的持久层框架,可以直接嵌入进来,把需要配置的地方放到中间层Spring里面b:持久层的事务,可以在Spring里面用AOP控制也可以在JDBC层来进行手工控制
c:mvc框架要支持插件形式,技术架构上需要考虑支持。
d:客户的环境允许安装高版本的JDK,那么可以考虑把平台中的某个插件或框架升级版本,、
也可以考虑把某个其中的框架替换成另外支持高版本JDK的框架
业务平台:
4,权限组织机构: 难度:容易
关于组织机构,这个要看具体的业务,一般来讲实现方式都会有这么几个概念:
员工信息,公司或部门或机构,岗位,职务,业务组;
关于权限无非包括控制资源和菜单的访问或显示,这点毫无争议。
在权限上需要考虑权限的继承以及对某特定的人授予权限。
5,工作流:难度:中等
这块资料就相对多些,老外在这方面的实现也完全满足不了符合中国国情的工作流需求,
即使在某个行业内也没有完全的审批标准,
可能中间的某些环节上遇到了一位个性的领导,你的流程引擎就可能会有改动。
现在国内很多公司都有了自己的工作流产品,根据自己的业务情况也很容易总结出来实现方式。
关于流程设计器,我倾向用javascript的方式来实现,这一块算是一个重点。
6,报表工具: 难度:高
这块我主要是讲完全能解决复杂中国式报表的报表工具,所以对于老外提供的报表工具大多可以完全忽略。
最常见的就是多级分组和交叉报表,还有:填报,图表,精确打印等。
实现方式我个人比较认可以类Excel表格的形式来进行拖拽式设计报表。
国内有专门的实现这种需求的报表工具软件公司,成立时间都不长,靠一个报表产品就足以支撑整个公司的生存,
真可谓:一招鲜吃遍天。
国内能做出来这个工具的公司很少,济南的浪潮楼上平台已经开发多年,唯独缺少报表工具。
由于这块难度比较大,所以我计划把这块放到最后,打算长线研究,
业余任何时间有好的想法就突击突击,虽然我没有足够的把握能够完全搞定,
研究到一定程度上没有更多进展的时候就及时调整主攻其他的组件。
别人用一个团队做了多年的产品,不是随便一个人一夜间就能搞出来的,
更何况我是单兵作战,还不是狙击手,时间上也不能保证是全职。
外围工具:
主要是指我打算用swing来实现的一些外围工具,优先级和难度都不大,故先不整理思路。
重新整理主攻的方向顺序:
持久层框架>MVC框架(含标签库)>权限组织机构>工作流>报表