osworkflow与spring的整合

    经过两天的辛勤努力,一个简单Spring+osworkflow结构的代码框架终于搭建好了,用Spring来管理bean和实现页面的跳转,osworkflow来实现业务流程,在页面上显示,使得按钮连接能够显示当前的状态,并且能够使流程前进,虽然这么一个看似简单的结构在以前也接触过,但是真的让我自己从头搭一个环境、只用该用的、不用多余的还真有点难,这里我不讲技术实现,因为对于实现来讲,大侠们都胸有成竹,我只想我今天遇到的问题和透过这些通过这些问题总结的经验。
    首先,要理解spring依赖注入的真正含义,哪些东西是需要我们自己手工新建的,哪些东西是spring能够帮我们做的,spring能帮我们做的事情就不要再做了,这样不仅仅是浪费时间,还不能达到你的目的。
    其次,osworkflow确实一个比较省心的工作流引擎,我也会尽量把它推广到我们的项目中,除了需要知道它的一些基本概念,跟spring配合的地方也要很清楚,这些东西在osworkflow的自带的文档里面都有解释。
    第三,osworkflow的一些自带表虽然脚本都是现成的了,但我还是发现它的Sybase版本有一些问题,一些ID应该声明为identity的,却没有声明,这是不能使主键自增的。它对自己表的操作虽然是通过内部hibernate工具实现的,但是最好还是要看懂,在os_wfentry表中,工程在跑的时候会去找一个叫version的字段,而这个字段是自带文档里不曾提及的,不知道这个字段是干什么用的,在spring的配置中sessionFactory的映射文件会找一个com/opensymphony/workflow/spi/hibernate/HibernateWorkflowEntry.hbm.xml的文件,在这个文件中确实定义了version字段,但是我不知道这是为什么。
    第四,在运行的时会发生类似java.lang.NoClassDefFoundError: net/sf/hibernate/expression/Criterion的错误,这是因为没有引入hibernate包的原因,我不明白,难道osworkflow里面的可选包都要用上吗,为什么它不说明应该说明那些包呢?我觉得我们在没有用什么特殊方法的情况下,只需要引用core包里的就够了,但是事实不是这样的,没办法,我只能把option包里的东西全都引入了,不想一个一个去找。
    第五,在运行的时候发生了一个警告: 2007-08-12 17:23:02,656 DEBUG [net.sf.hibernate.util.JDBCExceptionReporter]java.sql.SQLWarning:
 Language name in login record 'chinese' is not an official name on this SQL Server.  Using default 'us_english' from syslogins instead.貌似是我的什么字符集弄错了,但是查了网上的,说要改什么locales.dat文件,我的这个文件是正确的,但是还是包这个错,不知道为什么。
    下面说说值得总结的东西:
    1以前在上层开发惯了,现在要从spring的bean一个一个开始配置,确实绕了不少弯路,觉得这些东西应该知道底层的实现的比较好,要不真是知其然不知其所以然了。
    2,spring的数据源啥啥的真的是一个很迎合开发人员思想的框架,这里面蕴涵的东西很丰富,最好有时间能看看。
    3,对于osworkflow,我熟悉只是一些表面的配置文件啥啥的,内部的东西还是很多的,现在网上有很多这方面的评论,应该好好琢磨一下。 

你可能感兴趣的:(spring,bean,Hibernate,Sybase,文档,工作流引擎)