JanScholz
I'm new here

Beanshell: freigegebene Version eines Datensatzes (Entity) holen

Jump to solution

Hallo Community!

Gibt es einen performanten Weg sich die letzte freigegebene Version eines Datensatzes aus einer Datenquelle zu holen?

Mein Weg, durch die History des de.espirit.firstspirit.access.store.contentstore.Dataset zu iterieren, das jeweilige de.espirit.or.schema.Entity zu holen, und zu prüfen ob es freigegeben ist, ist, wie mir scheint, nicht sehr performant, oder täusche ich mich da?

// de.espirit.firstspirit.store.access.contentstore.Content2Impl
e = context.getStoreElement();

// de.espirit.or.impl.EntityImpl
row = context.getSelectedRow();

releasedEntity = null;
for (revision : e.getDataset(row).getHistory()) {
   entity = e.getInRevision(revision).getEntity(row.getValue("fs_id"));
   if (entity.isReleased()) {
      releasedEntity = entity;
      break;
   }
}

print(releasedEntity.isReleased());

Danke!

Grüße Jan

0 Kudos
1 Solution

Accepted Solutions
gockel
Crownpeak employee

Dazu sollten sie über die release Session gehen

row = context.getSelectedRow();
dataSet =
e.getDataset(row);
currentEntity = dataSet.getEntity();

schema = dataSet.getTableTemplate().getSchema();

Session releaseSession = schema.getSession(true);
Entity releasedEntity = releaseSession.find(currentEntity.getKeyValue());

if (releasedEntity != null) {

     // found

}           

View solution in original post

0 Kudos
4 Replies
feddersen
Community Manager

Heißt "letzte" freigegebene Version die aktuell freigegebene Version oder die Version davor?

0 Kudos

Dieser oben aufgeführte Code würde nur zum Einsatz kommen, wenn ein Entity nicht freigegeben ist.

Hier ein kleines Beispiel:

Entity Revision 5 - nicht freigegeben

Entity Revision 4 - nicht freigegeben

Entity Revision 3 - freigegeben            - diese Version des entities möchte ich haben

0 Kudos
gockel
Crownpeak employee

Dazu sollten sie über die release Session gehen

row = context.getSelectedRow();
dataSet =
e.getDataset(row);
currentEntity = dataSet.getEntity();

schema = dataSet.getTableTemplate().getSchema();

Session releaseSession = schema.getSession(true);
Entity releasedEntity = releaseSession.find(currentEntity.getKeyValue());

if (releasedEntity != null) {

     // found

}           

0 Kudos

Danke!

0 Kudos