技术开发 频道

基于Jazz技术构建企业级Web2.0应用(3)

《基于Jazz技术构建企业级Web2.0应用》系列第一部分:数据模型设计与持久化

《基于Jazz技术构建企业级Web2.0应用》系列第二部分:服务层设计与实现

【IT168 专稿】

    本系列的第一、二部分分别介绍了基于Jazz的数据存储模型和业务服务的实现。本文作为本系列的第三部分,将结合第一部分中介绍的“PetStore用户购买宠物”用例的实现,介绍如何利用Jazz提供的Process构件来完成业务流程的管理。Process作为一个Jazz核心构件,用于定制Project Area、Team Area相关的准则和流程,支持软件项目团队制定符合自身需要的、包含了非常好的实践的流程和规范。Process的一个作用是为其它Jazz构件提供支持,从而实现其中某些操作的AOP,本文将对此进行详细介绍。

Jazz AOP介绍

    Jazz Process机制提供了operation作为切入点的表示(注意:除此之外,operation还是Jazz进行权限控制的手段,此处不做详细介绍)。任何一个Jazz构件都可以通过operation来封装一定的业务逻辑,从而允许Process在这段业务逻辑的执行过程中施加某些影响。影响的方式包括两种:前置通知和后续行为。在一个operation执行之前执行的前置通知称为advisor,在一个operation执行之后执行的后续行为称为participant。一个operation可以对应多个advisor和participant。当一个operation要被执行时,Process机制将首先执行它对应的所有advisor,如通过则执行operation,如operation执行正确则执行其所有的participant。需要注意的是,Jazz operation分为客户端operation和服务器端operation两种,分别运行在Jazz服务器和客户端(Rational Team Concert)上。服务器端operation及其advisor、participant的执行是在一个事务中进行的,任何错误都将导致整个过程回滚(即便是最后一个participant抛出异常);而客户端operation及其advisor、participant的执行不是在一个事务中,因而如果某个participant执行出错,将只会停止后续participant的执行,而不会导致前面操作结果的取消。

PetStore AOP设计

    从AOP的角度观察,PetStore中“用户购买宠物”这一行为应当作为一个切入点被抽取出来,以支持围绕该行为前后的事件,如在用户购买成功之后向用户发送一封email,告知已付费金额。

    在本文中,我们在PetStore中增加一个服务,以实现“用户购买宠物”这一功能,并通过引入Jazz Process控制机制,实现对“用户购买宠物”这一行为的AOP,包括:

    1.增加一个RPC服务ICustomerService,其中的buyProduct方法负责向用户提供购买宠物的业务接口。

    2.定义和实现一个服务器端的operation "buy",用于封装实现“用户购买宠物”的业务逻辑,它将被ICustomerService的实现类调用以实现buyProduct方法。

    3.定义和实现一个针对operation"buy"的participant "buyParticipant",负责在用户购买宠物成功后向其发送一封email,告知已付费金额。

    用户购买宠物的执行流程如图1所示。


    图1. 购买宠物操作的时序图

    注意:上图中的IServerProcess是由Jazz Process提供,负责服务器端operation的执行,下面将在实现过程中对其进行进一步介绍。

0
相关文章