Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_getusedvalues_pu

im_GetUsedValues_Pu

Ermittelt alle DIREKTEN (!) Eigenschaften (zu einem oder mehreren Merkmalen mit vordefinierten Werten !), die von Nachfolgern (optional nur bis zu einer bestimmten Hierarchie) eines Elementes des Artikelbaums verwendet werden oder einer bestimmten (via „tempdb.dbo.OneID“ zu übergebenden) Menge von Elementen zugewiesen ist.

Optional kann eine Eigenschaft angegeben werden („FilterByCharacteristicID“ und „FilterByCharacValue“), die die Elemente zusätzlich haben müssen (es wird keine Vererbung berücksichtigt !) bzw. NICHT haben müssen (falls „NegateFilterByParams = 1“), d.h. es sind nur Eigenschaften in der Ergebnismenge, zu denen es mindestens ein in Frage kommendes Element gibt, das die Eigenschaft „FilterByCharacValue“ zum Merkmal „FilterByCharacteristicID“ hat bzw. NICHT hat (falls „NegateFilterByParams = 1“).

Zu den gefundenen Eigenschaften kann man sich zusätzlich die (jeweils kleinste) ID eines „Binaries“ ausgeben lassen, das der jeweiligen Eigenschaft zugewiesen ist und eine bestimmte Eigenschaft besitzt.

Bei der Ermittlung der verwendeten Eigenschaften gibt es im Fall „IDsInOneID = 0“ (wenn also Nachfolger-Elemente des durch „TreeNodeID“ angegebenen Elementes beachtet werden sollen) prinzipiell zwei Vorgehensweisen :

Methode 1 : Alle Nachfolger von „TreeNodeID“ ermitteln und dann zu diesen die verschiedenen Eigenschaften zum Merkmal „NodeCharacteristicID“ feststellen

Methode 2 : Von ALLEN Artikel-Elementen die Eigenschaft zu „NodeCharacteristicID“ ermitteln und anschließend diejenigen herausfiltern, die NICHT von Artikel-Elementen verwendet werden, zu denen es ein entsprechendes Element des Artikelbaums („TreeNodeID“) gibt, das unterhalb von „TreeNodeID“ liegt.

Die Prozedur bestimmt standardmäßig selbst, welches Vorgehen wahrscheinlich günstiger ist. Seit Version 3.5.9 kann man aber auch angeben, welche der beiden Methoden die Prozedur verwenden soll.

Anmerkungen zum Parameter „IncludeNumberOfNodesInResult“ und zur Rückgabespalte „NumberOfNodes“ :

Um herauszufinden, von wievielen Elementen eine Eigenschaft verwendet wird, kann man den Parameter „IncludeNumberOfNodesInResult“ angeben. Die Anzahl wird dann in der Spalte „NumberOfNodes“ zurückgegeben. Es gibt folgende mögliche Werte für den besagten Parameter :

  • „0“ : Dann steht in „NumberOfNodes“ immer der Wert „-1“
  • „1“ : „NumberOfNodes“ enthält die Anzahl „TreeNodeID“s deren zugehörige Artikel-Elemente die Eigenschaft „ValueID“ besitzen. Hinweis : Dieser Wert entspricht derzeit immer dem Wert, den man im Fall „2“ erhält, da noch kein „Cloning“ implementiert ist (genauer : derzeit ist einer „NodeID“ GENAU EINE „TreeNodeID“ zugewiesen) !
  • „2“ : Man erhält die Anzahl „NodeID“s die die Eigenschaft „ValueID“ besitzen
  • „3“ : Man erhält die Anzahl verschiedener Vorgänger („Predecessor“) der „TreeNodeID“s, deren zugehörige Artikel-Elemente die Eigenschaft „ValueID“ besitzen. Hintergrund : Wenn der aufrufenden Applikation bekannt ist, daß z.B. nur PRODUKT-VARIANTEN Eigenschaften zu dem/den gewünschten Merkmal(en) besitzen, erhält man somit hier die Anzahl PRODUKTE, die quasi die jeweilige Eigenschaft besitzen. Beispiel : Kleidungsgrößen ⇒ Man erhält die Anzahl Produkte, die es pro Größe gibt !
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
NodeCharacteristicID ID des Merkmals, zu dem verwendete Eigenschaften ermittelt werden sollen. Möchte man die Eigenschaften zu mehreren Merkmalen ermitteln lassen, gibt man „NULL“ an und füllt „CharacteristicIDList“ entsprechend.
smallint3.5.0
TreeNodeID0 Wird nur im Fall „IDsInOneID = 0“ beachtet ! ID eines Elementes im Artikelbaum. Bei der Suche nach aktuell verwendeten Eigenschaften sollen nur die Elemente des Artikelbaums betrachtet werden, die Nachfolger dieses Elementes sind.
integer3.5.0
MaxLevelNo6 Bei der Suche nach aktuell verwendeten Eigenschaften werden nur die Elemente unterhalb „TreeNodeID“ beachtet, deren Hierarchie-Nummer kleiner oder gleich diesem Wert ist
tinyint3.5.8
BinaryCharacteristicValueIDNULL ID einer Eigenschaft die „Binaries“ haben können. Falls hier „NULL“ angegeben ist, werden zu den gefundenen Eigenschaften ALLE zugeordneten „Binaries“ ausgegeben, sonst jeweils nur das Binärobjekt mit der KLEINSTEN ID, das diese Eigenschaft besitzt.
integer3.5.8
MethodNULL Bestimmt die Vorgehensweise:
„1“ : Nachfolger von „TreeNodeID“ und dann die Eigenschaften ermitteln
„2“ : Eigenschaften ermitteln, aber nur die ausgeben, die von „TreeNodeID“-Nachfolgern verwendet werden
„NULL“ : Günstigste Methode wird geschätzt
tinyint3.5.9
FilterByCharacteristicIDNULL Es sind nur Eigenschaften im Ergebnis, zu denen es mindestens ein Element unterhalb von „TreeNodeID“ gibt, das die Eigenschaft „FilterByCharacValue“ zum Merkmal „FilterByCharacteristiciD“ hat. (Achtung: Hierbei wird keine Vererbung berücksichtigt)
smallint3.5.12
FilterByCharacValueNULL Es sind nur Eigenschaften im Ergebnis, zu denen es mindestens ein Element unterhalb von „TreeNodeID“ gibt, das die Eigenschaft „FilterByCharacValue“ zum Merkmal „FilterByCharacteristiciD“ hat. (Achtung: Hierbei wird keine Vererbung berücksichtigt)
varchar(1000)3.5.12
NegateFilterByParams0 Nur relevant, falls die „FilterBy…“-Parameter angegeben sind ! „1“ bedeutet, daß nur Eigenschaften in der Rückgabemenge sind, zu denen es mindestens ein Element unterhalb von „TreeNodeID“ gibt, das die Eigenschaft „FilterByCharacValue“ NICHT hat.
bit4.0.2
IncludeNumberOfNodesInResult0 Bestimmt den Wert der Rückgabespalte „NumberOfNodes“ (s. a. Beschreibung !):
„0“ : Immer „-1“
„1“ : Anzahl „TreeNodeID“s
„2“ : Anzahl „NodeID“s
„3“ : Anzahl „Predecesssor“
tinyint5.1.3
IDsInOneID0 Gibt an, welche Elemente bei der Ermittlung der Eigenschaften berücksichtigt werden sollen :
„0“ : Alle Elemente unterhalb von „TreeNodeID“
„1“ : In „tempdb.dbo.OneID“ übergebene „NodeID“s
„2“ : In „tempdb.dbo.OneID“ übergebene „TreeNodeID“s
tinyint5.5.0
CharacteristicIDListNULL Wird nur beachtet, wenn „NULL“ für „NodeCharacteristicID“ übergeben wird ! Eine Liste von IDs (durch „¶“ getrennt) von Merkmalen, zu denen die jeweils verwendeten Eigenschaften ermittelt werden sollen.
varchar(240)5.5.0
GetValueDetails0 Möchte man „Details“ zu den ermittelten Eigenschaften ausgegeben bekommen, übergibt man hier „1“ (s. Rückgabespalte „Details“).
bit6.0.1

Rückgabe

wenn GetValueDetails = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
SortNo5)Wird nicht ausgegeben, sondern nur zur Sortierung verwendet. Bestimmt die Reihenfolge der Eigenschaft „Value“ innerhalb aller Eigenschaften zum Merkmal „NodeCharacteristicID“
smallint3.5.0
NodeCharacteristicIDID des Merkmals, zu dem die Eigenschaft „ValueID“ gehört
smallint5.5.0
ValueIDID der Eigenschaft „Value“
integer3.5.0
ValueEine momentan verwendete Eigenschaft
varchar(1000)3.5.0
BinaryCodeIDID eines „Binaries“, das der Eigenschaft „Value“ zugeordnet ist. Falls keine „BinaryCharacteristicValueID“ angegeben ist, werden alle zugewiesenen „Binaries“ ausgegeben, ansonsten nur das Binärobjekt mit der KLEINSTEN ID, das diese Eigenschaft besitzt.
integer3.5.8
NumberOfNodesJe nach „IncludeNumberOfNodesInResult“ steht hier die Anzahl Elemente, die „ValueID“ (indirekt) besitzen (s. Beschreibung !)
„0“ : Immer „-1“
„1“ : Anzahl „TreeNodeID“s
„2“ : Anzahl „NodeID“s
„3“ : Anzahl „Predecesssor“
integer5.1.3
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • NodeCharacteristicID (aufsteigend)
  • SortNo (aufsteigend)
  • Value (aufsteigend)

wenn GetValueDetails = 1

Spaltenname Beschreibung SQL-Datentyp6) ab Version
SortNo7)Wird nicht ausgegeben, sondern nur zur Sortierung verwendet. Bestimmt die Reihenfolge der Eigenschaft „Value“ innerhalb aller Eigenschaften zum Merkmal „NodeCharacteristicID“
smallint3.5.0
NodeCharacteristicIDID des Merkmals, zu dem die Eigenschaft „ValueID“ gehört
smallint5.5.0
ValueIDID der Eigenschaft „Value“
integer3.5.0
ValueEine momentan verwendete Eigenschaft
varchar(1000)3.5.0
BinaryCodeIDID eines „Binaries“, das der Eigenschaft „Value“ zugeordnet ist. Falls keine „BinaryCharacteristicValueID“ angegeben ist, werden alle zugewiesenen „Binaries“ ausgegeben, ansonsten nur das Binärobjekt mit der KLEINSTEN ID, das diese Eigenschaft besitzt.
integer3.5.8
NumberOfNodesJe nach „IncludeNumberOfNodesInResult“ steht hier die Anzahl Elemente, die „ValueID“ (indirekt) besitzen (s. Beschreibung !)
„0“ : Immer „-1“
„1“ : Anzahl „TreeNodeID“s
„2“ : Anzahl „NodeID“s
„3“ : Anzahl „Predecesssor“
integer5.1.3
DetailsDetails zur Eigenschaft „Value“
text6.0.1
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • NodeCharacteristicID (aufsteigend)
  • SortNo (aufsteigend)
  • Value (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 8)
-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
-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
-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
-120Der Benutzer hat keine Berechtigung für das (die) Element(e)nur 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
7.0.1 2013-08-071. Datentyp-Erweiterung des Parameters „FilterByCharacValue“ [von 100 auf 1000]
2. Datentyp der Rückgabespalte „Value“ hat sich erweitert ⇒ Anpassung der Doku
6.5.2 2013-02-26Fehler : Bei der Überprüfung, ob eine „varchar“-Variable „voll“ ist, muß die Funktion „datalength“ [nicht
„char_length“] verwendet werden
6.0.1 2010-07-201.) Neuer Parameter „GetValueDetails“
2.) Neue Rückgabespalte „Details“
5.5.1 2008-07-29Berücksichtigung des neuen „Settings“-Eintrags „AssignmentMethodForListVariables“
5.5.0 2008-01-071. Neue Parameter „IDsInOneID“ und „CharacteristicIDList“
2. Neue Rückgabespalte „NodeCharacteristicID“
3. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall „-500“, die nähere Informationen über die Ursache enthält
5.1.3 2006-07-271. Interne Anpassungen, da „_im_GetUsedValues“ überarbeitet wurde
2. Optimierung der Abschätzung im Fall „Method = NULL“
3. Neue Sortierung der Ergebnismenge
4. Neuer Parameter „IncludeNumberOfNodesInResult“
5. Neue Rückgabespalte „NumberOfNodes“
5.1.1 2006-04-051. Optimierung des Zugriffs auf „NodeProperties“ (bedingt durch die Änderung dieser Tabelle in 5.1.0)
2. Konsequente Fehlerbehandlung
4.0.2 2003-06-11Neuer Parameter „NegateFilterByParams“
4.0.1 2003-05-16Ab jetzt wird berücksichtigt, daß in „NodeProperties“ auch Gültigkeitszeiträume in der Zukunft vorhanden sein können !
3.5.13 2001-12-06
3.5.12 2001-10-17
3.5.9 2001-06-16
3.5.8 2001-05-19
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_GetUsedValues_Pu?NodeCharacteristicID=<value>'

Mit xmllint 9) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/im_GetUsedValues_Pu?NodeCharacteristicID=<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_GetUsedValues_Pu',
		array(
			'NodeCharacteristicID' => <value>,
			// 'TreeNodeID' => 0,
			// 'MaxLevelNo' => 6,
			// 'BinaryCharacteristicValueID' => NULL,
			// 'Method' => NULL,
			// 'FilterByCharacteristicID' => NULL,
			// 'FilterByCharacValue' => NULL,
			// 'NegateFilterByParams' => 0,
			// 'IncludeNumberOfNodesInResult' => 0,
			// 'IDsInOneID' => 0,
			// 'CharacteristicIDList' => NULL,
			// 'GetValueDetails' => 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_GetUsedValues_Pu">
			<Parameters>
				<Parameter Name="NodeCharacteristicID"><!-- smallint value --></Parameter>
				<!-- <Parameter Name="TreeNodeID">0</Parameter> -->
				<!-- <Parameter Name="MaxLevelNo">6</Parameter> -->
				<!-- <Parameter Name="BinaryCharacteristicValueID">NULL</Parameter> -->
				<!-- <Parameter Name="Method">NULL</Parameter> -->
				<!-- <Parameter Name="FilterByCharacteristicID">NULL</Parameter> -->
				<!-- <Parameter Name="FilterByCharacValue">NULL</Parameter> -->
				<!-- <Parameter Name="NegateFilterByParams">0</Parameter> -->
				<!-- <Parameter Name="IncludeNumberOfNodesInResult">0</Parameter> -->
				<!-- <Parameter Name="IDsInOneID">0</Parameter> -->
				<!-- <Parameter Name="CharacteristicIDList">NULL</Parameter> -->
				<!-- <Parameter Name="GetValueDetails">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
5) , 7)
Spalte wird nicht zurückgegeben und ist hier nur aus Dokumentationsgründen aufgeführt.
8)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
9)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/im_getusedvalues_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)