Was ist die Standardantwort, die von einem Web-Service-Integrationstyp zurückgegeben wird?
Frage
Was ist die Standardantwort, die von einer Web Service Integration zurückgegeben wird?
Antwort
Die Struktur der jeweiligen Antwort unterscheidet sich je nach ausgewählter Content-Type-Einstellung.
Formatierung nach Content-Type:
- application/json: JSON-Format, bei dem Informationen in { geschweiften Klammern } verschachtelt sind
- text/xml: Standard-XML-Formatierung. Bei der Anzeige in einem Tool wie Insomnia wird die Antwort leserlich dargestellt.
- application/soap-xml: Standard-XML-Formatierung wie oben, aber als SOAP-Nachricht statt als reiner Text gesendet
- text: XML-Antwort in unformatiertem Zustand.
%response%-Variable
Beispiel für eine als XML formatierte Antwort:
<Response Version="2.0" AppName="BarTender" AppVersion="2016 R8" AppVersionId="1100" AppVersionMajor="11" AppVersionMinor="0" AppVersionBuild="3146" AppInstancePid="29400" AppInstanceGuid="{303F1806-45E6-451E-9EA6-4C13CA93B299}">
<User>XXXXXX</User>
<Server>XXXXX</Server>
<Command Name="Print Document">
<Print ID="25" GUID="{59C2B1CF-B7E9-4572-B97B-66E4955993D7}" JobLastStatus="Queued" JobCompleted="true" JobName="resttest2.btw">
<JobStatus Completed="true">
<TimeJobStart>2018-07-05T10:38:38.183</TimeJobStart>
<TimeJobQueued>2018-07-05T10:38:38.261</TimeJobQueued>
<TimeJobSent>2018-07-05T10:38:38.261</TimeJobSent>
<LastStatus>Queued</LastStatus>
<Description>Print job now waiting to be sent to printer.</Description>
</JobStatus>
<Message Id="1750" Guid="{889B2413-F92A-4774-A0E8-E931F25F12EC}" Severity="Information" Category="Printing" Response="OK">
<Text>BarTender successfully sent the print job to the spooler.
Job Name: resttest2.btw
Document: resttest2.btw
Printer: Zebra 140XiIII Plus</Text>
</Message>
</Print>
</Command>
</Response>
Wer den Druckstatus überprüfen möchte, kann diesen Parameter im Print-Tag nutzen:
JobCompleted="true"
Oder alternativ:
JobStatus Completed="true"
Diese Tags bestätigen, dass der Druckauftrag erfolgreich an den Druck-Spooler gesendet wurde. Ab diesem Punkt liegt die Kontrolle nicht mehr bei der Integration. Die Nachricht weiter unten im Message-Tag gibt diese Information noch einmal in einer für Menschen verständlicheren Form aus. Falls Fehler auftreten, die verhindern, dass der Druckauftrag gespoolt wird, sieht die Antwort so aus:
%Response%
Es kann zu einem falsch-positiven (oder in diesem Fall falsch-negativen) Ergebnis kommen, wenn der Printer Maestro-Dienst nicht läuft:
<Print ID="29988" GUID="{22999A4F-40C7-4F30-BB44-BED5F93691C8}" JobLastStatus="Unknown" JobCompleted="false" JobName="Label_v1.btw">
<JobStatus Completed="false">
.....
<LastStatus>Unknown</LastStatus>
<Description>Print job status is unknown because the Printer Maestro Service that is running on the computer that the printer is attached to is not responding.</Description>
</JobStatus>
Obwohl der Auftrag erfolgreich abgeschlossen wurde, zeigt die Antwort an, dass dies nicht der Fall ist, weil keine Kommunikation mit dem Printer Maestro-Dienst möglich ist.
Werte für die Response-Variable
- JobLastStatus: fast immer "queued", um anzuzeigen, dass der Auftrag gespoolt wurde. Steht hier "unknown", kann die Integration nicht mit dem Maestro-Dienst kommunizieren.
- JobCompleted: ist "True", wenn der Auftrag gespoolt wurde. Kann "false" anzeigen, wenn der Maestro-Dienst nicht richtig kommuniziert.
- Job Status Completed: bestätigt, dass der Auftrag abgeschlossen ist
- Command Name: Name der Druckaktion in der Integration
Aktionsübersicht
Beispiel für eine erfolgreiche Antwort im JSON-Format:
{
"Version": "1.0",
"Status": "RanToCompletion",
"WaitStatus": "Completed",
"Validated": true,
"Messages": [
{
"ActionName": "Print Document",
"Level": 2,
"Text": "BarTender successfully sent the print job to the spooler.\r\n\r\nJob Name: resttest.btw\r\nDocument: resttest.btw\r\nPrinter: Datamax I-4208"
}
]
}
Beispiel für eine fehlerhafte Antwort:
{
"Version": "1.0",
"Status": "Faulted",
"WaitStatus": "Faulted",
"Validated": true,
"Messages": [
{
"ActionName": "Print Document",
"Level": 4,
"Text": "BarTender cannot use printer 'fakeprinter' to design, print, or export a template due to a printer setup problem."
}
]
}
Dieses Beispiel ist kurz, da in dieser Integration nur eine Aktion aufgeführt ist. Die hier aufgeführten Aktionen entsprechen den Aktionen, die in der Integration selbst definiert sind:
Werte für die Aktionsantwort
- Status: Mögliche Werte sind "RanToCompletion" und "Faulted"
- WaitStatus: Mögliche Werte sind "Completed" und "Faulted"
- ActionName: Name der Aktion, die druckt. Die Aktionsantwort gibt nur Informationen zu Druckaktionen zurück, auch wenn weitere Aktionen vorhanden sind.
- Text: Die Nachricht, die auch in den Integrationsmeldungen in der Admin-Konsole oder im Integration Builder angezeigt wird.
Siehe auch
Wie man Druckerdaten in eine Antwort für eine Web Service Integration einfügt
Web Service Integration meldet fälschlicherweise, dass der Druckauftrag nicht abgeschlossen wurde
Interne Hinweise
Obwohl es so aussieht, als ob sich die Informationen zum Druckauftrag auf den Spooler-Dienst stützen, stammen sie offenbar vom Printer Maestro-Dienst. Läuft der Maestro-Dienst nicht richtig, kann die Antwort ein falsch-positives (oder in diesem Fall falsch-negatives) Ergebnis liefern. Da es von der Entwicklung keine Bestätigung gibt, wie die beiden Dienste genau miteinander kommunizieren, können wir uns nur auf diese Symptome stützen.
Dies betrifft die XML-Variablen JobLastStatus und LastStatus sowie die JSON-Variablen Status und WaitStatus
Variable Antwort
Im Prinzip kann in dieser Antwort alles gesendet werden. Dieser Artikel behandelt nur die von BarTender generierte Antwort. Sie enthält nützliche Informationen zum Auftrag, solange die Integration nicht fehlschlägt. Danach wird einfach die Variable zurückgegeben.
Aktionsantworten
Es gibt keinerlei Dokumentation zu dieser Antwort. Sie wird nicht einmal in der Hilfe erwähnt. Offenbar wurde sie hinzugefügt, aber in JIRA gibt es keinen Hinweis darauf, wann genau das passiert ist.
Es ist unklar, worin der Unterschied zwischen Status und WaitStatus besteht. Sie scheinen die gleichen Informationen mit unterschiedlichen Begriffen zu melden.
Der Level-Parameter scheint anzugeben, an welcher Position in der Aktionsliste sich die aktuelle Aktion befindet, beginnend mit dem Abschnitt "Action" als Wert 1. Im obigen Bild ist Action Wert 1 und Print Document Wert 2. Dies könnte sich auf die Art und Weise beziehen, wie die Integration geschrieben ist, und scheint für den Kunden keinerlei Nutzen zu haben.