| Profil de LinhaolinhaoxuPhotosBlogListes | Aide |
|
|
13 septembre 昨天答辩了,效果不怎么好,继续努力 昨天项目答辩了,本来中午一点的时候开始,结果由于和新生会议冲突,改到了晚上。不得已,翘掉二专课去答辩。我们是第一组上去的,应该说不是很成功,一个是策略的问题,没有突出讲Portal的特点,这点也是我的失误,最重要的还是功能根本就不健壮。
分数应该不是很高的,但是我也不太care分数,重要的是能够做出真正的产品。我想大家和我的想法一致吧。答辩已经结束,但是项目还在进行,我们只剩下九周的时间了,要完成后续的工作也有一定的难度。所以今天休息一下,明天继续奋斗。一定要把工作流那里搞好。 还有一个很大的失败就是一开始就没有定下来开发的环境,导致集成的时候很狼狈。明天一定要定下来。 加油! 4 août 临行前的最后一次小组会议 明天下午就回家了,我和Lay仔一路,LJ后天走,Kevin要等两周吧。最后一次的小组会议,主要是把后面的工作分了一下,每人负责一部分。呵呵,我还是完善消息,写测试文档,论坛实现,有空再搞成绩管理。Lay是工作流继续完善(文档流转部分)。Kevin负责Portal的集成和CMS接口。LJ完成现有的工作的集成之后再会师成绩管理。大概也就这样子了。还有就是一些联系方式什么的。 虽然定好了是这样的,但总感觉有很多不确定的因素存在。是的,我们在某些方面太幼稚了,还需要进一步的锻炼。说实话,对过去的六周的工作不是很满意(应该说是非常不满意)。不过也没办法,很多想好的事情最终变化很大,计划的东西永远都不可能实现。不过苦中还要作乐,即使再不利的情势也要保持一颗积极的心去面对挑战。现在不如意至少我们还有一个月的时间,我想我能实现自己的计划! 2 août doc, doc 22点钟整,终于把消息板设计文档的final版完成了,文档确实很烦人,主要觉得没什么意义。也许是我现在还没有感觉到文档的实际价值(就我们现在的项目来说)。现在做文档的意义不过是形式上的。CBoss一直说的文档不是很重要我想也有这方面的意思,但是问题文档是最后的评分必须的部分。比较矛盾。
我并不是否认文档在软件工程中的作用,但是就目前我们所做的项目来说确实是没什么必要花大力气来做的。我理解文档是保证软件进行的一种有效的方式,因为文档本来就是将工作记录的一种手段,方便在人出现问题的时候其他人能够根据文档替补上来,或者作为工作量衡量的一种方式,当然也可以作为技术或者经验的积累。问题是我们现在连最基本的需求文档还没有做好,该死的,我现在还要写它的final版。虽然说文档也可以叠代的,但是像需求这种文档确定下来是很难变化的,尤其是在双方达成一致之后,改变需求的代价是很高的。而且需求的作用在于对后面的设计、编码、测试的指导作用,所有的都会根据需求来做的(理论上),所以当一份需求确定之后却经常变化,导致需求和设计、编码、测试脱节的时候,它存在的意义就不是很大了。同样的设计文档之类的也是这样的。无非都是面子工程。 明天还要和庄jj谈成绩管理的需求,真的很郁闷,不知道什么时候才能确定下来。final了! 1 août 读辛弃疾的词,提高战斗力!很长时间没有看诗词类的东西了,今天看了看全宋词中辛弃疾的几首,觉得挺有感觉。
摸鱼儿(观潮上叶丞相)
望飞来、半空鸥鹭。须臾动地鼙鼓。截江组练驱山去,鏖战未收貔虎。朝又暮。诮惯得、吴儿不怕蛟龙怒。风波平步。看红旆惊飞,跳鱼直上,蹙踏浪花舞。 凭谁问,万里长鲸吞吐。人间儿戏千弩。滔天力倦知何事,白马素车东去。堪恨处。人道是、子胥冤愤终千古。功名自误。谩教得陶朱,五湖西子,一舸弄烟雨。 菩萨蛮(书江西造口壁)
郁孤台下清江水。中间多少行人泪。西北望长安。可怜无数山。 青山遮不住。毕竟江流去。江晚正愁予。山深闻鹧鸪。 破阵子(为陈同甫赋壮词以寄之 ) 醉里挑灯看剑,梦回吹角连营。八百里分麾下炙,五十弦翻塞外声,沙场秋点兵。 马作的卢飞快,弓如霹雳弦惊。了却君王天下事,赢得生前身后名,可怜白发生。
31 juillet 用一周的时间来准备后面的一个月 基本上打算下周五打道回府,在家里肯定也不能闲着。下周除了写出所有的文档(总结可以暂缓)之外最重要的任务就是要收集好资料已备回家只用。带个机箱也够受的了,再带书的话就会累死。打算就带本本和台式机的机箱回去,节省体力。资料的话肯定是一些电子书之类的,今天找到了《java与模式》的电子版,虽然是扫图的,但是也可以回家看了,不然带那本砖头不是肯定废掉了,假期准备再仔细的看看设计模式相关的东西,然后复习底层的数据结构(很多东西都忘记的说)。还要准备项目相关的书籍,比如什么structs,hibernate,spring,database,jboss,liferay,ejb,jsf,webservices等等的吧,都要找电子书带回去(现在已经收集了40G了,呵呵),软件之类的也要带一些,尤其是在公共网上不好找的那些软件,必须带上。
晚饭出去吃的,和flyer、Lay,小盘鸡+羊肝+空心菜,简直是绝配,吃得很饱。这几天的模式是早上在东三,蛋饼+豆奶;中午在西区,酱拌面or(饭+菜)or水饺+肉夹馍;晚上华联,印尼炒饭or回味炒饭or**盖浇饭。吃得有些腻了,还是经常变化以下会比较好,不然没胃口。
今天下载了几个屏保(ms一年多没搞这东西了),比较喜欢法拉利的那个(很帅!)还有Figo的,Figo是我心目中男人的典型代表,这几天觉得LJ很像Figo(不要乱猜,绝对没有搞Gay的倾向)。如果Figo退役的话强烈建议去好莱坞发展,戏路应该很广,尤其是在美国这个盛产英雄的地方,演个美国大兵或者超人或者代替施瓦辛格都可以,不过如果演戏好的话当个oscar影帝也是有可能的。
这两天又踢了几局实况,把所有的主力都换成了自己身旁的的人,打244阵型,具体如下守门员:JBoss(呵呵);左边后卫、清道夫(大黄);右边后卫(CBoss);后腰(Lay);中场(LJ);左前卫(小黑);右前卫(小歪);左边锋(小强);右边锋(Kevin);两个中锋就是我和轻而。哈哈,绝对超强的实力,见一个灭一个,经常是5:0,6:0,主要通过这个来发泄一下。够变态吧。
开始大规模写文档 昨天开了个小会,决定下周一开始把文档赶制出来,当然以前写了一部分需求(基本写好,不过由于本周添加了需求,下周还得写好);设计部分各个模块也基本完成了,重要的是整合成一份像样的文档;测试还是重头戏,需要下功夫来写的;项目总结就先打个框架,具体的内容恐怕还得在回家之后写。
庄jj明天还会过来的,那部分界面今天还得赶出来让她再看看,也好确定需求。昨天顺便去CBoss那里介绍了一下目前的进展情况,也把我们现在面临的困难讲给了他,CBoss还是很支持我们的,对我们也比较‘仁慈’,有时觉得他就像一个大哥哥似的。不过还真的很感谢他,从去年的PRP到现在的大作业,我觉得CBoss是给我们帮助最大的人。我个人的崇拜偶像,就连他的体型我都崇拜,努力向CBoss看齐,不过最重要的还是知识。
29 juillet 不爽积累到一定的程度也要爆发 昨天是一个值得纪念的日子,在群里发了许多的牢骚,也说了许多比较严重的话。不过今天一早就有点现实了。
LJ说我昨天晚上说梦话了,好像是在骂人。哈哈,也许真的太激动了。怪不得今天上午就觉得没精神,小睡一觉才恢复过来。昨晚睡看来得很累,没办法。
为了纪念,我把昨天的群里的记录都保存了下来,不过不能贴在这里。有些话也就是说过就过了,不想重提了,不过也许等项目结束的时候再看会有新的体会。
别的组差不多都结下来了,要做的只是测试和扫尾工作了。苍蝇说下周就没事了,还约我去游泳。我估计是没那么多时间了。这个假期比较衰,办了个游泳证结果只游了一次,而且还因为游泳而感冒。看来鸡年不宜游泳,等鸭子年再游!
今天下午庄jj又来谈了谈新加的需求,讨论的比较细。做这个东西还是有一定的难度的,还是慢慢来吧。先把文档流转设计好再说。不过周末还得把界面拿出来。blog上这几天比较多牢骚,以后要少发,注意控制自己的情绪。还是多贴一些技术和学习体会比较好。
28 juillet 又一个风险降临了 昨天Lay仔的机器的硬盘坏掉了,以前的资料都不能读了,还好他重新装了系统,我的移动硬盘中也有他以前的备份,不过近几天的代码和文档是完全废掉了。都是一开始CVS就没坚持用起来,还好损失不是很大。不过大家应该注意备份自己的文档和代码,如果出现问题的话那损失可是巨大的。
今天上午给全体Stakeholder发了email,希望他们提供工作流程的具体描述,而且写了请假和借设备的简单例子可以作为模版来仿写,不然让我们这些没有实际工作经验的学生去拍脑袋想老师们的工作流程,就算做出来也是没有用的。其实前期我们已经做了很多的调研工作,包括直接找相关的老师,不过那时候最终需求还没有定下来,所以整理出来的比较杂,范围也比较广。现在很多老师都不在软件大楼了,面对面交谈的机会很少,只能靠email了。不过庄jj还是很快回了信。刚刚我看了,不知道是该哭还是该笑:我觉得自己写得很清楚了“要得是工作流程的描述”结果她发过来的8条都是设备管理方面的注意点,ft了,设备管理都快编码完成了,居然又有注意点。不过还是谢谢她的回复,不知道LJ和Kevin看到之后会有什么反应(MN是必然的)。
风险一个个的到来了。。。开始的时候我们并没有预计到这么多的事情,还真是困难。不过我不下地狱谁下地狱呢。能有时间写当然会加紧时间了,不过越来越感觉项目不能完成了。
26 juillet 目前的项目进度 现在是项目开始的第五周,还有九天就回家了。回想一下走过的一个月,感觉还是很紧张的。但是从项目的总体进展来看还是没有达到预期的目标。主要的原因前面几篇也谈过了,不过主观上的原因也是蛮大的,最起码没有做到100%的时间都在工作(这个似乎很难)。
今天和小组的几个人都谈了一下,了解了一下大家的进度:Kevin的校历和联系簿已经做好了,现在在搞CMS,因为我们的工作流这边要用到文档流转,需要一个内容管理的部分;Lay在写好一个osworkflow的demo之后在整理设计文档,框架几乎也搭出来了,就等大家把各自的部分加入进去;LJ那边做图书管理和设备管理,设计已经完成的差不多,但是编码乐观的来说也要本周末才能完成;我这边在完成了工作流的界面设计之后也把公共消息平台设计出来了,Demo也完成,就差设计文档没有完成,估计明天也能够结下来。
这样的话,明天我和Lay基本上就能够把手头现有的工作完成,然后的工作就是开发新的工作流,包括去获取新的工作流需求(这还需要许多老师的参与,工作也不轻,争取在周末之前尽量的把这些工作流整理出来、文档化,然后实现两个)。GQ的CMS估计这周也能够有所突破,希望他能够在这周搞好,然后我们就可以进行最重要的文档流转的工作了。今天上午又和庄jj谈了新增的成绩管理的部分的需求和界面,她也给我发来了她的界面demo和一些意见(效率真高,赞一个)。可能成绩管理的部分正好在GQ或者LG完成现有的工作之后可以开展设计和编码(乐观估计是下周开始)。估计最后一周能够把成绩管理做完。
本来打算这周给JBoss看看我们做好的东西,不过因为暂时还没有集成,很多都是代码,估计看也不会有什么好的效果,不过还是要向他老人家报告一下进度(这似乎是一个好的习惯,至少每周报告一下,让Boss也对我们的工作有所了解)。还是现在就发email吧,再晚了恐怕不好。
开始工作!
25 juillet 几个论坛的比较 Portal中要集成教师论坛,不过在我看来,单纯实现一个高质量的论坛的话也够某些组做整个暑假的了。没办法,只能集成现有的论坛了。随便到网上搜了一下,发现PHP做的论坛很多,大名鼎鼎的就数PHPbb了,java的也不少,不过做得比较好的jive确是收费的Pro版的都要2500美元,Ent版的居然8500美元。资本主义真是有钱呀。。。(那我们做好这个系统的话不知道可以卖多少钱?Boss们有没有考虑给点酬劳呀--白日做梦了)
国内的也有不错的,jute,可惜也是要钱的,不符合我们的原则(集成的都要用开源免费产品)。不过还是找到两个比较不错的开源forum。一个是mvnForum,ms是越南人开发的。突然想到那天QAD的Hong在讲座上说的“中国的软件天天喊赶超印度,在我看来也就和越南差不多”,当时还觉得是在开玩笑。。。基本上做得还是很好的,所有我在需求中说明的部分它都实现了,整体的运行速度也不错。
还有一个就是JForum看上去界面更像PHPbb,但是总觉得速度太慢,点一下都要三秒钟才反应,虽然我的机器很滥,但估计学院的服务器也强不到哪去。还是忍痛割爱了。先用用mvnForum吧,至少还支持sqlserver呢。不过虽然是集成开源,但是设计还是要做的,也就是说源代码必须搞清楚, 把它分析透。这也不是一项很容易的事情。
论坛的事情暂时告一个段落。现在的任务是把消息板的设计文档完成,同时再考虑文档流转的工作流的实现,这周应该能完成的。如果有时间就考虑一下Miss Zhuang新增的成绩管理模块。今天上午谈完需求,下午写好需求文档发给她了,不过说还有些地方要改。应该快点找她,确定下来。这就开始干。
项目第五周 -- 增加需求 今天上午庄老师又给我们添加了需求,要增加一个成绩管理的模块。本来都觉得在规定的时间内做完有些困难,没想到更糟糕的情况会出现。需求变化是很麻烦的事情,这也是其他的组所不能遇到的情况。如果说这次暑假大作业有什么收获的话,我们最大的收获就是真正的自己面对客户和最终使用者。其他的组虽然也是做比较实际的东西,但多是需求确定,有助教和导师,技术上的问题也不是很大(毕竟学院要求助教必须把自己负责的项目吃透)。我们的虽然在技术上也不是很困难(现在把工作流搞通之后发现的,在这之前还不好说),但是在需求方面确实花费的时间很多,单单是需求确定都要到第三周才确定好,现在又要加需求。。。
真正的做项目应该比这个的变化还要大吧,不过实际中往往是baseline定好之后再修改的话要么加钱、要么时间延长,我们一没有钱、二没有得到时间可以延长的承诺。现在对项目的信心不是很大,主要担心在集成的时候会出问题。按照现在的进度各个模块开发完成是可能的,但是要集中到Portal中恐怕还需要放假回来突击几天。文档也是问题。现在的设计中往往会犯一个毛病,就是设计者会根据自己的想法去“需求镀金”,很多需求上没写的东西在设计中却体现了(虽然这对于客户是好事,但无形中增加了自己的劳动量)。而且需求的作用就没有体现出来了。
进度的把握还不是很好,总是拖、拖、拖,难道没有人监督就真的会懒散?我倒没觉得自己有很懒散,除了生病那几天有些请假。不过感觉上大家都好像动力不足。不管怎样,自己坚持自己的方式,还剩不到两周的时间,努力做到最好。
22 juillet 感冒基本康复,全身心投入工作 上午去了校医室,医生给开了白加黑、头孢拉定以及 草珊瑚含片。吃过之后就觉得昏昏欲睡,决定请一天假回寝室养病。医生说不要洗冷水澡,不要吹电扇。。睡出一身汗,不过感觉好多了,热水澡洗起来也蛮舒服的。中午1点钟睡醒,吃了两片饼干,又吃了一次药。继续睡。。下午五点钟醒来,感觉差不多好了,只是有点咳嗽。决定去机房工作,轻伤不下火线嘛。
Lay已经把Demo完成了,晚上又讨论了一些后台数据和架构上的细节问题,基本上还有一点hibernate上的问题,其他的架构上基本达成共识。剩下来的工作是写文档,收集工作流的具体信息,实现不同的工作流,集成Portal。不过周一要做成一个原型来给Boss们看看,这还需要一定的工作量。消息版这边我也差不多设计好了,周末编码实现就好了。
不知道LJ和Kevin那边进行得怎么样了,有机会得再讨论一下项目进度了。 风险降临了,我快挺不住了 强烈BS感冒,总觉得头昏昏沉沉。思考问题逻辑变得很混乱,本来打算昨天完成的任务却没有完成,一会寝室就困的不得了,很快就睡了。早上又是很早醒(MS是被铃声吵醒的)。感觉浑身一点力气都没有。吃过早饭要去校医室,虽然上次给了一些药,不过一点用也不管,还越来越严重了。
严重影响进度的风险,风险分析中虽然分析到了这个风险,但是解决的方法却没有。。。。
19 juillet 尝试写osworkflow 的流程定义 现在的初步考虑是事先将所有能够捕获到的工作流和将来可预期的工作流定义出来,然后开发相应的代码实。至于真正的”自定义流程并自动运行“恐怕是不能实现的。
先写个请假的吧,参考了Steven的请假的例子,但是我们的有所不同:
1. 请假流程的启动者就是请假者。
2. 请假的审批有两个动作,即同意和不同意,两个动作的结果导致了Step“结束”中的不同的状态(自定义)
3. Step“结束”中的动执行者也是请假者,即最后需要请假者确认审批者的结果。
4. 请假的时候要输入请假的具体信息(暂时考虑开始时间,结束时间,请假原因)需要参数输入并保存。
5. 审批者需要看到请假的详细地请假信息,并且把自己的审批结果意见作为参数保存并使最后请假者看到审批的意见。
具体的定义XML如下:(leave.xml)
17 juillet 项目总算步入正轨了 这周还是有一些收获的,需求文档完善了,而且通过了Jboss和Cboss的评审。技术上工作流这边选择osworkflow也得到了Cboss的肯定。现在的任务是开展设计工作,Kevin和LJ上周已经开始设计他们那边的部分了,我和Lay也进入了工作流和消息平台的设计,估计下周初就能完成设计的工作。下周末说不定能完成一些模块的原型,第五周的周一可以再把迭代的成果交给Boss们就可以开展第三轮的增量迭代了。不过要在剩下的三周内完成项目恐怕还是有困难的。而且现在的出功率不是很理想(虽然我们组应该是3101里出工最多的组)。不过就算回家也留不下多少东西了。
现在感觉和Lay仔的配合有了小小的默契,这种开发方式还是我比较习惯的。个人不太适合Kevin和LG的那种比较紧耦合的方式。不过也分人了,像Lay仔这种比较闷骚的人和我这种比较独立的人可能更适合稍松的方式。不管怎样,做出产品就是王道。
15 juillet 半夜睡不着,总结一下 今天不知道怎么的,就是睡不着了。自从进入大作业的阶段我就开始有些神经衰弱,晚上睡不着,早上一到五六点钟必醒,努力的睡都不会睡着。估计这样下去的话减肥是不成问题的。不过如果再这样的话还真得去看医生了。
项目的压力还是比较大的,虽然在小组里我总是表现得很乐观,这叫“战略上乐观,战术上就悲观”了。其实Lay仔的担心是不无道理的,想要在六周内完成这个项目确实很困难!上次听JBoss的意思如果做不完就要留在这里做到九月份。我确实不想待在这里,如果这个暑假再不回家的话,那过年也许也回不去,太没人性了。其实就项目本身来说,我们的项目要比其他许多组的要大很多,更加不爽的是需求还要完全自己来捕获(到stakeholder那里),当然我们收获是有的,这一点毋庸置疑。其实这个暑假大作业的目的就是让我们真正的将所需的知识、技术运用到项目上来,真正地走尽量的正规的开发过程。学院在这方面做得还是很够功夫的。
还说项目吧,由于在技术上的难点(工作流和数字签名)还有需求上的难点(文档流转和项目管理),我们在前两周基本上是在储备知识和捕获需求,这样导致了进度比别人慢了一周多。虽然CBoss和JBoss都说可以不按照学院的整体时间表走,但是我个人还是希望能够在规定的时间内做完的,不想再把工作带到家里。工作流这边是我和Lay仔在搞,Portal那边是LJ和kevin在搞,还有一些杂七杂八的东西就分开做。这样也好,避免了全部的兵力都向一个地方集结导致其他的方面太落后,不过大家在掌握好各自的部分之后要尽量的share自己的收获,这才是team。前些天总是早上第一个去机房,感觉空气很不好,再加上很早起精神不好,到了那里也没有什么效率,不过晚去也好不了哪去。所以还是决定走比较自虐的路:以后每天都八点钟去,11点回来(八点那里开门,晚上十一点寝室关门)。我想在将来的这一个月中这样度过,即使项目最后失败了,我也不会后悔!
受张老师的讲课的影响,总觉得做项目是在打仗。现在的感觉就是一个连的兵力在对抗一个营,敌人把我们包围了,很悲壮! 希望能够准时的突出重围!
小组的兄弟们,大家努力吧!突出重围不远了!
osworkflow+Jboss+MSSqlserver2000配置指南 决定用osworkflow了,选环境的时候大家决定用jboss3.2.6(配合Portal)数据库用SybaseASA9,可是Lay仔说Sybase在配置的时候有些问题(ms数据类型data的问题),正好我这里有SQLServer2000就搞搞试试。具体步骤如下:
1. 把SQLServer的三个驱动放在jboss-3.2.6\server\default\lib里,同时建立数据源:在jboss-3.2.6\server\default\deploy中建mssql-ds.xml,内容如下:
<datasources>
<local-tx-datasource> <jndi-name>jdbc/osworkflow</jndi-name> <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=osworkflow </connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class> <user-name>sa</user-name> <password>admin</password> </local-tx-datasource> </datasources>
2. 更改osworkflow-2.7.0\src\etc\deployment\jdbc\mssql.sql(这个sql文件好奇怪,比mysql少了好几个表)更改后的内容如下:
create table OS_WFENTRY
( ID int, NAME varchar(128), STATE smallint, primary key (ID) ); create table OS_CURRENTSTEP
( ID int, ENTRY_ID int, STEP_ID smallint, ACTION_ID smallint, OWNER varchar(20), START_DATE datetime, FINISH_DATE datetime, DUE_DATE datetime, STATUS varchar(20), CALLER varchar(20), primary key (ID), foreign key (ENTRY_ID) references OS_WFENTRY(ID) );
create table OS_HISTORYSTEP
( ID int, ENTRY_ID int, STEP_ID smallint, ACTION_ID smallint, OWNER varchar(20), START_DATE datetime, FINISH_DATE datetime, DUE_DATE datetime, STATUS varchar(20), CALLER varchar(20), primary key (ID), foreign key (ENTRY_ID) references OS_WFENTRY(ID) ); create table OS_CURRENTSTEP_PREV
( ID int, PREVIOUS_ID int, primary key (ID, PREVIOUS_ID), foreign key (ID) references OS_CURRENTSTEP(ID), foreign key (PREVIOUS_ID) references OS_HISTORYSTEP(ID) ); create table OS_HISTORYSTEP_PREV
( ID int, PREVIOUS_ID int, primary key (ID, PREVIOUS_ID), foreign key (ID) references OS_HISTORYSTEP(ID), foreign key (PREVIOUS_ID) references OS_HISTORYSTEP(ID) ); CREATE TABLE OS_PROPERTYENTRY
( GLOBAL_KEY varchar(255), ITEM_KEY varchar(255), ITEM_TYPE smallint, STRING_VALUE varchar(255), DATE_VALUE datetime, DATA_VALUE varbinary(2000), FLOAT_VALUE float, NUMBER_VALUE numeric, primary key (GLOBAL_KEY, ITEM_KEY) ); CREATE TABLE OS_STEPIDS ( ID bigint NOT NULL IDENTITY (1, 1), PRIMARY KEY (id) ); create table OS_USER
( USERNAME varchar(100) NOT NULL, PASSWORDHASH text, primary key (USERNAME), ); create table OS_GROUP
( GROUPNAME varchar(20) NOT NULL, primary key (GROUPNAME) ); create table OS_MEMBERSHIP ( USERNAME varchar(100) NOT NULL, GROUPNAME varchar(20) NOT NULL, primary key (USERNAME, GROUPNAME), foreign key (USERNAME) references OS_USER(USERNAME), foreign key (GROUPNAME) references OS_GROUP(GROUPNAME) ) 创建osworkflow数据库,执行sql,然后在里面插入几条记录
OS_MEMBERSHIP中test foos; test bars; test bazs
3.更改osworkflow.xml如下:
<osworkflow>
<persistence class="com.opensymphony.workflow.spi.jdbc.JDBCWorkflowStore"> <property key="datasource" value="java:jdbc/osworkflow"/>
<property key="entry.sequence" value="select count(*) + 1 from os_wfentry"/> <property key="entry.table" value="OS_WFENTRY"/> <property key="entry.id" value="ID"/> <property key="entry.name" value="NAME"/> <property key="entry.state" value="STATE"/> <property key="step.sequence" value="select sum(c1) + 1 from ( select 1 as tb, count (*) as c1
from os_currentstep union select 2 as tb, count(*) as c1 from os_historystep) as TabelaFinal"/> <property key="history.table" value="OS_HISTORYSTEP"/> <property key="current.table" value="OS_CURRENTSTEP"/> <property key="historyPrev.table" value="OS_HISTORYSTEP_PREV"/> <property key="currentPrev.table" value="OS_CURRENTSTEP_PREV"/> <property key="step.id" value="ID"/> <property key="step.entryId" value="ENTRY_ID"/> <property key="step.stepId" value="STEP_ID"/> <property key="step.actionId" value="ACTION_ID"/> <property key="step.owner" value="OWNER"/> <property key="step.caller" value="CALLER"/> <property key="step.startDate" value="START_DATE"/> <property key="step.finishDate" value="FINISH_DATE"/> <property key="step.dueDate" value="DUE_DATE"/> <property key="step.status" value="STATUS"/> <property key="step.previousId" value="PREVIOUS_ID"/> </persistence> <factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
<property key="resource" value="workflows.xml" /> </factory> </osworkflow> 4. 修改osuser.xml如下:
<opensymphony-user>
<provider class="com.opensymphony.user.provider.jdbc.JDBCAccessProvider"> <property name="user.table">os_user</property> <property name="group.table">os_group</property> <property name="membership.table">os_membership</property> <property name="user.name" >username</property> <property name="user.password">passwordhash</property> <property name="group.name">groupname</property> <property name="membership.userName" >username</property> <property name="membership.groupName">groupname</property> <property name="datasource">java:jdbc/osworkflow</property> </provider> <provider class="com.opensymphony.user.provider.jdbc.JDBCCredentialsProvider"> <property name="user.table">os_user</property> <property name="group.table">os_group</property> <property name="membership.table">os_membership</property> <property name="user.name" >username</property> <property name="user.password">passwordhash</property> <property name="group.name">groupname</property> <property name="membership.userName" >username</property> <property name="membership.groupName">groupname</property> <property name="datasource">java:jdbc/osworkflow</property> </provider> <provider class="com.opensymphony.user.provider.jdbc.JDBCProfileProvider"> <property name="user.table">os_user</property> <property name="group.table">os_group</property> <property name="membership.table">os_membership</property> <property name="user.name" >username</property> <property name="user.password">passwordhash</property> <property name="group.name">groupname</property> <property name="membership.userName" >username</property> <property name="membership.groupName">groupname</property> <property name="datasource">java:jdbc/osworkflow</property> </provider> <authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator" /> </opensymphony-user> 5. 创建propertyset.xml内容如下:
<propertysets>
<propertyset name="jdbc" class=
"com.opensymphony.module.propertyset.database.JDBCPropertySet">
<arg name="table.name" value="os_propertyentry"/> <arg name="col.globalKey" value="GLOBAL_KEY"/> <arg name="col.itemKey" value="ITEM_KEY"/> <arg name="col.itemType" value="ITEM_TYPE"/> <arg name="col.string" value="STRING_VALUE"/> <arg name="col.date" value="DATE_VALUE"/> <arg name="col.data" value="DATA_VALUE"/> <arg name="col.float" value="FLOAT_VALUE"/> <arg name="col.number" value="NUMBER_VALUE"/> <arg name="datasource" value="java:jdbc/osworkflow"/> <arg name="" value=""/> </propertyset> </propertysets> 14 juillet osworkflow果真好用 这几天在找开源的工作流引擎,一开始用国内的geniusflow,发现做的确实不怎么样;又换成wfmOpen,感觉也不是太好用。最终转向了osworkflow,果真如其介绍所说:
OSWorkflow is fairly different from most other workflow systems available, both commercially and in the open source world. What makes OSWorkflow different is that it is extremely flexible. This can be hard to grasp at first, however. For example, OSWorkflow does not mandate a graphical tool for developing workflows, and the recommended approach is to write the xml workflow descriptors 'by hand'. It is up to the application developer to provide this sort of integration, as well as any integration with existing code and databases. These may seem like problems to someone who is looking for a quick "plug-and-play" workflow solution, but we've found that such a solution never provides enough flexibility to properly fulfill all requirements in a full-blown application.
OSWorkflow gives you this flexibility. OSWorkflow can be considered a "low level" workflow implementation. Situations like "loops" and "conditions" that might be represented by a graphical icon in other workflow systems must be "coded" in OSWorkflow. That's not to say that actual code is needed to implement situations like this, but a scripting language must be employed to specify these conditions. It is not expected that a non-technical user modify workflow. We've found that although some systems provide GUIs that allow for simple editing of workflows, the applications surrounding the workflow usually end up damaged when changes like these are made. We believe it is best for these changes to be made by a developer who is aware of each change. Having said that, the latest version provides a GUI designer that can help with the editing of the workflow.OSWorkflow is based heavily on the concept of the finite state machine. Each state in represented by the combination of a step ID and a status. A transition from one state to another cannot happen without an action occuring first. There are always at least one or more active states during the lifetime of a workflow. These simple concepts are what lie at the core of the OSWorkflow engine and allow a simple XML file to be translated in to business workflow processes. 7 juillet 需求终于定下了 项目进行了11天了,需求总算初步搞定。真是很搞笑,以前我们所认为的系统需要做成的样子和现在所确定下来的基本上差别还是很大的。希望前期的需求捕获所耗费的时间不会不产生价值。其实相比其他的同学,我们的收获还是不小的,至少我们做的是一个真正的要拿来用的产品,其他人尽管也有做产品的,但是多数是科研背景或者即使是SME那种做好的项目抽取部分东西让大家做。其实其他人的需求都是很好捕获的,大不了问指导老师或者助教就可以确定下来了。我们还要问许多stakeholder和enduser,感觉交流起来还是很好的,但问题也有存在,比如:很多用户提出的要求都不是OA相关的,他们的需要和我们要做的系统是有一定的差距的;听到了很多的声音但是不知道谁的该做谁的不该做。。。
还好今天和jboss以及cboss谈过之后把需求的东西拍板下来,这样也方便我们以后工作的开展。我们的文档已经落后一个星期了,应该在这周搞定了。 |
|
|