Hallo Community,
ich habe ein Workflow-Skript zum Löschen eines Datensatzes. Der Datensatz soll nur dann gelöscht werden, wenn keine Referenzen mehr auf ihn existieren.
Falls Referenzen existieren, sollen diese angezeigt werden, um dem Redakteur die Möglichkeit zu geben, diese zu löschen und dann das Skript nochmal auszuführen.
Das Skript benutzt die Methode ReferenceEntry.getReferencedObject() und unterscheidet dann die Fälle, wenn eine Entity zurückgeliefert wird oder ein IDProvider.
Im Fall des IDProviders kann ich anhand der Methode getId() die ID ausgeben, mit der der Redakteur das entsprechende Inhaltselement auch finden kann.
Im Fall der Entity liegt nach meinem Verständnis eine Referenz von einem (anderen) Datensatz vor. Mit getValue("fs_id") kann ich die ID erhalten.
Meine Frage wäre jetzt, wie ich vom Entity Object auf das Schema komme (um einen informativen Dialog schreiben zu können der Art "Der Datensatz in Tabelle x im Schema y enthält noch eine Referenz auf..".
Hier die relevanten Teile des Sktipts:
// current Session
contentStore = context.getProject().getUserService().getStore(Store.Type.CONTENTSTORE,false);
table = contentStore.getContent2ByName(storeElement.getUid());
// get current row
currentRow = context.getWorkflowable().getEntity();
currentRowId = currentRow.getValue("fs_id");
referenceEntries = table.getDataset(currentRow).getIncomingReferences();
if (referenceEntries != null && referenceEntries.length > 0) {
for (int i = 0; i < referenceEntries.length; i++) {
refElement = referenceEntries[i].getReferencedObject();
if (refElement instanceof de.espirit.or.schema.Entity) {
// => referenz von dataset => get ID with refElement.getValue("fs_id") aber wie komme ich auf das schema??
} else if (refElement instanceof de.espirit.firstspirit.access.store.IDProvider) {
// => referenz von Inhaltselement => get ID with refElement.getId()
} else {
// kann null sein => gelöschtes Objekt ?
}
}
}
FS Version 5.1.311.65223
Danke für einen Tipp!
Viele Grüße, Benny Kannengießer
// re-lounge