Eventscript für getrennte Links?

  • Hallo liebes Forum

    Ich möchte ein berechnetes Zusatzfeld updaten, wenn ich zwei Objekte über Custom-Link verknüpfe (das ist mir gelungen) und möchte denselben Eintrag wieder entfernen, wenn die Objekte getrennt werden. Beim Entfernen sind alle Informationen wie customlink.linktyp.boldid oder customlink.fromcustomlinks nicht mehr zugänglich. Ich gehe dabei beim anlegen wie beim trennen über dasselbe Eventscript "geändert" Klasse Customlink, Feld fromcustomlinks. Versucht habe ich auch das Eventscript über "löschen" der Klasse Customlink zu triggern. Da passiert aber gar nichts. Den Link "von Hand" über ein eigenes Script zu löschen wäre natürlich machbar, aber finde ich nicht so elegant, weil entgegen der Vertec-Logik der Links Hat jemand eine Idee oder kann mir bestätigen, dass dies nicht machbar ist?

  • Eventscripts auf Customlinks sind immer etwas problematisch, weil sie einfach bei jeder Verlinkung zwischen beliebigen Objekten getriggert werden. Man muss da gut aufpassen, dass man keine Performance-Probleme einbaut.

    Ihre Anforderung könnten Sie umsetzen, indem Sie ein Event Script registieren auf CustomLink  geändert. Beim Verlinken ändern sich drei Members des Customlink-Objektes: customlinks, fromcustomlinks und linktyp

    Damit das Script nicht dreimal aufgerufen wird, schränken Sie also am besten zuerst auf eines der Member ein. Beim Trennen werden die Members CustomLinks bzw. FromCustomLinks gelöscht. Das Trennen-Event können Sie also catchen, indem Sie dieses Member prüfen:

    Code
    #
    if args.eventmember == "fromCustomLinks":
        if not argobject.fromcustomlinks:
           print "Getrennt"

    Benötigen Sie an dieser Stelle noch Zugriff auf die verlinkten Objekte?

  • Das ist schwierig, denn wenn Sie "Trennen" klicken, ist die Trennung schon durchgeführt, wenn das Event-Script getriggert wird. Die Objekte sind dann nicht mehr miteinander verbunden.

    Sie haben mehrere Möglichkeiten:

    - Der einfachste und unkomplizierteste Weg: Sie schreiben ein Script, in dem Sie zunächst die Aktion durchführen, für die Sie noch beide Objekte benötigen und anschließend trennen Sie die Objekte. Diesen Weg haben Sie oben schon erwähnt. Ich sehe überhaupt keinen Bruch zur Vertec-Logik, weil noch Aktionen außer der eigentlichen Trennung durchgeführt werden.

    - Sie registrieren das Event-Script nicht auf der Klasse CustomLink, sondern auf den verbundenen Klassen selber. Auch hier kann ein Event auf dem Member customlinks bzw. fromcustomlinks registiert werden. Wenn es eine n:1 oder 1:n Zuordnung ist, kann beim Anlegen des Links die ObjId in einen Key gespeichert werden. Somit wäre das verbundene Objekt auch nach der Trennung noch auffindbar.