Dient zur Analyse der Performance von zentralen Prozeduren. Zu jedem Prozeduraufruf gibt es eine entsprechende „print“-Ausgabe (Prozeduraufruf inkl. Parameter), die am Schluß die Dauer in Millisekunden angibt.
Derzeit werden folgende Prozeduren getestet :
im_GetDirectSuccessors_Pu
im_GetDirectSuccessors_Tree_Pu
im_GetNodeDescriptions_Pu
im_GetNodeProperties
im_GetSuccessors_Pu
im_GetVariantMatrix
im_SearchCharacteristics_Pu
im_SearchProductTreeNodes_Pu
pm_GetPersons_Conditions_Ad
pm_InsertNewPerson_Ad
pm_DeletePerson_Ad
om_GetPrices_Pu
om_GetTrolley_Pu
om_GetTrolleyAsMatrix_Pu
om_GetOrders_Conditions_Ad
om_CopyFromTrolleyToOrder_Pu (Kann nur durch explizite Angabe getestet werden (ProcedureNames = …))
In kommenden Versionen wird es evtl. weitere Prozeduren geben, die getestet werden können.
Möchte man nur einen Teil dieser Prozeduren testen, kann man die entsprechenden Namen via „tempdb.dbo.AnyValues“ angegeben (in „ID“ kann irgendeine beliebige Zahl stehen) und setzt den Parameter „OnlyProceduresInAnyValues“ auf „1“ - ODER man gibt einen oder mehrere Prozedur-Namen („¶“-getrennt) in „ProcedureNames“ an.
Für die Prozeduren im „Item Management“ wird immer wenigstens eine „TreeNodeID“ benötigt. Man kann über den Parameter „TreeNodeID“ eine ID angegeben; andernfalls versucht die Prozedur, eine ID selbst zu ermitteln, und zwar wählt sie das „erste“ Element auf Produkt-Hierarchie (→ „ProductLevelID“ aus „Settings“), das AKTIV und NICHT GELÖSCHT ist und NICHT den „Root-Knoten“ als Vorgänger hat.
Die Parameter „TreeNodeIDForVariantMatrix“, „YAxisCharacteristicID“, „XAxisCharacteristicID“, „ValueCharacteristicID“ sind für den Performance-Check von im_GetVariantMatrix; die Prozedur kann diese Parameter allerdings auch selbst initialisieren.
Anmerkung : Wenn „YAxisCharacteristicID“ UND „XAxisCharacteristicID“ NICHT übergeben wurden, wird „TreeNodeIDForVariantMatrix“ ignoriert !
Zum Aufruf von im_SearchCharacteristics_Pu bzw. im_SearchProductTreeNodes_Pu werden Merkmale benötigt, zu denen gesucht werden soll; daher der Parameter „SearchNodeCharacteristicIDs“. Nach WAS gesucht werden soll, kann man über „SearchValue“ angeben.
Hinweis zu den Parameter „PersonOutputCharacteristics“ und „PersonCharacteristicIDs“: Falls Merkmale übergeben werden, für die eine lesende Zugriffsbeschränkung existiert (s. pm_GetPChAccRestrForUsers_Ad), kann es zu einem Fehler kommen.
HTTP-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | system administration |
Engine-Typ | Daten-Ermittlung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
ProcedureNames | NULL | Ein oder mehrere Prozedur-Name(n) ('¶'-getrennt), für die ein Performance-Check durchgeführt werden soll | varchar(255) | 3.5.9 |
OnlyProceduresInAnyValues | 0 | „0“ : Es werden alle oder nur die in „ProcedureNames“ angegebenen Prozeduren berücksichtigt „1“ : Es werden die Prozeduren berücksichtigt, die in „tempdb.dbo.AnyValues“ angegeben sind | bit | 3.5.9 |
TreeNodeID | NULL | ID eines Elementes im Artikelbaum, für das die Performance-Checks durchgeführt werden soll (gilt nur für Prozeduren im „Item Management“ | integer | 3.5.9 |
TreeNodeIDForVariantMatrix | NULL | Für im_GetVariantMatrix, siehe Beschreibung | integer | 3.5.9 |
YAxisCharacteristicID | NULL | Für im_GetVariantMatrix, siehe Beschreibung | integer | 3.5.9 |
XAxisCharacteristicID | NULL | Für im_GetVariantMatrix, siehe Beschreibung | integer | 3.5.9 |
ValueCharacteristicID | NULL | Für im_GetVariantMatrix, siehe Beschreibung | integer | 3.5.9 |
SearchNodeCharacteristicIDs | NULL | Für im_SearchProductTreeNodes_Pu, siehe Beschreibung | varchar(200) | 3.5.9 |
SearchValue | NULL | Für im_SearchProductTreeNodes_Pu, siehe Beschreibung | varchar(1000) | 3.5.9 |
SearchPersonTypeID | 1 | ID eines Personentyps (es können nur Personen eines Typs gesucht werden) | smallint | 3.5.16 |
PersonOutputCharacteristics | NULL | Zu allen gefundenen Personen werden in der Ausgabemenge Eigenschaften zu diesen Merkmalen angezeigt. Falls nichts angegeben wird, ermittelt die Prozedur die ersten drei (falls möglich) Pflichtmerkmale zum Personentyp „SearchPersonTypeID“. | varchar(255) | 3.5.16 |
PersonCharacteristicIDs | NULL | Siehe Dokumentation des Parameters „CharacteristicIDList“ bzw. „ConditionList“ der Prozedur pm_GetPersons_Conditions_Ad. Falls nicht angegeben, belegt die Prozedur diesen Parameter (zufällig) selbst | varchar(255) | 3.5.16 |
ConditionList | NULL | Siehe Dokumentation des Parameters „CharacteristicIDList“ bzw. „ConditionList“ der Prozedur pm_GetPersons_Conditions_Ad. Falls nicht angegeben, belegt die Prozedur diesen Parameter (zufällig) selbst | varchar(255) | 3.5.16 |
OrderPersonID | NULL | Für die Tests der „Order Management“-Prozeduren wird eine Person benötigt. Wenn dieser Parameter nicht angegeben wird, wählt die Prozedur selbst eine Person für die Tests aus | integer | 3.5.16 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-1323 | Die Person besitzt kein Konto zum angegebenen Typ | nur indirekt |
-1322 | Transaktion kann nicht durchgeführt weden, da der Status des Kontos dies nicht erlaubt | nur indirekt |
-1321 | Transaktion kann nicht durchgeführt weden, da das Konto keine ausreichende Deckung aufweist | nur indirekt |
-1305 | Validierung fehlgeschlagen, der Code zur Zeit inaktiv ist | nur indirekt |
-1304 | Validierung fehlgeschlagen, da die maximale Menge an Einlösungen der Person für diesen Code erreicht | nur indirekt |
-1303 | Validierung fehlgeschlagen, da die maximale Menge an Einlösungen für diesen Code erreicht ist | nur indirekt |
-1302 | Validierung fehlgeschlagen, da der Code nicht mehr gültig ist | nur indirekt |
-1301 | Validierung fehlgeschlagen, da der Code nicht existiert | nur indirekt |
-1204 | Fehlender oder falscher Eintrag in CampaignSettings | nur indirekt |
-856 | Fehlerhafte Daten in „MainPostingSorting“ | nur indirekt |
-855 | Fehlerhafte Konfiguration des Sortier-Kriteriums | nur indirekt |
-850 | Sortier-Kriterium nicht definiert oder inaktiv oder nicht verwendbar | nur indirekt |
-840 | Posting kann nicht bearbeitet werden, weil es bereits von einem anderen Prozess bearbeitet wird | nur indirekt |
-697 | Aktion kann nicht durchgeführt werden, da für ein Merkmal eine Zugriffsbeschränkung besteht | nur indirekt |
-684 | Die Eigenschaft gehört zum Merkmal „Land“, aber es gibt keinen entsprechenden Eintrag in „Countries“ | nur indirekt |
-677 | Die Person kann nicht gelöscht werden, da es mind. ein Posting gibt, das nicht gelöscht werden darf | nur indirekt |
-672 | Fehlende Berechtigung zum Löschen von Personen eines bestimmten Personentyps | nur indirekt |
-671 | Die Person kann nicht gelöscht werden, da mindestens ein Auftrag existiert | nur indirekt |
-661 | Die Person besitzt keine oder eine ungültige Eigenschaft zu einem bestimmten Merkmal | nur indirekt |
-660 | Identifikation fehlgeschlagen | direkt und indirekt |
-655 | Die VisitorID steht nicht mit der PersonID in Verbindung | nur indirekt |
-650 | Es sind nicht alle Pflichtmerkmale vorhanden | nur indirekt |
-642 | Inkrementelle Änderung konnte aufgrund paralleler Änderungen nicht durchgeführt werden | nur indirekt |
-641 | Die „Unique“-Eigenschaft mindestens eines Merkmals ist verletzt - Prozedur wurde abgebrochen | nur indirekt |
-640 | Einige Personendaten sind ungültig | nur indirekt |
-630 | Personendaten konnten nicht angelegt werden | nur indirekt |
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-610 | Fehlende oder falsche Daten in PersonMetaInformation | nur indirekt |
-602 | Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werden | nur indirekt |
-600 | Es konnte keine gültige VisitorID ermittelt werden | nur indirekt |
-599 | Lizenz ist ungültig oder abgelaufen | nur indirekt |
-572 | Die Prozedur darf nur innerhalb einer Transaktion ausgeführt werden | 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 |
-561 | Prozedur kann nicht ausgeführt werden | nur indirekt |
-550 | Fehlender oder falscher Eintrag in Settings | direkt und indirekt |
-540 | Falsches Format | 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 |
-507 | Fehlerhafte Implementierung einer Prozedur - Daten in einem Ausgabeparameter sind ungültig | nur indirekt |
-506 | Fehlerhafte Implementierung einer Prozedur - Daten in der Output-Schnittstelle sind ungültig | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | direkt und indirekt |
-503 | Fehlerhafte Daten in einer Tabelle - genauere Fehlermeldung auf der Standardausgabe | nur indirekt |
-502 | Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen) | nur indirekt |
-501 | Der Parameter „TableID“ und/oder der Parameter „TableKeyID“ ist ungültig | nur indirekt |
-500 | Falsche Parameter | direkt und indirekt |
-398 | Einige OrderSurchargeInformation sind ungültig | nur indirekt |
-391 | Einige OrderInformation sind ungültig | nur indirekt |
-390 | Einige OrderContentInformation sind ungültig | nur indirekt |
-385 | Die Brutto-Summe aus Warenwert plus Surcharges unterschreitet den vorgegebenen Mindestwert | nur indirekt |
-348 | Status-Änderung konnte aufgrund paralleler Änderungen nicht durchgeführt werden | nur indirekt |
-347 | Ungültige „OrderStateID“ (da für interne Zwecke reserviert) | nur indirekt |
-340 | Fehlende Berechtigung zum Ändern des Orderstatus | nur indirekt |
-338 | Die gegebene PaymentForShippingID ist keine mögliche Zahlungs-/Versandart-Kombination | nur indirekt |
-337 | Keine PaymentForShippingID aufgrund HideWhenOrderedAlone-Einstellung möglich | nur indirekt |
-336 | Keine PaymentForShippingID gefunden, die für alle Artikel im Warenkorb möglich ist | nur indirekt |
-334 | Mindestens einem Artikel ist keine PaymentForShippingID zugewiesen | nur indirekt |
-333 | Ein benötigter Steuersatz ist nicht bekannt oder konnte nicht ermittelt werden | nur indirekt |
-332 | Die Kombination aus PaymentTypeID und ShippingTypeID ist mit der Bestellung nicht vereinbar | nur indirekt |
-331 | Es kann keine gültige PaymentForShippingID zu der PaymentTypeID und ShippingTypeID ermittelt werden | nur indirekt |
-330 | Es kann keine oder keine eindeutige PaymentForShippingID zu einer Order ermittelt werden | nur indirekt |
-329 | Keine PaymentForShippingID aufgrund der Gruppen-Zugehörigkeit des Auftraggebers gefunden | nur indirekt |
-328 | Keine PaymentForShippingID gefunden, da Bestellwert nicht die Zahlungsarten-Beschränkungen erfüllt | nur indirekt |
-327 | Keine PaymentForShippingID gefunden, da Bestellwert nicht die Versandarten-Beschränkungen erfüllt | nur indirekt |
-326 | Keine PaymentForShippingID aufgrund der Region der Lieferanschrift gefunden | nur indirekt |
-325 | Keine PaymentForShippingID aufgrund der Region des Auftraggebers gefunden | nur indirekt |
-321 | Ein oder mehrere Artikel wurden aus dem Warenkorb entfernt | nur indirekt |
-320 | Der Bestand eines Produktes darf nicht unter 0 sinken | nur indirekt |
-316 | Warenkorb kann nur einmal bestellt werden, verm. Ursache : paralleler „…TrolleyToOrder…“-Aufruf | nur indirekt |
-312 | Fehlerhafte Daten im Warenkorb konnten nicht repariert werden | nur indirekt |
-311 | Fehlerhafte Daten im Warenkorb : Es sind mehrere „HTreeNodeID“s mit gleicher „NodeID“ vorhanden | nur indirekt |
-310 | Der Besucher hat keine gültigen Artikel im Warenkorb | nur indirekt |
-286 | Der Benutzer hat nicht die Berechtigung(en), Eigenschaften zu diesem(n) Merkmal(en) zu lesen/ändern | nur indirekt |
-285 | Der Benutzer hat keine Berechtigung, vergangene Eigenschaften zu diesem(n) Merkmal(en) zu ä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 |
-245 | Einige Artikel-Eigenschaften sind ungültig | nur indirekt |
-242 | Relative Änderung nicht möglich, da es eine Eigenschaft gibt, deren Gültigkeit in d. Zukunft beginnt | nur indirekt |
-241 | Änderung(en) der Eigenschaft(en) konnte(n) aufgrund paralleler Änderungen nicht durchgeführt werden | nur indirekt |
-230 | Nicht alle Knoten haben Eigenschaften zu den angegebenen Merkmalen | nur indirekt |
-221 | Es konnte kein rekursives Merkmal mit der Standardwährung als Einheit ermittelt werden | nur indirekt |
-220 | Es konnte keine Merkmal-ID für die Produktbezeichnung ermittelt werden | nur indirekt |
-210 | Das (die) Element(e) hat (haben) keine Eigenschaft zum angegebenen Merkmal | nur indirekt |
-120 | Der Benutzer hat keine Berechtigung für das (die) Element(e) | nur indirekt |
-110 | Das (die) Element(e) ist (sind) nicht vorhanden | nur 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] |
7.0.1 | 2013-08-07 | Datentyp-Erweiterung des Parameters „SearchValue“ [von 100 auf 1000] |
6.5.4 | 2013-04-29 | Doku-Hinweis ergänzt bzgl. „PersonOutputCharacteristics“ und „PersonCharacteristicIDs“ [wg. des Merkmal- Zugriffsbeschränkungen-Features] |
6.5.3 | 2013-03-18 | Interne Anpassungen zwecks UTF8-Unterstützung |
5.5.0 | 2008-01-07 | 1. (interne Änderung :) Code-Verlagerung 2. Ausgabe via „print“ im Fehler-Fall „-500“ (mit Informationen über die Ursache) 3. In einem Fall wird nun „-504“ statt „-500“ als Fehler zurückgegeben |
5.1.7 | 2006-10-31 | Ab jetzt kann es theoretisch auch „Einkaufs-Aufträge“ geben, deren „OrderID“s und zugehörige „OrderContentID“s ein negatives Vorzeichen haben. Wir möchten hier aber nur Kunden-Aufträge testen ⇒ entsprechende Anpassungen |
5.1.4 | 2006-08-14 | Damit ein cursor „for update“ auch in der ASE-Version 15 funktioniert, muß ein „unique“ index existieren ⇒ entspr. Anpassung |
5.1.1 | 2006-04-05 | „NodeProperties“ hat sich in 5.1.0 geändert ⇒ kleine Performance-Verbesserung durch entsprechende Anpassungen |
4.0.13 | 2004-05-18 | 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. Konsequente Fehlerbehandlung |
4.0.5 | 2003-10-04 | Verlagerung diverser „Settings“-Einträge auf entsprechende „PersonTypeSettings“-Einträge |
4.0.1 | 2003-05-16 | Fehler bzgl. der Gültigkeitszeiträume in „NodeProperties“ in einigen Fällen |
3.5.21 | 2002-08-06 | |
3.5.19 | 2002-06-17 | |
3.5.16 | 2002-04-25 | |
3.5.9 | 2001-06-16 | 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/mi_CheckPerformance_Ad'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/mi_CheckPerformance_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'), 'mi_CheckPerformance_Ad', array( // 'ProcedureNames' => NULL, // 'OnlyProceduresInAnyValues' => 0, // 'TreeNodeID' => NULL, // 'TreeNodeIDForVariantMatrix' => NULL, // 'YAxisCharacteristicID' => NULL, // 'XAxisCharacteristicID' => NULL, // 'ValueCharacteristicID' => NULL, // 'SearchNodeCharacteristicIDs' => NULL, // 'SearchValue' => NULL, // 'SearchPersonTypeID' => 1, // 'PersonOutputCharacteristics' => NULL, // 'PersonCharacteristicIDs' => NULL, // 'ConditionList' => NULL, // 'OrderPersonID' => 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="mi_CheckPerformance_Ad"> <Parameters> <!-- <Parameter Name="ProcedureNames">NULL</Parameter> --> <!-- <Parameter Name="OnlyProceduresInAnyValues">0</Parameter> --> <!-- <Parameter Name="TreeNodeID">NULL</Parameter> --> <!-- <Parameter Name="TreeNodeIDForVariantMatrix">NULL</Parameter> --> <!-- <Parameter Name="YAxisCharacteristicID">NULL</Parameter> --> <!-- <Parameter Name="XAxisCharacteristicID">NULL</Parameter> --> <!-- <Parameter Name="ValueCharacteristicID">NULL</Parameter> --> <!-- <Parameter Name="SearchNodeCharacteristicIDs">NULL</Parameter> --> <!-- <Parameter Name="SearchValue">NULL</Parameter> --> <!-- <Parameter Name="SearchPersonTypeID">1</Parameter> --> <!-- <Parameter Name="PersonOutputCharacteristics">NULL</Parameter> --> <!-- <Parameter Name="PersonCharacteristicIDs">NULL</Parameter> --> <!-- <Parameter Name="ConditionList">NULL</Parameter> --> <!-- <Parameter Name="OrderPersonID">NULL</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>