Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: General Questions > Prozesse, "Sub-Prozesse", Sichtbarkeit von Änderungen, ...

Prozesse, "Sub-Prozesse", Sichtbarkeit von Änderungen, ...

Hallo Leute,

Ich habe Aufträge mit einer Unter-DG "Positionen".
Jede Position hat einen Status.
Jeder Auftrag hat einen Status, abhängig von den Stati seiner Positionen.
Wenn eine Position verändert wird und sich ihr Status ändert, muss sich auch der Status des Auftrags ändern.
Mit dem Speichern der Eingabeseite "Position" landet man wieder in der Eingabeseite "Auftrag". Dort soll der neue Auftragsstatus bereits angezeigt werden.

Das Berechnen des Auftrags-Status ist eine nicht ganz triviale Groovy-Aktion. Ich habe die unter einen Timer+TEreignisbehandler gesetzt, da ich sie von verschiedenen Prozessen aus starten können muss. Damit der Timer die betroffenen Aufträge kennen kann, setze ich in den veränderten Positionen vor dem Timeraufruf direkt im Datensatz ein Flag. Der Timer holt sich dann über einen Filter die Aufträge, die geflagte Positionen haben.
Allerdings rufe ich diesen Timer nicht direkt aus dem positionsändernden Prozess auf, da die Flags offensichtlich erst nach Abschluss des Prozesses/Requests/Vorgangs(?) für den Prozess des Timers sichtbar sind und der Aufruf sonst nichts bewirkt (das hatte ich auch schon mit Folgeprozessen). Also mache ich den Aufruf über eine Timeraktion (1 Sekunde), auf die ein Timer-Ereignisbehandler reagiert, der dann erst den vorher besprochenen Timer aufruft.
Somit sind die Stati nach 1 Sekunde wieder korrekt.

Das ist alles mordsmäßig umständlich und kompliziert, und zusätzlich habe ich das Problem, dass die Eingabeseite für den Auftrag schon vor der Timeraktion aufgerufen wird und dort dann noch der alte Status angezeigt wird. Vielleicht ginge es mit Tricks - versteckter zweiter Speichern-Button, per Javascript aufgerufen, ... Ist aber auch nicht schön und birgt auch Gefahren.

Wenn das Obige zu kompliziert ist, nochmals der Versuch, es auf das Wesentliche zusammenzufassen:
Wie kann man in einem Prozess "Sub-Prozesse" aufrufen, die von mehreren Prozessen benutzt werden können?
Wie kann man dabei sicherstellen, dass der Sub-Prozess bereits alle vorhergegangenen Änderungen in der DB sieht?
Wie kann man dafür sorgen, dass alle Änderungen bereits in der nächsten aufgerufenen Seite wirksam sind?

Vielleicht kann mir da wer weiterhelfen. Ich hoffe, dass ich nur gerade auf der Leitung stehe.
BG
PeterZ
20.10.2016 15:03 von PeterZ
Bei Datengruppenaktionen kann man Folgeaktionen triggern.
D.h. wenn ich z.B. per Datengruppenereignisbehandler auf Änderungen in A reagiere und sich anschließend in B auch was ändern soll und dabei der Prozess von B getriggert werden muss, einfach Folgeprozesse auslösen wählen bei einer Datengruppenaktion die B ändert.
21.10.2016 06:59 von MartinW
Ja. Das ist mir bekannt. Habe ich auch schon verwendet.
Jedoch kommt es vor, dass wenn Prozess a in DG A schreibt und dann per Folgeprozess Prozess b aufruft, Prozess b die Änderungen in DG A noch nicht sieht. Das macht es für mich in vielen Fällen unbrauchbar. Über Timeraufrufe sind Änderungen im aufgerufenen Prozess schon sichtbar, aber dafür bekommt die nächste angezeigte Seite Änderungen, die im Timerprozess geschehen nicht mehr mit.
Es müsste sowas wie ein DB-Commit vor einem Folgeprozess geben.
24.10.2016 15:01 von PeterZ
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg