0

我首先要说我是 CloverETL 的新手,没有接受过正规培训。

我的工作是运行 ExecuteScript 组件,其命令调用 Apple 的 iTunes Connect Reporter Java 工具来获取报告的状态,让我知道它是否已准备好下载。Java 工具的消息是 XML 格式的,我正在使用 UniversalDataWriter 将其写入 XML 文件。作业中的最后一个组件启动另一个作业流程。

下一个工作流从 XMLExtract 组件开始,该组件将映射文件中的 XML,并将 XML 的消息部分发送到 Condition 组件以查找文件是否准备好,如果准备好则拆分条件以下载文件,或者休眠并调用 Java 工具,如果它没有准备好,则在一段时间后再次获取状态。

就绪状态的 XML 如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Status>
    <Message>Sales and Trends Reporter is currently available.</Message>
    <Code>0</Code>
</Status>

不可用状态的 XML 如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error>
    <Code>1</Code>
    <Message>Sales and Trends is currently unavailable.  Please try again in 15 minutes.</Message>
    <Retry>875000</Retry>
</Error>

输出是动态的,我不确定如何格式化元数据以处理任一输出。XML 的消息部分对我来说是唯一重要的部分。

4

1 回答 1

0

您的用例的一个简单解决方案是将 XML 响应保留为字符串并使用 SimpleCopy 组件将副本传递给两个 XMLExtract 组件(输出 XML 的数据)。您需要将两个 XMLExtract 的 File URL 属性设置为从端口读取。在 XMLExtract 的 Mapping 属性中,它会要求您在源 XML 文件中“生成树结构”,其中一种使用就绪状态的 XML,另一种使用不可用状态的 XML,从而为这两种情况创建结构。最后,在这两种情况下都将 Message 映射到输出端口。

于 2016-09-20T14:28:47.710 回答