pixiImportProcessXML
Verarbeitet ein importiertes Artikel- oder Auftrags-XML aus C_XMLLog sofort (Parsen, Prüfen, Übernahme in Haupttabellen), ohne auf den SQL-Agent-Importjob zu warten.
Stößt die Verarbeitung eines importierten XML, identifiziert über XMLLogKey, sofort an.
- Prüfung: Das XML muss in
C_XMLLogexistieren, sein Operationstyp (C_OperationTypes.OperationType) mussItemImportoderOrderImportsein und seinStatuseiner der WerteCOC,ERR,NEI,XER,XIModerXPA. Andernfalls wird eine Statuszeile mitReturnCode=ERROR APIgeliefert. - Artikel-XML (
ItemImport):- Ist der Application Lock
PixiItemImportbereits belegt (der Artikelimport-Agent-Job läuft), wird für dieses XML nur der Parse-SchrittPixi_C_ParseAndCheckXMLsFromItemImportausgeführt; der Aufruf endet mit einerERROR API-Zeile, dass das XML bereits in Verarbeitung ist und geparst wurde. - Andernfalls setzt der Aufruf den Lock selbst, führt Parsen/Prüfen und anschließend
Pixi_C_ApplyItemsToMainTablesfür dieses XML aus und gibt den Lock wieder frei.
- Ist der Application Lock
- Auftrags-XML (
OrderImport): gleiche Logik mit LockPixiOrderImport, Parse-SchrittPixi_C_ParseAndCheckXMLsFromOrderImportund Übernahme-SchrittPixi_C_ApplyOrdersToMainTables. - Zum Schluss wird eine Statuszeile mit
ReturnCode=OKgeliefert.
Alle aufgerufenen Prozeduren laufen mit dem Benutzernamen API.
Da die aufgerufenen Prozeduren eigene Zeilen zurückgeben, erhält der Aufrufer mehrere Ergebnismengen: die Success-Zeile des Parse-Schritts, ggf. Zeilen des Übernahme-Schritts und zuletzt die Statuszeile ReturnCode/ErrorMessage. Für das Ergebnis ist immer die letzte Ergebnismenge auszuwerten.
Hinweise
- Fehler beim Parsen/Übernehmen werden verschluckt: Parse- und Übernahme-Schritt laufen in einem inneren
TRY/CATCH, der nur den Application Lock freigibt. Schlägt einer fehl, liefert der Aufruf trotzdemReturnCode=OK. Das tatsächliche Ergebnis ist anschließend überC_XMLLog.Status/Errorzu prüfen. - Die Info-Meldung
XML with XMLLogKey {XMLLogKey} has been processed.wird mit Schweregrad 1 ausgelöst und kann alsSqlMessageerscheinen; sie ist kein Fehler. - Im Fall „bereits in Verarbeitung“ wurde das XML geparst, obwohl
ReturnCode=ERROR APIist. - Die Application Locks
PixiItemImport/PixiOrderImport(Owner Session) werden mit den SQL-Agent-Importjobs geteilt; solange der Aufruf den Lock hält, kann der Agent-Job nicht parallel verarbeiten. - Die aufgerufenen Prozeduren berücksichtigen die Einstellungen
C_ItemImportEnabled,C_ItemImport_ParseAndCheckData_Enabled,C_OrderImportEnabled,C_OrderImport_ParseAndCheckData_Enabled,C_OrderImport_ApplyToMainTables_Enabledsowie Einstellungen je Kanaltyp. Sind diese deaktiviert, tun die Schritte nichts, der Aufruf liefert aber trotzdemOK. - Die Parse-Schritte parsen nur XMLs des Kanaltyps
URLmit leerer SpalteError. XMLs der KanaltypenPlentyRESToderShipRushwerden nur auf StatusXIM(mitAttemptsToProcess= 0) zurückgesetzt, damit der Integration Service sie erneut parst. - Die Parse-Schritte führen auch globale Arbeiten aus (z. B.
pixi_C_UpdateXMLsAsParsed, Wechselkursimport bei Aufträgen), der Auftrags-Übernahme-Schritt ruftPixi_AmazonOrdersMarkOrdersauf. - Die Einstellung
C_ParseAndImportDataIntervalMinuteswird gelesen, aber nicht verwendet. Pixi_C_ApplyItemsToMainTablesliegt nicht vor; dessen genaues Verhalten und zurückgegebene Zeilen sind unbekannt.- Existenz- und Statusprüfungen verwenden
NOLOCK.
Parameter
| Parameter | Typ | Standardwert | Beschreibung |
|---|---|---|---|
XMLLogKey
Pflicht
|
int | – |
Schlüssel des importierten XML in Beispiel: |
Antwort
Result-Set 1 · Wenn das XML gültig ist und die Parse-Einstellungen des Imports aktiv sind (von der Parse-Prozedur geliefert)
Bestätigungszeile des Parse-/Prüfschritts (Pixi_C_ParseAndCheckXMLsFromItemImport bzw. Pixi_C_ParseAndCheckXMLsFromOrderImport).
| Spalte | Typ | Beschreibung |
|---|---|---|
Success
|
varchar(7) string |
Konstante |
Result-Set 2 · Wenn der Lock frei war und der Übernahme-Schritt Zeilen liefert (Aufträge: bei aktiven Übernahme-Einstellungen; Artikel: unbekannt)
Zeilen des Übernahme-Schritts. Pixi_C_ApplyOrdersToMainTables liefert eine Success-Zeile; die Ausgabe von Pixi_C_ApplyItemsToMainTables ist nicht bekannt.
| Spalte | Typ | Beschreibung |
|---|---|---|
Success
|
varchar(7) string |
Konstante |
Result-Set 3 · Immer, als letzte Ergebnismenge
Statuszeile mit dem Gesamtergebnis des Aufrufs.
| Spalte | Typ | Beschreibung |
|---|---|---|
ReturnCode
|
varchar(9) string |
|
ErrorMessage
Kann leer sein |
nvarchar(4000) string |
Bei Erfolg |
Beispielantwort
<SqlRowSet1>
<row>
<Success>Success</Success>
</row>
</SqlRowSet1>
Fehlermeldungen
| Status | Meldung | Ursache |
|---|---|---|
| ERROR API | XML with XMLLogKey {XMLLogKey} does not exist or has not the right status or type of XML. Only XMLs in Status COC, ERR, NEI, XER, XIM or XPA and Item / Order XMLs can be (re-)processed. - pipiImportProcessXML | Das XML existiert nicht, ist kein `ItemImport`-/`OrderImport`-XML oder hat keinen zulässigen Status. Schlüssel und Status in `C_XMLLog` prüfen. |
| ERROR API | XML with XMLLogKey {XMLLogKey} already in process by import. Has been parsed. - pipiImportProcessXML | Der Import-Agent-Job (oder ein anderer Aufruf) hält gerade den Lock `PixiItemImport` bzw. `PixiOrderImport`. Das XML wurde nur geparst; die Übernahme erfolgt durch den laufenden Import oder durch einen späteren erneuten Aufruf. |
| ERROR API | {error message} - {procedure name} | Jeder andere SQL-Fehler außerhalb des inneren Parse-/Übernahme-Blocks, z. B. ein Fehler der Parse-Prozedur im Zweig „bereits in Verarbeitung“ oder beim Freigeben des Locks. |
Beispiele
POST https://apigateway.descartes.com/tms/pixi/
Content-Type: text/xml; charset=utf-8
Authorization: Basic BASE64(USERNAME:PASSWORD)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiImportProcessXML>
<XMLLogKey>123456</XMLLogKey>
</ns1:pixiImportProcessXML>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
curl -X POST 'https://apigateway.descartes.com/tms/pixi/' \
--user 'USERNAME:PASSWORD' \
--header 'Content-Type: text/xml; charset=utf-8' \
--data-binary @- <<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://apigateway.descartes.com/tms/pixi/">
<SOAP-ENV:Body>
<ns1:pixiImportProcessXML>
<XMLLogKey>123456</XMLLogKey>
</ns1:pixiImportProcessXML>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML
<?php
$soapClient = new SoapClient(null, [
'login' => 'USERNAME',
'password' => 'PASSWORD',
'location' => 'https://apigateway.descartes.com/tms/pixi/',
'uri' => 'https://apigateway.descartes.com/tms/pixi/',
]);
$arguments = [
'XMLLogKey' => '123456',
];
$soapArguments = [];
foreach ($arguments as $name => $value) {
$soapArguments[] = new SoapVar($value, XSD_STRING, '', '', $name);
}
$response = $soapClient->__soapCall('pixiImportProcessXML', $soapArguments);
Verwendete Tabellen
- SQL-Objekt:
- dbo.pipiImportProcessXML