Starring V6 小知识指南

Starring V6不得不说的小秘密,看完豁然开朗

小知识


POINT A、数据映射

1、数据映射的双方对象如果字段基本类型不同,平台可以自动转换,比如int转换成String这样是OK的。



POINT B、逻辑处理

1、逻辑处理的服务设计,输入和输出对象是必须要的,哪怕你根本用不上(比如写自动任务逻辑时),在平台可以建一个空对象 STARRING_NULL,不需要对象的都引用它好了。



POINT C、数据对象

1、对方系统返回JSON报文里面子节点名称完全相同,比如:

{
    "children": {
        "AA": "aa",
        "BB": "bb",
        "children": {
            "AA": "aa",
            "BB": "bb",
            "children": {
                "AA": "aa",
                "BB": "bb",
                "children": {}
            }
        }
    }
}

这种情况下,必须要要在平台定制多个children对象,第一层的children对象引用第二层的children对象再引用第三层,平台不支持递归引用。如果对方是递归对象,只能根据对方能返回的最深层来定制咱们这边的层级。


POINT D、勾选全局超时时,以源方DTA或者ALA剩余时间来记超时,目的DTA的超时时间不生效。


POINT E、接出点的响应报文处理

1、平台在接出点是没有定制报文格式的,返回报文处理事件放在如图所示的事件上是无效的,这个时候放在内部请求后事件。

image

2、代码的取值赋值和DTA的也不尽相同,不知道写法相同是否可行,内容如下:

public static void replaceStringToNull() throws UnsupportedEncodingException {
        String logFile = SUtil.getLogFile();
        TrcLog.info(logFile, "替换String字符串字典值为compType的字符串");
        DtaInfo dtaInfo = DtaInfo.getInstance();
        Message message = (Message) dtaInfo.getMessage();
        byte[] itemData = (byte[]) message.getBody();
        String strItemData = new String(itemData, "UTF-8");

        TrcLog.info(logFile, "=====原始数据:" + strItemData);
        if (strItemData.contains(""compType":""")) {
            strItemData = strItemData.replace(""compType":""", ""compType":[]");
        }
        TrcLog.info(logFile, "=====替换后数据:" + strItemData);
        message.setBody(strItemData.getBytes());

        TrcLog.info(logFile, "替换String字符串字典值为compType的字符串===处理结束");
    }


POINT F、平台DTA、接出点、ALA日志级别可以通过总的日志参数控制,但是最大字节数不受总的控制。

平台接入接出点的日志默认值最大字节数是3000M,比如系统内存是8G,如果平台存在两个接入接出点,跑一段时间后,会占用6个G的缓存,导致平台运行后GC内存会无法回收,最终平台内存频繁回收而导致系统挂掉,需要手动修改最大字节数为30M。

image





3

4

5

6

7

8

原文地址:https://www.cnblogs.com/laramia/p/13898751.html