Ejecución del flujo de trabajo de ejemplo para procesar pedidos recuperados de servicios web REST

El flujo de trabajo RestfulWebServiceWF muestra cómo procesar pedidos recuperados de servicios web REST que simulan un sitio web para realizar pedidos de libros. El dispositivo de entrada de un servicio web REST, un paso CallRESTService y una notificación de servicio web REST intercambian datos mediante los servicios web. El flujo de trabajo también proporciona ejemplos de estos pasos: ConvertJSONToXML, ApplyXSLTransform, CreateJobsFromXML y DownloadFile.

Este flujo de trabajo utiliza estos objetos y archivos de ejemplo:

  • Flujo de trabajo: RestfulWebServiceWF
  • Dispositivo de entrada: RestfulWebServiceSample

    El dispositivo de entrada realiza una llamada GET para recuperar pedidos JSON de un servicio web REST de ejemplo en http://localhost:15080/restapi/1.0/sample/order.

  • Notificación: RestfulWebServiceSampleNotify

    La notificación realiza una llamada POST a un servicio web de ejemplo en http://localhost:15080/restapi/1.0/sample/completeJobTicket

  • Pedidos JSON

    Cada 30 segundos se recupera un pedido del servicio web de ejemplo.

    Contenido del pedido de ejemplo:

    {"Order": {"orderId": "ORDnúmero", "customername": "Ricoh"}}

    Cada pedido contiene un número generado al azar, por ejemplo: 1238875463.

  • Archivos de impresión: Brochure.pdf y Cover.pdf

    Estos archivos se descargan de forma local de http://localhost:15080/restapi/.

  • Archivos de hojas de estilo XSLT:

    • orderToOverrides.xslt

    • jobticketToOverrides.xslt

    Los archivos se encuentran en el directorio restsample:

    • /aiw/aiw1/testfiles/restsample (Linux)
    • C:\aiw\aiw1\testfiles\restsample (Windows)

  • Archivos PDF de notificación

    Para cada pedido completado, se genera un archivo PDF de notificación. Cada archivo se denomina ORDER-ORDnúmero, por ejemplo: ORDER-ORD1238875463.

  • El paso CallRESTService realiza una llamada GET para recuperar detalles del trabajo JSON de un servicio web REST de ejemplo en http://localhost:15080/restapi/1.0/sample/jobTicket.

    Nota:
  • Los servicios web de ejemplo están disponibles de forma local. Estos devuelven los datos de ejemplo en respuesta a peticiones específicas realizadas por el dispositivo de entrada, la notificación y el paso CallRESTService de ejemplo. Los servicios web no admiten otras solicitudes.

  • Los objetos y archivos de ejemplo, incluido el flujo de trabajo RestfulWebServiceWF, están instalados con la característica Web Services Enablement.

Para ejecutar el flujo de trabajo de muestra:

  1. Pulse la pestaña Principal.
  2. En el portlet Impresoras, pulse con el botón derecho del ratón la impresora de ejemplo y seleccione Habilitar.
  3. En el portlet Dispositivos de entrada, pulse con el botón derecho del ratón el dispositivo de entrada del servicio web REST RestfulWebServiceSample y seleccione Habilitar y conectar.

    Aparecerá un trabajo en la tabla de trabajos.

  4. Pulse con el botón derecho del ratón el dispositivo de entrada RestfulWebServiceSample y seleccione Inhabilitar.
  5. Pulse con el botón derecho del ratón de nuevo el dispositivo de entrada y seleccione Desconectar.

    Nota: El dispositivo de entrada de ejemplo sondea los pedidos cada 30 segundos y recupera un trabajo JSON. Si no inhabilita ni desconecta el dispositivo de entrada, aparecerá un nuevo trabajo en la tabla de trabajos cada 30 segundos.

    Cada vez que el dispositivo de entrada RestfulWebServiceSample recupera un trabajo JSON:

    • El trabajo se envía a través de la derivación principal del flujo de trabajo.

    • El paso SetJobPropsFromTextFile establece la propiedad Nombre de cliente en RicohSample y la propiedad Personalizado 1 en RicohCustom.

    • El paso ConvertJSONToXML convierte el trabajo a XML.

    • El paso ApplyXSLTransform utiliza la hoja de estilo XSLT orderToOverrides.xslt para convertir dos elementos XML en dos propiedades de trabajo RICOH ProcessDirector en un archivo de alteraciones temporales:

      Elemento XML Propiedad de trabajo
      orderId Job.Info.Attr3
      customername Job.CustomerName

      Contenido del archivo de alteraciones temporales de ejemplo:

      Job.Info.Attr3=ORD1238875463 Job.CustomerName=Ricoh

      El paso coloca el archivo de alteraciones temporales en el directorio de spool del trabajo. RICOH ProcessDirector utiliza los valores del archivo de alteraciones temporales para establecer los valores de las propiedades para el trabajo.

    • El paso AssignJobValues establece el valor de la propiedad Nombre de trabajo en ORDER-${Job.Info.Attr3}, por ejemplo: ORDER-ORD1238875463.

    • El paso CallRESTService realiza una llamada GET a uno de los servicios web de ejemplo que simulan el 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 información de detalles del trabajo JSON para el pedido a RICOH ProcessDirector.

      Contenido de la información de detalles del trabajo 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" }]}

    • El paso ConvertJSONToXML convierte la información de detalles del trabajo JSON a XML.

    • El paso CreateJobsFromXML utiliza la expresión XPath //JobTicket para analizar información de detalles del trabajo XML. El paso encuentra dos detalles del trabajo y crea dos trabajos hijo.

      Contenido de trabajos hijo de ejemplo:

      <?xml version="1.0" encoding="UTF-8"?><JobTicket><copies>4</copies><file>http://localhost:15080/restapi/Brochure.pdf</file><itemnumber>2112076335</itemnumber><media>Letter Plain</media><type>Brochure</type><title>RPDBestSeller</title></JobTicket><?xml version="1.0" encoding="UTF-8"?><JobTicket><copies>4</copies><file>http://localhost:15080/restapi/Cover.pdf</file><itemnumber>1418780325</itemnumber><media>Letter Preprinted</media><type>Cover</type><title>RPDBestSeller</title></JobTicket>

      El paso somete dos trabajos hijo al flujo de trabajo RestfulWebServiceWF.

      La regla del conector [2] Hijo determina si los trabajos son trabajos hijo buscando un punto decimal en el número de trabajo. El conector envía trabajos hijo a través de la derivación hijo del flujo de trabajo.

      El trabajo JSON original continúa por la derivación padre hasta el paso RunHotFolderApplication. Ese paso coloca el trabajo JSON en una carpeta activa:

      • /aiw/aiw1/testfiles/restsample/sending (Linux)

      • C:\aiw\aiw1\testfiles\restsample\sending (Windows)

      Uno de los servicios web de ejemplo que simulan el sitio web para realizar pedidos de libros sondea la carpeta activa para encontrar trabajos. El servicio web procesa cada trabajo JSON cuando recibe una solicitud de la notificación RestfulWebServiceSampleNotify. Para obtener más información, consulte el elemento de la lista del paso RetainCompletedJobs.

    • El paso ApplyXSLTransform2 utiliza la hoja de estilo XSLT jobticketToOverrides.xslt para convertir seis elementos XML para cada trabajo hijo en propiedades del trabajo RICOH ProcessDirector de un archivo de alteraciones temporales:

      Elemento XML Propiedad de trabajo
      file Job.Info.Attr2
      itemnumber Job.Info.Attr1
      type Job.Info.Attr4
      title Job.Info.Attr5
      copies Job.Copies
      media Job.Media

      Contenido del archivo de alteraciones temporales de ejemplo:

      Job.Info.Attr2=http://localhost:15080/restapi/Brochure.pdf Job.Info.Attr1=1182563839 Job.Info.Attr4=Brochure Job.Info.Attr5=RPDBestSeller Job.Copies=4 Job.Media=Letter Preprinted

    • El paso DownloadFile descarga los archivos Cover.pdf y Brochure.pdf de http://localhost:15080/restapi/ estableciendo el valor de la propiedad URL para descargar archivo en ${Job.Info.Attr2}.

    • El paso AssignJobValues2 establece los valores de tres propiedades de trabajo:

      • Impresora solicitada: Ejemplo

      • Corriente de datos de entrada: PDF

      • Nombre de trabajo: ${Job.Info.Attr5}-${Job.Info.Attr4}

      Los nombres de los trabajos hijo de los archivos Brochure.pdf y Cover.pdf ahora son RPDBestSeller-Brochure y RPDBestSeller-Cover.

    • Los pasos OptimizePDF, CountPages, CreatePageRanges y PrintJobs procesan e imprimen los trabajos hijo RPDBestSeller-Brochure y RPDBestSeller-Cover en la impresora de ejemplo.

    • Cuando cada trabajo de impresión hijo llega al paso RetainCompletedJobs, la notificación del servicio web RestfulWebServiceSampleNotify realiza una llamada POST a uno de los servicios web de ejemplo en http://localhost:15080/restapi/1.0/sample/completeJobTicket. El valor de la propiedad Parámetros de la solicitud es:

      jobTicket:${Job.Info.Attr1} jobId:${Job.ID}

      El servicio web espera hasta que todos los trabajos hijo del trabajo original JSON están en el estado de trabajo Retenido. A continuación, el servicio web crea un archivo PDF que contiene el número de trabajo y el número de elemento de cada detalle del trabajo del pedido. Por ejemplo:

      10000001.2 with item number 278955095 has been processed10000001.1 with item number 913895452 has been processed

      El servicio web coloca el archivo PDF en la carpeta activa de recuperación para el paso RunHotFolderApplication:

      • /aiw/aiw1/testfiles/restsample/retrieval (Linux)

      • C:\aiw\aiw1\testfiles\restsample\retrieval (Windows)

      El paso RunHotFolderApplication sondea la carpeta activa, encuentra el trabajo PDF y envía el trabajo al paso siguiente.

    • El paso AssignJobValues establece el valor de la propiedad Corriente de datos de entrada en PDF y envía el trabajo PDF al paso RetainCompletedJobs.

  6. En la tabla de trabajos, pulse con el botón derecho del ratón un trabajo ORDER-ORDnúmero y seleccione Ver.

    El visor muestra el archivo PDF. La información del archivo PDF confirma que los dos trabajos hijo se han procesado.