我将开始说我是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的消息部分是对我来说唯一重要的事情。
答案 0 :(得分:0)
用例的简单解决方案是将XML响应保留为字符串,并使用SimpleCopy组件将副本传递给两个XMLExtract组件(输出XML的数据)。您需要为两个XMLExtracts设置文件URL属性以从端口读取。在XMLExtract的Mapping属性中,它会要求您生成树结构&#34;在源XML文件中,将就绪状态的XML用于一个,将不可用状态XML用于另一个,从而为两种情况创建结构。最后,在两种情况下都将Message映射到输出端口。