IBM App Connect Enterprise - 聚合组节点结果

IBM App Connect Enterprise - Aggregate Group Node Results

我正在使用 App Connect ACE 11 中的组节点多次调用服务并尝试聚合响应。一切正常,下面是 InputRoot.ComIbmGroupCompleteNode.Group.

的结果
{
    "msg": {
        "GroupProperties": {
            "GroupId": "010000000000000000000000000000001000000000000000",
            "GroupName": "TSTGRP",
            "GroupCreationTime": 1593669682652,
            "GroupCommitTime": 1593669682707,
            "GroupCompleteTime": 1593669682806,
            "GroupOutputTime": 1593669682806,
            "GroupStatus": "Completed"
        },
        "Context": {
            "HTTP": {
                "RequestIdentifier": "45564854000000000e000000db851d0ecc11000000000000"
            },
            "RouterList": {}
        },
        "Replies": {
            "FLDR": {
                "ReplyId": "534f41503000000067e55223146300000400000000000000",
                "RequestSendTime": 1593669682674,
                "ReplyReceiptTime": 1593669682706,
                "Reply": {
                    "Root": {
                        "HTTPResponseHeader": {
                            "X-Original-HTTP-Status-Line": "HTTP/1.1 200 OK",
                            "X-Original-HTTP-Status-Code": 200,
                            "Date": "Thu, 02 Jul 2020 06:01:17 GMT",
                            "Content-Type": "application/json; charset=utf-8",
                            "Content-Length": "83",
                            "Connection": "keep-alive",
                            "Set-Cookie": "__cfduid=dfbd2cc294d944ed4cfdf6b72a343f8dc1593669677; expires=Sat, 01-Aug-20 06:01:17 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax",
                            "X-Powered-By": "Express",
                            "X-Ratelimit-Limit": "10000",
                            "X-Ratelimit-Remaining": "9999",
                            "X-Ratelimit-Reset": "1592660247",
                            "Vary": "Origin, Accept-Encoding",
                            "Access-Control-Allow-Credentials": "true",
                            "Cache-Control": "max-age=43200",
                            "Pragma": "no-cache",
                            "Expires": "-1",
                            "X-Content-Type-Options": "nosniff",
                            "Etag": "W/\"53-hfEnumeNh6YirfjyjaujcOPPT+s\"",
                            "Via": "1.1 vegur",
                            "CF-Cache-Status": "HIT",
                            "Age": "15242",
                            "Accept-Ranges": "bytes",
                            "cf-request-id": "03afb689ec00007f11da290200000001",
                            "Server": "cloudflare",
                            "CF-RAY": "5ac626bcaa097f11-CMB"
                        },
                        "JSON": {
                            "Data": {
                                "userId": 1,
                                "id": 1,
                                "title": "delectus aut autem",
                                "completed": false
                            }
                        }
                    }
                }
            },
            "FLDR": {
                "ReplyId": "534f415031000000273b5323146300000400000000000000",
                "RequestSendTime": 1593669682707,
                "ReplyReceiptTime": 1593669682737,
                "Reply": {
                    "Root": {
                        "HTTPResponseHeader": {
                            "X-Original-HTTP-Status-Line": "HTTP/1.1 200 OK",
                            "X-Original-HTTP-Status-Code": 200,
                            "Date": "Thu, 02 Jul 2020 06:01:17 GMT",
                            "Content-Type": "application/json; charset=utf-8",
                            "Content-Length": "99",
                            "Connection": "keep-alive",
                            "Set-Cookie": "__cfduid=debd2bf084ee690942fb5d3439e41fa331593669677; expires=Sat, 01-Aug-20 06:01:17 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax",
                            "X-Powered-By": "Express",
                            "X-Ratelimit-Limit": "500",
                            "X-Ratelimit-Remaining": "497",
                            "X-Ratelimit-Reset": "1593684076",
                            "Vary": "Origin, Accept-Encoding",
                            "Access-Control-Allow-Credentials": "true",
                            "Cache-Control": "max-age=43200",
                            "Pragma": "no-cache",
                            "Expires": "-1",
                            "X-Content-Type-Options": "nosniff",
                            "Etag": "W/\"63-+s0zIP5ZEQN9hypVJUneLybJ+L0\"",
                            "Via": "1.1 vegur",
                            "CF-Cache-Status": "HIT",
                            "Age": "8713",
                            "Accept-Ranges": "bytes",
                            "cf-request-id": "03afb68a0900007f29ad07c200000001",
                            "Server": "cloudflare",
                            "CF-RAY": "5ac626bcdc137f29-CMB"
                        },
                        "JSON": {
                            "Data": {
                                "userId": 1,
                                "id": 2,
                                "title": "quis ut nam facilis et officia qui",
                                "completed": false
                            }
                        }
                    }
                }
            },
            "FLDR": {
                "ReplyId": "534f4150320000000bbb5323146300000400000000000000",
                "RequestSendTime": 1593669682707,
                "ReplyReceiptTime": 1593669682737,
                "Reply": {
                    "Root": {
                        "HTTPResponseHeader": {
                            "X-Original-HTTP-Status-Line": "HTTP/1.1 200 OK",
                            "X-Original-HTTP-Status-Code": 200,
                            "Date": "Thu, 02 Jul 2020 06:01:17 GMT",
                            "Content-Type": "application/json; charset=utf-8",
                            "Content-Length": "84",
                            "Connection": "keep-alive",
                            "Set-Cookie": "__cfduid=dfbd2cc294d944ed4cfdf6b72a343f8dc1593669677; expires=Sat, 01-Aug-20 06:01:17 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax",
                            "X-Powered-By": "Express",
                            "X-Ratelimit-Limit": "500",
                            "X-Ratelimit-Remaining": "499",
                            "X-Ratelimit-Reset": "1593684076",
                            "Vary": "Origin, Accept-Encoding",
                            "Access-Control-Allow-Credentials": "true",
                            "Cache-Control": "max-age=43200",
                            "Pragma": "no-cache",
                            "Expires": "-1",
                            "X-Content-Type-Options": "nosniff",
                            "Etag": "W/\"54-J3JtLgWuXjgj1OZdyAcKAqOaKHo\"",
                            "Via": "1.1 vegur",
                            "CF-Cache-Status": "HIT",
                            "Age": "8713",
                            "Accept-Ranges": "bytes",
                            "cf-request-id": "03afb68a0c00007f11da291200000001",
                            "Server": "cloudflare",
                            "CF-RAY": "5ac626bcea187f11-CMB"
                        },
                        "JSON": {
                            "Data": {
                                "userId": 1,
                                "id": 3,
                                "title": "fugiat veniam minus",
                                "completed": false
                            }
                        }
                    }
                }
            }
        }
    }
}

我的问题是如何访问 3 个 JSON.Data 元素并创建组合响应。我知道这不是有效的 JSON 并且 FLDR 是重复键。这也不是一个数组。我如何访问这些元素并创建这样的组合响应?

{
    "result1": {
        "userId": 1,
        "id": 1,
        "title": "delectus aut autem",
        "completed": false
    },
    "result2": {
        "userId": 1,
        "id": 2,
        "title": "quis ut nam facilis et officia qui",
        "completed": false
    },
    "result3": {
        "userId": 1,
        "id": 3,
        "title": "fugiat veniam minus",
        "completed": false
    }
}

非常感谢任何帮助。

如果您有包含该结构的消息树,那么您可以访问它的任何部分 - 无论它是否是有效的 JSON 文档。

您是否尝试过在 ESQL 中编写一个普通的 FOR 循环来迭代出现的 FLDR?

注意:此代码完全未经测试,可能包含语法错误和缺陷...

DECLARE index INTEGER 1;
FOR refFLDR AS InputRoot.ComIbmGroupCompleteNode.Group.msg.Replies.FLDR[] DO
   DECLARE fieldName 'Result' || index;
   CREATE LASTCHILD OF OutputRoot.JSON.Data TYPE Name NAME fieldName FROM refFLDR;
   SET index = index + 1;
END FOR;