¿Cuál es la respuesta predeterminada que devuelve un tipo de integración de servicio web?
Pregunta
¿Cuál es la respuesta predeterminada que devuelve una integración de servicio web?
Respuesta
Para cada una de las respuestas, la estructura será diferente dependiendo del tipo de formato de contenido (Content-type) seleccionado.
Formato según Content-type:
- application/json: cadena en formato JSON con información anidada entre llaves { }
- text/xml: Formato estándar de XML. Al enviar esta respuesta, un cliente visual como Insomnia la mostrará de forma legible.
- application/soap-xml: Formato estándar de XML como el anterior, pero enviado como un mensaje SOAP en vez de texto plano.
- text: Respuesta XML sin formato.
Variable %response%
Ejemplo de respuesta formateada como 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>
Para quienes buscan verificar el estado de impresión, este parámetro en la etiqueta print puede ser la mejor opción:
JobCompleted="true"
O el siguiente:
JobStatus Completed="true"
Estas etiquetas confirman que el trabajo de impresión se envió correctamente al spooler de impresión. En este punto, ya no está bajo el control de la integración. El mensaje que aparece más abajo en la etiqueta Message informa lo mismo de una manera más comprensible. Si hay errores que impiden que el trabajo de impresión se envíe al spooler, la respuesta será:
%Response%
Puedes recibir un falso positivo (o en este caso, un falso negativo) si el servicio Printer Maestro no está en funcionamiento:
<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>
Aunque el trabajo se haya completado correctamente, la respuesta indica que no, simplemente porque no puede comunicarse con el servicio Printer Maestro.
Valores para la variable de respuesta
- JobLastStatus: casi siempre será "queued" para indicar que el trabajo ha sido enviado al spooler. Si aparece como unknown, la integración no puede comunicarse con el servicio Maestro.
- JobCompleted: será "True" si el trabajo ha sido enviado al spooler. Puede aparecer como false si el servicio Maestro no está funcionando correctamente.
- Job Status Completed: confirma que el trabajo ha finalizado
- Command Name: el nombre de la acción de impresión en la integración
Resumen de la acción
Ejemplo de respuesta exitosa en formato 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"
}
]
}
Ejemplo de respuesta con error:
{
"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."
}
]
}
Este ejemplo de respuesta es corto porque esta integración solo tiene una acción listada. Las acciones que responden aquí son las que están configuradas en la propia integración:
Valores para la respuesta de la acción
- Status: Los valores pueden ser "RanToCompletion" y "Faulted"
- WaitStatus: Los valores pueden ser "Completed" y "Faulted"
- ActionName: el nombre de la acción que está imprimiendo. La respuesta de la acción solo informa sobre acciones de impresión, aunque haya otras acciones presentes.
- Text: el mensaje que también puedes ver en los mensajes de integración en la Consola de Administración o en Integration Builder.
Ver también
Cómo incluir datos de la impresora en una respuesta para una integración de servicio web
Notas internas
Aunque la información del trabajo de impresión parece depender del servicio spooler, en realidad obtiene la información del servicio Printer Maestro. Si el servicio Maestro no está funcionando correctamente, la respuesta puede dar un falso positivo (o negativo en este caso). Como no hay confirmación exacta de cómo se comunican ambos servicios por parte de desarrollo, solo podemos guiarnos por estos síntomas.
Esto afecta a las variables XML JobLastStatus y LastStatus, así como a las variables JSON Status y WaitStatus
Respuesta variable
Cualquier cosa puede enviarse legítimamente en esta respuesta. Este artículo solo cubre la respuesta generada por BarTender. Proporciona información útil del trabajo hasta que la integración falla. Entonces simplemente devuelve la variable.
Respuestas de acción
No existe documentación sobre esta respuesta. Ni siquiera se menciona en la ayuda. Al parecer se añadió, pero en JIRA no hay confirmación de exactamente cuándo se agregó.
No está claro cuál es la diferencia entre Status y WaitStatus. Parecen informar lo mismo pero con palabras diferentes.
El parámetro Level parece indicar la posición que ocupa la acción actual en la lista de acciones, comenzando en la sección "Action" como valor 1. Así que en la imagen de arriba, Action es valor 1 y Print Document es valor 2. Esto podría estar relacionado con la forma en que está escrita la integración y parece no tener ninguna utilidad para el cliente.