Synchronisiert die Zuordnung von „Binaries“ zu Elementen des Artikelbaums in „NodePresentations“; dabei werden die Elemente mit gleicher Eigenschaft zum Merkmal „CharacIDForSynchronization“ untereinander abgeglichen. D.h. es wird die „Vereinigungsmenge“ der Binärobjekte jeweils aller Elemente mit gleicher Eigenschaft ermittelt und dafür gesorgt, daß alle Elemente genau diese „Binaries“ zugeordnet bekommen.
Standardmäßig werden jedoch keine Daten verändert; es wird stattdessen nur eine Ergebnismenge zurückgegeben, die alle Datensätze enthält, die NICHT synchron (d.h. nicht vorhanden oder falsch) sind.
Berücksichtigt werden natürlich keine gelöschten Elemente - wohl aber DEaktivierte !
Eine weitere Möglichkeit, die die Prozedur bietet, ist nur die Elemente zu synchronizieren, die DIREKTE Nachfolger eines Elementes im Artikelbaum (→ Parameter „OnlyDirectSuccessorsOfID“) sind. Somit kann man z.B. alle Farbvarianten eines Produkts synchronisieren, in dem man als „CharacIDForSynchronization“ entsprechend die Merkmal-ID für „Farbe“ (o.ä.) angibt und als „OnlyDirectSuccessorsOfID“ die „TreeNodeID“ des Produktes.
Für den Fall „OnlyDirectSuccessorsOfID = NULL“ (also „alle“ synchronisieren) ist folgendes zu beachten :
1.) Aus Performance-Gründen kann „LockedTreeNodeIDs“ nicht im Detail berücksichtigt werden, d.h. diese Prozedur kann nur für einen „User“ erfolgreich ausgeführt werden, der auf ALLE Elemente Zugriff hat. Ansonsten gibt es den Fehler „-121“ !
2.) Im Falle „ReportOnly = 0“ (also wenn nicht „reportet“ sondern tatsächlich synchronisiert werden soll) kann die Transaktion sehr groß werden, was lang andauernde „locks“ verursacht. Daher werden die Eigenschaften zu „CharacIDForSynchronization“ in „Blöcken“ abgearbeitet, d.h. es werden mehrere Transaktionen gestartet, die jeweils „ProcessValuesInChunksWithSize“ viele Eigenschaften behandeln. Letzter Parameter muß einen Wert „> 100“ enthalten !
HTTP-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | item management |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
CharacIDForSynchronization | 6 | ID eines Merkmals. Besagt, daß alle Elemente, die die gleiche Eigenschaft zu diesem Merkmal haben untereinander synchronisiert werden sollen | smallint | 3.5.11 |
ReportOnly | 1 | „0“ : Synchronisierung durchführen „1“ : Keine Synchronisierung durchführen, sondern nur einen Report der betroffenen Elemente erstellen | bit | 3.5.11 |
OnlyDirectSuccessorsOfID | NULL | ID eines Elementes im Artikelbaum. Bei der Synchronisierung sollen nur die direkten Nachfolger dieses Elementes berücksichtigt werden | integer | 3.5.11 |
ProcessValuesInChunksWithSize | 1000 | Es werden nicht alle Eigensch. zu „CharacIDForSynchronization“ garantiert in EINER Transaktion verarb., sondern es werden MEHRERE Transakt. gestartet, wobei jeweils immer max. soviele Eigensch. verarb. werden, wie hier angegeben (Wert muß „> 100“ sein) | smallint | 6.0.4 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
Value | Eigenschaft der „NodeID“ zum Merkmal „CharacIDForSynchronization“ | varchar(1000) | 3.5.11 |
NodeID | ID eines Arikel-Elementes, das synchronisiert werden muß | integer | 3.5.11 |
BinaryCodeID | ID eines Binärobjektes, das dem Element „NodeID“ noch nicht (oder mit anderer „DateIntervallID“/„TimeIntervallID“/„SortNo“) zugewiesen ist | integer | 3.5.11 |
DateIntervallID | ID eines Gültigkeitszeitraums der „BinaryCodeID“ für das Element „NodeID“ | integer | 3.5.11 |
TimeIntervallID | ID eines Gültigkeitszeitraums der „BinaryCodeID“ für das Element „NodeID“. Im Unterschied zu „DateIntervallID“ jedoch nur eine Uhrzeit-Angabe; der Grund hierfür ist, daß es keinen expliziten Datentyp „Time“ im ASE gibt. | integer | 3.5.11 |
SortNo | Bestimmt die Reihenfolge der „BinaryCodeID“ innerhalb ALLER Binärobjekte, die „NodeID“ zugewiesen sind | smallint | 3.5.11 |
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 5) |
---|---|---|
-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 |
-500 | Falsche Parameter | direkt und indirekt |
-121 | Das (die) Element(e) enthält ein oder mehrere Elemente, für die der Benutzer keine Berechtigung hat | nur direkt |
-120 | Der Benutzer hat keine Berechtigung für das (die) Element(e) | nur direkt |
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 der Rückgabespalte „Value“ hat sich erweitert ⇒ Auch Anpassung der Doku |
6.0.4 | 2011-10-21 | 1. Pflege vom „NodeMetaInformation“ 2. Neuer Parameter „ProcessValuesInChunksWithSize“ 3. Diverse Anpassungen, u.a. Verwendung von „abstract query plans“, um mit temporären Tabellen arbeiten zu können |
5.1.1 | 2006-04-05 | Optimierung des Zugriffs auf „NodeProperties“ (bedingt durch die Änderung dieser Tabelle in 5.1.0) |
4.0.14 | 2004-06-03 | Bug im ASE bzgl. „set“-Anweisungen innerhalb „if-else-Verschachtelung“ - in diesem Fall war „set forceplan“ betroffen, was dazu führte, daß u.U. eine Query SEHR unperformant ausgeführt wurde ! |
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.1 | 2003-05-16 | Ab jetzt wird berücksichtigt, daß in „NodeProperties“ auch Gültigkeitszeiträume in der Zukunft vorhanden sein können ! |
3.5.11 | 2001-09-06 | 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/im_SynchronizeItemBinaries_Ad'
Mit xmllint 6) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/im_SynchronizeItemBinaries_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_SynchronizeItemBinaries_Ad', array( // 'CharacIDForSynchronization' => 6, // 'ReportOnly' => 1, // 'OnlyDirectSuccessorsOfID' => NULL, // 'ProcessValuesInChunksWithSize' => 1000 ) ); $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_SynchronizeItemBinaries_Ad"> <Parameters> <!-- <Parameter Name="CharacIDForSynchronization">6</Parameter> --> <!-- <Parameter Name="ReportOnly">1</Parameter> --> <!-- <Parameter Name="OnlyDirectSuccessorsOfID">NULL</Parameter> --> <!-- <Parameter Name="ProcessValuesInChunksWithSize">1000</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>