技术开发 频道

手把手教你定制自己的RTC

    3. 开发自己的Hello world服务插件

    现在,我们假设有一位用户,需要在创建完成一个项目区域(Project Area)后,自动生成一些特定的工作任务(work item),那么我们有没有办法来满足这位用户的要求呢。答案是肯定的。RTC提供两种方式自动添加work item。第一种是静态方式,即将需要生成的任务添加到process 模板,当项目区域初始化时,其自动分析模板并生成新任务。或者在项目区域生成但未初始化前,直接修改该项目区域的配置文件(项目区域的配置文件是process 模板的拷贝)。使用这种方式,具体的任务参数等是不能根据具体的项目状况灵活变化。第二种方式是动态的,它通过编程方式来生成工作任务,它可以根据不同的项目要求生成不同的工作任务。这种方式需要编写插件来扩展RTC提供的扩展点com.ibm.team.process.client.operationParticipants,并将该插件的ID加入到process 模板的follow-up action中(同样可以在项目区域初始化前将ID加入项目区域的配置文件)。本文介绍的是后一种方式。我们通过一个简单的服务器端插件的开发,详细介绍如何利用该扩展点来添加定制的follow-up活动。

    3.1 第一步:创建插件

    follow-up活动可以是客户端的活动,也可以是服务器端的活动。在本例中,我们示范如何创建服务器端的后续活动。为此,我们首先需要创建一个服务端插件com.sample.hello。 请按下面的示意在plugin.xml中添加OperationParticipant。在完成一个指定的operation后,系统会调用定义在operationParticipant中的参与者。

    这里,我们定义了一个com.ibm.team.process.server.initializeProjectArea operation的参与者,该参与者会在Project Area初始化活动结束时被调用。注意:参与者id会在后面的Process Template的follow up action中被引用。

    由于我们定义的是一个Server端的活动参与者,因此该参与者将作为一个Server端的Service被加入到服务器中。我们还需要添加<extensionService>。在这个元素中,需要指出所有该服务所需要用到的服务。

    接下来,我们创建具体的实现类com.sample.hello.process.service.internal.InitHelloWorkItem(见附件1),该类必须是com.ibm.team.repository.service.AbstractService。

    函数run(…)实现本服务。它首先获取所需要的服务实例,然后逐项获取创建work item所需的team area, category, worktiem type等,并将它们赋到新创建的work item中。最后保存该work item.

1
相关文章