Benutzer-Werkzeuge

Webseiten-Werkzeuge

Action disabled: source

engine:procedures:pm_modifyconditions_ad

pm_ModifyConditions_Ad

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 :

  • Wert → „Like“ Wert
  • ~Wert → „Like“ Wert, aber case-INsensitiv
  • ^Wert → „= soundex(Wert)“
  • {Wert → „<>“ Wert
  • (Wert → „>=“ Wert
  • Wert) → „⇐“ Wert
  • [Wert → „>“ Wert
  • Wert] → „<“ Wert
  • (Wert1|Wert2) → „>=“ Wert1 und „⇐“ Wert2
  • (Wert1|Wert2] → „>=“ Wert1 und „<“ Wert2
  • [Wert1|Wert2) → „>“ Wert1 und „⇐“ Wert2
  • [Wert1|Wert2] → „>“ Wert1 und „<“ Wert2
  • {} oder {) oder {] oder (} oder () oder (] oder [} oder [) oder [] → Es sollen alle Personen gesucht werden, die das entsprechende Merkmal NICHT 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 :

  • '_' oder '?' : Platzhalter für EIN Zeichen
  • '%' oder '*' : Platzhalter für eine ZeichenKETTE

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 :

  • „?“ durch „_“, ausgenommen „??“ (diese Zeichenkette wird durch „?“ ersetzt)
  • „*“ durch „%“, ausgenommen „**“ (diese Zeichenkette wird durch „*“ ersetzt)
  • „__“ durch „[_] (um nach dem Zeichen „_“ selbst suchen zu können, siehe 4.)
  • “%%„ durch “[%] (um nach dem Zeichen „%“ selbst suchen zu können, siehe 4.)

⇒ 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-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieconfigurations
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
ConditionID ID einer Gruppen-Bedingung
smallint4.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).
tinyint4.0.2
PersonCharacteristicID ID eines Personen-Merkmals. Ein Merkmal kann pro Bedingungs-Block (also für die gleiche „ConditionPositionID“) nur einmal verwendet werden.
smallint4.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
CountryNULL 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
DeleteConditionPositionID0 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“.
bit4.0.2

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 4)
-697Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung bestehtnur direkt
-693Die Gruppen-Bedingung wird bereits verwendet, daher können keine Änderungen mehr vorgenommen werdennur direkt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochendirekt und indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
6.5.2 2013-02-261. Implementierung des neuen features der Zugriffsbeschränkungen
2. Interne Anpassungen (u.a. wg. UTF8-Unterstützung)
5.1.2 2006-06-26Fehler, falls die Bedingung „KEINE Eigenschaft zum Merkmal“ angegeben wurde [„attempt to insert NULL…“]
4.0.15 2004-07-301. 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-261. 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-11Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

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 -
dStore_php
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();
engine/execute

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>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/pm_modifyconditions_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)