• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

基于RSA实现SIBus模型到Jacl脚本的转换

发布: 2008-6-18 10:11 | 作者: 不详 | 来源: 王 雪, IBM 中国软件开发实验室 SOA设计中心 软件工程师 | 查看: 114次 | 进入软件测试论坛讨论

领测软件测试网

4.4 定义转换规则(TransformationRule)

JET模板将Jacl脚本代码化,便于在后面的代码实现过程中调用。要实现SIBUS模型到Jacl脚本的转换,我们还需要定义若干转换规则。实际上,转换逻辑的实现正是封装在这些转换规则中,负责将源模型转化为目标模型或者部件的。转换规则的实现类实现了模型转换框架中提供的com.ibm.xtools.transform.core.AbstractRule接口。

这里,我们可以将所有的转换逻辑写在一条转换规则中,但是,为了代码编写的模块性和规范性,我们定义了若干转换规则,每条规则实现了逻辑上相对独立的一部分转换功能,若干条规则组合在一起实现整个转换功能。本例中,我们定义了七条转换规则:创建总线规则(CreateBusRule), 添加总线成员规则(AddBusMemberToBusRule), 创建目标规则(CreateDestinationRule),创建调解规则( CreateMediationRule),创建JMS连接工厂规则(CreateJMSConnectionFactoryRule), 创建JMS激活规范规则(CreateJMSActivationSpecificationRule),创建JMS队列规则(CreateJMSQueueRule)。每条转换规则都利用当前转换上下文(ITransformContext)中的源(Source),获取其相关属性,调用JET模板生成的Java类的generate方法,生成相应的Jacl脚本片断。清单3列出了CreateBusRule的部分源代码(其他规则源代码,请参阅附件Sibus2JaclTranRules.zip)。


清单 3. CreateBusRule部分源代码
protected Object createTarget(ITransformContext context) throws Exception {
		Object src = context.getSource();
		NamedElement busEle = (NamedElement)src;
		String busName = new String();
		busName = busEle.getName();		   
	    StringBuffer jaclContent = new StringBuffer();
		Map map = new HashMap();
		map.clear();
		map.put("busName",busName);
		jaclContent.append(new CreateBus().generate(map));
	    return new String(jaclContent.toString());    		
	}

在定义了所有的转换规则之后,根据转换的先后顺序,将以上规则添加到转换(Transform)中,在本例中,我们定义了一个扩展至UMLTransform的转换SIBusToJaclMainTransform,并在该转换的initialize()方法中,按照部署和配置顺序添加了以上规则,清单4列出了initialize()方法的部分源代码。


清单 4. initialize()方法的部分源代码
   	   	private void initialize() {
		add(new CreateBusRule(CreateBusRule.ID, "CreateBusRule"));
		add(new AddBusMemberToBusRule(AddBusMemberToBusRule.ID,
		"AddBusMemberToBusRule"));
		add(new CreateDestinationRule
		(CreateDestinationRule.ID, "CreateDestinationRule"));
		add(new CreateJMSActivationSpecificationRule
		(CreateJMSActivationSpecificationRule.ID,
		"CreateJMSActivationSpecificationRule"));
		add(new CreateJMSConnectionFactoryRule
		(CreateJMSConnectionFactoryRule.ID, 
		"CreateJMSConnectionFactoryRule"));		
		add(new CreateJMSQueueRule(CreateJMSQueueRule.ID, "CreateJMSQueueRule"));
		add(new CreateMediationRule(CreateMediationRule.ID,
		"CreateMediationRule"));
	}
   	

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网