Skip to main content

Vollgenierung vermeiden (Delta-Generierung

Comments

5 comments

  • Zendesk API User
    Author: mbergmann - 12/22/2017 10:35

    Hallo Marcel,

    grundsätzlich ist es so, dass sich die Delta-Generierung den Zeitpunkt bzw. genauer die Revision der letzten Delta-Generierung im Auftrag merkt. Das passiert über die Auftragsvariable #deltaGeneration.last_execution. Wird diese Variable nicht gefunden, wird von einer Vollgenerierung ausgegangen.

    Man kann nun allerdings diese Information "manipulieren", indem man die Variable durch ein Skript im Auftrag selbst auf eine bestimmte Revision setzt:

    context.setVariable("#deltaGeneration.last_execution", revisionId);

    revisionId ist dabei vom Typ "long".

    Auftragsvariablen haben im Gegensatz zu Properties die Eigenschaft, dass sie am jeweiligen Auftrag persistiert werden, d.h. beim nächsten Lauf desselben ( ! ) Auftrages wieder mit dem zuletzt gesetzten Wert verfügbar sind.

    Ihr müsstet also letztlich schauen / entscheiden, welche Revision ihr als "bereits generiert" betrachten wollt und könnt dann die Variable entsprechend setzen. Das geht allerdings nicht "von außen", sondern nur "innerhalb" des Auftrages. Am einfachsten wäre wohl schlicht, temporär alle anderen Tasks zu deaktivieren und nur diesen einen "Manipulations-Task" aktiv zu lassen. Der muss danach natürlich wieder deaktiviert werden.

    Ein paar Tipps: Da die Variable pro Auftrag gilt, müsst ihr je nach Projekt- bzw. Auftrags-Struktur noch weitere Anpassungen vornehmen. Außerdem überschreibt die Deltagenerierung die zuletzt generierte Revision gleich zu Beginn. Falls ihr unter bestimmten Umständen das Deployment nicht durchführt (z.B. abhängig von der Anzahl der Generierungsfehler), solltet ihr euch die #deltaGeneration.last_execution vor dem Aufruf der Deltagenerierung im Auftrag merken und sie in diesen Fällen wieder zurücksetzen. An die Variable kommt man per context.getVariable("#deltaGeneration.last_execution"). Falls ihr auch Aufträge für sog. "historische Generierungen" habt, sind diese auch entsprechend anzupassen.

    Ob das bei euch alles direkt so funktioniert, kann ich allerdings nicht sagen - es kann sein, dass ihr noch weitere Anpassungen vornehmen müsst abhängig davon, wie eure Aufträge aussehen. Also unbedingt vorher testen ;-)

    Viele Grüße

    Michael

    0
  • Zendesk API User
    Author: mscholz3 - 12/22/2017 12:11

    Hallo Michael,

    vielen Dank für die schnelle Antwort!

    Nach Neujahr werden wir auf jeden Fall versuchen deinen Vorschlag umzusetzen!

    Dir schon mal ein schönes Weihnachtsfest :smileyhappy:

    Liebe Grüße

    Marcel

    0
  • Zendesk API User
    Author: NMc - 1/16/2018 14:13

    Hallo Marcel,

    benötigst Du noch weitere Hilfe oder haben Dir die Antworten von Michael bereits geholfen?

    In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere

    Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

    gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

    Viele Grüße

    Nico

    0
  • Zendesk API User
    Author: mscholz3 - 2/23/2018 12:26

    Hallo Michael,

    das mit der Auftragsvariabel hat klappt super geklappt!

    Vielen Dank nochmal für deinen Tipp!

    Liebe Grüße

    Marcel

    0
  • Zendesk API User
    Author: mscholz3 - 1/27/2020 12:26

    Die Variable "#deltaGeneration.last_execution" gibt es überging nun als Konstante:

    DeltaGeneration.DELTA_GENERATION_LAST_EXECUTION

    (in "de.espirit.firstspirit.access.schedule.DeltaGeneration")

    0

Please sign in to leave a comment.