Prozedur zum Anlegen einer Person.
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
„7“ : Pflichtmerkmal („Required = 1“ in „PersonCharacteristics“), 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“)
„8“ : Wie „7“, mit dem Unterschied, daß es sich um ein Kategorie-Pflichtmerkmal („Required = 1“ in „PersoncCharacsInCategories“) handelt
„9“ : Pflichtmerkmale („Required“ in „PersonCharacteristics“ oder „PersonCharacsInCategories“ enthält den Wert „1“) 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, also auch insbesondere beim Anlegen neuer Personen, 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 Anlegen 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-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | person management |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
CharacteristicIDList1 | Liste von Merkmal-IDs (durch die in „SeparatorInLists“ angegegebene Zeichenkette getrennt), auf die sich die in „ValueList1“ angegebenen Eigenschaften beziehen. Bei „NULL“ erwartet die Prozedur die Eigenschaften in „tempdb.dbo.CharacteristicValues“. | varchar(1000) | 3.5.0 | |
ValueList1 | Eigenschaften (zu den in „CharacteristicIDList1“ angegebenen Merkmalen), die die neu anzulegende Person besitzen soll | varchar(16384) | 3.5.0 | |
CharacteristicIDList2 | NULL | Zweite Liste von Merkmal-IDs, auf die sich die in „ValueList2“ angegebenen Eigenschaften beziehen - wird benötigt, falls nicht alle Eigenschaften (aufgrund der 16384-Zeichen-Beschränkung) via „ValueList1“ angegeben werden können | varchar(1000) | 3.5.0 |
ValueList2 | NULL | Eigenschaften (zu den in „CharacteristicIDList2“ angegebenen Merkmalen), die die neu anzulegende Person besitzen soll - wird benötigt, falls nicht alle Eigenschaften (aufgrund der 16384-Zeichen-Besschränkung) via „ValueList1“ angegeben werden können | varchar(16384) | 3.5.0 |
PersonCharacCategoryID | 1 | ID einer Kategorie von Personen-Merkmalen, durch die der Personen-Typ angegeben wird (s.a. „PersonTypeID“) und die Pflichtmerkmale („Required = 1“ in „PersonCharacteristics“) festgelegt sind (Anlage schlägt fehl, wenn nicht alle Plichtmerkmale da sind) | tinyint | 3.5.0 |
ResultInErrorIDList | 1 | „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 | bit | 3.5.0 |
ValueIDsForPredefinedCharacs | 1 | Die in „ValueList1“ bzw. „ValueList2“ angegebenen Eigenschaften, die sich auf Merkmale mit vordefinierten Werten („PredefinedValues = 1“ in „PersonCharacteristics“) beziehen, sind… „0“ : als Eigenschaften selbst „1“ : als IDs … angegeben. | bit | 3.5.0 |
CancelOnError | 0 | Gibt es bzgl. der Eigenschaften Fehler, die sich aber nicht auf Pflichtmerkmale beziehen, so daß die Person trotzdem angelegt werden kann, soll… „0“ : die Person angelegt „1“ : die Person NICHT angelegt … werden. | bit | 3.5.19 |
SeparatorInLists | '¶' | Gibt an, durch welche Zeichenkette die Werte in den Parametern „CharacteristicIDList1“, „ValueList1“, „CharacteristicIDList2“ und „ValueList2“ getrennt sind | varchar(4) | 5.5.0 |
PersonTypeID | NULL | Wird nur beachtet, wenn „PersonCharacCategoryID“ „NULL“ ist ! Besagt, daß die neue Person von diesem Typ sein soll. Daher dürfen nur Eigenschaften zu Merkmalen übergeben werden, die diesem Typ zugeordnet sind (s. pm_GetPersonCharacteristics_Ad). | tinyint | 6.5.0 |
Country | 'german' | Gibt an, in welchem Format Datums-Informationen angegeben sind (Groß-/Kleinschreibung wird nicht beachtet) : 'german', 'germany' : Tag-Monat-Jahr 'english', 'england' : Monat-Tag-Jahr | varchar(10) | 6.5.0 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
PersonCharacteristicID | ID eines Merkmals zu dem ein Fehler bzgl. der anzulegenden Eigenschaft auftrat | smallint | 3.5.0 |
ResultCode | Ein Code, der die Art bzw. Ursache des aufgetrenen Fehlers angibt (siehe Beschreibung) | tinyint | 3.5.0 |
PersonID | Ausgabeparameter für die ID der neu angelegten Person (falls erfolgreich) |
ErrorIDList | Ausgabeparameter, 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. |
Code | Beschreibung | Quelle 5) |
---|---|---|
-650 | Es sind nicht alle Pflichtmerkmale vorhanden | nur indirekt |
-642 | Inkrementelle Änderung konnte aufgrund paralleler Änderungen nicht durchgeführt werden | nur indirekt |
-641 | Die „Unique“-Eigenschaft mindestens eines Merkmals ist verletzt - Prozedur wurde abgebrochen | nur indirekt |
-640 | Einige Personendaten sind ungültig | nur indirekt |
-630 | Personendaten konnten nicht angelegt werden | nur indirekt |
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-610 | Fehlende oder falsche Daten in PersonMetaInformation | nur indirekt |
-602 | Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werden | nur indirekt |
-572 | Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werden | nur indirekt |
-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 |
-550 | Fehlender oder falscher Eintrag in Settings | nur indirekt |
-540 | Falsches Format | 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 | nur 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] |
7.0.5 | 2014-05-26 | Aufruf von mi_InsertTempdb_CharacValues bzgl. neuer Parameter angepasst |
6.5.2 | 2013-02-26 | Doku-Anpassung zu „ErrorCode = 5“ [Hintergrund ist, daß die Spalte „ModificationAllowedByUser“ der Tabelle „PersonCharacteristics“ weggefallen ist und durch eine allgemeinere Funktionalität ersetzt wurde] |
6.5.1 | 2012-11-02 | 1. Kleiner Doku-Fehler bzgl. „ResultCode = 4“ 2. Interne Änderung [„Separator“-Datentyp-Länge von „1“ auf „4“ erweitert wg. UTF-8] |
6.5.0 | 2012-09-17 | 1. Datentyperweiterung : „…List…“-Parameter und „SeparatorInLists“ 2. Ab jetzt können Daten aus anderen Kategorien übergeben werden 3. Neuer Parameter „Country“ |
5.5.0 | 2008-01-07 | Neuer Parameter „SeparatorInLists“ |
4.0.9 | 2004-03-03 | 1. Verwendung von „_mi_ChooseParamValueSeperator“ als Vorbereitung von „_mi_StartProcedure“ 2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur |
4.0.8 | 2004-02-20 | Interne Änderungen |
4.0.7 | 2004-01-16 | Aufruf der neuen Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“ |
4.0.5 | 2003-10-04 | Verlagerung diverser „Settings“-Einträge auf entsprechende „PersonTypeSettings“-Einträge |
4.0.3 | 2003-07-10 | Berücksichtigung der neuen Tabellen „PersonMetaInformation“ und „PersonTypeMetaInformation“ |
4.0.0 | 2003-04-03 | Fehler bzgl. des neuen Parameters „CancelOnError“ |
3.5.19 | 2002-06-17 | |
3.5.16 | 2002-04-25 | |
3.5.13 | 2001-12-06 | |
3.5.4 | 2001-03-11 | |
3.5.1 | 2000-12-20 | |
3.5.0 | 2000-11-23 | 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_InsertNewPerson_Ad?CharacteristicIDList1=<value>&ValueList1=<value>'
Mit xmllint 6) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/pm_InsertNewPerson_Ad?CharacteristicIDList1=<value>&ValueList1=<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_InsertNewPerson_Ad', array( 'CharacteristicIDList1' => '<value>', 'ValueList1' => '<value>', // 'CharacteristicIDList2' => NULL, // 'ValueList2' => NULL, // 'PersonCharacCategoryID' => 1, // 'ResultInErrorIDList' => 1, // 'ValueIDsForPredefinedCharacs' => 1, // 'CancelOnError' => 0, // 'SeparatorInLists' => '¶', // 'PersonTypeID' => NULL, // 'Country' => 'german' ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray(); $OutputParams = $xml_result->getOutputParametersAsArray();
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_InsertNewPerson_Ad"> <Parameters> <Parameter Name="CharacteristicIDList1"><!-- varchar value --></Parameter> <Parameter Name="ValueList1"><!-- varchar value --></Parameter> <!-- <Parameter Name="CharacteristicIDList2">NULL</Parameter> --> <!-- <Parameter Name="ValueList2">NULL</Parameter> --> <!-- <Parameter Name="PersonCharacCategoryID">1</Parameter> --> <!-- <Parameter Name="ResultInErrorIDList">1</Parameter> --> <!-- <Parameter Name="ValueIDsForPredefinedCharacs">1</Parameter> --> <!-- <Parameter Name="CancelOnError">0</Parameter> --> <!-- <Parameter Name="SeparatorInLists">'¶'</Parameter> --> <!-- <Parameter Name="PersonTypeID">NULL</Parameter> --> <!-- <Parameter Name="Country">'german'</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>