最新文件和文件动态命名

我正在从事一项 talend 工作,该工作发出 HTTP GET 请求以获取多个 PDF 文档。该请求返回一个 JSON 文件,其中包括:documentDate 和 documentLink。如果仅存在一个最新日期的文档,我想从 documentDate 获取最新的 documentLink,并上传带有 FileFetch 组件的文档,文件名为“Document_1”。如果 2 个文档具有最新日期,则 FileFetch 组件应上传 2 个文档,其中一个文件名为“Document_1”,另一个“Document_2”我不确定如何遍历 JSON 文件以获取最新日期并命名文档( s) 正确。


到目前为止我做了什么:


 tHTTPRequest_1 --> tExtractJSONFields_1 --> tXMLMap_1 --> tFileFetch_1

这适用于上传一个文件,但没有检查最新的 documentDate 或 tFileFetch_1 组件中的文件名命名。


返回的 JSON 如下所示:


{

"documents": [

    {

        "documentDate ": 200119,

        "documentLink": "someLink1",

    },

    {

        "documentDate ": 200119,

        "documentLink": "someLink2",

    },

    {

        "documentDate ": 150119,

        "documentLink": "someLink3",

    }

   ]

}

你们对如何解决这个问题有任何想法吗?


千万里不及你
浏览 119回答 1
1回答

四季花海

工作的第一部分包括:tFileInputJson(或在您的情况下为 tHttpRequest1)-> tSetGlobalVar -> tExtractJsonFields ->tJavaRowtHttpRequest1 将抓取 JSON 响应(可以排序或不排序)tsetGlobalVar 会将 JSON 保存在一个全局变量中,以便在第二部分中使用。tExtractJson 将从每个 JSON 数组条目中提取 DocumentDate。tJavaRow 将包含比较不同文档的日期并在全局变量中设置最大值的 Java 逻辑:String maxDate = (String) globalMap.get("MaxDate");if (maxDate != null && !maxDate.trim().isEmpty() )    //Some Logic here to take the max i.e. Convert it to proper date format and compare them.    globalMap.put("MaxDate", *comparedMaxDate*);else    globalMap.put("MaxDate", row4.DOCDATE);完成后,在我们的全局变量中,我们将拥有原始 JSON 响应和最大/最近日期。第一部分(子作业)完成后将运行的第二部分将包括:tJava -> tExtractJsonFields -> tMap -> tFileFetchtJava 将简单地从第一部分中设置的全局变量中获取 JSON 消息和 MaxDate。tExtractJsonFields 将为每个数组条目提取 documentLink 和 documentDate 并将它们与最大日期一起传递给 tMap 组件。tMap 组件将简单地在 documentDate 和 max date 之间进行比较,并检查是否等于将 documentLink 传递给 tFileFetch,否则它将忽略它。这允许您仅发送具有最新日期的文档链接。希望这会有所帮助,并且足够清楚。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java