Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:pm_modifypersondata_pu

pm_ModifyPersonData_Pu

Prozedur um Eigenschaften einer Person hinzuzufügen, zu ändern oder zu löschen.

Anmerkungen zum Identifizierungs-Vorgang :

Anhand der „IdentificationValues“ und der „PersonTypeID“ versucht die Prozedur, eine gültige „PersonID“ zu ermitteln.

Es gibt grundsätzlich zwei Arten von Identifizierungsdaten : Einmal die Personentyp abhängigen (die sogenannten „PersonIdentificationValues“), zum anderen die Personentyp UNabhängigen (die sogenannten „PersonGrantAccessValues“).
Der Sinn für diese Unterscheidung liegt darin, daß man für bestimmte Aktionen eine Identifizierung haben möchte, die nur sehr schwer vorzutäuschen ist. Für eine Bestellung wird meistens lediglich eine Kundennummer sowie der Nachname gefordert. An diese Daten kann ein Dritter allerdings relativ leicht gelangen. Soll es hingegen z.B. möglich sein, daß ein Kunde auch seine persönlichen Daten (Lieferanschrift etc.) ändern kann, wie durch diese Prozedur, ist es durchaus sinnvoll, hierfür einen stärkeren Authentifizierungs-Mechanismus zu fordern (so etwas wie eine PID und/oder ein Passwort z.B.).

Der Parameter „PersonGrantAccessIDs“ entscheidet nun, welche der beiden Identifizierungs-Wege gewählt wird. Da es sich hierbei um einen Parameter der Prozedur handelt, bietet der „dStore“ natürlich KEINE GEWÄHR, daß die Identifizierung auf dem einen und nicht auf dem anderen Wege stattfindet - dies muß in der Client-Anwendung sichergestellt werden !

Anmerkungen zum Parameter „ValueList“ :

1. Soll eine Eigenschaft zu einem Merkmal gelöscht werden, ist in der Werte-Liste an der entsprechenden Stelle „nichts“ anzugeben. Beispiel : Die Angabe von „CharacteristicIDList = '2¶3¶15'“ und „ValueList = 'irgendetwas¶¶anderes'“ würde dazu führen, daß die Eigenschaft zum Merkmal mit der ID „3“ gelöscht wird (sofern es sich hierbei nicht um ein Pflicht-Merkmal handelt) und die Eigenschaften zu den Merkmal-IDs „2“ und „15“ den Angaben entsprechend geändert werden.

2. Man kann auch „relative Änderungen“ (o.a. „inkrementelle updates“) durchführen - um z.B. eine „Zahl-Eigenschaft“ um einen Wert zu erhöhen oder zu erniedrigen. Dazu übergibt man die NEGATIVE Merkmal-ID in „CharacteristicIDList“ an, wobei je nach Datentyp des Merkmals der entsprechende Wert in „ValueList“ unterschiedliche Formen annehmen muß und entsprechend unterschiedlich interpretiert wird :

A) Ist das Merkmal vom Basis-Typ „Zahl“, muß der entsprechende Wert in „ValueList“ die Form „<Zahl-Wert inkl. Vorzeichen vom Datentyp des Merkmals>“ besitzen. Ist kein explizites Vorzeichen angegeben, wird dies als positiver Wert interpretiert. Dieser Zahl-Wert wird dann einfach zur bestehenden Eigenschaft (ebenfalls eine Zahl) hinzuaddiert.
B) Handelt es sich um ein „Text“-Merkmal, wird eine relative Änderung als „string“-Konkatenation ausgeführt, d.h. der entsprechende Wert in „ValueList“ sieht so aus : „<Vorzeichen><String>„
Das bedeutet, daß die “<String>“-Zeichenkette entweder VOR (falls „<Vorzeichen>“ gleich „-“ ist) die bestehende Eigenschaft gesetzt oder HINTEN („<Vorzeichen“ gleich „+“) an die Eigenschaft angehängt wird.
C) Beim Basis-Typ „Zahl“ schließlich muß der entsprechende Wert in „ValueList“ diese Form haben : „<datepart><integer-Wert>„
Ist kein explizites Vorzeichen im “<integer-Wert>“ angegeben, wird dies als positiver Wert interpretiert. „<datepart>“ muß - angelehnt an die T-SQL-Funktion „dateadd“ - einen der folgenden Werte annehmen :

  • „yy“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) JAHRE
  • „mm“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) MONATE
  • „dd“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) TAGE
  • „hh“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) STUNDEN
  • „mi“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) MINUTEN
  • „ss“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) SEKUNDEN
  • „ms“ → Änderung der Datums-Eigenschaft um die angegebene Anzahl („<integer-Wert>“) MILLISEKUNDEN

D) Für „Ja/Nein“-Merkmale ist keine „relative Änderung“ möglich

Beispiele :
1.) Ist „17“ eine ID eines Merkmals, zu dem 2-stellige Zahlen als Eigenschaften hinterlegt werden können, würde „ CharacteristicIDList = '17' “ und „ ValueList = '-5' “ dazu führen, daß die aktuelle Eigenschaft der „PersonID“ zum Merkmal „17“ um „5“ ERNIEDRIGT wird.
2.) Stellt „19“ die ID eines „Datum-Merkmals“ dar, und besitzt „PersonD“ aktuell als Eigenschaft den Wert „01.04.1968“, würde „ CharacteristicIDList = '19' “ und „ ValueList = 'yy+2' “ dazu führen, daß 2 Jahre auf das Datum „01.04.1968“ hinzuaddiert würden, und somit die Eigenschaft auf „01.04.1970“ gesetzt werden würde.
3.) Bei einem Aufruf mit „ CharacteristicIDList = '20' “ und „ ValueList = '-not ' “ würde, wenn „PersonID“ zu diesem Merkmal beispielsweise die „Text“-Eigenschaft „valid“ besäße, die neue Eigenschaft „not valid“ lauten.

Weiterer Hinweis zu „inkrementellen updates“ :
Hat die Person noch KEINE Eigenschaft zum Merkmal, passiert je nach Basis-Datentyp folgendes :

  • bei Zahlen „addieren“ wir den Wert zur Zahl „0“ - was quasi dem direkten Setzen der Eigenschaft auf den Wert entspricht
  • bei Datumsangaben „addieren“ wir den Wert zum '01.01.1970'
  • bei „strings“ konkatenieren wir den Wert zu „NULL“ - was quasi dem direkten Setzen der Eigenschaft auf den Wert entsprich

Anmerkung zum Parameter „PersonID“ :

Im Normalfall braucht dieser Parameter nicht angegeben zu werden, es sei denn, es soll zum Beispiel eine „Lieferanschrift“ geändert werden, also Daten zu einer ANDEREN Person als die, die sich aus den Identifizierungsdaten ergibt. 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 schreibender 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 geändert werden dürfen, regelt ein „RelationshipSettings“-Eintrag zum Schlüssel „AllowedCharacIDs_Write“ (siehe auch „Hinweis“ in pm_GetRelationshipSettingEntry).

Anmerkung zur Rückgabespalte „ResultCode“ :
Folgende Codes können derzeit zurückgegeben werden :
„2“ : Die Eigenschaft existiert bereits, aber das zugehörige Merkmal ist eindeutig („IsUnique = 1“) !
„3“ : Es handelt sich um ein Merkmal mit vordefinierten Werten, aber die übergebene Eigenschaft existiert nicht
„4“ : Die Eigenschaft gehört zu einem Merkmal, das nicht dem Informationstyp („PersonCharacCategoryID“) zugeordnet ist.
„5“ : Das Merkmal darf aufgrund von Zugriffsbeschränkungen nicht editiert werden
„6“ : Der Wert ist ungültig, d.h. entspricht nicht dem Feldtyp des zugehörigen Merkmals
„8“ : Pflichtmerkmal in der Kategorie „PersonCharacCategoryID“, zu dem keine Eigenschaft angegeben wurde bzw. dessen Eigenschaft fehlerhaft ist (im letzteren Fall taucht das Merkmal ein zweites Mal in der Ergebnismenge auf, und zwar mit dem Code 2, 3 oder 6)
„9“ : Pflichtmerkmale können nicht gelöscht werden
„10“ : Der vordefinierte Wert ist zwar angelegt, aber entweder nicht mehr oder noch nicht gültig

Hinweis zum Dubletten-Check :

1. Beim Ändern von Personendaten kann ein Dubletten-Check durchgeführt werden. Vorraussetzung dafür ist zum einen, daß der „PersonTypeSettings“-Eintrag „CharacteristicsForDuplicateSearch“ für den entsprechenden Personen-Typ konfiguriert ist oder „_ac_ExecuteDuplicateCheck“ (individuell) implementiert ist. Standardmäßig ist die Prozedur „_ac_ExecuteDuplicateCheck“ so codiert, daß eine „Action“ angelegt wird, die als Parameter die betroffene „PersonID“ (zur „KeyVariable = AffectedPersonID“) sowie zur „KeyVariable = ActionInsertedByProcedure“ den Prozedurnamen „_ac_ExecuteDuplicateCheck“ besitzt.
Es ist dann noch ein entsprechendes Skript/Programm einzurichten, das diese Actions abarbeitet, d.h. letztlich die Prozedur pm_UpdatePossibleDuplicates_Ad aufruft. Die Prozedur „_ac_ExecuteDuplicateCheck“ legt diese Action aber nur an, wenn der besagte „PersonTypeSettings“-Eintrag vorhanden ist. Diese Prozedur kann natürlich (wie alle „ac“-Prozeduren) individuell angepaßt werden.

2. Soll ein Dubletten-Check ohne Verzögerung durchgeführt werden, d.h. transaktionssicher zusammen mit dem Ändern der Personendaten, ist der „PersonTypeSettings“-Eintrag „ExecDuplicateCheckImmediately“ für den entsprechenden Personen-Typ auf „1“ zu setzen. In diesem Fall wird eine interne Prozedur aufgerufen, die den Dubletten-Check durchführt und dazu den bereits erwähnten Eintrag aus „PersonTypeSettings“ zum Schlüssel „CharacteristicsForDuplicateSearch“ ZWINGEND benötigt (ansonsten gibt es zwar keinen Fehler, es wird aber auch nichts weiter ausgeführt) !

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

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
CharacteristicIDList Liste von Merkmal-IDs (durch '¶' getrennt), auf die sich die in „ValueList“ angegebenen Eigenschaften beziehen
varchar(1000)3.5.0
ValueList Eigenschaften (zu den in „CharacteristicIDList“ angegebenen Merkmalen), die die Person („PersonID“ bzw die identifizierte Person) ab jetzt besitzen soll. (Um Eigenschaften zu löschen, siehe Beschreibung)
varchar(16384)3.5.0
IdentificationValues Liste (durch „SeparatorForIdentValues“ getrennt) der Eigenschaften, anhand derer die Person identifiziert wird. Die Reihenfolge der Eigenschaften muß zu den Merkmal-IDs im „Settings“-Eintrag (je nach „PersonGrantAccessIDs“) passen (s. Beschreibung).
varchar(255)3.5.0
PersonIDNULL ID der Person, zu der die Eigenschaften geändert werden sollen. Angeben, falls NICHT die Eigenschaften der identifizierten Person geändert werden sollen. (siehe Beschreibung)
integer3.5.0
PersonTypeID1 ID des Personen-Typs dem die zu identifizierende Person angehört. Dieser muß bei einer Identifizierung immer mit angegeben werden, da die Merkmale zur Identifizierung pro Personentyp variieren können. (Ausnahme : „PersonGrantAccessIDs = 1“)
tinyint3.5.0
PersonGrantAccessIDs1 (Siehe auch Beschreibung !) Die Identifizierungsdaten sind Eigenschaften zu den in „PersonTypeSettings“ hinterlegten Merkmalen zum Schlüssel…
„0“ : „PersonIdentificationIDs“ zur „PersonTypeID“
„1“ : „PersonGrantAccessValues“ zur „PersonTypeID = 0“
bit3.5.0
PersonCharacCategoryID1 ID einer Kategorie von Personen-Merkmalen. Wenn angegeben, müssen (im Fall „DeleteCharacCategoryID = 0“) die in „CharacteristicIDList“ angegebenen Merkmale dieser Kategorie angehören - sonst einer Kategorie des Personen-Typs der identifizierten Person.
tinyint3.5.0
DeleteCharacCategoryID0 Wird „1“ angegeben, ignoriert die Prozedur die Parameter „CharacteristicIDList“ und „ValueList“ und löscht die Eigenschaften der Person zu allen Merkmalen der durch „PersonCharacCategoryID“ angegebenen Kategorie
bit3.5.0
ResultInErrorIDList1 „0“ : Es wird eine Rückgabemenge geliefert, die die Merkmal-IDs (zusammen mit einem jeweiligen „Error-Code“) enthält, bei denen Fehler aufgetreten sind
„1“ : Merkmal-IDs, bei denen ein Fehler auftrat, werden über „ErrorIDList“ zurückgegeben
bit3.5.0
ValueIDsForPredefinedCharacs1 Die in „ValueList“ angegebenen Eigenschaften, die sich auf Merkmale mit vordefinierten Werten („PredefinedValues = 1“ in „PersonCharacteristics“) beziehen, sind…
„0“ : als Eigenschaften selbst
„1“ : als IDs
… angegeben.
bit3.5.0
ChangeAllOrNothing1 Falls Fehler auftreten, sollen dann die Änderungen der Eigenschaften, zu denen es keinen Fehler gab, durchgeführt werden („0“) oder nicht („1“) ?
bit3.5.0
CaseSensitive1 „0“ : Der Vergleich der Identifizierungsdaten erfolgt unabhängig von der Groß- und Kleinschreibung
„1“ : Die Schreibweise der Daten muß exakt sein
bit3.5.0
Country'german' Gibt an, in welchem Format Datums-Eigenschaften angegeben sind (Groß-/Kleinschreibung wird nicht beachtet) :
'german', 'germany' : Tag-Monat-Jahr
'english', 'england' : Monat-Tag-Jahr
varchar(10)4.0.5
SeparatorInValueList'¶' Gibt an, durch welches Zeichen die Werte in „ValueList“ getrennt sind
varchar(4)5.5.1
SeparatorForIdentValues'¶' Gibt an, durch welche Zeichenkette die Werte in „IdentificationValues“ getrennt sind
varchar(4)6.5.1

Rückgabe

wenn ResultInErrorIDList = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
PersonCharacteristicIDID eines Merkmals zu dem ein Fehler bzgl. der zu ändernden Eigenschaft auftrat
smallint3.5.0
ResultCodeEin Code, der die Art bzw. Ursache des aufgetrenen Fehlers angibt (siehe Beschreibung)
integer3.5.0

Output-Parameter

ErrorIDListAusgabeparameter, der eine Liste (durch '¶' getrennt) der Merkmal-IDs enthält, bei denen ein Fehler auftrat - allerdings ohne den jeweiligen Grund. Den kann man nur anhand der zurückgegebenen Ergebnismenge (sofern „ResultInErrorIDList = 0“) feststellen.

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 fehlgeschlagennur indirekt
-650Es sind nicht alle Pflichtmerkmale vorhandennur indirekt
-642Inkrementelle Änderung konnte aufgrund paralleler Änderungen nicht durchgeführt werdennur indirekt
-641Die „Unique“-Eigenschaft mindestens eines Merkmals ist verletzt - Prozedur wurde abgebrochennur indirekt
-640Einige Personendaten sind ungültignur indirekt
-624Fehlender oder falscher Eintrag in RelationshipSettingsnur indirekt
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-599Lizenz ist ungültig oder abgelaufennur indirekt
-572Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werdennur 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
-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 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-29„Start-/Finish-Procedure“-Logik eingebaut, s. Ticket #3670
6.5.2 2013-02-26Interne Anpassungen da die Spalte „ModificationAllowedByUser“ der Tabelle „PersonCharacteristics“ weggefallen
ist und durch eine allgemeinere Funktionalität ersetzt wurde. ⇒ Auch Doku-Anpassung bzgl. „ErrorCode = 5“
6.5.1 2012-11-021. Erweiterung „CharacteristicIDList“ u. „SeparatorInValueList“ [von „255“ auf „1000“ bzw. von „1“ auf „4“]
2. Ab jetzt können Daten MEHRERER Kategorien geändert werden
3. Neuer Parameter „SeparatorForIdentValues“
6.0.6 2012-03-01Parameter „ValueList“ wurde erweitert [Länge von „255“ auf „16384“ erweitert]
5.5.1 2008-07-29Neuer Parameter „SeparatorInValueList“
5.1.10 2007-03-121. Berücksichtigung des neuen „AccessLevel“-features in „PersonRelationships“
2. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall „-500“, die nähere Informationen über die Ursache enthält.
5.0.0 2004-12-21Hinweis in der Doku auf die neue Möglichkeit von „inkrementellen updates“
4.0.6 2003-11-141. Interne Änderungen
2. Fehler in der Dokumentation bzgl. der „ResultCodes“
3. Fehler : Durch parallele Ausführung von Änderungen konnte es dazu kommen, daß die „Unique“-Eigenschaft eines Merkmals verletzt wird !
4.0.5 2003-10-041. Verlagerung diverser „Settings“-Einträge auf entsprechende „PersonTypeSettings“-Einträge
2. Neuer Parameter „Country“
3. ResultCode „9“ war doppelt verwendet (⇒ neuer Code „10“)
4. Fehler bzgl. Eigenschaften im (deutschen) Datums-Format
4.0.3 2003-07-10Berücksichtigung der neuen Tabelle „PersonMetaInformation“
4.0.0 2003-04-031. „AdditionalPersonProperties“ gibt's nicht mehr
2. Berücksichtigung des geänderten Parameters „CheckModify“ von „_pm_CheckPersonData“
3. „PersonPropertiesHistory“ wird ab jetzt aktualisiert
3.5.19 2002-06-17
3.5.16 2002-04-25
3.5.13 2001-12-06
3.5.12 2001-10-17
3.5.8 2001-05-19
3.5.6 2001-04-17
3.5.4 2001-03-11
3.5.1 2000-12-20
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_ModifyPersonData_Pu?CharacteristicIDList=<value>&ValueList=<value>&IdentificationValues=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyPersonData_Pu?CharacteristicIDList=<value>&ValueList=<value>&IdentificationValues=<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_ModifyPersonData_Pu',
		array(
			'CharacteristicIDList' => '<value>',
			'ValueList' => '<value>',
			'IdentificationValues' => '<value>',
			// 'PersonID' => NULL,
			// 'PersonTypeID' => 1,
			// 'PersonGrantAccessIDs' => 1,
			// 'PersonCharacCategoryID' => 1,
			// 'DeleteCharacCategoryID' => 0,
			// 'ResultInErrorIDList' => 1,
			// 'ValueIDsForPredefinedCharacs' => 1,
			// 'ChangeAllOrNothing' => 1,
			// 'CaseSensitive' => 1,
			// 'Country' => 'german',
			// 'SeparatorInValueList' => '¶',
			// 'SeparatorForIdentValues' => '¶'
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
 
$OutputParams = $xml_result->getOutputParametersAsArray();
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_ModifyPersonData_Pu">
			<Parameters>
				<Parameter Name="CharacteristicIDList"><!-- varchar value --></Parameter>
				<Parameter Name="ValueList"><!-- varchar value --></Parameter>
				<Parameter Name="IdentificationValues"><!-- varchar value --></Parameter>
				<!-- <Parameter Name="PersonID">NULL</Parameter> -->
				<!-- <Parameter Name="PersonTypeID">1</Parameter> -->
				<!-- <Parameter Name="PersonGrantAccessIDs">1</Parameter> -->
				<!-- <Parameter Name="PersonCharacCategoryID">1</Parameter> -->
				<!-- <Parameter Name="DeleteCharacCategoryID">0</Parameter> -->
				<!-- <Parameter Name="ResultInErrorIDList">1</Parameter> -->
				<!-- <Parameter Name="ValueIDsForPredefinedCharacs">1</Parameter> -->
				<!-- <Parameter Name="ChangeAllOrNothing">1</Parameter> -->
				<!-- <Parameter Name="CaseSensitive">1</Parameter> -->
				<!-- <Parameter Name="Country">'german'</Parameter> -->
				<!-- <Parameter Name="SeparatorInValueList">'¶'</Parameter> -->
				<!-- <Parameter Name="SeparatorForIdentValues">'¶'</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
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_modifypersondata_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)