• groovy


    1、加载和卸载(每次都新建一个GroovyClassLoader 实例,然后使用新建的classloader去加载)

    try {
                GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
                Class<?> clazz = groovyClassLoader.parseClass(orchestrationUnitDesc);
                GroovyObject unit = (GroovyObject) clazz.newInstance();
                result.setSuccess(true);
                result.setResult(unit);
                return result;
            } catch (InstantiationException e) {
                result.setSuccess(false);
                result.setErrorMsg("groovy:InstantiationException:" + e.getMessage());
                DataExchangeLogger.errorLog("", "", "groovy:InstantiationException", e);
            } catch (IllegalAccessException e) {
                result.setSuccess(false);
                result.setErrorMsg("groovy:IllegalAccessException:" + e.getMessage());
                DataExchangeLogger.errorLog("", "", "groovy:IllegalAccessException", e);
            } catch (Exception e) {
                result.setSuccess(false);
                result.setErrorMsg("groovy:Exception:" + e.getMessage());
                DataExchangeLogger.errorLog("", "", "groovy:Exception", e);
            }

    2、执行

       上面得到一个GroovyObject对象,执行方法就是调用GroovyObject的invokeMethod方法

    // > 获取编排单元
            GroovyObject unit = (GroovyObject) ServiceOrchestrationConfigManager.getOrchestrationUnit(message.getMsgType());
    
            if (unit == null) {
                result.setErrorCode(OpenErrorCode.S07.name());
                result.setErrorMsg("orchestrationScript is null.");
                result.setSuccess(false);
                return result;
            }
    
            // > 调用服务编排
            try {
                unit.invokeMethod("setDoc", CustomXmlUtil.parseText2Doc(message.getRequestString()));
                result = (SendResult) unit.invokeMethod("execute", message);
                if (result == null) {
                    result = new SendResult();
                    result.setErrorCode(OpenErrorCode.S07.name());
                    result.setErrorMsg("下发编排脚本执行,返回为空");
                    result.setSuccess(false);
                }
            } catch (DocumentException e) {
                result.setErrorCode(OpenErrorCode.S07.name());
                result.setErrorMsg("请求报文转docment对象异常" + e.getMessage());
                result.setSuccess(false);
                DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
                        "call service orchestration parseText2Doc error.", e);
                return result;
            } catch (Exception e) {
                result.setErrorCode(OpenErrorCode.S07.name());
                result.setErrorMsg("下发编排脚本执行异常" + e.getMessage());
                result.setSuccess(false);
                DataExchangeLogger.errorLog(message.getBizId(), message.getMsgType(),
                        "call service orchestration excute script error. ", e);
            }
  • 相关阅读:
    Gin框架结合gorm实现mysql增删改查
    Gin框架安装使用
    Golang常用排序算法比较
    Golang获取时间戳及格式化
    Golang使用goroutine交替打印序列
    Golang基础编程(六)-并发编程
    Golang基础编程(五)-指针
    Golang基础编程(四)-Map(集合)、Slice(切片)、Range
    模块化前端开发入门指南(三)
    模块化前端开发入门指南(二)
  • 原文地址:https://www.cnblogs.com/YDDMAX/p/5464440.html
Copyright © 2020-2023  润新知