Webサービス統合タイプで返されるデフォルトのレスポンスは何ですか?
質問
Webサービス統合で返されるデフォルトのレスポンスは何ですか?
回答
各レスポンスの構造は、選択したContent-typeの設定によって異なります。
Content-typeのフォーマット:
- application/json: 情報が{ }でネストされたjson形式の文字列
- text/xml: 標準的なXML形式。Insomniaのようなビジュアルクライアントで送信すると、見やすく整形されます。
- application/soap-xml: 上記と同じく標準的なXML形式ですが、プレーンテキストではなくSOAPメッセージとして送信されます
- text: 整形されていないXMLレスポンス
%response% 変数
XMLで整形されたサンプルレスポンス:
<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>
印刷ステータスを確認したい場合は、printタグ内のこのパラメータが最適です:
JobCompleted="true"
または、次のようなものもあります:
JobStatus Completed="true"
これらのタグは、印刷ジョブが正常にスプーラーに送信されたことを示します。この時点で、統合の制御範囲を離れます。Messageタグ内のメッセージは、同じ情報をより分かりやすい形で伝えています。もし印刷ジョブがスプールされるのを妨げるエラーが発生した場合、レスポンスは次のようになります:
%Response%
Printer Maestroサービスが起動していない場合、誤検知(この場合は偽陰性)となることがあります:
<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>
ジョブ自体は正常に完了していても、Printer Maestroサービスと通信できないため、レスポンス上は完了していないと表示されます。
レスポンス変数の値
- JobLastStatus: ほとんどの場合「queued」となり、ジョブがスプールされたことを示します。「unknown」と表示される場合は、統合がMaestroサービスと通信できていません。
- JobCompleted: ジョブがスプールされた場合は「True」になります。Maestroサービスが正しく通信できていない場合はfalseになることがあります。
- Job Status Completed: ジョブが完了したことを確認します
- Command Name: 統合での印刷アクション名
アクション概要
JSONで整形された正常なレスポンス例:
{
"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"
}
]
}
エラーが発生した場合のレスポンス例:
{
"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."
}
]
}
このサンプルレスポンスは、統合内に1つのアクションしかないため短くなっています。ここで返されているアクションは、統合自体にリストされているアクションです:
アクションレスポンスの値
- Status: 値は「RanToCompletion」と「Faulted」
- WaitStatus: 値は「Completed」と「Faulted」
- ActionName: 印刷しているアクション名。アクションレスポンスは、他のアクションがあっても印刷アクションの情報のみを報告します。
- Text: 管理コンソールやIntegration Builderの統合メッセージでも確認できるメッセージ内容
関連情報
Webサービス統合のレスポンスにプリンターデータを含める方法
Webサービス統合のレスポンスで印刷ジョブが完了していないと誤って報告される
内部メモ
印刷ジョブ情報はスプーラーサービスに依存しているように見えますが、実際はPrinter Maestroサービスから情報を取得しているようです。Maestroサービスが正しく動作していない場合、レスポンスが誤検知(またはこの場合は偽陰性)となることがあります。開発側から両者がどのように連携しているかの明確な説明はありませんが、現状はこれらの症状で判断するしかありません。
これはXML変数のJobLastStatusやLastStatus、JSON変数のStatusやWaitStatusに影響します。
可変レスポンス
このレスポンスには、実際には何でも送信可能です。この記事ではBarTenderが生成するレスポンスのみを扱っています。統合が失敗するまでは、より有用なジョブ情報が含まれます。失敗すると、単に変数が返されます。
アクションレスポンス
このレスポンスについてのドキュメントはありません。ヘルプにも記載がありません。どうやら追加されたようですが、JIRAにもいつ追加されたかの記録はありません。
StatusとWaitStatusの違いは不明です。どちらも同じ情報を異なる言葉で報告しているようです。
Levelパラメータは、現在のアクションがアクションリストのどの位置にあるかを示しているようで、"Action"セクションが1から始まります。上記画像の場合、Actionが1、Print Documentが2です。これは統合の記述方法に関係している可能性がありますが、顧客には特に役立つものではなさそうです。