代码生成器比较简单,要做的事情,就是定义模板,然后通过某些数据来源(表,pojo等)来组合成一些集合或者变量的定义,然后用这些定义放到定制好的模板文件里面就ok了,剩下的事情就是模板引擎的事情了,大致都是应用于增删改查、分页(当然,你可以定义一些配置文件的模板,顺便连这个也生成了),如果更复杂些,可能你会弄几套模板,生成不同框架、不同样式的东西,,
我说代码生成器简单,因为:
1、技术简单,用到的东西就是模板引擎
2、业务性简单,都是些固定的业务(增删改查等,当然你弄个登陆的模板也可以,但生成的东西只能作为项目的初始启动时候使用)
开发一个业务平台则非常困难,业务平台出发点,是提供一个完整的从开发、测试到工程的发布,以及维护的平台,其中规则的代码生成器(上述的代码生成器)在这个完整的平台里面,已经是很微小的模块了(只有表维护的时候,才用得上)。业务平台既然是提供一个完整的开发、发布和维护环境给项目,那么大致需要满足以下功能和要求:
1、可以在你这个平台上面创建你这个业务平台所能识别的项目
2、可以在你这个平台上面发布项目
3、既然是开发,那么需要支持版本管理(cvs、svn等)
4、既然是开发,那么就需要调试(除了debug代码外,最好能提供一个图元基本的流程调试功能,按照图元一个个的走,直观)
5、既然是开发,那么需要pojo的导入啊(业务平台很难重用现有的pojo工具,所以你得自己写一个)
6、既然是开发,应该有快捷的模块能生产表数据维护的流程、页面等
7、既然是业务平台,你不可能再让开发者一行行的敲打代码来实现逻辑吧?目前的常见的业务平台都用可视化的流程图来开发业务逻辑,那么你得弄一个可以拖拉的编辑器,来可视化的开发流程
8、居于7,你的可以拖拽的流程脚本,怎样让web容器所识别和运行?要么你底层写一个解析器,web启动的时候,加载这些流程脚本,然后运行的时候,进行解析运行,要么,你得想办法让这些流程脚本编译为代码,所以你还得写一个流程解析器(包括解析运行和编译为代码)
9、业务是多形式,多变化,不定性的,你的流程图可以灵活反应吗?能可以满足所有的业务吗?不能满足的时候,你又需要提供怎样的扩展机制来满足呢?这里涉及到很重要的一个环节:对业务模型的提取,这个是最难也是最重要的,影响到整个业务平台的可用性
10、居于8,生成脚本后,不管是最终是居于解析脚本解析运行,还是编译为代码,,这些还得居于一个底层(好像有点难理解,但想想,假如你生产的是ssh框架的ava代码,那么你的代码还得引用spring、hibernate等的api吧,但如果直接引用api能方便组合这些逻辑吗?肯定不可能,你还得居于这些mvc框架之上,进行整合,然后对流程提供更高级别的API,能让这些流程可以串起来运行)
11、居于10,既然需要底层框架,那么这个框架应该怎样去弄呢?抛开现有的mvc开源技术,完全自己写吗?写出来的东西可以稳定吗?能否真的能写出来?采用现有的流程框架,又有新的问题,这些框架组合起来,只适用敲打代码,手动配置配置文件使用,你想拖拽几下流程,就能完成从代码到配置的工作,视乎不现实,想想,可能又要改造下现有的ssh框架了,哇,一想到改造,就得去阅读这些框架的源代码,看看有没有好的切入点,另外,还得担心自己找的这个切入点是否适合,万一下次升级了,你的框架还能继续升级吗?
12、既然是业务平台,那么还得有报表吧,,自己写一个?不现实,实在需要太大的功夫,那么用开源的免费的吧,拿过来一看,发现整合到业务平台里面,根本就不合,要么没有好的配套的开发工具,要么这些开发工具和你的业务平台格格不入,然后找,好不容易找到一个和平台类似的,但要人性化操作,还得进行改造,改造什么?业务平台的底层解析器,可以方便支持;业务平台开发工具,可以和这个报表开发工具联合在一起,不过,得有耐心、和心理准备(你下载的报表代码,可能多的要命,可能是spring代码的几倍,而且也没有spring代码那么好阅读)
13、有些业务平台,可能还引入了工作流,,工作流?又自己写核心和开发工具吗?还是又用现有的,你肯定会犹豫很长时间,,
14、还得引入ajax方案,,自己实现吗?还是用开源的,如果你用开源的又会发现一堆格格不入的问题
15、你的业务平台底层框架,除了可以将一个业务流程走完之外,还得提供很多其他功能,例如,事务控制,安全、监控、缓存、sso、Portal等支持,,
16、作为一个业务平台,还得有些配套的后台,例如权限啊,监控啊,开发者不可能为每个业务都开发一个权限后台什么的,,
17、业务平台的定位,内部使用吗?还是作为产品对外呢?所以你得设计你的业务平台遵从那些标准,例如,sca、sdo之类(如果作为对外产品,这个定位很重要,目前国内的soa标准还没定好,如果你选择错了,到时候,soa标准定义好后,发现你这个平台和国家的soa标准格格不入,,到时候就难忽悠别人接受了)
居于以上的17个要素,开发一个业务平台确实比较难,风险也很大。。并非几个人能短时间能够实现的事情。
需要跨越:
技术难题,难题实在很多,可以肯定,当你开始开发的时候,你会经常发现Google原来真的没用。
设计理念,这个是关键,你也许会很茫然,不知道怎样可以划分层次和提取业务颗粒才是最合适的。
加qq群:180691852 下载可视化的快速开发平台
具体参考国内商业开源项目:http://www.langsotech.com/