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

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

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

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

    動態調用動態語言,第 2 部分: 在運行時尋找、執行和修改腳本

    發布: 2008-6-30 14:55 | 作者: 不詳 | 來源: 測試時代編輯整理 | 查看: 88次 | 進入軟件測試論壇討論

    領測軟件測試網

    Java SE 6 中新增的 Java 腳本編程 API 為運行用各種動態語言編寫的外部程序(并與之共享代碼和數據)提供了一種統一的方式。Java 應用程序與腳本語言的強大功能和靈活性相結合是非常有意義的,尤其是在腳本語言能夠更簡潔地執行某些任務的情況下。但是,Java 腳本編程 API 不僅僅能夠以一種統一的方式在 Java 程序中添加許多種腳本語言代碼,它還支持在運行時尋找、讀取和執行腳本?梢岳眠@些動態功能在程序運行時修改腳本,從而修改應用程序的邏輯。本文演示如何使用 Java 腳本編程 API 調用外部腳本來動態地修改程序邏輯。還要討論在將一種或多種腳本語言集成到 Java 應用程序中時可能遇到的問題。

    第 1 部分 用一個 Hello World 風格的應用程序介紹了 Java 腳本編程 API。這里將展示一個更真實的示例應用程序,這個程序使用腳本編程 API 創建一個動態的規則引擎,它可以以外部 Groovy、JavaScript 和 Ruby 腳本的形式定義規則。這些規則決定申請人是否符合某些抵押產品的住宅貸款條件。如果用腳本語言定義業務規則,規則就更容易編寫,也便于非程序員(比如貸款審查員)閱讀。通過使用 Java 腳本編程 API 將這些規則放在程序之外,還可以支持在應用程序運行時修改規則和添加新的抵押產品。

    真實的應用程序

    這個示例應用程序為虛構的 Shaky Ground Financial 公司處理住宅貸款申請。住宅抵押行業不斷地推出新的貸款產品,還常常修改對合格申請人的限制規則。Shaky Ground 公司不但希望能夠快速地添加和刪除抵押產品,還需要快速修改業務規則,從而控制哪些人符合產品的貸款條件。

    Java 腳本編程 API 正好能夠滿足這種需求。這個應用程序由一個 ScriptMortgageQualifier 類組成,這個類負責判斷打算購買某一資產的貸款人是否符合給定的抵押貸款產品的條件。清單 1 給出這個類。


    清單 1. ScriptMortgageQualifier 類
                   
    // Imports and Javadoc not shown.
    public class ScriptMortgageQualifier {
        private ScriptEngineManager scriptEngineManager = new ScriptEngineManager();

        public MortgageQualificationResult qualifyMortgage(
            Borrower borrower,
            Property property,
            Loan loan,
            File mortgageRulesFile
        ) throws FileNotFoundException, IllegalArgumentException, ScriptException
        {
            ScriptEngine scriptEngine = getEngineForFile(mortgageRulesFile);
            if (scriptEngine == null) {
                throw new IllegalArgumentException(
                    "No script engine on classpath to handle file: " + mortgageRulesFile
                );
            }

            // Make params accessible to scripts by adding to engine's context.
            scriptEngine.put("borrower", borrower);
            scriptEngine.put("property", property);
            scriptEngine.put("loan", loan);

            // Make return-value object available to scripts.
            MortgageQualificationResult scriptResult = new MortgageQualificationResult();
            scriptEngine.put("result", scriptResult);

            // Add an object scripts can call to exit early from processing.
            scriptEngine.put("scriptExit", new ScriptEarlyExit());

    延伸閱讀

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

    TAG: 動態 腳本 語言 運行


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>