bIT_sosswald
Returning Responder

Löschen eines Datensatzes inkl. Freigabestand per Skript in einem Arbeitsablauf (FS5)

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
bIT_sosswald
Returning Responder

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

View solution in original post

1 Reply
bIT_sosswald
Returning Responder

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