Filtermöglichkeiten aus Datastore

Hallo Zusammen,

ich suche nach einer Filtermöglichkeit für folgendes Szenario.

Über Flow-1 frage ich über den API Step Download-URLs von Produktbildern aus einem PIM ab. Die URLs werden innerhalb des Flows mit einem Step in den Datastore-1 geschrieben und stehen auf UNPROCESSED.

Der Flow-2 wird mit SearchDatastore und dem Filter „UNPROCESSED“ gestartet, die Bilder werden per API aus dem PIM heruntergeladen und per S3Upload Step auf einen S3 Bucket hochgeladen. In einem Folgestep werden die S3 URLs in den Datastore-1 geschrieben und der Processing Status auf „PROCESSED“ gestellt.

Wenn das PIM einen komplett neuen Eintrag enthält, laufen beide Flows sauber ab. Der neue Eintrag wird in den Datastore-1 geschrieben, hat den Status „UNPROCESSED“ und der zweite Flow ruft nur den einen Eintrag ab und macht übriges.

Jetzt hab ich allerdings das Problem, dass sich bestehende Einträge im PIM ändern können, z.B. weil es eine neue Version eines Bild gibt. Jetzt hatte ich gehofft, dass wenn der Flow-1 läuft und der Eintrag im Datastore aktualisiert wird, sich auch der Processing Status auf UNPROCESSED ändert. Dann würde sich der Flow-2 einfach nur den UNPROCESSED Eintrag nehmen und weiter arbeiten.

Allerdings passiert das nicht und der bestehende Eintrag im Datastore bleibt unverändert auf PROCESSED.

Jetzt gibt es ja noch die Spalte „LastContentChanged“, der sich auch ändert wenn sich aus dem PIM eine Änderung eines bestehenden Datastore Eintrags ergibt. Allerdings bekomme ich es nicht hin, dass der SearchDatastore im Flow-2 nur Einträge nimmt, bei denen sich der LastContentChanged geändert hat oder im Vergleich zu einem anderen Wert geändert hat.

Jemand eine Idee, wie man das bestmöglich abbilden könnte?

Danke!

Viele Grüße
Ramin

Im DatastoreWriter gibt es eine Option „updateProcessingStatus“.
Wenn du im DatastoreWriter in Flow-1 da die Option „UNPROCESSED“ auswählst, änderst du den Verarbeitungsstatus in alle Einträgen.
grafik

Wenn ich dich richtig verstehe, willst du aber nur die Einträge wieder auf UNPROCESSED setzen, in denen es auch Änderungen gab, korrekt?
Dafür lässt du deinen bisherigen Writer wie er ist und hängst einfach einen weiteren Writer an, welcher das Output updatedRecordsWithChangedContent aus deinem eigentlich Writer konsumiert.


In dem zweiten Writer benutzt du jetzt die updateProcessingStatus-Option und setzt dort alle Zeilen mit geändertem Inhalt zurück auf UNPROCESSED.

2 „Gefällt mir“

Perfekt, genau das habe ich gesucht! Danke Dir!

Viele Grüße
Ramin