Prozedur zum Anlegen, Ändern und Löschen von Bedingungen einer Gruppen-Bedingung. ACHTUNG : Ist eine Gruppen-Bedingung bereits einer Gruppe zugeordnet, können KEINERLEI Änderungen mehr vorgenommen werden !
Das Konzept der Gruppen-Bedingungen bietet die Möglichkeit, Personen AUTOMATISCH nach bestimmten Kriterien in Gruppen einzuordnen. „Automatisch“ bedeutet, daß (transaktionssicher) bei jeder Änderung von Personen-Daten evtl. vorhandene Bedingungen für Gruppen, die zum jeweiligen Personen-Typ passen (siehe Rückgabespalte „PersonTypeID“ von pm_GetGroups_Ad), geprüft werden und die Person dann evtl. einer Gruppe zugeordnet oder aus einer Gruppe entfernt wird.
Eine Gruppen-Bedingung besteht grundsätzlich aus Bedingungen, die sich auf die Eigenschaft einer Person zu einem bestimmten Merkmal beziehen. Bedingungen können mit „UND“ oder „ODER“ verknüpft werden - dazu dient die „ConditionPositionID“ (entsprechender Parameter „ConditionPositionID“) :
Hierbei handelt es sich um die Nummer (eine willkürliche Nummer) eines „Bedingungs-Blocks“. Pro Bedingungs-Block kann ein Merkmal (→ „PersonCharacteristicID“) nur einmal verwendet werden, da innerhalb des gleichen Blocks die Bedingungen mit UND verknüpft werden. Mehrere Bedingungs-Blöcke werden mit ODER verknüpft.
Zusammengefaßt :
Eine Person gehört nur dann in die Gruppe, der die Gruppen-Bedingung „ConditionID“ zugewiesen ist, wenn ihre Eigenschaft zum Merkmal „PersonCharacteristicID“ der Bedingung „Condition“ entspricht (und alle anderen Bedingungen des gleichen Bedingungs-Blocks „ConditionPositionID“ erfüllt sind) ODER alle Bedingungen einer anderen „ConditionPositionID“ (der gleichen Gruppen-Bedingung „ConditionID“) zutreffen.
Hinweis :
Der Benutzer, der diese Prozedur aufruft, muß mindestens lesenden Zugriff auf das Merkmal „PersonCharacteristicID“ bzw. (im Fall „DeleteConditionPositionID = 1“) auf alle Merkmale des Bedingungs-Blocks „ConditionPositionID“ besitzen. Falls jedoch eine Beschränkung existiert (s. pm_GetPChAccRestrForUsers_Ad), gibt es einen Fehler !
Anmerkung zum Parameter „Country“ :
Egal in welchem Format „Datums-Bedingungen“ angegeben wurden, gespeichert werden diese (in „Conditions“) IMMER im Format „Monat-Tag-Jahr“ !
Zum Parameter „Condition“ :
Das Format einer Bedingung entspricht genau dem erlaubten Format für eine Bedingung bei der Personen-Suche (Parameter „ConditionList“ von pm_GetPersons_Conditions_Ad).
1. Es können Werte und Wertbereiche angegeben werden. Jede einzelne Bedingung muß eines der folgenden Formate haben :
2. Sofern eine Bedingung eines der Formate „Wert“ oder „~Wert“ hat (also eine „LIKE“-Suche durchgeführt werden soll), können sogenannte Platzhalter verwendet werden :
3. Um nach einem Wert zu suchen, der mit „[“ oder „(“ oder „{“ oder „~“ oder „^“ beginnt oder der mit „]“ oder „)“ oder „}“ endet, muß man den „~“-Operator verwenden (z.B. „~[*“ angeben, um nach Werten zu suchen, die mit „[“ beginnen)
4. Soll in einer „LIKE“-Suche (d.h. wenn die Bedingung das Format „Wert“ oder „~Wert“ hat) nach einem Platzhalter-Zeichen selbst gesucht werden, ist dieses Zeichen 2mal hintereinander einzugeben (z.B. würde durch Angabe von „%%%“ nach Werten gesucht werden, die mit „%“ beginnen)
5. Im Falle einer „LIKE“-Suche (d.h. wenn die Bedingung das Format „Wert“ oder „~Wert“ hat) werden (in dieser Reihenfolge !) folgende Ersetzungen vorgenommen :
⇒ Daher wird z.B. „?_“ sowie „_?“ durch „[_]“ ersetzt, oder „*%“ sowie „%*“ durch „[%]“. Allerdings wird z.B. „__?“ durch „[_]_“ ersetzt !
6 . Falls eine Bedingung ein Datums-/Uhrzeitformat hat, muß angegeben sein, um welches Länderformat es sich dabei handelt (siehe Parameter „Country“)
HTTP-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | configurations |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
ConditionID | ID einer Gruppen-Bedingung | smallint | 4.0.2 | |
ConditionPositionID | ID eines Bedingungs-Blocks. Bedingungen pro Bedingungs-Block werden mit „UND“ verknüpft, Bedingungs-Blöcke werden mit „ODER“ verknüpft (siehe auch Beschreibung). | tinyint | 4.0.2 | |
PersonCharacteristicID | ID eines Personen-Merkmals. Ein Merkmal kann pro Bedingungs-Block (also für die gleiche „ConditionPositionID“) nur einmal verwendet werden. | smallint | 4.0.2 | |
Condition | Die Eigenschaft einer Person zum Merkmal „PersonCharacteristicID“ muß dieser Bedingung genügen (oder alle Bedingungen eines anderen Bedingungs-Blocks müssen erfüllt sein), damit die Person der Gruppe (mit der Bedingung „ConditionID“) zugeordnet wird | varchar(255) | 4.0.2 | |
Country | NULL | Wird nur benötigt, falls „PersonCharacteristicID“ als Basis-Feldtyp ein Datum hat, da prinzipiell zwei Formate für Datumsangaben unterstützt werden : „Germany“ / „German“ : Tag-Monat-Jahr „England“ / „English“ : Monat-Tag-Jahr (s.a. Beschreibung) | varchar(10) | 4.0.2 |
DeleteConditionPositionID | 0 | Um den Bedingungs-Block „ConditionPositionID“ zu löschen, ist hierfür „1“ zu übergeben. Zum Löschen einer Bedingung (zum Merkmal „PersonCharacteristicID“) setzt man „Condition“ auf „NULL“. | bit | 4.0.2 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-697 | Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung besteht | nur direkt |
-693 | Die Gruppen-Bedingung wird bereits verwendet, daher können keine Änderungen mehr vorgenommen werden | nur direkt |
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | direkt und indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-500 | Falsche Parameter | direkt und indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
6.5.2 | 2013-02-26 | 1. Implementierung des neuen features der Zugriffsbeschränkungen 2. Interne Anpassungen (u.a. wg. UTF8-Unterstützung) |
5.1.2 | 2006-06-26 | Fehler, falls die Bedingung „KEINE Eigenschaft zum Merkmal“ angegeben wurde [„attempt to insert NULL…“] |
4.0.15 | 2004-07-30 | 1. Aufruf der Prozeduren „_mi_StartProcedure“, „_mi_FinishProcedure“ und „_mi_ChooseParamValueSeperator“ 2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur 3. Konsequente Fehlerbehandlung |
4.0.4 | 2003-08-26 | 1. Erweiterung um die Möglichkeit, eine case-INsensitive „LIKE“-Suche und eine „soundex“-Suche durchzuführen 2. Es ist jetzt möglich, nach einem Platzhalter-Zeichen („wildcard“) selbst zu suchen |
4.0.2 | 2003-06-11 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyConditions_Ad?ConditionID=<value>&ConditionPositionID=<value>&PersonCharacteristicID=<value>&Condition=<value>'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyConditions_Ad?ConditionID=<value>&ConditionPositionID=<value>&PersonCharacteristicID=<value>&Condition=<value>' | xmllint --format -
use dStore_php\WebService; $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); $request = new WebService\Requests\Engine\Procedure\Request( new WebService\Requests\AccessData('default'), 'pm_ModifyConditions_Ad', array( 'ConditionID' => <value>, 'ConditionPositionID' => <value>, 'PersonCharacteristicID' => <value>, 'Condition' => '<value>', // 'Country' => NULL, // 'DeleteConditionPositionID' => 0 ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?> <ListOfBatches> <Batch No="0"> <Procedure Name="pm_ModifyConditions_Ad"> <Parameters> <Parameter Name="ConditionID"><!-- smallint value --></Parameter> <Parameter Name="ConditionPositionID"><!-- tinyint value --></Parameter> <Parameter Name="PersonCharacteristicID"><!-- smallint value --></Parameter> <Parameter Name="Condition"><!-- varchar value --></Parameter> <!-- <Parameter Name="Country">NULL</Parameter> --> <!-- <Parameter Name="DeleteConditionPositionID">0</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>