Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:pm_modifypersoncharacsincat_ad

pm_ModifyPersonCharacsInCat_Ad

Mit dieser Prozedur ordnet man ein Merkmal einer Merkmal-Kategorie zu bzw. löscht eine bestehende Zuordnung.

Wichtige Hinweise :

1. Wenn zum angegebenen Merkmal (→ „PersonCharacteristicID“) in der Tabelle „PersonCharacteristics“ „Required = 1“ hinterlegt ist, dann muß in „PersonCharacsInCatgories“ ebenfalls „Required = 1“ gespeichert sein.
Beim Erstellen einer Zuordnung wird in diesem Fall „Required“ automatisch auf „1“ gesetzt, es gibt also keinen Fehler, falls „0“ übergeben wurde !

2 Eine Änderung des „Required“-Flags von „0“ auf „1“ setzt natürlich voraus, daß alle Personen, die Eigenschaften zu (wenigstens) einem Merkmal der Kategorie „PersonCharacCategoryID“ besitzen, auch eine Eigenschaft zu „PersonCharacteristicID“ haben. Falls nicht, gibt es den Fehler „-686“ !

3. Eine Änderung des „Required“-Flags von „1“ auf „0“ ist problemlos möglich, es sei denn es handelt sich bei „PersonCharacteristicID“ um ein Pflichtmerkmal („Required = 1“ in „PersonCharacteristics“) - es gibt dann den Fehler „-500“

4. Es darf pro Personen-Typ nur eine Merkmal-Kategorie geben, die Pflicht-Merkmale („Required = 1“ in „PersonCharacteristics“) enthält

5. Ein Merkmal darf einem Personen-Typ nur einmal zugewiesen werden, d.h. nur in einer Merkmal-Kategorie zu diesem Personen-Typ vorkommen

6. Gelöscht werden kann ein Merkmal aus einer Kategorie nur dann, wenn es nicht bereits eine Person des zur Kategorie gehörenden Personen-Typs gibt, die eine Eigenschaft zu diesem Merkmal besitzt.

7. Ein Merkmal kann einer Kategorie als Pflichtfeld („Required = 1“) nur dann zugewiesen werden, wenn nicht bereits eine Person (des der Kategorie entsprechenden Typs) existiert, die Eigenschaften zu bereits vorhandenen Merkmalen der Kategorie besitzt.

8. Ein Merkmal kann maximal von 31 Personen-Typen verwendet werden (Hintergrund ist „UsedByPersonType_Bitmap“ in „PersonCharacteristicValues“; diese „Bitmap“-Information wird intern von der Personen-Suche pm_GetPersons_Conditions_Ad verwendet, um schnell erkennen zu können, von welchem Personen-Typ eine Eigenschaft verwendet wird).

Anmerkungen zum Parameter „DefaultValue“ :

1.) Via „DefaultValue“ kann man einen Wert konfigurieren, der automatisch vergeben wird, wenn eine Person noch gar keine
Eigenschaft zu Merkmalen der Kategorie „PersonCharacCategoryID“ besitzt und dann Daten dieser Kategorie hinzugefügt oder Eigenschaften dieser Kategorie gelöscht werden.
Letzteres macht scheinbar keinen Sinn (da die Logik ja nur greift, wenn noch KEINE Eigenschaften vorhanden sind), es ist aber ein hilfreicher Trick, um zu ermöglichen, NUR „DefaultValues“ in einer Kategorie speichern zu lassen.

2.) Ein Default-Wert muß natürlich dem (durch die „FieldTypeID“ konfigurierten) Format aller Eigenschaften des Merkmals (→ „PersonCharacteristicID“) entsprechen. Man beachte in diesem Zusammenhang daher den Parameter „Country“.

3.) Zu einem „unique“-Merkmal kann KEIN (fester) „DefaultValue“ konfiguriert werden, und falls das Merkmal vordefinierte Werte besitzt, kann nur einer dieser vordefinierten Werte als „DefaultValue“ verwendet werden. Ausnahme bei „unique“-Merkmalen sind „Funktions-Werte“ (s. 4.)

4.) Es wird zwischen festen und dynamischen Default-Werten unterschieden. Dynamische Default-Werte können durch Verwendung von „Funktionen“ konfiguriert werden. Dazu muß „DefaultValue“ die Form „#<eine Funktion (s.u.)>#“ besitzen.
Anmerkung :
Möchte man „#<irgendwas>#“ als Default-Wert setzen, muß „##<irgendwas>##“ übergeben werden, wobei innerhalb von „<irgendwas>“ dann das „#“ wiederum nur einmal vorkommen braucht (sprich „##“ wird innerhalb von „<irgendwas>“ auch als „##“ interpretiert).
Erlaubte Funktionen sind :

  • getdate()

⇒ Erzeugt das aktuelle Datum (ohne Uhrzeit) im Format mm.dd.yyyy

  • gettime()

⇒ Erzeugt die aktuelle Uhrzeit im Format hh:mi:ss:mmm

  • getdateandtime()

⇒ Erzeugt das aktuelle Datum inkl. aktueller Uhrzeit im Format mm.dd.yyyy hh:mi:ss:mmm

  • randomstr(<strlength>,<opt. Prefix>,<opt. Postfix>)

⇒ Erzeugt einen zufälligen string der durch <strlength> angegebenen Länge (Zahl zwischen 1 und 50), wobei als Zeichen-Vorrat (0,..,9,a,..z,A,..Z) zugrunde liegt. Optional kann <opt. Prefix> vorangestellt und/oder <opt. Postfix> angehängt werden. Diese Parameter müssen jeweils einfach einen (auch durchaus leeren) string darstellen, der mit dem einfachan Anführungszeichen (') beginnen und enden muß !
Beispiele :
1.) #randomstr(20)#
⇒ Es wird eine zufällige Kette aus 20 Zeichen erzeugt
2.) #randomstr(20,'','_test')#
⇒ Es wird eine zufällige Kette aus 20 Zeichen erzeugt, an die „_test“ angehängt wird
3.) #randomstr(20,'GEN')#
⇒ Es wird eine zufällige Kette aus 20 Zeichen erzeugt, der „GEN“ vorangestellt wird
4.) #randomstr(20,'1,2')#
⇒ Es wird eine zufällige Kette aus 20 Zeichen erzeugt, der „1,2“ vorangestellt wird
5.) #randomstr(20,'1,2,', '3,4')#
⇒ Es wird eine zufällige Kette aus 20 Zeichen erzeugt, der „1,2,“ vorangestellt und and die „3,4“ angehängt wird

Die Datums-Funktionen sind natürlich nur erlaubt bei Merkmalen mit Datum als Basis-Feldtyp, die „randomstr“-Funktion darf nur bei Merkmalen mit Basis-Feldtyp „Text“ verwendet werden !

Hinweis :
Bei den Datums-Funktionen sind die zur Laufzeit generierten Werte für die zu verarbeitenden Personen (beim Import können es ja mehrere sein) identisch ! Im Gegensatz zur „randomstr“-Funktion : wenn beispielsweise drei Personen verarbeitet werden, findet auch dreimal ein entsprechender Funktions-Aufruf statt, so daß (ein ausreichender <strlength>-Wert vorausgesetzt) auch drei verschiedene Werte herauskommen.

HTTP-MethodPOST
HTTP-AuthOptional
Aliaspm_ModifyPersonCharacteristicsInCategories_Ad
Tags
Engine-Kategorieconfigurations
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
PersonCharacCategoryID ID einer Kategorie von Personen-Merkmalen
tinyint3.5.0
PersonCharacteristicID ID eines Personen-Merkmals. Ist für den Aufrufer der lesende Zugriff auf das Merkmal komplett gesperrt (s. Rückgabespalten „AccessRestriction“ und „ReadAccessRestrictionPattern“ von pm_GetPChAccRestrForUsers_Ad), gibt es einen Fehler !
smallint3.5.0
Required0 Falls „1“, so MUSS eine Person, die eine Angabe zu wenigstens einem Merkmal der Kategorie „PersonCharacCategoryID“ macht, auf JEDEN FALL auch eine Angabe zu Merkmal „PersonCharacteristicID“ machen
bit3.5.0
Delete0 Die Zuordnung „PersonCharacteristicID“ → „PersonCharacCategoryID“ soll…
„0“ : erstellt
„1“ : gelöscht
… werden (s. a. „Wichtige Hinweise“ in der Beschreibung)
bit3.5.0
KeepPropertiesHistoryInDaysNULL Wieviele Tage sollen Änderungen von Eigenschaften zum Merkmal „PersonCharacteristicID“ von Personen des Typs, dem die Kategorie „PersonCharacCategoryID“ zugewiesen ist, gehalten werden ? („NULL“ / „0“ : keine Historie, „-1“ : unendlich lang aufbewahren)
smallint4.0.0
DefaultValueNULL Standard-Wert, der autom. zu einer Person als Eigenschaft zum Merkmal „PersonCharteristicID“ gespeichert wird, wenn Daten der Kategorie „PersonCharacCategoryID“ bearbeitet werden, die Person aber KEINE Eigenschaften zu Merkmalen dieser Kategorie besitzt
varchar(100)6.0.0
Country'german' Gibt an, in welchem Format „DefaultValue“ angegeben ist, wenn ein Datums-Wert vorliegt (Groß-/Kleinschreibung wird nicht beachtet) :
'german', 'germany' : Tag-Monat-Jahr
'english', 'england' : Monat-Tag-Jahr
varchar(10)6.0.0

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
-695Es kann kein fester Default-Wert für „eindeutige“ Merkmale („IsUnique = 1“) konfiguriert werdennur direkt
-689Ein Merkmal darf maximal 31 Personentypen zugewiesen seinnur direkt
-688Wegen vorhandener Personendaten kann der Kategorie kein Pflichtmerkmal hinzugefügt werdennur direkt
-687Das Merkmal kann nicht aus der Kategorie entfernt werden, da bereits Personendaten vorhanden sindnur direkt
-686Die Merkmal-Kategorie kann nicht geändert/gelöscht werden, da bereits Personendaten existierennur direkt
-681Ein Merkmal darf einem Personen-Typ nur einmal zugewiesen werdennur direkt
-680Es darf zu einem Personen-Typ nur genau eine Merkmal-Kategorie mit Pflichtmerkmalen existierennur direkt
-676Zum Merkmal sind nur vordefinierte Werte erlaubt, aber der Wert existiert noch nichtnur 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
-540Falsches Formatnur 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 abgebrochennur 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]
7.0.4 2014-03-19Überflüssige „set forceplan off“-Anweisung an einer Stelle entfernt
6.5.2 2013-02-261. Beachtung der neuen Zugriffs-Beschränkungen für Merkmale [⇒ Doku-Anpassung]
2. Anpassungen an den aktuellen Quellcode-Standard [u.a. wg. UTF8-Unterstützung]
6.0.0 2010-03-261. Neuer Parameter „DefaultValue“
2. Anpassung des Quell-Codes an den aktuellen Standard
4.0.15 2004-07-301. Aufruf der Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“
2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn
3. Konsequente Fehlerbehandlung
4. Man kann jetzt prinzipiell auch das Flag „Required“ ändern
4.0.0 2003-04-03Neuer Parameter „KeepPropertiesHistoryInDays“
3.5.13 2001-12-06
3.5.0 2000-11-23Erstmalig 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_ModifyPersonCharacsInCat_Ad?PersonCharacCategoryID=<value>&PersonCharacteristicID=<value>'

Mit xmllint 5) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyPersonCharacsInCat_Ad?PersonCharacCategoryID=<value>&PersonCharacteristicID=<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_ModifyPersonCharacsInCat_Ad',
		array(
			'PersonCharacCategoryID' => <value>,
			'PersonCharacteristicID' => <value>,
			// 'Required' => 0,
			// 'Delete' => 0,
			// 'KeepPropertiesHistoryInDays' => NULL,
			// 'DefaultValue' => NULL,
			// 'Country' => 'german'
		)
);
 
$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_ModifyPersonCharacsInCat_Ad">
			<Parameters>
				<Parameter Name="PersonCharacCategoryID"><!-- tinyint value --></Parameter>
				<Parameter Name="PersonCharacteristicID"><!-- smallint value --></Parameter>
				<!-- <Parameter Name="Required">0</Parameter> -->
				<!-- <Parameter Name="Delete">0</Parameter> -->
				<!-- <Parameter Name="KeepPropertiesHistoryInDays">NULL</Parameter> -->
				<!-- <Parameter Name="DefaultValue">NULL</Parameter> -->
				<!-- <Parameter Name="Country">'german'</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_modifypersoncharacsincat_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)