• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    基于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"));
    	}
       	

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>