Search the FirstSpirit Knowledge Base
Hallo,
in einer Datenquelle A gibt es Datensätze (DS), die von anderen Datensätzen einer anderen Datenquelle B referenziert werden (über eine Beziehung).
Nun möchte ich den DS der DQ A kopieren und ebenso alle DS der DQ B, die auf den DS der DQ A refernzieren.
(Somit scheidet das "Kopieren eines DS" in den DQ aus)
Über ein Script habe ich dies geschafft (script.txt). Um den zu kopieren DS (der DQ A) auszuwählen habe ich eine Eingabekomponente erstellt, die alle DS anzeigt. Nach Auswahl des DS werden die Aktionen ausgeführt (erst kopieren des DS der DQ A, dann kopieren der DS der DQ B und Referenz der kopierten DS der DQ B auf den neu kopierten DS der DQ A setzen).
Nun sind es mittlerweile recht viele DS geworden, so dass man in der Eingabekomponente etwas scrollen/suchen muss um den passenden DS zu finden.
Ich wollte daraufhin einen Workflow (WF) bauen, der direkt auf dem zu kopierenden DS ausgeführt wird (wf_script.txt). Das funktioniert so weit, nur dass die kopierten DS in einem für mich nicht nachvollziehbarem Status stehen.
Die kopierten DS bekommen ein "schwarzes Kästchen" und es können keine weiteren WF auf diesen DS ausgeführt werden. Unter Aufträge finde ich keinen offenen oder fehlgeschlagenen WF. Somit kann ich mit den DS nichts mehr anfanen.
Eine automatische Freigabe der kopierten DS darf nicht erfolgen
Frage:
Ein Wf wäre mir lieber, da ich bei einem Script erst noch abfragen muss, ob das Kopieren auf dem DS auch erlaubt ist (oder kann man ein Script nur auf bestimmte DQ zulassen?)
Danke schon mal für Hinweise
Andreas Vogt
Hallo,
Kann ich ein Script auch direkt auf einem DS ausführen? Wenn ja, wie komme ich an die Entity, auf dem das Script ausgeführt wurde?
ja das geht.
Einfach ein Skript vom Typ "Kontext" anlegen.
Im ViewSkript kann man dann definieren, dass das Skript z.B. nur auf Datenquellen ausgeführt wird:
Ausgeführt wird das Skript dann einfach per Rechtsklick auf dem entsprechenden Datensatz:
Der Context, der im Skriptcode zur Verfügung steht ist dann vom Typ Content2ScriptContext. Hier kann die Methode #getSelectedRow() verwendet werden, um an das Entity zu kommen.
context.getSelectedRow()
(oder kann man ein Script nur auf bestimmte DQ zulassen?)
Im Viewscript können sie auch speziellere Prüfungen vornehmen, um das Skript nur auf ganz speziellen Datenquellen zu erlauben. Hierbei sollte man immer berücksichtigen, dass die Viewskripte beim Aufklappen des Menüeintrages ausgeführt werden. Es sollten also keine performancekritischen Operationen in Viewskripten implementiert werden.
Hallo,
Kann ich ein Script auch direkt auf einem DS ausführen? Wenn ja, wie komme ich an die Entity, auf dem das Script ausgeführt wurde?
ja das geht.
Einfach ein Skript vom Typ "Kontext" anlegen.
Im ViewSkript kann man dann definieren, dass das Skript z.B. nur auf Datenquellen ausgeführt wird:
Ausgeführt wird das Skript dann einfach per Rechtsklick auf dem entsprechenden Datensatz:
Der Context, der im Skriptcode zur Verfügung steht ist dann vom Typ Content2ScriptContext. Hier kann die Methode #getSelectedRow() verwendet werden, um an das Entity zu kommen.
context.getSelectedRow()
(oder kann man ein Script nur auf bestimmte DQ zulassen?)
Im Viewscript können sie auch speziellere Prüfungen vornehmen, um das Skript nur auf ganz speziellen Datenquellen zu erlauben. Hierbei sollte man immer berücksichtigen, dass die Viewskripte beim Aufklappen des Menüeintrages ausgeführt werden. Es sollten also keine performancekritischen Operationen in Viewskripten implementiert werden.
Hallo,
funktioniert bestens (wie gewünscht)
Vielen Dank.