getDependentWorkSpace
Versionshinweise | 12.1, 25.5 | ||
|---|---|---|---|
Code
IScriptWorkSpace WorkSpaceScriptUtils.getDependentWorkSpace(String pk, String masterEntity, String relation)
Beschreibung
Lädt zu dem gegebenen Primärschlüssel und Entitätsnamen abhängige Datensätze aus der gegebenen Relation als Workspace. Es werden maximal 10000 Datensätze geladen, außer im Server wurde die maximale Suchergebnisgrenze erhöht.
getDependentWorkSpace liefert nur die Datensätze, die im Unterbereich auch automatisch angezeigt werden, d.h. die Einschränkung ist nicht nur auf "nicht gelöscht" sondern auch jegliche weiteren Bedingungen, die in einer ggf. vorhandenen Default-Unterbereichssuche für diese Relation formuliert sind.
Diese Methode sollte nur eingesetzt werden, wenn anschließend schreibende Zugriffe auf dem Suchergebnis stattfinden sollen.
Parameter
pk - Der Primärschlüssel der übergeordneten Entität.
masterEntity - Der interne Name der übergeordneten Entität. Z.B. "Customer".
relation - Der Interne Name der Relation. Z.B. "rCuAc".
Rückgabe
Gibt ein Suchergebnis vom Typ IScriptWorkSpace zurück.
Beispiele
IScriptWorkSpace ws = WorkSpaceScriptUtils.getDependentWorkSpace("entityPk", "Customer", "rCuAc");
2025.5
Code
IScriptWorkSpace getDependentWorkSpace(String pk, String masterEntity, String relation, List<String> dependentPks)
Lädt zu dem gegebenen Primärschlüssel und Entitätsnamen die abhängigen Daten aus der gegebenen Relation. Es werden höchstens 10000 Datensätze selektiert.
Es können Primärschlüssel als optionale Parameter oder als Liste übergeben werden, um bestimmte Daten in der Relation zu suchen. Wird der optionale Parameter mit null übergeben, wird er ignoriert.
Diese Methode sollte nur eingesetzt werden, wenn anschließend schreibende Zugriffe auf dem Suchergebnis stattfinden sollen. Sonst sollten die Daten mit einer "forRead"-Methode ermittelt werden.
Parameter:
pk - Der Primärschlüssel der übergeordneten Entität.
masterEntity - Der interne Name der übergeordneten Entität, z.B. "Customer".
relation - Der interne Name der Relation, z.B. "rCuAc".
dependentPks - [optional] Eine Liste von Pks, die in dem abhängigen Workspace gesucht werden
Rückgabe:
Gibt ein Suchergebnis vom Typ IScriptWorkSpace zurück.
Beispiele
@Test void myTest()
{
String coPePk = prepareTestAndGetCoPePk();
IScriptWorkSpace depActivityWs = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc");
Assertions.assertEquals(3, WorkSpaceScriptUtils.getSize(depActivityWs), "Test 1: find all dependent Activities");
List activityPks = WorkSpaceScriptUtils.getPrimaryKeysOfWorkSpace(depActivityWs);
String firstActivityPk = activityPks.get(0);
IScriptWorkSpace depActivitiesByPks = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc", firstActivityPk);
Assertions.assertEquals(1, WorkSpaceScriptUtils.getSize(depActivitiesByPks), "Test 2: find first Activity of prepareTestAndGetCoPePk");
depActivitiesByPks = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc", "");
Assertions.assertEquals(0, WorkSpaceScriptUtils.getSize(depActivitiesByPks), "Test 3: find no Activity because pk does not exist");
depActivitiesByPks = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc", new ArrayList());
Assertions.assertEquals(0, WorkSpaceScriptUtils.getSize(depActivitiesByPks), "Test 4: find no Activity because the List is empty");
depActivitiesByPks = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc", (List)null);
Assertions.assertEquals(3, WorkSpaceScriptUtils.getSize(depActivitiesByPks), "Test 5: Fallback: find all dependent Activities");
depActivitiesByPks = WorkSpaceScriptUtils.getDependentWorkSpace(coPePk, "ContactPerson", "rCoPeAc", (String)null);
Assertions.assertEquals(3, WorkSpaceScriptUtils.getSize(depActivitiesByPks), "Test 6: Fallback: find all dependent Activities");
IScriptWorkSpace depActivitiesBySearch = WorkSpaceScriptUtils.getDependentWorkSpaceBySearch(coPePk, "ContactPerson", "rCoPeAc", (ISearch)null);
Assertions.assertEquals(3, WorkSpaceScriptUtils.getSize(depActivitiesBySearch), "Test 7: Fallback: find all dependent Activities");
ISearchCondition pk = SearchUtils.createSearchCondition("Pk.Activity", SearchUtils.UN_EQUAL, firstActivityPk);
ISearch search = SearchUtils.createSearch("Activity", pk);
depActivitiesBySearch = WorkSpaceScriptUtils.getDependentWorkSpaceBySearch(coPePk, "ContactPerson", "rCoPeAc", search);
Assertions.assertEquals(2, WorkSpaceScriptUtils.getSize(depActivitiesBySearch), "Test 8: Other Activities of prepareTestAndGetCoPePk");
List found = WorkSpaceScriptUtils.getEntries(depActivitiesBySearch);
for(IContainer foundActiviy : found)
{
Assertions.assertNotEquals(firstActivityPk, WorkSpaceScriptUtils.getPk(foundActiviy), "Test 9: Other than first activity pk");
}
}
private String prepareTestAndGetCoPePk()
{
IContainer customer = WorkSpaceScriptUtils.createDefaultEntry("Customer");
WorkSpaceScriptUtils.setValue(customer, "Name1.Customer", "TestCustomer");
WorkSpaceScriptUtils.setValue(customer, "PeName1.Customer", "TestCustomer");
WorkSpaceScriptUtils.setValue(customer, "MatchCode.Customer", "TEST CUSTOMER");
WorkSpaceScriptUtils.setValue(customer, "PersontypeKey.Customer", LookupUtils.toLookup("PersonType-C"));
IScriptWorkSpace customerWs = WorkSpaceScriptUtils.createEmptyWorkSpace("Customer");
customer = WorkSpaceScriptUtils.createEntry(customerWs, 0, customer);
WorkSpaceScriptUtils.closeWorkSpace(customerWs);
String customerPk = WorkSpaceScriptUtils.getPk(customer);
ISearchCondition cuKeyCond = SearchUtils.createSearchCondition("CustomerKey.ContactPerson", SearchUtils.EQUAL, LookupUtils.toLookup(customerPk));
ISearchCondition autoCoPeCond = SearchUtils.createSearchCondition("IsAutoCoPe.ContactPerson", SearchUtils.EQUAL, true);
ISearchCondition coPePkCond = SearchUtils.createSearchCondition("Pk.ContactPerson", SearchUtils.NO_CONDITION);
ISearch coPeSearch = SearchUtils.createSearch("ContactPerson", cuKeyCond);
coPeSearch = SearchUtils.addSearchCondition(coPeSearch, coPePkCond);
coPeSearch = SearchUtils.addSearchCondition(coPeSearch, autoCoPeCond);
List coPes = WorkSpaceScriptUtils.searchForRead(coPeSearch);
Assertions.assertEquals(1, coPes.size(), "PrepareTest 1 found auto contact person");
IContainer coPeIc = coPes.get(0);
String coPePk = WorkSpaceScriptUtils.getPk(coPeIc);
IScriptWorkSpace activityWs = WorkSpaceScriptUtils.createEmptyWorkSpace("Activity");
for(int i = 0; i < 3; i++)
{
IContainer actIc = WorkSpaceScriptUtils.createDefaultEntry("Activity");
WorkSpaceScriptUtils.setValue(actIc, "Subject.Activity", "Test " + i);
WorkSpaceScriptUtils.setValue(actIc, "ActTypeKey.Activity", LookupUtils.toLookup("C0S_ACTTYPE_TELAUS"));
WorkSpaceScriptUtils.setValue(actIc, "DefaultContactPerson.Activity", LookupUtils.toLookup(coPePk));
WorkSpaceScriptUtils.setValue(actIc, "EndDate.Activity", DateUtils.NOW);
WorkSpaceScriptUtils.setValue(actIc, "StartDate.Activity", DateUtils.NOW);
WorkSpaceScriptUtils.createEntry(activityWs, 0, actIc)
}
WorkSpaceScriptUtils.closeWorkSpace(activityWs);
return coPePk;
}