Ich habe einen Oozie-Koordinator, der beim Start seine Startzeit auf 365 Tage setzt und dann seinen Workflow mit einer täglichen-Frequenz ausführt, bis das letzte Datum mit den Eingabedaten erreicht wird. Die coordinator.xml sieht also ungefähr so aus:Oozie Workflows jeden Tag neu starten
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<coordinator-app name="${jobName}" frequency="${coord:days(1)}" start="${startTime}" end="${endTime}" timezone="${timezone}" xmlns="uri:oozie:coordinator:0.2">
<controls>
<timeout>-1</timeout>
<concurrency>30</concurrency>
<execution>FIFO</execution>
</controls>
<datasets>
<dataset name="myData" frequency="${coord:days(1)}" initial-instance="${initialTime}" timezone="${timezone}">
<uri-template>${outputPath}/${YEAR}${MONTH}${DAY}</uri-template>
</dataset>
</datasets>
<input-events>
<data-in name="myInput" dataset="myData">
<instance>${coord:current(-1)}</instance>
</data-in>
</input-events>
<action>
<workflow>
<app-path>${appPath}</app-path>
<configuration>
<property>
<name>myInput</name>
<value>${coord:dataIn('myInput')}</value>
</property>
<property>
<name>date</name>
<value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), 'yyyyMMdd')}</value>
</property>
</configuration>
</workflow>
</action>
</coordinator-app>
Beim Start löst dieser Koordinator 365 Workflows aus. Am nächsten Tag wird dann nur ein Workflow für die Eingabedaten dieses Tages ausgeführt. Und so weiter für den nächsten Tag.
Jetzt haben sich die Anforderungen geändert und ich muss 365 Arbeitsabläufe jeden Tag, nicht nur das erste Mal ausführen! Also beim Start möchte ich, dass es so läuft wie jetzt. Aber dann, am nächsten Tag, wenn die Eingabedaten verfügbar sind, muss ich zurückgehen und tägliche Arbeitsabläufe für die letzten 365 Tage wieder ausführen. Und so weiter für jeden weiteren Tag, sobald neue Eingabedaten erkannt werden.
Wie kann ich das erreichen? Danke,
Alvaro