Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_deleteinterfacetables_ad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

engine:procedures:im_deleteinterfacetables_ad [11.01.2016 ] (aktuell)
Zeile 1: Zeile 1:
 +===== im_DeleteInterfaceTables_Ad =====
 +
 +Löscht alle Datensätze der Schnittstellen-Tabellen für Artikeldaten bzw. für Binärobjekte zu Artikeldaten/​Artikeleigenschaften. Derzeit gibt es für den Artikelimport bzw. den Import von "​Binaries"​ folgende Tabellen :\\ 
 +
 +A) Artikeldaten
 +    * "​ImportItemData_Items"​
 +    * "​ImportItemData_Variants"​
 +    * "​ImportItemData_Properties"​
 +    * "​ImportItemData_ValueDetails"​
 +    * "​ImportItemData_CopyItems"​
 +    * "​RemoveItemsOrVariants"​
 +
 +
 +B) "​Binaries"​ für Artikel-Elemente
 +    * "​ImportItemBinaries"​
 +    * "​ImportItemBinaries_Properties"​
 +    * "​ImportItemBinaries_Copy"​
 +
 +
 +C) "​Binaries"​ zu Artikel-Eigenschaften
 +    * "​ImportValueBinaries"​
 +    * "​ImportValueBinaries_Properties"​
 +
 +
 +Je nachdem welche Schnittstellen-Tabellen gelöscht werden sollen (-> "​InterfacesForBinaries"​),​ wird versucht, die entsprechende Schnittstelle ([[dstoreproc>​im_ImportItemData_Ad]] bzw. "​_im_ImportItemBinaries"​ bzw. "​_im_ImportValueBinaries"​ vorzubereiten,​ um exklusiv die Schnittstellen-Tabellen nutzen zu können. Gelingt dies, kann man in "​BatchJobs"​ (s. [[dstoreproc>​mi_GetBatchJobs_Ad]]) für die entsprechende Prozedur den Status "​99"​ sehen; andernfalls kann es zum Fehler "​-560"​ kommen.\\ ​
 +
 +
 +
 +Anmerkungen zum Parameter "​CreateImportTable"​ :\\ 
 +
 +Im Fall "​InterfacesForBinaries = 0" (wenn also nur Schnittstellen-Tabellen für Artikeldaten geleert werden sollen - nicht aber für Binärdateien) steht auch eine spezielle Form des Imports von Artikeldaten via [[dstoreproc>​im_ImportItemData_Ad]] zur Verfügung. Diese Prozedur kann nämlich auch Daten verarbeiten,​ die nur über EINE einzige, spezielle Tabelle übergeben werden, in der aber\\ DASSELBE abgebildet werden kann wie über die eigentlichen (sechs) Import-Tabellen ("​ImportItemData_Items",​ "​ImportItemData_Variants",​ "​ImportItemData_Properties",​ "​ImportItemData_ValueDetails",​ "​ImportItemData_CopyItems"​ und "​RemoveItemsOrVariants"​) ! Hierzu ist "​CreateImportTable = 1" zu übergeben, was folgendes bewirkt :\\ 
 +
 +1.) Wir führen zunächst dasselbe wie im Fall "​InterfacesForBinaries = 0" und "​CreateImportTable = 0" durch, d.h. es wird versucht, die Schnittstelle [[dstoreproc>​im_ImportItemData_Ad]] vorzubereiten und alle Import-Tabellen zu leeren.\\ ​
 +
 +2.) ZUSÄTZLICH wird aber eine spezielle Tabelle (zur Zeit in der Datenbank "​dstoreifin"​) angelegt, in die anschließend dann Daten (i.d.R. via "​bcp"​-Tool) eingefügt werden können. Um die Tabelle nutzen zu können, erhält der Aufrufer eine entsprechende Ergebnismenge mit dem Namen der Tabelle. Warum ist der Name nicht festgelegt ? Weil auf demselben ASE-Server ja MEHRERE "​Engines"​ installiert sein können, ist es möglich, daß diese Prozedur hier MEHRFACH aufgerufen wird bzw. MEHRERE Versionen dieser speziellen Tabelle GLEICHZEITIG existieren müssen. Alternativ könnte die Tabelle natürlich auch in dieser DB (in der diese Prozedur hier gespeichert ist) erstellt werden, was aber i.d.R. das anschließende Befüllen mit "fast bcp" ausschließt - weil hierzu eine DB-Option gesetzt sein muß, was aber wiederum die Möglichkeit der Sicherung des Transaktions-Logs,​ s. [[dstoreproc>​mi_DumpTransactionLog_Ad]],​ verhindert ! Ein weiterer Grund ist, daß ein parallel laufender Prozess weder aus Versehen noch absichtlich Daten in die Tabelle einfügen können soll (daher enthält der Name auf jeden Fall eine zufällig generierte Zeichenkette).\\ Hinweise :\\ (i) Der so erhaltene Name muß dann beim späteren [[dstoreproc>​im_ImportItemData_Ad]]-Aufruf im Parameter "​ImportFromTableName"​ übergeben werden.\\ (ii) Um zu vermeiden, daß nach und nach sehr viele Tabellen dieser Art entstehen, weil nach dem Aufruf dieser Prozedur hier das Import-Prozedere NICHT zu Ende geführt wird (die Tabelle wird erst am Ende des erfolgreichen Aufrufs von [[dstoreproc>​im_ImportItemData_Ad]] gelöscht), prüfen wir zu Beginn, ob es Tabellen dieser Art gibt und löschen ggf. solche Objekte.\\ (iii) Hier die Spalten-Definition der erstellten Tabelle (nähere Erläuterung s. [[dstoreproc>​im_ImportItemData_Ad]]) :
 +  * ItemID integer NOT NULL
 +  * VariantID integer NOT NULL
 +  * CharacOrPseudoCharacID smallint NOT NULL
 +  * Value varchar(1000) NULL
 +  * Details text NULL in row(2500)
 +
 +
 +3.) Weil der Import von Daten durch den "​interfaceuser"​ erfolgen sollte, vergeben wir "​select"​- und "​insert"​-Rechte auf die erstellte Tabelle für diesen speziellen Benutzer.\\ ​
 +|HTTP-Method|POST |
 +|HTTP-Auth|Optional |
 +|Tags|{{tag>​[im Delete Interface Tables Ad]}}|
 +|Engine-Kategorie|item management |
 +|Engine-Typ|Daten-Änderung |
 +|Letzte Aktualisierung|7.0.7 (2015-01-29)|
 +
 +==== Parameter ====
 +
 +^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:​engine_parameterconventions|Parameter-Konventionen engine/<​Prozedur-Name>​]])) ^SQL-Datentyp((siehe [[:​webservice:​engine_datatypes|Datentypen im Bereich "​engine"​]])) ^ab Version ^
 +|InterfacesForBinaries|0 |Welche Schnittstellen-Tabellen sind zu leeren ?\\ * "​0"​ : NICHT die für "​Binaries"​\\ * "​1"​ : AUCH die für "​Binaries"​\\ * "​2"​ : NUR die für "​Binaries"​\\ * "​3"​ : NUR die für "​Binaries"​ zu Artikeln\\ * "​4"​ : NUR die für "​Binaries"​ zu Artikel-Eigenschaften\\ |tinyint|3.5.0|
 +|CreateImportTable|0 |Wird nur beachtet, wenn "​InterfacesForBinaries = 0" ist ! "​1"​ angeben, um eine spezielle Import-Tabelle erstellen zu lassen (Name der Tabelle wird als Ergebnismenge geliefert) - s. Beschreibung !\\ |bit|7.0.3|
 +==== Rückgabe ====
 +
 +=== wenn CreateImportTable = 1 und InterfacesForBinaries = 0 ===
 +
 +^Spaltenname ​ ^Beschreibung ^SQL-Datentyp((siehe [[:​webservice:​engine_datatypes|Datentypen im Bereich "​engine"​]])) ^ab Version ^
 +|CreatedTableName|Name der erzeugten Tabelle inkl. Datenbank- und Owner-Information falls nötig (wenn sie also nicht in der Datenbank, in der diese Prozedur hier gespeichert ist, existiert)\\ |varchar(100)|7.0.3 |
 +==== Output-Parameter ====
 +
 +Die Prozedur hat keine Output-Parameter.==== Mögliche Return-Codes ====
 +
 +^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber"​ und indirekt meint "von intern aufgerufenen Unterprozeduren"​)) ^
 +|-599|Lizenz ist ungültig oder abgelaufen|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|
 +|-565|Die "​Objekt-ID"​ der Prozedur konnte nicht ermittelt werden|nur indirekt|
 +|-562|Die Prozedur ist nicht in BatchJobs registriert|nur indirekt|
 +|-560|Prozedur konnte nicht gestartet 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|
 +==== XML-Schema ====
 +
 +Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://​resources.dstore.de/​xsd/​webservice_SmartGate/​Response/​EngineProcedure_v1_0.xsd|Response/​EngineProcedure_v1_0.xsd]] validiert.
 +==== Historie ====
 +
 +|7.0.7 |2015-01-29|Interne Änderung : Datentyp-Erweiterung des "​ReferenceKey"​ [für "​_mi_StartProcedure"​-Aufruf]\\ ​ |
 +|7.0.3 |2013-12-13|Neuer Parameter "​CreateImportTable"​\\ ​ |
 +|5.0.0 |2004-12-21|1. Umstellung auf "​_mi_TryToPrepareBatchJob",​ daher konnte insbesondere die erst im letzten update eingeführte Transaktion [um die einzelnen "​DELETE"​-statements herum] wieder herausgenommen werden\\ 2. Neue mögliche Werte für "​InterfacesForBinaries"​\\ ​ |
 +|4.0.11 |2004-03-31|1. Aufruf der Prozeduren "​_mi_StartProcedure"​ und "​_mi_FinishProcedure"​\\ 2. "set transaction isolation level 1" und "set rowcount 0" zu Beginn\\ 3. Fehler in der Doku\\ 4. Es gab keine Fehlerbehandlung und keine Transaktion !\\  |
 +|3.5.4 |2001-03-11|\\ ​ |
 +|3.5.0 |2000-11-23|Erstmalig 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:
 +  * [[http://​playground.dstore.de/​index.php?​proc=im_DeleteInterfaceTables_Ad|im_DeleteInterfaceTables_Ad im Engine Playground öffnen]]
 +== cURL ==
 +Unformatierte Ausgabe:
 +<code bash>
 +curl -X POST  '​http://<​partner>​-<​project>​.dstore.de/​default/​engine/​im_DeleteInterfaceTables_Ad'</​code>​Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert,​ Bestandteil der libxml2, siehe http://​www.xmlsoft.org)) formatierte Ausgabe:
 +<code bash>
 +curl -X POST  '​http://<​partner>​-<​project>​.dstore.de/​default/​engine/​im_DeleteInterfaceTables_Ad'​ | xmllint --format -</​code>​== dStore_php ==
 +<code 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_DeleteInterfaceTables_Ad',​
 + array(
 + // '​InterfacesForBinaries'​ => 0,
 + // '​CreateImportTable'​ => 0
 + )
 +);
 +
 +$service->​execute($request);​
 +
 + $xml_result = $request->​getResponse()->​getBody()->​toSimpleXmlDocument();​
 + $ResultSet = $xml_result->​getRowsAsArray();​
 +
 +</​code>​
 +== engine/​execute ==
 +XML zur Ausführung mit der Methode [[:​webservice:​engine:​execute|engine/​execute]],​ z.B. per
 +  curl --header '​Content-Type:​ application/​xml'​ -X POST '​http://<​partner>​-<​kunde>​.dstore.de/​default/​engine/​execute'​ -d '<​xml-daten>'​
 +
 +<code xml>
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<​ListOfBatches>​
 + <Batch No="​0">​
 + <​Procedure Name="​im_DeleteInterfaceTables_Ad">​
 + <​Parameters>​
 + <!-- <​Parameter Name="​InterfacesForBinaries">​0</​Parameter>​ -->
 + <!-- <​Parameter Name="​CreateImportTable">​0</​Parameter>​ -->
 + </​Parameters>​
 + </​Procedure>​
 + </​Batch>​
 +</​ListOfBatches></​code>​
  
engine/procedures/im_deleteinterfacetables_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)