Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_getpredecessors

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. 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-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieitem management
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) 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“.
integer3.5.0
LanguageID0 ID der Wunschsprache für die Bezeichnungen der Artikelelemente
tinyint3.5.0
IncludeRootLevel0 „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 !)
bit3.5.0
IncludeMyLevel0 Die ID(s) selbst, für die die Vorgänger ermittelt werden sollen…
„0“ : …NICHT mit im Ergebnis ausgeben
„1“ : … mit im Ergebnis ausgeben
bit3.5.0
GetNodeDescriptions1 „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)
tinyint3.5.0
OnlyPredecessorOnLevelNULL 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 !
tinyint3.5.0
HowManyLevelsNULL Gibt an, wieviele Vorgänger maximal ermittelt werden sollen
tinyint3.5.0
GetLevelNoInfo1 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“
bit4.0.11
OrderDescByLevelNo0 Bestimmt, ob die Rückgabemenge aufsteigend („0“) oder absteigend („1“) nach „LevelNo“ sortiert werden soll
bit4.0.11

Rückgabe

wenn TreeNodeID is NOT NULL

Spaltenname Beschreibung SQL-Datentyp4) ab Version
TreeNodeIDID eines Vorgänger-Elementes (von „TreeNodeID“) im Artikelbaum
integer3.5.0
NodeDescriptionBezeichnung des Vorgänger-Elementes. Immer „NULL“, falls „0“ oder „NULL“ für „GetNodeDescriptions“ angegeben wird !
varchar(1000)3.5.0
LevelNoNummer 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.
tinyint3.5.0
NodeIDID des zur „TreeNodeID“ zugehörigen Artikel-Elementes
integer4.0.11
Sortierungen der Rückgabe

wenn OrderDescByLevelNo = 0

  • LevelNo (aufsteigend)

wenn OrderDescByLevelNo = 1

  • LevelNo (absteigend)

wenn TreeNodeID is NULL

Spaltenname Beschreibung SQL-Datentyp5) ab Version
TreeNodeIDEine ID, die in „tempdb.dbo.OneID“ übergeben wurde
integer4.0.0
PredecessorID eines Vorgänger-Elementes von „TreeNodeID“ im Artikelbaum
integer4.0.0
NodeDescriptionBezeichnung des Vorgänger-Elementes „Predecessor“. Immer „NULL“, falls „0“ oder „NULL“ für „GetNodeDescriptions“ angegeben wird !
varchar(1000)4.0.0
LevelNoNummer 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.
tinyint4.0.0
NodeIDID des zu „Predecessor“ zugehörigen Artikel-Elementes
integer4.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 6)
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur 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 abgebrochennur indirekt
-500Falsche Parameterdirekt und indirekt
-286Der Benutzer hat nicht die Berechtigung(en), Eigenschaften zu diesem(n) Merkmal(en) zu lesen/ändernnur indirekt
-284Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu modifizierennur indirekt
-283Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu ermittelnnur indirekt
-220Es konnte keine Merkmal-ID für die Produktbezeichnung ermittelt werdennur indirekt
-110Das (die) Element(e) ist (sind) nicht vorhandendirekt 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-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.1 2013-08-071. 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-26Fehler in einem Fall, wenn „TreeNodeID“ angegeben und „IncludeRootLevel = 0“ war
5.0.0 2004-12-21Fehler 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-31Komplette Überarbeitung des Codes, u.a. neue Parameter „GetLevelNoInfo“ und „OrderDescByLevelNo“, neue Rückgabespalte „NodeID“, „GetNodeDescriptions“ ist jetzt „tinyint“
4.0.0 2003-04-031. 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-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/im_GetPredecessors?TreeNodeID=<value>'

Mit xmllint 7) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/im_GetPredecessors?TreeNodeID=<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'),
	'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();
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="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>
1)
Pflichtparameter sind unterstrichen
6)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
7)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/im_getpredecessors.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)