Quelle est la réponse par défaut renvoyée par un type d’intégration de service web ?
Question
Quelle est la réponse par défaut renvoyée par une intégration de service Web ?
Réponse
Pour chacune des réponses, la structure sera différente selon le paramètre Content-type sélectionné.
Formatage selon le Content-type :
- application/json : chaîne de caractères au format JSON avec des informations imbriquées entre des { accolades }
- text/xml : formatage standard de type XML. Lors de l’envoi de cette réponse, un client visuel comme Insomnia la formatera pour la rendre plus lisible.
- application/soap-xml : formatage standard de type XML comme ci-dessus, mais envoyé sous forme de message SOAP au lieu de texte brut
- text : réponse XML non formatée.
Variable %response%
Exemple de réponse formatée en 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>
Pour ceux qui souhaitent vérifier le statut d’impression, ce paramètre dans la balise print peut être la meilleure option :
JobCompleted="true"
Ou bien :
JobStatus Completed="true"
Ces balises confirment que le travail d’impression a bien été envoyé au spouleur d’impression. À ce stade, il n’est plus sous le contrôle de l’intégration. Le message plus bas dans la balise Message rapporte la même information de façon plus lisible. Si des erreurs empêchent l’envoi du travail d’impression au spouleur, la réponse sera :
%Response%
Vous pouvez obtenir un faux positif (ou dans ce cas, un faux négatif) si le service Printer Maestro n’est pas en cours d’exécution :
<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>
Bien que le travail ait été terminé avec succès, la réponse indique le contraire simplement parce qu’il n’a pas pu communiquer avec le service Printer Maestro.
Valeurs pour la variable de réponse
- JobLastStatus : presque toujours "queued" pour indiquer que le travail a été spoulé. Si la valeur est unknown, l’intégration n’a pas pu communiquer avec le service Maestro.
- JobCompleted : sera "True" si le travail a été spoulé. Peut indiquer false si le service Maestro ne communique pas correctement.
- Job Status Completed : confirme que le travail est terminé
- Command Name : le nom de l’action d’impression dans l’intégration
Résumé de l’action
Exemple de réponse réussie au format 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"
}
]
}
Exemple de réponse en erreur :
{
"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."
}
]
}
Cet exemple de réponse est court car cette intégration ne comporte qu’une seule action. Les actions qui répondent ici sont celles listées dans l’intégration elle-même :
Valeurs pour la réponse d’action
- Status : Les valeurs possibles sont "RanToCompletion" et "Faulted"
- WaitStatus : Les valeurs possibles sont "Completed" et "Faulted"
- ActionName : le nom de l’action qui imprime. La réponse d’action ne rapporte que les informations sur les actions d’impression, même si d’autres actions sont présentes.
- Text : le message que vous pouvez également voir dans les messages d’intégration sur la console d’administration ou dans Integration Builder.
Voir aussi
Comment inclure les données d’imprimante dans une réponse pour une intégration de service Web
Notes internes
Bien que les informations sur le travail d’impression semblent dépendre du service de spouleur, il semble qu’elles proviennent en réalité du service Printer Maestro. Si le service Maestro ne fonctionne pas correctement, la réponse peut donner un faux positif (ou dans ce cas, un faux négatif). Comme il n’y a pas de confirmation exacte de la façon dont les deux communiquent selon les développeurs, nous devons nous contenter de ces symptômes.
Cela affecte les variables XML JobLastStatus et LastStatus ainsi que les variables JSON Status et WaitStatus
Réponse variable
Tout peut être envoyé dans cette réponse. Cet article ne traite que de la réponse générée par BarTender. Elle contient des informations utiles sur le travail tant que l’intégration ne rencontre pas d’échec. Ensuite, elle renvoie simplement la variable.
Réponses d’action
Il n’existe aucune documentation sur cette réponse. Elle n’est même pas mentionnée dans l’aide. Apparemment, cela a été ajouté mais JIRA ne précise pas exactement quand cela a été fait.
La différence entre Status et WaitStatus n’est pas claire. Ils semblent rapporter la même information mais avec des termes différents.
Le paramètre Level semble indiquer la position de l’action dans la liste des actions, en commençant à la section "Action" avec la valeur 1. Donc sur l’image ci-dessus, Action vaut 1 et Print Document vaut 2. Cela pourrait faire référence à la façon dont l’intégration est écrite et ne semble d’aucune utilité pour le client.