Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— |
engine:procedures:im_getpredecessors [11.01.2016 ] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== im_GetPredecessors ===== | ||
+ | |||
+ | Sucht im Artikelbaum nach Vorgängern zu einem bestimmten Element bzw. zu bestimmten Elementen.\\ | ||
+ | |||
+ | Optional kann dabei die Anzahl Ebenen eingeschränkt werden oder es kann nur der (jeweilige) Vorgänger auf einer bestimmten Hierarchie ermittelt werden.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkung zum Parameter "IncludeRootLevel" :\\ | ||
+ | |||
+ | Es gibt besondere Elemente, die sogenannten "root"-Elemente. Dies sind Elemente mit der Hierarchie-Nummer (also "LevelNo") "1". Sie zeichnen sich außerdem auch dadurch aus, daß sie sich selbst als Vorgänger haben.\\ Es gibt nur ein "root"-Artikel-Element, dieses hat immer die ID (sowohl "NodeID" als auch "TreeNodeID") "0". Es gibt noch sogenannte "Page-TreeNodes" auf "root"-Ebene, die aber nicht zum Artikelbaum gehören, sondern zu statistischen Zwecken angelegt sein können (s.a. [[dstoreproc>im_GetPageTreeNodes_Ad]]).\\ | ||
+ | |||
+ | Jedes Element im Artikelbaum besitzt genau ein "root"-Element. Das "root"-Element von "TreeNodeID" wird bei der Ermittlung der Vorgänger (also in dieser Prozedur) default-mäßig immer ausgeschlossen, ist also NICHT in der Ergebnismenge. Möchte man dieses Element aber gerne mit ausgegeben bekommen, ist "IncludeRootLevel" auf "1" zu setzen. Wenn das "root"-Element von "TreeNodeID" aufgrund von "OnlyPredecessorOnLevel" bzw. "HowManyLevels" aber sowieso nicht in der Ergebnismenge ist, wird es auch bei "IncludeRootLevel = 1" nicht mit ausgegeben !\\ | ||
+ | |||
+ | D.h. "IncludeRootLevel = 1" macht hauptsächlich nur Sinn, wenn "NULL" für "OnlyPredecessorOnLevel" und "HowManyLevels" angegeben wird.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkung zum Parameter "GetNodeDescriptions" :\\ Falls dieser Parameter mit "1" oder "2" belegt wird, ermittelt die Prozedur die Bezeichnungen der Vorgänger (in der gewünschten Sprache "LanguageID").\\ Bei "GetNodeDescriptions = 1" wird versucht, als Bezeichnung eine Eigenschaft zum Produktbezeichnungs-Merkmal (zuerst in der gewünschten Sprache "LanguageID", dann in der Standardsprache) zu finden - wenn nicht vorhanden, dann wird die "NodeDescription" herangezogen (wieder zuerst in der gewünschten, dann in der Standardsprache).\\ Übergibt man "GetNodeDescriptions = 2" wird direkt die "NodeDescription" herangezogen und erst gar nicht nach einer entsprechenden Eigenschaft gesucht.\\ | ||
+ | |HTTP-Method|GET | | ||
+ | |HTTP-Auth|Optional | | ||
+ | |Tags|{{tag>[im Get Predecessors]}}| | ||
+ | |Engine-Kategorie|item management | | ||
+ | |Engine-Typ|Daten-Ermittlung | | ||
+ | |Letzte Aktualisierung|7.0.7 (2015-01-29)| | ||
+ | |||
+ | ==== Parameter ==== | ||
+ | |||
+ | ^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:engine_parameterconventions|Parameter-Konventionen engine/<Prozedur-Name>]])) ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |__TreeNodeID__| |ID eines Elementes im Artikelbaum, zu dem die Vorgänger ermittelt werden sollen. Bei Angabe von "NULL" erwartet die Prozedur IDs in "tempdb.dbo.OneID".\\ |integer|3.5.0| | ||
+ | |LanguageID|0 |ID der Wunschsprache für die Bezeichnungen der Artikelelemente\\ |tinyint|3.5.0| | ||
+ | |IncludeRootLevel|0 |"0" : "root"-Elemente sind grundsätzlich nicht in der Ergebnismenge\\ "1" : "root"-Elemente werden mit ausgegeben (nur sofern sie nicht durch z.B. "HowManyLevels" sowieso nicht im Ergebnis vorkommen würden)\\ (s. a. Beschreibung !)\\ |bit|3.5.0| | ||
+ | |IncludeMyLevel|0 |Die ID(s) selbst, für die die Vorgänger ermittelt werden sollen...\\ "0" : ...NICHT mit im Ergebnis ausgeben\\ "1" : ... mit im Ergebnis ausgeben\\ |bit|3.5.0| | ||
+ | |GetNodeDescriptions|1 |"0" oder "NULL" : Keine Bezeichnungen ermitteln\\ "1" : Ermittlung von Element-Bezeichnungen, wobei zuerst versucht wird, eine "Produktbezeichnungs"-Eigenschaft zu finden\\ "2" : Als Bezeichnung wird direkt die "NodeDescription" verwendet\\ (s. Beschreibung)\\ |tinyint|3.5.0| | ||
+ | |OnlyPredecessorOnLevel|NULL |Eine Hierarchie-Nummer ("LevelNo"), die angibt, daß jeweils nur der Vorgänger dieser Hierarchie ausgegeben werden soll - in diesem Fall werden "IncludeRootLevel", "IncludeMyLevel", "HowManyLevels" und "GetLevelNoInfo" ignoriert !\\ |tinyint|3.5.0| | ||
+ | |HowManyLevels|NULL |Gibt an, wieviele Vorgänger maximal ermittelt werden sollen\\ |tinyint|3.5.0| | ||
+ | |GetLevelNoInfo|1 |Möchte man in der Rückgabemenge in der Spalte "LevelNo" nicht die Nummer der Hierarchie des Vorgänger-Elementes ausgegeben bekommen, sondern die Information, um den wievielten Vorgänger es sich handelt, übergibt man hier "0"\\ |bit|4.0.11| | ||
+ | |OrderDescByLevelNo|0 |Bestimmt, ob die Rückgabemenge aufsteigend ("0") oder absteigend ("1") nach "LevelNo" sortiert werden soll\\ |bit|4.0.11| | ||
+ | ==== Rückgabe ==== | ||
+ | |||
+ | === wenn TreeNodeID is NOT NULL === | ||
+ | |||
+ | ^Spaltenname ^Beschreibung ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |TreeNodeID|ID eines Vorgänger-Elementes (von "TreeNodeID") im Artikelbaum\\ |integer|3.5.0 | | ||
+ | |NodeDescription|Bezeichnung des Vorgänger-Elementes. Immer "NULL", falls "0" oder "NULL" für "GetNodeDescriptions" angegeben wird !\\ |varchar(1000)|3.5.0 | | ||
+ | |LevelNo|Nummer der Hierarchie des Vorgänger-Elementes - eine höhere Nummer bedeutet eine niedrigere Hierarchie. Ist "GetLevelNoInfo = 0" steht hier die Angabe, der wievielte Vorgänger "TreeNodeID" von "TreeNodeID" ist.\\ |tinyint|3.5.0 | | ||
+ | |NodeID|ID des zur "TreeNodeID" zugehörigen Artikel-Elementes\\ |integer|4.0.11 | | ||
+ | |||
+ | == Sortierungen der Rückgabe == | ||
+ | |||
+ | wenn OrderDescByLevelNo = 0 | ||
+ | * LevelNo (aufsteigend) | ||
+ | wenn OrderDescByLevelNo = 1 | ||
+ | * LevelNo (absteigend) | ||
+ | |||
+ | === wenn TreeNodeID is NULL === | ||
+ | |||
+ | ^Spaltenname ^Beschreibung ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |TreeNodeID|Eine ID, die in "tempdb.dbo.OneID" übergeben wurde\\ |integer|4.0.0 | | ||
+ | |Predecessor|ID eines Vorgänger-Elementes von "TreeNodeID" im Artikelbaum\\ |integer|4.0.0 | | ||
+ | |NodeDescription|Bezeichnung des Vorgänger-Elementes "Predecessor". Immer "NULL", falls "0" oder "NULL" für "GetNodeDescriptions" angegeben wird !\\ |varchar(1000)|4.0.0 | | ||
+ | |LevelNo|Nummer der Hierarchie des Vorgänger-Elementes - eine höhere Nummer bedeutet eine niedrigere Hierarchie. Ist "GetLevelNoInfo = 0" steht hier die Angabe, der wievielte Vorgänger "Predecessor" von "TreeNodeID" ist.\\ |tinyint|4.0.0 | | ||
+ | |NodeID|ID des zu "Predecessor" zugehörigen Artikel-Elementes\\ |integer|4.0.11 | | ||
+ | |||
+ | == Sortierungen der Rückgabe == | ||
+ | |||
+ | wenn OrderDescByLevelNo = 0 | ||
+ | * TreeNodeID (aufsteigend) | ||
+ | * LevelNo (aufsteigend) | ||
+ | wenn OrderDescByLevelNo = 1 | ||
+ | * TreeNodeID (aufsteigend) | ||
+ | * LevelNo (absteigend) | ||
+ | |||
+ | ==== Output-Parameter ==== | ||
+ | |||
+ | Die Prozedur hat keine Output-Parameter.==== Mögliche Return-Codes ==== | ||
+ | |||
+ | ^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber" und indirekt meint "von intern aufgerufenen Unterprozeduren")) ^ | ||
+ | |-621|Fehlender oder falscher Eintrag in PersonTypeSettings|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| | ||
+ | |-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| | ||
+ | |-500|Falsche Parameter|direkt und indirekt| | ||
+ | |-286|Der Benutzer hat nicht die Berechtigung(en), Eigenschaften zu diesem(n) Merkmal(en) zu lesen/ändern|nur indirekt| | ||
+ | |-284|Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu modifizieren|nur indirekt| | ||
+ | |-283|Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu ermitteln|nur indirekt| | ||
+ | |-220|Es konnte keine Merkmal-ID für die Produktbezeichnung ermittelt werden|nur indirekt| | ||
+ | |-110|Das (die) Element(e) ist (sind) nicht vorhanden|direkt und indirekt| | ||
+ | ==== XML-Schema ==== | ||
+ | |||
+ | Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://resources.dstore.de/xsd/webservice_SmartGate/Response/EngineProcedure_v1_0.xsd|Response/EngineProcedure_v1_0.xsd]] validiert. | ||
+ | ==== Historie ==== | ||
+ | |||
+ | |7.0.7 |2015-01-29|Interne Änderung : Datentyp-Erweiterung des "ReferenceKey" [für "_mi_StartProcedure"-Aufruf]\\ | | ||
+ | |7.0.1 |2013-08-07|1. Datentyp der Rückgabespalte "NodeDescription" hat sich erweitert => Auch Anpassung der Doku\\ 2. Anpassungen des Quellcodes an den aktuellen Standard\\ | | ||
+ | |5.0.4 |2005-09-26|Fehler in einem Fall, wenn "TreeNodeID" angegeben und "IncludeRootLevel = 0" war\\ | | ||
+ | |5.0.0 |2004-12-21|Fehler falls für ein bestimmtes Element eine bestimmte Anzahl Vorgänger oder alle Vorgänger ermittelt werden sollten und "GetLevelNoInfo = 0" war : u.U. wurde das "root"-Element immer mit ausgegeben, auch wenn "IncludeRootLevel = 0" angegeben war !\\ | | ||
+ | |4.0.11 |2004-03-31|Komplette Überarbeitung des Codes, u.a. neue Parameter "GetLevelNoInfo" und "OrderDescByLevelNo", neue Rückgabespalte "NodeID", "GetNodeDescriptions" ist jetzt "tinyint"\\ | | ||
+ | |4.0.0 |2003-04-03|1. Neue Möglichkeit der Übergabe mehrerer "TreeNodeID"s über "tempdb.dbo.OneID"\\ 2. Kleine Fehler in der Doku\\ 3. Falscher Index-Angabe (für den "optimizer") in einem Fall\\ | | ||
+ | |3.5.0 |2000-11-23|Erstmalig 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: | ||
+ | * [[http://playground.dstore.de/index.php?proc=im_GetPredecessors|im_GetPredecessors im Engine Playground öffnen]] | ||
+ | == cURL == | ||
+ | Unformatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/im_GetPredecessors?TreeNodeID=<value>'</code>Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org)) formatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/im_GetPredecessors?TreeNodeID=<value>' | xmllint --format -</code>== dStore_php == | ||
+ | <code 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'), | ||
+ | 'im_GetPredecessors', | ||
+ | array( | ||
+ | 'TreeNodeID' => <value>, | ||
+ | // 'LanguageID' => 0, | ||
+ | // 'IncludeRootLevel' => 0, | ||
+ | // 'IncludeMyLevel' => 0, | ||
+ | // 'GetNodeDescriptions' => 1, | ||
+ | // 'OnlyPredecessorOnLevel' => NULL, | ||
+ | // 'HowManyLevels' => NULL, | ||
+ | // 'GetLevelNoInfo' => 1, | ||
+ | // 'OrderDescByLevelNo' => 0 | ||
+ | ) | ||
+ | ); | ||
+ | |||
+ | $service->execute($request); | ||
+ | |||
+ | $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); | ||
+ | $ResultSet = $xml_result->getRowsAsArray(); | ||
+ | |||
+ | </code> | ||
+ | == engine/execute == | ||
+ | XML zur Ausführung mit der Methode [[:webservice:engine:execute|engine/execute]], z.B. per | ||
+ | curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>' | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <ListOfBatches> | ||
+ | <Batch No="0"> | ||
+ | <Procedure Name="im_GetPredecessors"> | ||
+ | <Parameters> | ||
+ | <Parameter Name="TreeNodeID"><!-- integer value --></Parameter> | ||
+ | <!-- <Parameter Name="LanguageID">0</Parameter> --> | ||
+ | <!-- <Parameter Name="IncludeRootLevel">0</Parameter> --> | ||
+ | <!-- <Parameter Name="IncludeMyLevel">0</Parameter> --> | ||
+ | <!-- <Parameter Name="GetNodeDescriptions">1</Parameter> --> | ||
+ | <!-- <Parameter Name="OnlyPredecessorOnLevel">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="HowManyLevels">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="GetLevelNoInfo">1</Parameter> --> | ||
+ | <!-- <Parameter Name="OrderDescByLevelNo">0</Parameter> --> | ||
+ | </Parameters> | ||
+ | </Procedure> | ||
+ | </Batch> | ||
+ | </ListOfBatches></code> | ||