Caso de ejemplo de uso para procesar pedidos JSON con servicios web

En este caso de ejemplo, una imprenta quiere procesar pedidos recuperados de un sitio web para realizar pedidos de libros. Cada pedido consta de dos detalles del trabajo. Un detalle del trabajo proporciona información (incluida la ubicación del archivo de impresión) necesaria para imprimir el libro. El otro detalle del trabajo proporciona información necesaria para imprimir la portada del libro. El libro y la cubierta pasan por distintos procesos de producción, y la imprenta debe informar cuando todo el pedido se haya completado. El sitio web proporciona una interfaz de servicios web REST.

La característica Web Services Enablement incluye objetos de muestra que muestran cómo funciona este caso de ejemplo:

  • Flujo de trabajo RestfulWebServiceWF
  • Dispositivo de entrada del servicio web REST RestfulWebServiceSample
  • Pedidos y detalles del trabajo JSON
  • Expresión XPath
  • Hojas de estilo XSLT
  • Archivos de alteraciones temporales de RICOH ProcessDirector
  • Notificación del servicio web REST RestfulWebServiceSampleNotify

Para examinar el flujo de trabajo RestfulWebServiceWF, consulte el tema de la tarea relacionada sobre la ejecución de un flujo de trabajo que procesa los pedidos recuperados de servicios web REST.

Conocer los requisitos del sitio web para realizar pedidos de libros

La imprenta debe conocer los requisitos para comunicarse con los servicios web REST del sitio web para realizar pedidos de libros. RICOH ProcessDirector debe llamar a tres servicios web:

  • Una llamada a un servicio web recupera información JSON sobre cada pedido de libros. Si los pedidos están esperando en el sitio web, el servicio web devuelve un pedido JSON en respuesta a cada llamada GET. Si hay pedidos en espera, el servicio web no responde a la llamada.

    Contenido de un pedido JSON de ejemplo:

    {"Order": {"orderId": "ORD1238875463", "customername": "Ricoh"}}

  • Una llamada a otro servicio web recupera información JSON sobre los detalles del trabajo para el libro y la cubierta.

    Información de los detalles del trabajo JSON de ejemplo:

    {"JobTicket": [{ "itemnumber": "1182563839", "copies":"4","media" : "Letter Plain","file" : "http://localhost:15080/restapi/Brochure.pdf","type" : "Brochure","title" : "RPDBestSeller"}, { "itemnumber": "1934194376", "copies":"4","media" : "Letter Preprinted","file" : "http://localhost:15080/restapi/Cover.pdf","type" : "Cover" ,"title" : "RPDBestSeller" }]}

  • Una llamada a un tercer servicio web envía el número de elemento de cada detalle del trabajo completado de un pedido. Cuando se han enviado ambos números de elemento de un pedido, el servicio web crea un archivo PDF que indica los números de trabajo y los números de elemento. El servicio web coloca el archivo PDF en un directorio.

    Contenido de un archivo PDF de ejemplo:

    10000001.2 with item number 1182563839 has been processed10000001.1 with item number 1934194376 has been processed

    Nota:
  • Los tres servicios web de ejemplo simulan servicios web de un sitio web para realizar pedidos de libros, pero están disponibles de forma local como parte de la característica Web Services Enablement. Estos devuelven datos de ejemplo en respuesta a solicitudes específicas realizadas por el dispositivo de entrada RestfulWebServiceSample, el paso CallRESTService en el flujo de trabajo RestfulWebServiceWF y la notificación RestfulWebServiceSampleNotify.
  • Los servicios web de ejemplo generan pedidos de ejemplo con diferentes ID de pedido y conjuntos de detalles del trabajo de ejemplo con diferentes números de elementos. El resto de los datos de los ejemplos son los mismos.

Para realizar llamadas a los servicios web, el administrador de RICOH ProcessDirector debe conocer:

  • Los valores necesarios para autenticarse con el sitio web para realizar pedidos de libros.
  • Los valores necesarios para solicitar datos de cada servicio web.
  • El formato de los datos proporcionados en la respuesta de cada servicio web.

El administrador utiliza un plug-in de navegador para ejecutar pruebas manuales que solicitan respuestas de los servicios web REST. Entre estos plug-ins se encuentran RESTClient para Mozilla Firefox y Boomerang para Google Chrome.

Preparación para procesar JSON

El administrador revisa el contenido de los pedidos y los detalles del trabajo JSON devueltos por los servicios web REST e identifica información que RICOH ProcessDirector requiere. A continuación, el administrador evalúa las capacidades de RICOH ProcessDirector que llaman a los servicios web y procesan XML y JSON. El administrador decide sobre los objetos y grupos de pasos de RICOH ProcessDirector que procesan los pedidos y los detalles del trabajo y extraen la información necesaria. A continuación, el administrador define las expresiones XPath y las hojas de estilo XSLT requeridas por los objetos y los pasos.

  1. Para procesar pedidos y detalles del trabajo en RICOH ProcessDirector, el administrador identifica los objetos JSON que proporcionan la información necesaria. El administrador asigna los valores de esos objetos a propiedades de trabajo de RICOH ProcessDirector.
    • Para llamar al servicio web que recupera información JSON sobre los detalles del trabajo, el administrador debe proporcionar el ID de pedido. El administrador también desea rastrear el nombre del cliente en RICOH ProcessDirector.

      Dos miembros del objeto del pedido JSON proporcionan estos valores: orderId y customername.

      En esta tabla se muestran los dos miembros JSON y los nombres de las propiedades del trabajo de RICOH ProcessDirector que el administrador utiliza para extraer la información.

      Miembro JSON Nombre de base de datos de la propiedad de trabajo Nombre de interfaz de usuario de la propiedad de trabajo
      orderId Job.Info.Attr3 Personalizado 3
      customername Job.CustomerName Nombre de cliente

    • Para crear trabajos independientes para cada detalle del trabajo, el administrador debe utilizar el número de elemento. Para descargar e imprimir los archivos PDF de libros y cubiertas, el administrador debe utilizar el archivo, las copias y la información sobre el soporte contenidos en los detalles del trabajo. El administrador también rastrea el tipo de libro y el título en RICOH ProcessDirector.

      Seis miembros del objeto de detalles del trabajo JSON proporcionan estos valores: file, itemnumber, type, title, copies y media.

      En esta tabla se muestran estos seis miembros JSON y los nombres de las propiedades del trabajo RICOH ProcessDirector.

      Miembro JSON Nombre de base de datos de la propiedad de trabajo Nombre de interfaz de usuario de la propiedad de trabajo
      itemnumber Job.Info.Attr1 Personalizado 1
      file Job.Info.Attr2 Personalizado 2
      type Job.Info.Attr4 Personalizado 4
      title Job.Info.Attr5 Personalizado 5
      copies Job.Copies Copias de trabajo solicitadas
      media Job.Media Soporte

  2. Antes de diseñar el proceso de RICOH ProcessDirector, el administrador examina los objetos y la plantilla de pasos de RICOH ProcessDirector que llaman a servicios web REST:
    • Dispositivo de entrada del servicio web REST
    • Notificación del servicio web REST
    • Plantilla de pasos CallRESTService

    Cada uno de ellos puede hacer llamadas DELETE, GET, PATCH, POST, o PUT, y cada uno puede procesar JSON o XML.

    El dispositivo de entrada puede crear un trabajo a partir de cada respuesta o puede evaluar la respuesta para una expresión JSONPath o XPath. Si el dispositivo de entrada realiza una evaluación, se puede crear un trabajo cada vez que encuentra la expresión.

  3. El administrador también examina las plantillas de pasos de RICOH ProcessDirector que procesan XML:
    • Un paso basado en la plantilla de pasos ApplyXSLTransform puede convertir la entrada en un formato y la salida en otro. Por ejemplo, el paso puede convertir el archivo XML en esta salida:
      • Un archivo de texto que contiene el trabajo RICOH ProcessDirector o propiedades del documento.
      • Un archivo con XML en otro formato de entrada para el paso CreateJobsFromXML.
    • Un paso basado en la plantilla de pasos CreateJobsFromXML puede crear uno o varios trabajos XML evaluando el contenido de un archivo de entrada XML. El paso puede someter los trabajos como trabajos independientes o trabajos hijo a un flujo de trabajo especificado.

    Puesto que ApplyXSLTransform y CreateJobsFromXML no procesan JSON, un paso basado en la plantilla de pasos ConvertJSONToXML puede convertir JSON en XML para la entrada a esos pasos.

  4. El administrador decide sobre los componentes básicos del proceso RICOH ProcessDirector.
    • Para recuperar los pedidos JSON desde el sitio web para realizar pedidos de libros, el administrador elige un dispositivo de entrada del servicio web REST.

      Porque cada respuesta contiene un solo pedido, el administrador configura el dispositivo de entrada para crear un trabajo a partir de cada respuesta.

    • Para recuperar detalles del trabajo JSON para cada pedido, el administrador elige tres pasos:
      • Un paso ConvertJSONToXML convierte los pedidos JSON en XML para la entrada a un paso ApplyXSLTransform.
      • El paso ApplyXSLTransform convierte los valores del ID del pedido y del nombre del cliente de los pedidos XML en propiedades de trabajo RICOH ProcessDirector Personalizado 3 y Nombre de cliente.
      • Utilizando el valor de la propiedad Personalizado 3, un paso CallRESTService recupera los detalles del trabajo JSON.
    • Para crear un trabajo para cada detalle del trabajo, el administrador debe elegir dos pasos:
      • Un paso ConvertJSONToXML convierte los detalles del trabajo JSON en XML para la entrada a un paso CreateJobsFromXML.
      • El paso CreateJobsFromXML crea un trabajo independiente para cada detalle del trabajo mediante la evaluación de la respuesta utilizando una expresión XPath.
    • Para obtener información de los detalles del trabajo y utilizarla para descargar archivos de impresión PDF, el administrador debe elegir tres pasos:
      • Un paso ApplyXSLTransform convierte los valores de los detalles del trabajo XML en propiedades del trabajo RICOH ProcessDirector. Por ejemplo, la URL del archivo que se va a descargar se convierte al valor de la propiedad de trabajo Personalizado 2.
      • Utilizando el valor de la propiedad de trabajo Personalizado 2, un paso DownloadFile descarga los archivos de impresión PDF.
      • Un paso AssignJobValues establece la corriente de datos de entrada en PDF para indicar a los otros pasos del flujo de trabajo el tipo de archivo que están procesando.
    • Cuando se imprimen ambos trabajos PDF de un pedido, el administrador desea notificar al sitio web para realizar pedidos de libros que el pedido está listo para su envío. Puesto que el sitio web utiliza REST, el administrador debe elegir una notificación del servicio web REST.
  5. Para el paso CreateJobsFromXML, el administrador necesita una expresión XPath (XML Path Language) que identifica los detalles del trabajo. Para definir la expresión, el administrador examina en el archivo XML los detalles del trabajo.
  6. Para cada paso ApplyXSLTransform, el administrador necesita una hoja de estilo XSLT para convertir elementos XML en propiedades del trabajo. El administrador utiliza una herramienta XSLT (como Altova MapForce) para crear dos hojas de estilo XSLT:
    • Una hoja de estilo XSLT order-to-overrides-file convierte el ID del pedido y los elementos del nombre del cliente del pedido en propiedades del trabajo.
    • Una hoja de estilo XSLT job-ticket-to-overrides-file convierte el archivo, el número de elemento, el tipo, el título, las copias y los elementos de soporte de los detalles del trabajo en propiedades del trabajo.

    Cada paso ApplyXSLTransform genera las propiedades del trabajo en un archivo de texto. El valor de cada propiedad Archivo de salida especifica un archivo de alteraciones temporales en el directorio spool del trabajo.

    RICOH ProcessDirector utiliza los valores del archivo de alteraciones temporales para establecer los valores de las propiedades para el trabajo. Los valores de los pedidos se utilizan para recuperar detalles del trabajo. Los valores de los detalles del trabajo se utilizan para descargar y procesar archivos de impresión.

Configuración del flujo de trabajo

El administrador configura un flujo de trabajo con dos derivaciones.

  1. El administrador crea un flujo de trabajo con el nombre ProcessBookOrders y establece las propiedades del paso SetJobPropsFromTextFile.
  2. El administrador añade diez pasos al flujo de trabajo en este orden:
    • DetectInputDataStream

      Este paso establece la propiedad Corriente de datos de entrada en JSON.

    • ConvertJSONToXML

      Este paso utiliza los valores por omisión para el archivo de entrada JSON y el archivo de salida XML.

    • ApplyXSLTransform

      Este paso utiliza la hoja de estilo XSLT order-to-overrides-file para crear un archivo de texto que establece valores para las propiedades Personalizado 3 y Nombre de cliente. El paso genera el archivo de texto como un archivo de alteraciones temporales en el directorio de spool del trabajo. RICOH ProcessDirector utiliza el archivo de alteraciones temporales para establecer los valores de las propiedades Personalizado 3 y Nombre de cliente del trabajo.

    • AssignJobValues

      Este paso establece el valor de la propiedad Nombre de trabajo en ORDER-order ID.

    • CallRESTService

      Este paso realiza una llamada GET a otro servicio web del sitio web para realizar pedidos de libros. El paso especifica el ID del pedido como el valor de la propiedad Parámetros de la solicitud:

      orderId:${Job.Info.Attr3}

      El servicio web devuelve la información de los detalles del trabajo JSON.

    • ConvertJSONToXML

      Este paso utiliza los valores por omisión para el archivo de entrada JSON y el archivo de salida XML.

    • CreateJobsFromXML

      El administrador establece el valor de la expresión XPath en //JobTicket y el valor del flujo de trabajo para trabajos nuevos en ProcessBookOrders. Para que los nuevos trabajos continúen conectados al trabajo original del pedido, el administrador establece el valor de la propiedad Crear trabajos hijo en . Para especificar el ID del pedido como el nombre del trabajo, el administrador establece el valor de la propiedad Nombre para nuevo trabajo en ${Job.Info.Attr3}.

      Los trabajos XML que entran en el paso van al paso siguiente, mientras que los nuevos trabajos hijo se envían a otra derivación del flujo de trabajo.

    • RunHotFolderApplication

      El administrador añade este paso para comunicarse con el servicio web que crea archivos PDF y los coloca en una carpeta activa. En primer lugar, el servicio web sondea una carpeta activa para encontrar trabajos de pedidos. Una vez que el servicio web recibe dos solicitudes por pedido desde la notificación RestfulWebServiceSampleNotify, el servicio web coloca un archivo PDF en otra carpeta activa. El paso RunHotFolderApplication especifica la carpeta activa para trabajos de pedidos como el valor de la propiedad Carpeta de envío. El paso especifica la carpeta activa con los archivos PDF como el valor de la propiedad Carpeta de recuperación.

        Nota:
      • Este caso de ejemplo incluye un paso RunHotFolderApplication porque el flujo de trabajo RestfulWebServiceWF de ejemplo utiliza este paso para intercambiar datos con el servicio web de ejemplo. En lugar de devolver un archivo PDF cuando se completa un pedido, el servicio web podría realizar otra operación. Por ejemplo, el servicio web podría enviar un mensaje de correo electrónico para notificar al departamento de embalaje que el pedido está listo para su recogida.

    • AssignJobValues

      Este paso establece el valor de la propiedad Corriente de datos de entrada en PDF de modo que los archivos PDF creados por el servicio web se pueden ver en el flujo de trabajo.

    • RetainCompletedJobs
  3. El administrador conecta el paso RetainCompletedJobs con el paso RemoveJobs.
  4. El administrador crea una segunda derivación para procesar los trabajos hijo de los libros y las cubiertas.
    • El administrador establece una regla sobre el conector entre los pasos SetJobPropsFromTextFile y DetectInputDataStream:
      • Nombre de regla: Parent
      • Orden de ejecución: 1
      • Propiedad: Número de trabajo
      • Comparación: No similar a
      • Valor: *.*

      La regla envía los trabajos JSON que el dispositivo de entrada recupera al paso DetectInputDataStream.

    • El administrador añade un paso ApplyXSLTransform2 en la fase Recepción y lo conecta con el paso SetJobPropsFromTextFile.

      El paso utiliza la hoja de estilo XSLT job-ticket-to-overrides-file para crear un archivo de alteraciones temporales que establece valores para las propiedades Personalizado 2, Personalizado 1, Personalizado 4, Personalizado 5, Copias de trabajo solicitadas y Soporte. Personalizado 2, Personalizado 1, Personalizado 4 y Personalizado 5 son el archivo, el número de elemento, el tipo y el título, respectivamente.

    • El administrador establece una regla sobre el conector entre los pasos SetJobPropsFromTextFile y ApplyXSLTransform2:
      • Nombre de regla: Child
      • Orden de ejecución: 2
      • Propiedad: Número de trabajo
      • Comparación: Similar a
      • Valor: *.*

      La regla envía trabajos hijo que el paso CreateJobsFromXML crea al paso ApplyXSLTransform2.

    • Puesto que en este caso de ejemplo nos centramos en los servicios web, la parte sobre la impresión es sencilla. Un proceso de producción puede hacer pasar los libros y las cubiertas por diferentes pasos en diferentes flujos de trabajo o derivaciones para que lleguen a impresoras diferentes.
  5. El administrador añade seis pasos al flujo de trabajo en este orden:
    • DownloadFile

      Este paso descarga archivos PDF para el libro y la cubierta desde un sitio web. El paso establece el valor de la propiedad URL para descargar archivo en Personalizado 2, que contiene la información de descarga de archivo de los detalles del trabajo.

    • AssignJobValues

      Este paso establece el valor de tres propiedades de trabajo:

      • Impresora solicitada
      • Corriente de datos de entrada
      • Nombre de trabajo

      El valor de Nombre del trabajo es ${Job.Info.Attr5}-${Job.Info.Attr4}: el título del libro, un guion y el tipo de trabajo de impresión (del libro o la cubierta).

    • OptimizePDF
    • CountPages
    • CreatePageRanges
    • PrintJobs
        Nota:
      • Puesto que en este caso de ejemplo nos centramos en los servicios web, la parte sobre la impresión del flujo de trabajo sólo tiene cuatro pasos. Un proceso de producción puede hacer pasar los libros y las cubiertas por muchos más pasos en derivaciones independientes (o flujos de trabajo independientes) para que lleguen a impresoras diferentes.
  6. El administrador completa el flujo de trabajo conectando el paso PrintJobs con el paso RetainCompletedJobs.

En esta imagen se muestra el dispositivo de entrada, el flujo de trabajo y la notificación. La línea negra indica que el paso CreateJobsFromXML somete los trabajos hijo al flujo de trabajo ProcessBookOrders.

Configuración del dispositivo de entrada

En la pestaña General del dispositivo de entrada del servicio web REST, el administrador establece el valor de la propiedad del flujo de trabajo hijo en ProcessBookOrders. El dispositivo de entrada somete pedidos JSON recuperados del servicio web del sitio web para realizar pedidos de libros a ese flujo de trabajo. El administrador establece el intervalo de sondeo en 30 segundos para recuperar pedidos rápidamente cuando varios de ellos están esperando en el sitio web. Otras propiedades se definen para que coincidan con el entorno de la imprenta.

En la pestaña Solicitud, el administrador especifica los valores necesarios para recuperar pedidos JSON del servicio web REST. Puesto que cada respuesta contiene un pedido JSON, el administrador establece el valor de la propiedad Crear trabajos a partir de la respuesta en Siempre. La red de la imprenta no requiere un servidor proxy.

    Nota:
  • Para utilizar un servidor proxy, establezca la propiedad Utilizar el servidor proxy en . Las propiedades del servidor proxy se establecen en la pestaña Servidor proxy de la página Valores del sistema.

En la pestaña Autenticación, el administrador especifica los valores necesarios para autenticarse con el servicio web REST.

    Nota:
  • El dispositivo de entrada RestfulWebServiceSample proporcionado muestra cómo configurar un dispositivo de entrada del servicio web REST para este caso de ejemplo. El dispositivo de entrada llama a un servicio web que no requiere autenticación. Para obtener información acerca de la autenticación con un servicio web REST, consulte el tema de la tarea relacionada.

Configuración de la notificación

En la pestaña Solicitud de la notificación de un servicio web REST, el administrador especifica los valores que requiere el servicio web REST que recibe la notificación. La red de la imprenta no requiere un servidor proxy.

    Nota:
  • Para utilizar un servidor proxy, establezca la propiedad Utilizar el servidor proxy en .

En la pestaña Autenticación, el administrador especifica los valores necesarios para autenticarse con el servicio web REST.

    Nota:
  • La notificación RestfulWebServiceSampleNotify proporcionada muestra cómo configurar la notificación de un servicio web REST para este caso de ejemplo. La notificación llama a un servicio web que no requiere autenticación. Para obtener información acerca de la autenticación con un servicio web REST, consulte el tema de la tarea relacionada.

En la pestaña Evento, el administrador especifica la información del evento de la notificación:

  • Tipo de evento: Trabajo
  • Propiedad: Estado de trabajo actual
  • Acción: Cambia a
  • Valor: Retenido

En la pestaña Condiciones, el administrador especifica la información de las condiciones de la notificación:

  • Aplicar cualquiera de las condiciones siguientes o todas = Todo
  • Propiedad 1: Flujo de trabajo
  • Comparación 1: =
  • Valor 1: ProcessBookOrders
  • Propiedad 2: Número de trabajo
  • Comparación 2: Similar a
  • Valor 2: *.*

El resumen de la declaración de las condiciones es:

Job.JobType = 'RestfulWebServiceWF' AND Job.ID like '*.*'

Cuando todos los trabajos hijo de un pedido llegan al paso RetainCompletedJobs, la notificación llama al servicio web. El servicio web crea un archivo PDF que contiene el número de elemento de cada detalle del trabajo del pedido. El servicio web coloca el archivo en la carpeta activa supervisada por el paso RunHotFolderApplication: El archivo PDF aparece en la tabla de trabajos. Los empleados de la imprenta pueden ver el archivo PDF para confirmar que el libro y la cubierta del pedido hayan sido impresos.

Procesamiento de trabajos a través del flujo de trabajo

El flujo de trabajo RestfulWebServiceWF proporcionado con la característica Web Services Enablement es similar al flujo de trabajo ProcessBookOrders. Para ver cómo se procesan los trabajos a través del flujo de trabajo ProcessBookOrders, ejecute el flujo de trabajo RestfulWebServiceWF. Para obtener más información, consulte el tema de la tarea relacionada sobre la ejecución de un flujo de trabajo que procesa los pedidos recuperados de servicios web REST.