phafke
Returning Observer

Verwendete Datensätze einer Datenquelle auslesen

Jump to solution

Hallo zusammen,

wir haben in unserem Projekt Kontaktdaten in einer Datenquelle hinterlegt. Um die Performance für die Eingabekomponenten zu erhöhen die auf diese Datenquelle zugreifen, würde ich gerne die verwendeten Datensätze mit einem Flag markieren.

Im Client bekomme ich über "Verwendungen anzeigen" auf einem Datensatz die Referenzen angezeigt.

Über die Beanshell Konsole habe ich versucht auf context.getSelectedRow().getReferences() auf sowas in der Art zuzugreifen. Hier bekomme ich jedoch ein Ergebnis, egal ob der Datensatz verwendet wird oder nicht.

Hat ggf. jemand einen Tipp für mich? 😉

Besten Dank und Gruß

peter

0 Kudos
1 Solution

Accepted Solutions
aVogt
Returning Creator

Hallo Peter,

so müßte es gehen (zumindest ermittel ich so die Verlinkungen):

ReferenceEntry[] incomref = schema.getIncomingReferences(entity);

Beim iterieren über incomref:

Entity referenceEntity = (Entity) incomref[n].getReferencedObject();

Grüße

Andreas

View solution in original post

0 Kudos
5 Replies
broszeit
I'm new here

Hallo Peter,

könntest Du den genauen Code posten, den du verwendest?

Content2ScriptContext.getSelectedRow() liefert ein Entity zurück, welches die Methode getReferences() gar nicht bereitstellt.

Führst Du dazwischen noch Schritte aus, um zum Beispiel an ein StoreElement zu gelangen?

Viele Grüße

Rouven

0 Kudos
phafke
Returning Observer

Hi Rouven,

klar, sorry. Ich hol' mir zunächst das Projekt:

  • project = context.getProject();

den Userservice:

  • userService = project.getUserService();

das Storeelement:

  • content2 = context.getStoreElement();

die Entity:

  • entity = context.getSelectedRow();

und den Datensatz:

  • cndDataset = content2.getDataset(entity);

cndDataset.getReferences(); => <[]> (egal ob verwendet oder nicht)

cndDataset.getIncomingReferences(); => z.B: <[Lde.espirit.firstspirit.access.ReferenceEntry;@311550> (egal ob verwendet oder nicht)

cndDataset.getOutgoingReferences(); => z.B. <[Lde.espirit.firstspirit.access.ReferenceEntry;@8e7719> (egal ob verwendet oder nicht)

Viele Grüße

Peter

0 Kudos
phafke
Returning Observer

Hi Rouven,

ich habe die Situation grade mal in Eclipse nachgebaut und dort wird mir für den Datensatz tatsächlich kein getReferences() zur Verfügung gestellt:

// get userService

UserService us = project.getUserService();

// get Store

Store cs = us.getStore(Store.Type.forName("CONTENTSTORE"),false);

// get Datasource

Content2 datasource = (Content2) cs.getStoreElement(contacts, IDProvider.UidType.CONTENTSTORE);

// get Schema

Schema schema = datasource.getSchema();

// get Session

de.espirit.or.Session session = schema.getSession();

// get Datasets

List<? extends Entity> contactDatasets = datasource.getData();

Wie kann ich mir die Abhängigkeiten eines Datensatzes denn ausgeben lassen?

Danke und Gruß

peter

0 Kudos
aVogt
Returning Creator

Hallo Peter,

so müßte es gehen (zumindest ermittel ich so die Verlinkungen):

ReferenceEntry[] incomref = schema.getIncomingReferences(entity);

Beim iterieren über incomref:

Entity referenceEntity = (Entity) incomref[n].getReferencedObject();

Grüße

Andreas

0 Kudos
phafke
Returning Observer

Hallo Andreas,

besten Dank für deine Antwort. Das Ganze auf dem Schema zu probieren, statt auf dem Datensatz selbst, da bin ich nicht drauf gekommen.

Ich ermittel jetzt über schema.getIncomingReferences(entity).length ob bzw. wieviele Referenzen bestehen.

Viele Grüße

Peter

0 Kudos