Verwaltet die Personen-Merkmale.
Wichtige Hinweise :
1. Wenn versucht wird, ein neues Merkmal mit einem „Ja-Nein“-Basis-Feld-Typ anzulegen, wird in jedem Fall „PredefinedValues“ auf „1“ gesetzt und dafür gesorgt, daß zwei Eigenschaften „0“ und „1“ zu dem neuen Merkmal angelegt werden.
2. Einige Änderungen für ein Merkmal können, sobald es Personen mit Eigenschaften hierzu gibt, NICHT mehr geändert werden :
3. Bei einigen Änderungen müssen evtl. vorhandene Eigenschaften überprüft werden, was etwas Zeit in Anspruch nehmen kann !
Anmerkungen zu den Parametern „Visible“ und „Modify“ :
Bis Version 6.5.2 gab es zwei entsprechende Spalten („Visible“ und „ModificationAllowedByUser“) in der zugrunde liegenden Tabelle „PersonCharacteristics“, deren Funktionalität 1:1 durch die beiden Parameter gesteuert wurde. Es gab dadurch die Möglichkeit zu steuern, ob und wie in „Pu“-Prozeduren (z.B. pm_GetPersonProperties_Pu oder pm_ModifyPersonData_Pu) einzelne Merkmale zugreifbar sind (lesend : „Visible“/„Visible“, schreibend : „ModificationAllowedByUser“/„Modify“).
Dies wurde in 6.5.2 verallgemeinert und erweitert : Es gibt nun die Möglichkeit, pro Merkmal für Benutzer/Gruppen sogenannte Zugriffs- Beschränkungen einzurichten (s. pm_ModifyPChAccResForGroup_Ad und pm_ModifyPChAccResForUser_Ad).
Um abwärtskompatibel zu bleiben, haben die beiden Parameter seit 6.5.2 nun folgende Auswirkung :
pm_ModifyPChAccResForUser_Ad UserID = 0, PersonCharacteristicID = <ID>, AccessRestriction = 8 – Lesen („8“) verboten
Bei Angabe von „1“ wird entsprechend dafür gesorgt, daß ein evtl. vorhandenes „Leseverbot“ für den „publicuser“ ENTFERNT (bzw. bei Neu-Anlage eines Merkmals - also falls „PersonCharacteristicID = NULL“ - erst gar keine entsprechende Beschränkung angelegt) wird.
Als DRITTE Möglichkeit hat man, „NULL“ anzugeben. In diesem Fall wird NICHTS gemacht, d.h. es wird weder eine Zugriffsbeschränkung angelegt oder verändert oder entfernt.
⇒ „NULL“ ist der empfohlene Wert, da für die Zugriffsbeschränkungen nun die Prozeduren pm_ModifyPChAccResForGroup_Ad und pm_ModifyPChAccResForUser_Ad zuständig sind !
pm_ModifyPChAccResForUser_Ad UserID = 0, PersonCharacteristicID = <ID>, AccessRestriction = 7 – Anlegen („1“), Ändern („2“) UND Löschen („4“) verboten
Bei Angabe von „1“ wird entsprechend dafür gesorgt, daß evtl. vorhandene „Schreibverbote“ für den „publicuser“ ENTFERNT (bzw. bei Neu-Anlage eines Merkmals - also falls „PersonCharacteristicID = NULL“ - erst gar keine entsprechenden Beschränkungen angelegt) werden.
Wird „2“ angegeben, erhält der „publicuser“ ein Verbot von „Ändern und Löschen“, d.h. dies entspricht :
pm_ModifyPChAccResForUser_Ad UserID = 0, PersonCharacteristicID = <ID>, AccessRestriction = 6 – Ändern („2“) UND Löschen („4“) verboten
Als VIERTE Möglichkeit hat man, „NULL“ anzugeben. In diesem Fall wird NICHTS gemacht, d.h. es wird weder eine Zugriffsbeschränkung angelegt oder verändert oder entfernt.
⇒ „NULL“ ist der empfohlene Wert, da für die Zugriffsbeschränkungen nun die Prozeduren pm_ModifyPChAccResForGroup_Ad und pm_ModifyPChAccResForUser_Ad zuständig sind !
Weitere Hinweise :
1. Dieses Verhalten ist nicht HUNDERTprozentig abwärtskompatibel, dafür gibt es aber den speziellen „PersonTypeSettings“-Eintrag „PCharacsBackwardCompatible“, der aber nur für Installationen VOR 6.5.2 verwendet werden sollte (für Details s. Doku dieses Eintrags) !
2. Um zu verhindern, daß versehentlich vorhandene Zugriffs-Beschränkungen „torpediert“ werden, gilt bei ÄNDERUNG eines bestehenden Merkmals („PersonCharacteristicID is NOT NULL AND DeleteCharacteristic = 1“) folgendes :
Es gibt einen Fehler („-500“), wenn …
UND
HTTP-Method | POST |
HTTP-Auth | Optional |
Alias | pm_ModifyPersonCharacteristics_Ad |
Tags | |
Engine-Kategorie | configurations |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
PersonCharacteristicID | NULL | ID eines Personen-Merkmals. Bei Angabe von „NULL“ wird ein neues Merkmal angelegt. Falls eine ID angegeben und das Merkmal für den Aufrufer lesend gesperrt ist (komplett oder eingeschränkt, s. pm_GetPChAccRestrForUsers_Ad), gibt es einen Fehler ! | smallint | 3.5.0 |
CharacteristicDescription | Bezeichnung des (neuen) Merkmals | varchar(100) | 3.5.0 | |
FieldTypeID | ID eines „Feld-Typs“, von dem alle Eigenschaften des (neuen) Merkmals sein müssen (z.B. „Text mit maximal 20 Zeichen“) - siehe auch mi_GetFieldTypes_Ad | tinyint | 3.5.0 | |
SortNo | Bestimmt die Reihenfolge des (neuen) Merkmals innerhalb aller Merkmale | smallint | 3.5.0 | |
Required | 0 | Wird hier eine „1“ angegeben, bedeutet das folgendes : Jede Person eines Personen-Typs, dem das (neue) Merkmal zugewiesen ist, MUSS eine Eigenschaft zu diesem Merkmal angeben, ansonsten kann die Person nicht angelegt werden. | bit | 3.5.0 |
Visible | 1 | Hier sollte „NULL“ übergeben werden (s. Beschreibung) ! Sonstige mögliche Werte : - „0“ : komplettes Leseverbot für „UserID = 0“ („publicuser“) wird angelegt - „1“ : Evtl. vorhandenes Leseverbot für „UserID = 0“ („publicuser“) wird entfernt | tinyint | 3.5.0 |
Modify | 1 | Hier sollte „NULL“ übergeben werden (s. Beschreibung) ! Sonstige mögl. Werte : - „0“ : „Schreibverbot“ für „UserID = 0“ anlegen - „1“ : Evtl. vorh. „Schreibverbot“ für „UserID = 0“ entfernen - „2“ : „Ändern-Und-Löschen-Verbot“ für „UserID = 0“ anlegen | tinyint | 3.5.0 |
PredefinedValues | 0 | Hat das (neue) Merkmal nur vordefinierte Werte („0“ : Nein, „1“ : Ja) ? | bit | 3.5.0 |
IsUnique | 0 | Wird hier eine „1“ angegeben, darf eine bestimmte Eigenschaft zum Merkmal nur EINER EINZIGEN Person zugewiesen werden | bit | 3.5.0 |
DeleteCharacteristic | 0 | Wird nur beachtet, falls eine „PersonCharacteristicID“ angegeben ist. Gibt an, ob das Merkmal… „0“ : geändert „1“ : gelöscht … werden soll | bit | 3.5.0 |
DescriptionForAdmin | NULL | Bezeichnung des (neuen) Merkmals für den Administrator. Hintergrund : Merkmale, die von der Bezeichnung her identisch sind, und für einen Administrator bei Konfigurierungen nicht auseinander zu halten wären. | varchar(100) | 3.5.22 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-697 | Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung besteht | nur direkt |
-682 | Das Merkmal kann nicht mehr geändert werden, da bereits Eigenschaften vorhanden sind | nur direkt |
-680 | Es darf zu einem Personen-Typ nur genau eine Merkmal-Kategorie mit Pflichtmerkmalen existieren | nur direkt |
-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 |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-532 | Ungültiger Feldtyp | nur direkt |
-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] |
6.5.2 | 2013-02-26 | 1. Änderungen bzgl. der Parameter „Visible“ und „Modify“ (Datentyp-Änderung, neue mögliche Werte) 2. Aufgrund des neuen features der „Zugriffsbeschränkungen“ kann es nun zu einem Fehler beim Ändern/Löschen eines Merkmals kommen |
5.1.2 | 2006-06-26 | Neuer möglicher Return-Code „-532“, da es ab 5.1.2 „FieldTypes“ mit einer „MaxLength > 100“ geben kann ! |
5.1.0 | 2006-02-08 | Fehler : Es war möglich, ein Merkmal in ein Pflichtmerkmal zu ändern, auch wenn dann die Bedingung verletzt war, daß zu einem Personen-Typ nur eine Merkmal-Kategorie mit Pflicht-Merkmalen existieren darf ! |
5.0.0 | 2004-12-21 | Interner Fehler bzgl. des Aufrufs von „_mi_StartProcedure“ : Es dürfen in einem „ParameterNamesAndTypes_List…“-Parameter nicht mehr als 10 Elemente übergeben werden ! |
4.0.15 | 2004-07-30 | 1. 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.5.22 | 2002-08-30 | |
3.5.20 | 2002-07-22 | |
3.5.19 | 2002-06-17 | |
3.5.8 | 2001-05-19 | |
3.5.3 | 2001-02-11 | |
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_ModifyPersonCharacs_Ad?CharacteristicDescription=<value>&FieldTypeID=<value>&SortNo=<value>'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/pm_ModifyPersonCharacs_Ad?CharacteristicDescription=<value>&FieldTypeID=<value>&SortNo=<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_ModifyPersonCharacs_Ad', array( 'CharacteristicDescription' => '<value>', 'FieldTypeID' => <value>, 'SortNo' => <value>, // 'PersonCharacteristicID' => NULL, // 'Required' => 0, // 'Visible' => 1, // 'Modify' => 1, // 'PredefinedValues' => 0, // 'IsUnique' => 0, // 'DeleteCharacteristic' => 0, // 'DescriptionForAdmin' => NULL ) ); $service->execute($request); $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); $ResultSet = $xml_result->getRowsAsArray();
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_ModifyPersonCharacs_Ad"> <Parameters> <Parameter Name="CharacteristicDescription"><!-- varchar value --></Parameter> <Parameter Name="FieldTypeID"><!-- tinyint value --></Parameter> <Parameter Name="SortNo"><!-- smallint value --></Parameter> <!-- <Parameter Name="PersonCharacteristicID">NULL</Parameter> --> <!-- <Parameter Name="Required">0</Parameter> --> <!-- <Parameter Name="Visible">1</Parameter> --> <!-- <Parameter Name="Modify">1</Parameter> --> <!-- <Parameter Name="PredefinedValues">0</Parameter> --> <!-- <Parameter Name="IsUnique">0</Parameter> --> <!-- <Parameter Name="DeleteCharacteristic">0</Parameter> --> <!-- <Parameter Name="DescriptionForAdmin">NULL</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>