Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_synchronizeitembinaries_ad

im_SynchronizeItemBinaries_Ad

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

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
CharacIDForSynchronization6 ID eines Merkmals. Besagt, daß alle Elemente, die die gleiche Eigenschaft zu diesem Merkmal haben untereinander synchronisiert werden sollen
smallint3.5.11
ReportOnly1 „0“ : Synchronisierung durchführen
„1“ : Keine Synchronisierung durchführen, sondern nur einen Report der betroffenen Elemente erstellen
bit3.5.11
OnlyDirectSuccessorsOfIDNULL ID eines Elementes im Artikelbaum. Bei der Synchronisierung sollen nur die direkten Nachfolger dieses Elementes berücksichtigt werden
integer3.5.11
ProcessValuesInChunksWithSize1000 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)
smallint6.0.4

Rückgabe

wenn ReportOnly = 1

Spaltenname Beschreibung SQL-Datentyp4) ab Version
ValueEigenschaft der „NodeID“ zum Merkmal „CharacIDForSynchronization“
varchar(1000)3.5.11
NodeIDID eines Arikel-Elementes, das synchronisiert werden muß
integer3.5.11
BinaryCodeIDID eines Binärobjektes, das dem Element „NodeID“ noch nicht (oder mit anderer „DateIntervallID“/„TimeIntervallID“/„SortNo“) zugewiesen ist
integer3.5.11
DateIntervallIDID eines Gültigkeitszeitraums der „BinaryCodeID“ für das Element „NodeID“
integer3.5.11
TimeIntervallIDID 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.
integer3.5.11
SortNoBestimmt die Reihenfolge der „BinaryCodeID“ innerhalb ALLER Binärobjekte, die „NodeID“ zugewiesen sind
smallint3.5.11

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-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 abgebrochennur indirekt
-500Falsche Parameterdirekt und indirekt
-121Das (die) Element(e) enthält ein oder mehrere Elemente, für die der Benutzer keine Berechtigung hatnur direkt
-120Der Benutzer hat keine Berechtigung für das (die) Element(e)nur direkt

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-07Datentyp der Rückgabespalte „Value“ hat sich erweitert ⇒ Auch Anpassung der Doku
6.0.4 2011-10-211. 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-05Optimierung des Zugriffs auf „NodeProperties“ (bedingt durch die Änderung dieser Tabelle in 5.1.0)
4.0.14 2004-06-03Bug 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-181. 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-16Ab jetzt wird berücksichtigt, daß in „NodeProperties“ auch Gültigkeitszeiträume in der Zukunft vorhanden sein können !
3.5.11 2001-09-06Erstmalig 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 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 -
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_SynchronizeItemBinaries_Ad',
		array(
			// 'CharacIDForSynchronization' => 6,
			// 'ReportOnly' => 1,
			// 'OnlyDirectSuccessorsOfID' => NULL,
			// 'ProcessValuesInChunksWithSize' => 1000
		)
);
 
$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_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>
1)
Pflichtparameter sind unterstrichen
5)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
6)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/im_synchronizeitembinaries_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)