Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich möchte einen Datendatz inkl. dessen Freigabestand mit Hilfe eines Arbeitsablaufes gleichzeitig löschen. (FS5)
Für das Skript habe ich mich an dem Vorschlag von Herrn Broszeit aus folgendem Post orientiert: https://community.e-spirit.com/message/8571#8571
Ich habe lediglich das "dataSet.setFormData(dataSet.getFormData());" gegen ein "dataSet.delete();" ausgetauscht, so dass das Skript wie folgt aussieht:
//!Beanshell
import de.espirit.firstspirit.access.store.contentstore.Content2ScriptContext;
content2ScriptContext = (Content2ScriptContext) context;
row = content2ScriptContext.getSelectedRow();
e = content2ScriptContext.getStoreElement();
dataSet = e.getDataset(row);
currentEntity = dataSet.getEntity();
schema = dataSet.getTableTemplate().getSchema();
releaseSession = schema.getSession(true);
releasedEntity = releaseSession.find(currentEntity.getKeyValue());
if (releasedEntity != null) {
dataSet.delete();
dataSet.save();
releaseSession.rollback();
releasedEntity.refresh();
releaseSession.delete(releasedEntity);
releaseSession.commit();
}
print("Skript ausgeführt");
Das Skript an sich läuft auch problemlos, wenn ich es als Skript ausführe.
Binde ich es allerdings als Skript in einen Arbeitsablauf ein schlägt der Cast auf den Content2SkriptContext fehl, da ein Arbeitsablauf ja einen anderen Context besitzt.
Meine Frage ist nun, wie bekomme ich dieses Skript in einem Arbeitsablauf zum Laufen?
Bzw. wie bekomme ich in einem Arbeitsablauf die Information auf welchem Datensatz der Arbeitsablauf gestartet wurde?
Hat mirt jemand den entscheidenden Tip?
Beste Grüße
Sandro
Ich habe es jetzt doch selbst herausgefunden.
Try and Error bewährt sich doch immer wieder. :smileygrin:
Anbei die Lösung:
//!Beanshell
import de.espirit.firstspirit.access.store.contentstore.ContentWorkflowable;
ContentWorkflowable contentWorkflowable = (ContentWorkflowable) context.getWorkflowable();
currentEntity = contentWorkflowable.getEntity();
dataSet = contentWorkflowable.getContent().getDataset(currentEntity);
schema = dataSet.getTableTemplate().getSchema();
releaseSession = schema.getSession(true);
releasedEntity = releaseSession.find(currentEntity.getKeyValue());
if (releasedEntity != null) {
dataSet.delete();
dataSet.save();
releaseSession.rollback();
releasedEntity.refresh();
releaseSession.delete(releasedEntity);
releaseSession.commit();
}
Grüße
Sandro
Ich habe es jetzt doch selbst herausgefunden.
Try and Error bewährt sich doch immer wieder. :smileygrin:
Anbei die Lösung:
//!Beanshell
import de.espirit.firstspirit.access.store.contentstore.ContentWorkflowable;
ContentWorkflowable contentWorkflowable = (ContentWorkflowable) context.getWorkflowable();
currentEntity = contentWorkflowable.getEntity();
dataSet = contentWorkflowable.getContent().getDataset(currentEntity);
schema = dataSet.getTableTemplate().getSchema();
releaseSession = schema.getSession(true);
releasedEntity = releaseSession.find(currentEntity.getKeyValue());
if (releasedEntity != null) {
dataSet.delete();
dataSet.save();
releaseSession.rollback();
releasedEntity.refresh();
releaseSession.delete(releasedEntity);
releaseSession.commit();
}
Grüße
Sandro