话说上次有前辈推荐学习敏捷开发方法,于是我去当当拖了两本书——《敏捷软件开发——原则、模式与实践》和《敏捷开发的艺术》,都是好书,受益匪浅。
但在这个项目里我是一个人在战斗,怎么办?只能和空气结对~我用Win7的便笺功能作为故事卡片贴桌面上;测试驱动是本来就这么干的;版本控制一直在用Google的code服务;客户只能又让自己兼了……
~~~~以上是胡扯,我是分割线~~~~
在这个发布版里,我重构了之前中期检查时那个版本的对象模型,BPEL元素的对象全部由JAXB来映射;考虑到一些命名空间的细节,我自创的BCP模型也稍作修改;完全重写了从BCP模型到BPEL模型的翻译过程;添加了一个获取方法参数列表的资源服务……
目前可以实现的流程还是那么多:纯顺序结构、混合顺序结构、与合并和与分叉结构。要体验完整的服务编排和执行,还是得依赖项目组的服务部署服务器和执行引擎(接下来的工作便是模拟一个自己的服务部署服务器和执行引擎)。
例如下图这个编排方式:
翻译后的BPEL代码为:(因为没有部署的服务,这段代码只算是一个骨架,没有具体的服务调用数据)
<process name="process" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
<documentation>This is a test BPEL code.</documentation>
<partnerLinks/>
<variables/>
<sequence>
<assign name="assign"/>
<flow>
<links>
<link name="link1"/>
<link name="link2"/>
<link name="link3"/>
<link name="link4"/>
<link name="link5"/>
</links>
<receive name="receive0">
<sources>
<source linkName="link1"/>
</sources>
</receive>
<assign>
<targets>
<target linkName="link1"/>
</targets>
<sources>
<source linkName="link2"/>
</sources>
</assign>
<flow>
<targets>
<target linkName="link2"/>
</targets>
<invoke name="invoke0">
<sources>
<source linkName="link3"/>
</sources>
</invoke>
<invoke name="invoke1">
<sources>
<source linkName="link4"/>
</sources>
</invoke>
</flow>
<assign>
<targets>
<joinCondition>$link3 and $link4</joinCondition>
<target linkName="link3"/>
<target linkName="link4"/>
</targets>
<sources>
<source linkName="link5"/>
</sources>
</assign>
<reply name="reply0">
<targets>
<target linkName="link5"/>
</targets>
</reply>
</flow>
</sequence>
</process>
整个部署包我已经上传到了我Google code的项目站点上,扔tomcat里就能跑,有兴趣的可以玩玩:地址