码迷,mamicode.com
首页 > 编程语言 > 详细

Java引用js代码实现高效动态机制

时间:2017-10-11 22:32:29      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:java   高性能   设计理念   

        一直想分享一段10年Java web开发过程中,最满意一个软件项目的设计与实现,但总是由于自己的懒惰,不爱整理而停止不前,今天终于心血来潮,决定总结分享这段经历。

        面对互联网科技时代,作为一名高级软件工程,要想在程序员的道路上一直走下去,那么我们避免不了要开阔自己的脑洞,拥有新的设计理念,一个完美设计理念至少支撑一个产品线,一个坏的理念视乎只能支持一个功能点,未来互联时代要想在软件行业走的一直前行,那么必须走产品路线,最好的产品是支持这一条产品线上的任何个性化需求的。

        我之前的项目,就是从产品的理念出发,要求实现一个支持所有个性需求的项目。我们之前做的产品是对账。所谓对账就是两个文件之间中的各条记录,按照记录中唯一标识,对比金额,同时得到四种对账结果记录(金额一致,金额不一致,文件1多,文件2多)这四种结果。不同的对账结果有不同自动处理。同时我们的产品理念是可以支持多个系统间的对账,也就是说要支持不同格式的文件,不同的对账策略,不需要修改代码完成一个这样的产品的设计与实现。经过调研很久,最终我们决定使用Java代码引用js代码。也就是说通过页面配置js策略,然后利用对比文件的实现类解析js,实现超动态的产品效果。

        代码实现如下:解析js

        public Reconciliation createReconciliation(AccCheckCfg accCheckCfg){
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
         try {
            engine.eval(accCheckCfg.getJsScript());
            Reconciliation dydzwj = new Reconciliation();//定义对应实体
            if (engine instanceof Invocable) {
                Invocable invEngine = (Invocable) engine;
                invEngine.invokeFunction("putParameters", null, dydzwj,-1);//将脚本中定义的内容复制到dydzwj对象中。
                return  dydzwj;
            }
        
         } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
         return null;
    }

js实例:

function putParameters(pojoInfo,recLog){
pojoInfo.setAutoProcess("01");
pojoInfo.setAutoEsbPath("");
pojoInfo.setTempletPath("");
pojoInfo.setXpath1("/message/body/bankCode");
pojoInfo.setValue1(recLog.getAccSysCode());
pojoInfo.setXpath2("/message/body/transDate");
pojoInfo.setValue2(recLog.getAccCheckTime());
pojoInfo.setXpath3("/message/body/transCode");
pojoInfo.setValue3(recLog.getDataRec1Key());
pojoInfo.setRetXpath1("/message/body/transCode");
pojoInfo.setRetXpath2("/message/body/temp1");
pojoInfo.setRetXpath3("/message/body/temp2");
}


本文出自 “樵夫的扁担” 博客,谢绝转载!

Java引用js代码实现高效动态机制

标签:java   高性能   设计理念   

原文地址:http://8582235.blog.51cto.com/8572235/1971512

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!