Neues Thema starten
Implementiert

URL-Trigger bei Gruppenfunktion von Plenty

Hallo,

ich habe ein Problem mit dem URL-Trigger, welches durch die Gruppenfunktion bei Plenty auftritt. 

Um den Flow nach Bedarf auszuführen, wird in Plenty eine URL durch den Wechsel in einen bestimmten Status aufgerufen. Dann wird über den URL-Trigger der Flow ausgeführt. 

Wenn ich nun in Plenty durch eine Gruppenfunktion mehrere Aufträge auf einmal in den Status schiebe, wird nur der erste per URL-Trigger ausgelöst, der Rest verbleibt in dem Status. Kann man da eventuell einen Cache zwischenschalten, welcher die URLs zwischenspeichert und mit dem RateLimit ausführt?


Gruß Dirk


Hallo Dirk,


das Thema ist uns bekannt, da aktuell immer nur eine Instanz eines Flows gleichzeitig ausgeführt werden kann. 

Wir werden uns eine Lösung überlegen. 


Viele Grüße

Der Synesty Support

Sehr gut, Danke

Das Problem ist auch schon im normalen Betrieb aufgetreten, ohne per Gruppenfunktion mehrere Aufträge auf einmal zu verschieben.


Gruß Dirk

Hallo,

ich brauche mal eine Rückmeldung, wann Ihr das Thema angeht. Ein Kunde hat doch einige Mehrarbeit dadurch.


Gruß Dirk

Hallo Dirk,

leider beisst sich das Thema gerade mit einem anderen größeren Umbau. Leider ist noch nicht absehbar, wann wir das rein bekommen.


Gibt es evtl. einen Workaround für dein Thema? 

Vermutlich rufst du ja die Aufträge mit dem SearchOrders-Step ab und direkt mit OrderID, richtig?


Könntest du stattdessen nur per Order-Status und evtl. mit OrderLastUpdate abrufen? Damit erwischt der eine Abruf dann evtl. gleich alle entsprechenden Orders. 


Wäre so etwas in der Art denkbar? 

Nein, natürlich rufe ich die Aufträge nicht ab, sondern triggere sie über die URL. Das ist ja das Problem.


Ich müsste den ganzen Prozess umstellen und stündlich die Aufträge prüfen, das würde jedoch eine Menge Runs kosten. Ich prüfe mit dem Prozess die UStID und bei dem Kunden hat nicht jeder Auftrag eine UStID. Das heißt viele Runs wären umsonst. 

Ich werde noch mal mit dem Kunden sprechen.

Hallo Dirk,

wir haben ein klein wenig das Gefühl, dich falsch zu verstehen. 


Kannst du noch mal beschreiben, was passieren soll?


Hier mal unser Verständnis:


1. Du markierst in plenty z.B. 50 Aufträge und änderst den Status z.B. von A auf B

2. Eine Ereignisaktion in plenty erkennt das und ruft 50x mal eine von dir konfigurierte URL auf. Diese URL ist die Trigger-URL des Flows in Synesty, richtig? Vermutlich hängt plenty an die URL auch noch irgendwie die OrderID mit dran oder?


Es gibt nun als 50x URL-Aufrufe, die an Synesty geschickt werden. Wenn die OrderID mit drin steht, dann quasi pro Order eine URL. 


Frage:

Was genau soll dann passieren?




Hallo,


nein, Ihr habt das korrekt verstanden, nur das dieser URL-Trigger nicht nur per Gruppenfunktion ausgelöst wird, sondern auch ganz "normal" während des Geschäftsbetriebs. 

Es kommen den ganzen Tag Aufträge ins System, manchmal auch gehäuft, z.B. wenn Plenty alle 15 min. von Amazon die Aufträge einliest. Genau dann passiert das gleiche wie bei einer Gruppenfunktion, das viele Aufträge gleichzeitig übergeben werden. Und dann klappt das mit dem URL-Trigger nicht. Aber nur der URL-Trigger ist dafür geeignet von anderen Systemen (auch Plenty) zeitunabhängig einen Flow auszulösen. Das ist ja gerade der große Vorteil.


Ich hoffe es jetzt verständlich ausgedrückt zu haben.


Gruß Dirk

 


Ok, wir sind fast am Ziel des Verständnisses ;)


So wie wir denken es verstanden zu haben, soll der Flow nicht 50x ausgeführt werden, obwohl er 50x aufgerufen wird. 


Aber kannst du noch mal sagen, wann  du gern hättest, dass der Flow stattdessen ausgeführt wird? 



Und kannst du noch mal sagen, was der aufgerufene Flow macht?

Bekommt der Flow die OrderID durch den URL-Aufruf mit reingegeben? Soll der Flow etwas mit dieser einen Order machen?


Wir haben gerade gerade noch mal deinen Satz aus deinem ersten Posting auseinander genommen. 

Du schreibst:


Wenn ich nun in Plenty durch eine Gruppenfunktion mehrere Aufträge auf einmal in den Status schiebe, wird nur der erste per URL-Trigger ausgelöst, der Rest verbleibt in dem Status.

 

Auf was genau beziehst du dich bei "der erste" und "der Rest"?

Meinst du ".... wird nur der erste (Auftrag in plenty) per URL-Trigger ausgelöst, der Rest (die anderen Aufträge in plenty).." ?





Der Flow soll ausgeführt werden, wenn Aufträge einen bestimmten Status erreicht haben. Das kann 1 x in 2 Stunden sein, es kann aber auch 10 x in einer Sekunde sein. Ich möchte das die Aufträge bei erreichen des Status möglichst zügig abgearbeitet werden, egal ob auf einmal 50 Stück kommen oder nur 1 Auftrag am ganzen Tag. 

Der aufgerufene Flow prüft die UStID für den Auftrag, welcher per URL Aufruf die OrderID übergibt. Anschließend wird der Auftrag, je Prüfungsergebnis, in unterschiedliche Status durch den Flow verschoben.


Mit der Erste meine ich den ersten Auftrag der per URL übergeben wird, und der Rest sind die restlichen Aufträge. Ich dachte das wäre eindeutig :-)

Die restlichen Aufträge werden nicht ausgeführt, obwohl die URL aufgerufen wurde. Da das Ereignis "Statuswechsel" in Plenty nur einmal ausgelöst wird und Plenty nicht mitbekommt, das der URL-Trigger  nicht funktioniert hat, hängen die Aufträge in dem Status fest. Dann muss man nacharbeiten und jeden Auftrag einzeln wieder neu in den Status verschieben, damit der URL-Trigger wieder ausgelöst wird.


Ok, noch mal zu unserer initialen Idee, um eine Feinheit ergänzt:


Es gibt die Möglichkeit der Trigger-URL noch einen Parameter delayMinutes mitzugegeben (siehe bei Optionale Parameter)


delayMinutes: Über diesen Parameter kann die Startzeit des Flows gesteuert werden. Mit dem Parameter kann die Anzahl Minuten zwischen Aufruf der URL und Ausführungszeitpunkt des Flows angeben werden (Default: 0, Min: 0, Max: 1440).

Beispiel URL: https://apps.synesty.com/studio/api/flow/v1?id=websiteabrufen&t=123&host=google.de&delayMinutes=5 (startet den Flow 5 Minuten nach Aufruf der URL)


Angenommen du stellst diesen Delay auf 1 Minute, dann müsste das unserer Meinung nach folgendes bewirken (immer noch das 50 Aufträge Beispiel, die auf einen Schlag kommen):


1. plenty versucht 50x mal diese URL (mit delayMinutes) aufzurufen. 

Aber nur der 1. Aufruf schafft es durch. Die anderen 49 werden abgelehnt. 

2. dieser 1. Aufruf triggered den Flow an, aber er startet erst in 1 Minute in der Zukunft. Dieses delay wäre dafür hilfreich, damit du sicher stellst, dass auch wirklich gewartet wird, bis alle 50 Aufträge im Hintergrund von plenty in den entsprechenden Status geschoben wurden. 


3. Der Flow läuft dann in 1 Minute los und holt Auftrage im von dir bestimmten Status (nicht per OrderID!!!). Damit sollten 50 Aufträge (oder mehr) abgeholt werden. 

Dann macht der Flow damit irgendwas. 


Mit anderen Worten:

Du machst dir den Effekt zunutze, dass von 50x gleichzeitigen URL-Trigger-Aufrufen nur der erste Aufruf den Flow antriggert. Die Idee ist, den Flow so zu bauen, dass diese eine einzige Ausführung trotzdem alle 50 Aufträge verarbeitet. Durch den delay baust du dir einen kleinen Warte-Puffer ein. 




 





1 Person gefällt dies

Mal schauen, das scheint ein gangbarer Weg zu sein. Ich werde es ausprobieren.


P.S. Ihr habt immer noch eine komische Übersetzung ;-)

image



1 Person gefällt dies
Wow, eine tolle Möglichkeit um zeitunabhängig Aufträge aus Plenty zu holen! Mal schauen ob ich das auch irgendwo verwenden kann.

 

Anmelden um einen Kommentar zu veröffentlichen