Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:pm_getpersonproperties_pu

pm_GetPersonProperties_Pu

Ermittelt Eigenschaften zu einer Person.

Anmerkung zu den Parametern „InputParameter“, „InputIsUniqueID“ und „PersonTypeID“ :

Falls Identifizierungsdaten angegeben sind (also „InputIsUniqueID = 0“), wird die übliche Personen-Identifizierung durchgeführt; hier wird IMMER der „PersonTypeSettings“-Eintrag „PersonIdentificationIDs“ zur „PersonTypeID“ herangezogen - „PersonGrantAccessIDs“ (zur „PersonTypeID = 0“) werden NICHT beachtet ! Zur grundsätzlichen Funktsionsweise der Personen-Identifizierung siehe pm_CheckPersonIdentity_Pu.

Ist nur die „UniqueID“ eines Besuchers bekannt (also „InputIsUniqueID = 1“), werden Eigenschaften zur Person des Typs „PersonTypeID“ ermittelt, die aktuell dem durch die (in „InputParameter“ angegebene) „UniqueID“ gekennzeichneten Besucher zugeordnet ist. Dabei werden nur die Merkmale berücksichtigt, die in „PersonTypeSettings“ zur „PersonTypeID“ zum Schlüssel „PersonCharacteristicIDsGrantedByUniqueID“ hinterlegt sind. In diesem Fall werden natürlich die Parameter „CharacteristicIDList“ und „PersonID“ ignoriert !

Mit „InputIsUniqueID = 2“ kann man als dritte Möglichkeit angeben, daß „InputParameter“ eine „SessionID“ enthält. Zu dieser sollen die Identifizierungsdaten aus „SessionManagement“ (s. mi_GetSessionManagement_Pu) herangezogen werden, genauer zum Schlüssel „PersonIdentificationValues_Type<PersonTypeID>“. Alles weitere funktioniert dann genauso wie im Fall „InputIsUniqueID = 0“ (s.o.) !

Anmerkung zum Parameter „CharacteristicIDList“ :

Es gibt keinen Fehler, wenn Merkmale übergeben werden, die nicht zum Personen-Typ der identifizierten bzw. angegebenen Person passen oder für den Benutzer, der diese Prozedur aufruft bzw. (wenn „PCharacsBackwardCompatible“ in „PersonTypeSettings“ auf „1“ gesetzt ist) für den „publicuser“ („UserID = 0“) nicht sichtbar sind (s. pm_GetPChAccRestrForUsers_Ad), sondern diese werden einfach ignoriert !

Anmerkung zum Parameter „PersonID“ :

Sollen Personendaten zu einer anderen Person ausgegebenen werden, kann diese Person über den Parameter „PersonID“ identifiziert werden. Natürlich klappt dies nur, wenn eine bestimmte „Beziehung“ der identifizierten Person zur „PersonID“ besteht :
1. Zugriff ist erlaubt, wenn die identifizierte Person Auftraggeber eines Auftrags ist, bei dem „PersonID“ die Lieferanschrift („DeliveryPersonID“) ist UND der „PersonTypeSettings“-Eintrag zum Schlüssel „UnlimitedAccessToDeliveryPersonData“ (zur „PersonTypeID = 0“) auf „1“ konfiguriert ist. In diesem Fall besteht Zugriff auf Eigenschaften zu ALLEN Merkmalen.
2. Andernfalls ist der Zugriff nur erlaubt, wenn aktuell eine Beziehung der identifizierten Person zur „PersonID“ besteht, deren „AccessLevel“ (s. gleichnamige Rückgabespalte von pm_GetPersonRelationships_Pu) dies erlaubt. Zu welchen Merkmalen aber Eigenschaften eingesehen werden dürfen, regelt ein „RelationshipSettings“-Eintrag zum Schlüssel „AllowedCharacIDs_Read“ (siehe auch „Hinweis“ in pm_GetRelationshipSettingEntry).

Anmerkung zur Rückgabespalte „Modify“ :

Gibt an, ob der spezielle Benutzer „publicuser“ („UserID = 0“, s. mi_GetUserInfo_Ad) Eigenschaften/Details zum Merkmal „CharacteristicID“ ÄNDERN darf bzw. eingeschränkt ändern darf. Falls der „PersonTypeSettings“-Eintrag (zur „PersonTypeID = 0“) zum Schlüssel „PCharacsBackwardCompatible“ auf „1“ gesetzt ist, hat dieser Wert die Bedeutung, ob Änderungen mit z.B. pm_InsertNewPerson_Pu oder pm_ModifyPersonData_Pu (egal welcher Benutzer sie ausführt) möglich bzw. eingeschränkt erlaubt sind. Mögliche Werte :

  • „0“ : Keinerlei Änderung erlaubt (anlagen, ändern und löschen sind verboten)
  • „1“ : Alle Arten von Änderungen erlaubt (d.h. anlegen, ändern, löschen)
  • „2“ : Nur die Neu-Anlage ist erlaubt, (ändern und löschen sind verboten)
  • „3“ : Nur Ändern ist erlaubt (anlegen und löschen sind verboten)
  • „4“ : Nur Neu-Anlage und Ändern sind erlaubt (löschen ist verboten)
  • „5“ : Nur Löschen ist erlaubt (anlegen und ändern sind verboten)
  • „6“ : Nur Neu-Anlage und Löschen sind erlaubt (ändern ist verboten)
  • „7“ : Nur Ändern und Löschen sind erlaubt (anlegen ist verboten)

Anmerkung zur Rückgabespalte „Visible“ :

Wird hier eine „0“ ausgegeben, werden in Prozeduren, die vom Benutzer „publicuser“ („UserID = 0“, s. mi_GetUserInfo_Ad) ausgeführt werden, KEINE Eigenschaften/Details bzw. nur „Teile von Eigenschaften“ (s. Rückgabespalte „ReadAccessRestrictionPattern“) zum Merkmal „CharacteristicID“ ausgegeben. Falls der „PersonTypeSettings“-Eintrag (zur „PersonTypeID = 0“) zum Schlüssel „PCharacsBackwardCompatible“ auf „1“ gesetzt ist, hat dieser Wert die Bedeutung, daß in „public“-Prozeduren KEINE Eigenschaften/Details bzw. nur „Teile von Eigenschaften“ zum Merkmal „CharacteristicID“ ausgegeben werden.

Anmerkung zur Rückgabespalte „ReadAccessRestrictionPattern“ :

Immer „NULL“ wenn „Visible = 1“ ist. Falls hier ein Wert zurückkommt, bedeutet dies, daß der „publicuser“ („UserID = 0“, s. mi_GetUserInfo_Ad) den Teil von Eigenschaften zum Merkmal „CharacteristicID“ einsehen darf, der diesem „pattern“ entspricht (für Details bedeutungslos). Derzeit mögliche Werte :

  • „#left(<n>)#“ : die ERSTEN n Zeichen („n = 0“ mögl.) werden ausgegeben
  • „#right(<n>)#“ : die LETZTEN n Zeichen („n = 0“ mögl.) werden ausgegeben

Beispielsweise bedeutet „#left(4)#“, daß nur (maximal) die ERSTEN 4 Zeichen der Eigenschaft zurückgeliefert werden.

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieperson management
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.8 (2015-08-21)

Parameter

InputParameter Je nach „InputIsUniqueID“ handelt es sich entweder um Identifizierungsdaten oder um eine „UniqueID“ oder um eine „SessionID“ (s. Beschreibung)
varchar(255)3.5.0
InputIsUniqueID0 „InputParameter“ enthält…
„0“ : Identifizierungsdaten
„1“ : Die „UniqueID“ eines Besuchers (der eine Person zugeordnet ist)
„2“ : Eine „SessionID“ (zu der Identifizierungsdaten hinterlegt sind)
tinyint3.5.0
PersonTypeID1 ID des Personen-Typs dem die zu identifizierende Person angehört bzw. (falls „InputIsUniqueID = 1“) : die Person, die dem durch „InputParameter“ gekennzeichneten Besucher aktuell zugeordnet ist, muß diesem Typ angehören. (siehe Beschreibung !)
tinyint3.5.0
LanguageID0 ID einer Sprache. Wenn angegeben, versucht die Prozedur Übersetzungen zur Merkmal-Bezeichnung (→ „CharacteristicDescription“) und zur Eigenschaft (→ „Value“) zu finden - falls keine Übersetzung existiert, wird der Wert in der Standardsprache ausgegeben.
tinyint3.5.0
CharacteristicIDListNULL Liste von Merkmal-IDs (durch '¶' getrennt), zu denen die Eigenschaften ermittelt werden sollen. Bei Angabe von „NULL“ / '' (leerer „string“) werden alle vorhandenen Eigenschaften ermittelt. Der Parameter wird nicht beachtet, falls „InputIsUniqueID = 1“ !
varchar(255)3.5.0
DateFormat'german' Bestimmt das Format der Ausgabe von Datums-Eigenschaften. Dabei wird Groß- und Kleinschreibung NICHT beachtet) :
* 'german' o. 'germany' : Tag-Monat-Jahr (Standardwert)
* 'english' o. 'england' : Monat-Tag-Jahr
varchar(10)3.5.0
CaseSensitive1 Nur relevant, falls „InputIsUniqueID = 0“ !
„0“ : Der Vergleich der Identifizierungsdaten erfolgt unabhängig von der Groß- und Kleinschreibung
„1“ : Die Identifizierungsdaten werden EXAKT verglichen
bit3.5.0
PersonIDNULL Nur relevant, falls „InputIsUniqueID = 0“ ! ID der Person, zu der die Eigenschaften ausgegeben werden sollen. Angeben, falls NICHT die Eigenschaften der identifizierten Person ermittelt werden sollen. (siehe Beschreibung)
integer3.5.5
DateAndTimeNULL Zeitpunkt, zu dem die Eigenschaften der Person ermittelt werden sollen. Bei Angabe von „NULL“ werden die aktuellen Eigenschaften zurückgegeben.
datetime4.0.0
GetActualProperties0 „1“ angeben, damit die Rückgabespalte „ActualValue“ nicht mit „NULL“ belegt wird, sondern mit der aktuell gültigen Eigenschaft der Person zum jeweiligen Merkmal
bit4.0.0
SeparatorForIdentVals'¶'
varchar(4)7.0.8

Rückgabe

(parameterunabhängig)

Spaltenname Beschreibung SQL-Datentyp1) ab Version
PositionOfCharacteristicIDInCharacteristicIDList2)Wird nicht ausgegeben, aber zur Sortierung in einem Fall benötigt. Es handelt sich um die Position von „CharacteristicID“ in „CharacteristicIDList“.
tinyint3.5.0
PositionOfCharacteristicIDInSettingsEntry3)Wird nicht ausgegeben, aber zur Sortierung in einem Fall benötigt. Es handelt sich um die Position von „CharacteristicID“ innerhalb der zum Schlüssel „PersonCharacteristicIDsGrantedByUniqueID“ (zur „PersonTypeID“) konfigurierten Merkmale.
tinyint3.5.0
SortNo4)Wird nicht ausgegeben, aber zur Sortierung in einem Fall benötigt. Bestimmt die Reihenfolge von „CharacteristicID“ innerhalb aller Merkmale.
smallint3.5.0
PersonIDID der durch die „Identifizierungs“-Parameter ermittelten Person oder (falls angegeben) „PersonID“
integer7.0.1
CharacteristicDescriptionBezeichnung des Personen-Merkmals „CharacteristicID“
varchar(100)3.5.0
ValueEigenschaft von „PersonID“ zum Merkmal „CharacteristicID“. Kann aufgrund von Zugriffsbeschränkungen „NULL“ oder unvollständig sein, was dann durch „ValueRestrictedByPattern“ gekennzeichnet ist.
varchar(100)3.5.0
ValueRestrictedByPatternWas enthält „(Actual)Value“ (möglicherw. wg. Zugr.beschr. nur einen Teil) ?
- NULL : den vollst. Wert
- „#left(<n>)#“ : nur die ERSTEN n Zeichen
- „#right(<n>)#“ : nur die LETZTEN n Zeichen
Anmerkung : „n = 0“ möglich, „(Actual)Value“ ist dann „NULL“
varchar(100)6.5.2
CharacteristicIDID eines Personen-Merkmals, auf das sich die Eigenschaft „Value“ bezieht
smallint3.5.0
ValueIDID der Eigenschaft „Value“. Hinweis : KANN „NULL“ sein (selbst wenn „Value“ NICHT „NULL“ ist), falls nicht die aktuellen Eigenschaften ermittelt wurden (wenn also „DateAndTime“ angegeben wurde), weil in der Historie KEINE ID gespeichert wird !
integer3.5.0
RequiredWird hier eine „1“ ausgegeben, bedeutet das folgendes : Jede Person eines Personen-Typs, dem das Merkmal „CharacteristicID“ zugewiesen ist, MUSS eine Eigenschaft zum Merkmal „CharacteristicID“ angeben, ansonsten kann die Person nicht angelegt werden.
bit3.5.0
VisibleWenn „0“, werden durch vom „publicuser“ ausgeführte Prozeduren bzw. durch „Pu“-Prozeduren (z.B. pm_GetPersonProperties_Pu) KEINE Eigenschaften/Details bzw. nur Teile von Eigenschaften (s. „ReadAccessRestrictionPattern“) zur „CharacteristicID“ ausgegeben
bit3.5.0
ModifyDürfen „publicuser“/„Pu“-Prozed. Eigensch.-Änderung. vornehmen ?
- „0“ : Nein
- „1“ : Ja
- „2“ : Nur Neu-Anlage
- „3“ : Nur Ändern
- „4“ : Nur Neu-Anlage u. Ändern
- „5“ : Nur Löschen
- „6“ : Nur Neu-Anlage u. Löschen
- „7“ : Nur Ändern u. Löschen
tinyint3.5.0
ReadAccessRestrictionPattern„NULL“ w. „Visible = 1“. Welch. Teil v. Eigensch. zu „CharacteristicID“ für d. „publicuser“ ausgeg. werd. :
- „#left(<n>)#“ : d. ERSTEN n Zeich. („n = 0“ mögl.)
- „#right(<n>)#“ : d. LETZTEN n Zeich. („n = 0“ mögl.)
- NULL : Datens. zum Merkmal fehlt
varchar(100)6.5.2
PredefinedValuesHat das Merkmal „CharacteristicID“ nur vordefinierte Werte („0“ : Nein, „1“ : Ja) ?
bit3.5.0
FieldTypeIDID eines „Feld-Typs“, von dem alle Eigenschaften des Merkmals „CharacteristicID“ sein müssen (z.B. „Text mit maximal 20 Zeichen“)
tinyint3.5.0
MaxLengthMaximale Anzahl Zeichen, die Eigenschaften/Werte zum Merkmal „CharacteristicID“ haben dürfen
tinyint3.5.0
PersonCharacCategoryIDID der Merkmal-Kategorie, der das Merkmal „CharacteristicID“ zugeordnet ist
tinyint3.5.0
ActualValue„NULL“ wenn „GetActualProperties = 0“. Sonst die AKTUELLE Eigenschaft der Person zu „CharacteristicID“. Kann aufgrund von Zugriffsbeschränkungen „NULL“ oder unvollständig sein, was dann durch „ValueRestrictedByPattern“ gekennzeichnet ist.
varchar(100)4.0.0
LastEditedWann die Eigenschaft (zuletzt) gesetzt wurde. ACHTUNG : Nur gefüllt, wenn „NULL“ für „DateAndTime“ übergeben wurde ODER „GetActuelProperties = 1“ ist (sonst kommt hier „NULL“ zurück) !
datetime5.5.1
Sortierungen der Rückgabe

wenn InputIsUniqueID = 0 und CharacteristicIDList IN (NULL, '')

  • PersonCharacCategoryID (aufsteigend)
  • SortNo (absteigend)

wenn InputIsUniqueID = 0 und CharacteristicIDList NOT IN (NULL, '')

  • PositionOfCharacteristicIDInCharacteristicIDList (aufsteigend)

wenn InputIsUniqueID = 1

  • PositionOfCharacteristicIDInSettingsEntry (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-670Daten anderer Personen können nicht geändert/eingesehen werden, wenn keine entspr. Beziehung bestehtnur direkt
-660Identifikation fehlgeschlagendirekt und indirekt
-624Fehlender oder falscher Eintrag in RelationshipSettingsnur indirekt
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-601Es konnte keine gültige VisitorID ermittelt werden oder es ist keine PersonID zugeordnetnur direkt
-599Lizenz ist ungültig oder abgelaufennur indirekt
-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
-550Fehlender oder falscher Eintrag in Settingsnur 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.8 2015-08-211. „InputIsUniqueID“ ist jetzt ein „tinyint“ ⇒ neue Möglichkeit, den Wert „2“ anzugeben
2. Neuer Parameter „SeparatorForIdentVals“
7.0.7 2015-01-29„Start-/Finish-Procedure“-Logik eingebaut, s. Ticket #3670
7.0.1 2013-08-07Neue Rückgabespalte „PersonID“
6.5.2 2013-02-261. Interne Anpassungen (einige Spalten von „PersonCharacteristics“ sind weggefallen)
2. Neue mögliche Werte für Rückgabespalte „Modify“
3. Neue Rückgabespalten „ValueRestrictedByPattern“ und „ReadAccessRestrictionPattern“
6.0.3 2011-09-071. Präzisierung der Doku bzgl. des Falls „InputIsUniqueID = 1“
2. Fehler : In seltenen Fällen konnte man durch Angabe von „PersonID“ (wenn „InputIsUniqueID = 1“) auch an Daten fremder Personen gelangen
5.5.1 2008-07-29Neue Rückgabespalte „LastEdited“
5.1.10 2007-03-121. Berücksichtigung des neuen „AccessLevel“-features in „PersonRelationships“
2. „CharacteristicIDList“ darf max. 253 Zeichen enthalten
3. „IncludePersonCharacCategoryID“ und „SortedResult“ sind weggef.
4. Fehler bzgl. Übersetzung in einem Fall
5.1.7 2006-10-31Fehlende Index-Angabe beim Zugriff aus „Orders“
5.0.0 2004-12-211. Fehler bei der Überprüfung des Parameters „DateFormat“
2. Fehler : Angabe eines nicht vorhandenen Indexes bei einer temporären Tabelle
3. „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn
4. Konsequente Fehlerbehandlung
4.0.5 2003-10-04Verlagerung diverser „Settings“-Einträge auf entsprechende „PersonTypeSettings“-Einträge
4.0.1 2003-05-16Interne Dokumentations-Fehler
4.0.0 2003-04-03Neue Parameter DateAndTime, GetActualProperties
3.5.19 2002-06-17
3.5.13 2001-12-06
3.5.10 2001-07-14
3.5.6 2001-04-17
3.5.5 2001-03-30
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 GET  'http://<partner>-<project>.dstore.de/default/engine/pm_GetPersonProperties_Pu?InputParameter=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/pm_GetPersonProperties_Pu?InputParameter=<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_GetPersonProperties_Pu',
		array(
			'InputParameter' => '<value>',
			// 'InputIsUniqueID' => 0,
			// 'PersonTypeID' => 1,
			// 'LanguageID' => 0,
			// 'CharacteristicIDList' => NULL,
			// 'DateFormat' => 'german',
			// 'CaseSensitive' => 1,
			// 'PersonID' => NULL,
			// 'DateAndTime' => NULL,
			// 'GetActualProperties' => 0,
			// 'SeparatorForIdentVals' => '¶'
		)
);
 
$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_GetPersonProperties_Pu">
			<Parameters>
				<Parameter Name="InputParameter"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="InputIsUniqueID">0</Parameter> -->
				<!-- <Parameter Name="PersonTypeID">1</Parameter> -->
				<!-- <Parameter Name="LanguageID">0</Parameter> -->
				<!-- <Parameter Name="CharacteristicIDList">NULL</Parameter> -->
				<!-- <Parameter Name="DateFormat">'german'</Parameter> -->
				<!-- <Parameter Name="CaseSensitive">1</Parameter> -->
				<!-- <Parameter Name="PersonID">NULL</Parameter> -->
				<!-- <Parameter Name="DateAndTime">NULL</Parameter> -->
				<!-- <Parameter Name="GetActualProperties">0</Parameter> -->
				<!-- <Parameter Name="SeparatorForIdentVals">'¶'</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
2) , 3) , 4)
Spalte wird nicht zurückgegeben und ist hier nur aus Dokumentationsgründen aufgeführt.
5)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
6)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/pm_getpersonproperties_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)