Gibt Artikel-Bedingungen zurück, deren Aufbau kurz beschrieben so aussieht :
Eine Artikel-Bedingung besteht aus Bedingungs-Gruppen, die jeweils aus Bedingungs-Teilen bestehen, die ihrerseits immer drei Bedingungs-Arten (Hierarchie-Bedingung, Vorgänger-Bedingung und Eigenschafts-Bedingung) definieren.
Im folgenden werden die Bestandteile einzeln erläutert. Beginnen wir mit der „kleinsten Einheit“ :
1.) Ein sogenannter Bedingungs-Teil („ItemConditionPart“) definiert drei Bedingungs-Arten :
a) Hierarchie-Bedingung („LevelIDs“)
Diese besteht aus einer Menge von Hierarchien („LevelIDs“), wobei es auch möglich ist, den Wert „,,“ zu definieren, der für „beliebige Hierarchie“ steht.
b) Vorgänger-Bedingung („DomainTreeNodeIDs“)
Dabei handelt es sich um eine Menge von Vorgänger-IDs („TreeNodeIDs“), wobei es auch möglich ist, den Wert „,,“ zu definieren, der „beliebiger Vorgänger“ bedeutet.
c) Eigenschafts-Bedingung
Sie ist immer zu einem Merkmal („NodeCharacteristicID“) definiert und besteht aus einem „Operator1“ und der dazugehörigen „Condition1“, sowie optional aus einem weiteren „Operator2“ und der dazugehörigen „Condition2“. Dazu können Optionen hinsichtlich Vererbung und rekursiver Auswertung bei der Ermittlung der Eigenschaft definiert werden.
Es ist auch möglich, den Wert „-1“ als Merkmal („NodeCharacteristicID“) zu definieren, was den speziellen Fall „KEINE Eigenschafts-Bedingung“ darstellen soll.
Ein Artikel-Element erfüllt einen Bedingungs-Teil genau dann, wenn alle drei Bedingungs-Arten erfüllt sind. Der spezielle (in einer Standard-Installation bereits definierte) Teil …
wird von jedem (nicht gelöschten) Artikel-Element erfüllt.
Hinweis : Der „Active“-Status eines Elementes spielt grundsätzlich keine Rolle !
2.) Durch eine logische Verknüpfung entweder mit „AND“ oder „OR“ von solchen Bedingungs-Teilen ergibt sich eine sogenannte Bedingungs-Gruppe („ItemConditionGroup“).
Artikel-Elemente erfüllen also eine solche Bedingungs-Gruppe, wenn sie entweder alle (bei „AND“) oder mindestens einen (bei „OR“) ihrer Bedingungs-Teile erfüllen.
3.) Mehrere solcher Gruppen können dann ihrerseits wiederum entweder mit „AND“ oder „OR“ verknüpft werden und bilden letztlich eine Artikel-Bedingung.
Artikel-Elemente erfüllen also eine solche (Gesamt-)Artikel-Bedingung, wenn sie entweder alle (bei „AND“) oder mindestens eine (bei „OR“) ihrer Bedingungs-Gruppen erfüllen.
Somit lassen sich einfache und komplexe Bedingungen formulieren. Beispiele :
1.) „Artikel-Elemente der Kategorie X oder Y der Marke Z“
⇒ Dies ließe sich mit einem Bedingungs-Teil …
„Beliebige Hierarchie UND X,Y als DomainTreeNodeIDs UND Eigenschaft Z zum Merkmal Marke“
… abbilden, der als einziger Teil einer Bedingungs-Gruppe angehören würde, die ihrerseits alleine dann schon die gesamte Bedingung darstellt.
2.) „Rot gefärbte Produkte der Marke X oder blau gefärbte Produkte in Kategorie A der Marke Y“
⇒ Dieses etwas kompliziertere Beispiel läßt sich beispielsweise wie folgt mit vier Bedingungs-Teilen und zwei -Gruppen abbilden :
Die beiden Teile …
und
… werden mit „AND“ zu einer Gruppe „1“ verknüpft.
Außerdem verknüpft man die beiden Teile …
und
… wiederum mit „AND“ zu einer Gruppe „2“.
Durch eine „OR“-Verknüpfung der beiden Gruppen ist dann schließlich die gesamte Bedingung definiert.
Anmerkung : Es gibt oftmals mehrere Möglichkeiten der Abbildung, da gerade z.B. die Hierarchie-Bedingung bei einer Verknüpfung zweier Bedinungs-Teile mit „UND“ nur bei einer der Teile definiert werden muß - in unserem obigen Beispiel 2 haben wir die Hierarchie hingegen bei ALLEN Bedingungs-Teilen definiert.
Anmerkung zum Parameter „ConditionDescriptionLike“ :
Ist man „auf der Suche“ nach definierten Artikel-Bedingungen, gibt es die Möglichkeit, in der Beschreibung dieser Bedingungen zu suchen. Dazu ist „NULL“ für „ConditionID“ zu übergeben, „GetUnusedConditions“ auf „0“ zu setzen, und in „ConditionDescriptionLike“ muß dann der mit dem „LIKE“-Operator anzuwendende Ausdruck (die üblichen wildcards „%“ und „_“ sowie durch „[“ und „]“ eingeschlossene Zeichenmengen etc. sind also möglich) stehen. In diesem Fall wird die Rückgabemenge zum einen immer nach der „ConditionDescription“ sortiert, zum anderen werden maximal „RowCount“ („NULL“ ist nicht erlaubt) Datensätze ausgegeben - „0“ angeben, um ALLE Datensätze zu erhalten.
Anmerkungen zum Parameter „GetUnusedConditions“ :
Als weitere Alternative kann man sich noch nicht verwendete (wieder werden aber maximal „RowCount“ Teile zurückgegeben) Artikel-Bedingungs ausgeben lassen. Dazu ist „1“ für „GetUnusedConditions“ anzugeben - „ConditionID“ und „ConditionDescriptionLike“ werden dann nicht beachtet, „OrderBy“ aber sehr wohl !
Läßt man „ConditionID“, „ConditionDescriptionLike“„NULL“ und ist „0“ für „GetUnusedConditions“ angegeben, dann werden die ersten „RowCount“ Datensätze aller (je nach „OrderBy“ sortierten) Artikel-Bedingungen ermittelt - der Wert „NULL“ ist auch hier nicht erlaubt !
Anmerkung zum Parameter „OrderBy“ :
Mit „OrderBy“ bestimmt man im Falle einer Suche nach MEHREREN Artikel-Bedingungen (wenn also KEINE ID in „ConditionID“ angegeben ist bzw. dieser Parameter nicht beachtet wird) die Reihenfolge der Datensätze in der Ergebnismenge :
ACHTUNG : Ist „ConditionDescriptionLike“ angegeben (und wird auch beachtet), wird immer der Wert „4“ für „OrderBy“ gewählt, egal was übergeben wurde !
HTTP-Method | GET |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | item management |
Engine-Typ | Daten-Ermittlung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
ConditionID | NULL | Wird nur beachtet, wenn „GetUnusedConditions = 0“ ist ! ID einer Artikel-Bedingung, die ausgegeben werden soll. Bei „NULL“ kann mit anderen Parameter nach Artikel-Bedingungen „gesucht“ werden. | integer | 6.0.0 |
ConditionDescriptionLike | NULL | Wird nur beachtet, wenn „NULL“ für „ConditionID“ angegeben wird und „GetUnusedConditions = 0“ ist ! Falls angegeben, wird mit dem „LIKE“-Operator in der Beschreibung der Artikel-Bedingungen gesucht - s. Beschreibung ! | varchar(255) | 6.0.0 |
GetUnusedConditions | 0 | Ist „1“ angegeben, werden alle Artikel-Bedingungen ermittelt, die noch nicht verwendet werden | bit | 6.0.0 |
OrderBy | 6 | Bestimmt die Sortierung : „0“/„1“ : AUFst./ABst. nach „CreatedAtDateAndTime“ „2“/„3“ : AUFst./ABst. nach „EditedAtDateAndTime“ „4“ : Aufst. nach „ConditionDescription“ „5“/„6“ : AUFst./ABst. nach „EditedAtDateAndTime“/„CreatedAtDateAndTime“ | tinyint | 6.0.0 |
RowCount | 100 | Wird nur beachtet, wenn nach MEHREREN Artikel-Bedingungen gesucht wird (wenn also „ConditionID“ nicht beachtet wird oder „NULL“ ist) ! Wieviele Datensätze sollen maximal zurückgegeben werden („0“ für alle, „NULL“ ist nicht erlaubt) ? | tinyint | 6.0.0 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
ConditionDescription | Bezeichnung der Artikel-Bedingung „ConditionID“ | varchar(255) | 6.0.0 |
IsValid | Gibt an, ob die Artikel-Bedingung „ConditionID“ insgesamt (syntaktisch) korrekt ist und daher verwendet werden kann. Mögliche Werte : - „0“ : Ungültig - „1“ : Gültig | tinyint | 6.0.0 |
CombineGroupsWithANDOperator | Gibt an, ob die der „ConditionID“ zugeordneten (Artikel-)Bedingungs-Gruppen logisch mit UND verknüpft werden („1“) oder mit ODER („0“) | bit | 6.0.0 |
CreatedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ erstellt wurde | datetime | 6.0.0 |
EditedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ zuletzt geändert wurde (kann „NULL“ sein) | datetime | 6.0.0 |
UsedAsCampaignCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
UsedAsCampaignBenefitCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Benefit-Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
ConditionGroupID | ID einer (Artikel-)Bedingungs-Gruppe, die der Artikel-Bedingung „ConditionID“ zugeordnet ist | integer | 6.0.0 |
GroupSortNo | Bestimmt die Reihenfolge von „ConditionGroupID“ innerhalb aller der Artikel-Bedingung „ConditionID“ zugeordneten (Artikel-)Bedingungs-Gruppen | tinyint | 6.0.0 |
ConditionGroupDescription | Bezeichnung der (Artikel-)Bedingungs-Gruppe „ConditionGroupID“ | varchar(255) | 6.0.0 |
CombinePartsWithANDOperator | Gibt an, ob die der „ConditionGroupID“ zugeordneten (Artikel-)Bedingungs-Teile logisch mit UND verknüpft werden („1“) oder mit ODER („0“) | bit | 6.0.0 |
ConditionPartID | ID eines (Artikel-)Bedingungs-Teils, das der (Artikel-)Bedingungs-Gruppe „ConditionGroupID“ zugeordnet ist | integer | 6.0.0 |
PartSortNo | Bestimmt die Reihenfolge von „ConditionPartID“ innerhalb aller der (Artikel-)Bedingungs-Gruppe „ConditionGroupID“ zugeordneten (Artikel-)Bedingungs-Teile | tinyint | 6.0.0 |
ConditionPartDescription | Bezeichnung des (Artikel-)Bedingungs-Teils „ConditionPartID“ | varchar(255) | 6.0.0 |
LevelIDs | Um den (Artikel-)Bedingungs-Teil „ConditionPartID“ zu erfüllen, muß die Hierarchie („LevelID“) eines Artikel-Elementes aus der hier angegebenen Menge der Hierarchien („LevelID“s) kommen. Sonderfall „,,“ bedeutet „beliebige Hierarchie“. | varchar(50) | 6.0.0 |
DomainTreeNodeIDs | Um den (Artikel-)Bedingungs-Teil „ConditionPartID“ zu erfüllen, muß ein Element im Artikelbaum ein Vorgänger-Element besitzen, dessen „TreeNodeID“ aus der hier angegebenen Menge von IDs kommt. Sonderfall „,,“ bedeutet „beliebiger Vorgänger“. | varchar(200) | 6.0.0 |
NodeCharacteristicID | ID eines Merkmals. Um „ConditionPartID“ zu erfüllen, muß ein Element im Artikelbaum eine Eigenschaft zu diesem Merkmal besitzen, die der Bedingung („Operator1“ etc.) genügt. Sonderfall „-1“ : „KEINE Eigenschafts-Bedingung“ (ist also immer erfüllt). | smallint | 6.0.0 |
Operator1 | Operator für die Bedingung „Condition1“. Mögliche Werte : - „=„ - “!=“ / „<>“ - „~“ / „!~“ (LIKE / NOT LIKE) - „>„ - “<„ - “>=„ - “⇐„ - „IN“ / “!I“ (in / NICHT in Menge von „Value“-Werten) - „E“ / „!E“ (IRGENDEINE / KEINE Eigenschaft) | varchar(2) | 6.0.0 |
Condition1 | Bedingung, die in Verbindung mit „Operator1“ anzuwenden ist („NULL“, falls „Operator1“ den Wert „E“ oder „!E“ hat) | varchar(255) | 6.0.0 |
Operator2 | Operator für die Bedingung „Condition2“. Mögliche Werte : - „<“ oder „⇐“, falls „Operator1“ „>“ oder „>=“ enthält - bel. Zeichen (Trennzeichen für Werte-Menge), falls „Operator1“ „IN“ oder „!I“ enthält | varchar(2) | 6.0.0 |
Condition2 | Bedingung, die in Verbindung mit „Operator2“ anzuwenden ist (nur belegt, wenn „Operator2“ den Wert „<“ oder „⇐“ enthält) | varchar(255) | 6.0.0 |
InheritDepth | Welche Eigenschaften zu „NodeCharacteristicID“ hinsichtlich Vererbung sollen bei Prüfung der Eigenschafts-Bedingung beachtet werden : „-1“ : Alle „0“ : unvererbte „1“ : direkte u. einfach geerbte „2“ : direkte u. einfach oder zweifach geerbte usw. | smallint | 6.0.0 |
RecursiveEvaluation | Was soll zwecks Prüfung der Bedingung zu „NodeCharacteristicID“ (wenn rekursiv) gewählt werden ? „0“ : direkte Eigenschaft (also eine Merkmal-ID) „1“ : rekursiv ausgewertete Eigenschaft „2“ : zugehör. Beschreibung der Eigenschaft (also der Merkmal-ID) | tinyint | 6.0.0 |
(parameterunabängige Sortierung)
Spaltenname | Beschreibung | SQL-Datentyp5) | ab Version |
---|---|---|---|
isnull(EditedAtDateAndTime, CreatedAtDateAndTime)6) | Wird nicht zurückgegeben, sondern zur Sortierung benötigt. Enthält „EditedAtDateAndTime“ falls nicht „NULL“, sonst „CreatedAtDateAndTime“. | datetime | 6.0.0 |
ConditionID | ID einer Artikel-Bedingung | integer | 6.0.0 |
ConditionDescription | Bezeichnung der Artikel-Bedingung „ConditionID“ | varchar(255) | 6.0.0 |
IsValid | Gibt an, ob die Artikel-Bedingung „ConditionID“ insgesamt (syntaktisch) korrekt ist und daher verwendet werden kann. Mögliche Werte : - „0“ : Ungültig - „1“ : Gültig | tinyint | 6.0.0 |
CombineGroupsWithANDOperator | Gibt an, ob die der „ConditionID“ zugeordneten (Artikel-)Bedingungs-Gruppen logisch mit UND verknüpft werden („1“) oder mit ODER („0“) | bit | 6.0.0 |
CreatedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ erstellt wurde | datetime | 6.0.0 |
EditedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ zuletzt geändert wurde (kann „NULL“ sein) | datetime | 6.0.0 |
UsedAsCampaignCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
UsedAsCampaignBenefitCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Benefit-Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
wenn OrderBy = 0
wenn OrderBy = 1
wenn OrderBy = 2
wenn OrderBy = 3
wenn OrderBy = 4
wenn OrderBy = 5
wenn OrderBy = 6
Spaltenname | Beschreibung | SQL-Datentyp7) | ab Version |
---|---|---|---|
isnull(EditedAtDateAndTime, CreatedAtDateAndTime)8) | Wird nicht zurückgegeben, sondern zur Sortierung benötigt. Enthält „EditedAtDateAndTime“ falls nicht „NULL“, sonst „CreatedAtDateAndTime“. | datetime | 6.0.0 |
ConditionID | ID einer Artikel-Bedingung | integer | 6.0.0 |
ConditionDescription | Bezeichnung der Artikel-Bedingung „ConditionID“ | varchar(255) | 6.0.0 |
IsValid | Gibt an, ob die Artikel-Bedingung „ConditionID“ insgesamt (syntaktisch) korrekt ist und daher verwendet werden kann. Mögliche Werte : - „0“ : Ungültig - „1“ : Gültig | tinyint | 6.0.0 |
CombineGroupsWithANDOperator | Gibt an, ob die der „ConditionID“ zugeordneten (Artikel-)Bedingungs-Gruppen logisch mit UND verknüpft werden („1“) oder mit ODER („0“) | bit | 6.0.0 |
CreatedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ erstellt wurde | datetime | 6.0.0 |
EditedAtDateAndTime | Zeitpunkt, an dem die Artikel-Bedingung „ConditionID“ zuletzt geändert wurde (kann „NULL“ sein) | datetime | 6.0.0 |
UsedAsCampaignCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
UsedAsCampaignBenefitCondition | Wird die Artikel-Bedingung „ConditionID“ in einer Verkaufs-Aktion (eine sog. „Campaign“) als Benefit-Bedingung verwendet („1“) oder nicht („0“) ? | bit | 6.0.0 |
wenn OrderBy = 0
wenn OrderBy = 1
wenn OrderBy = 2
wenn OrderBy = 3
wenn OrderBy = 4
wenn OrderBy = 5
wenn OrderBy = 6
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 9) |
---|---|---|
-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 |
-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.3 | 2013-03-18 | Anpassungen an aktuellen Code-Standard, u.a. wg. UTF8-Unterstützung |
6.0.0 | 2010-03-26 | 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 GET 'http://<partner>-<project>.dstore.de/default/engine/im_GetItemConditions_Ad'
Mit xmllint 10) formatierte Ausgabe:
curl -X GET 'http://<partner>-<project>.dstore.de/default/engine/im_GetItemConditions_Ad' | 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'), 'im_GetItemConditions_Ad', array( // 'ConditionID' => NULL, // 'ConditionDescriptionLike' => NULL, // 'GetUnusedConditions' => 0, // 'OrderBy' => 6, // 'RowCount' => 100 ) ); $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="im_GetItemConditions_Ad"> <Parameters> <!-- <Parameter Name="ConditionID">NULL</Parameter> --> <!-- <Parameter Name="ConditionDescriptionLike">NULL</Parameter> --> <!-- <Parameter Name="GetUnusedConditions">0</Parameter> --> <!-- <Parameter Name="OrderBy">6</Parameter> --> <!-- <Parameter Name="RowCount">100</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>