2016-09-14 1 views
0

Ich fange an zu sagen, ich bin neu bei CloverETL ohne formelle Ausbildung.So generieren Sie dynamische XML-Metadaten mit CloverETL

Ich habe einen Job, der eine ExecuteScript-Komponente mit einem Befehl ausführt, der Apples iTunes Connect Reporter-Java-Tool aufruft, um den Status des Berichts zu erhalten, um mich wissen zu lassen, ob es bereit ist oder nicht herunterzuladen. Die Nachricht des Java-Tools ist in XML und ich schreibe das in eine XML-Datei mit dem UniversalDataWriter. Die letzte Komponente im Job startet einen anderen Jobflow.

Der nächste Jobflow beginnt mit einer XMLExtract-Komponente, die den XML-Code aus der Datei abbildet und den Nachrichtenteil des XML an eine Condition-Komponente sendet, um festzustellen, ob die Datei bereit ist, und die Bedingung zum Herunterladen der Datei aufzuteilen Wenn es bereit ist, oder schlafen und rufen Sie das Java-Tool auf, um den Status nach einiger Zeit wieder zu erhalten, wenn es nicht bereit ist.

Die XML ist fertig Status wie folgt aussieht:

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

Die XML ist nicht verfügbar Status wie folgt aussieht:

<?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> 

Der Ausgang ist dynamisch, und ich bin nicht sicher, wie die Metadaten-Format zu sein kann mit beiden Ausgaben umgehen. Der Nachrichtenteil des XML ist das einzige, was mir wichtig ist.

Antwort

0

Eine einfache Lösung für Ihren Anwendungsfall wäre, die XML-Antwort als Zeichenfolge zu belassen und eine SimpleCopy-Komponente zu verwenden, um eine Kopie an zwei XMLExtract-Komponenten zu übergeben (Ausgabe der XML-Daten). Sie sollten die Eigenschaft "File URL" für beide XMLExtracts setzen, um sie vom Port zu lesen. In der Mapping-Eigenschaft von XMLExtract werden Sie aufgefordert, in der Quell-XML-Datei "Baumstruktur generieren" zu verwenden. Verwenden Sie den XML-Status des Bereit-Status für den einen und den Status des nicht verfügbaren Status für den anderen und erstellen Sie die Struktur für beide Fälle. Schließlich ordnen Sie die Nachricht in beiden Fällen dem Ausgabeport zu.

+0

Anstatt also die Antwort auf eine XML-Datei mit dem UniversalDataWriter zu schreiben, würden Sie die Antwort von der ExecuteScript-Komponente direkt an eine SimpleCopy-Komponente füttern, richtig? – KMac