API REST por lotes

WebSphere Application Server Liberty incluye una interfaz de gestión RESTful para gestionar los trabajos por lotes.

Las operaciones básicas que están asociadas con un trabajo por lotes son enviar (iniciar), detener, reiniciar y ver estado. Puede realizar estas operaciones utilizando un cliente REST de HTTP cualquiera. Los datos que se envían como parte de una solicitud o se devuelven como parte de una respuesta tienen un formato JSON.

Los ejemplos siguientes muestran las funciones que puede realizar con la API REST.

Nota: Se crea una versión de la API REST por lotes para cada URL. Los URL sin número de versión se consideran la versión 1 de la API. Las direcciones web de la interfaz REST por lotes empiezan todas por la dirección web raíz: https://{host}:{puerto}/ibm/api/batch/{versión}/.
Recuerde: Las direcciones web de la interfaz REST por lotes empiezan todas por la dirección web raíz: https://{host}:{port}/ibm/api/batch.

API REST con un ID de usuario que sólo es emisor

Los resultados devueltos por los URL GET ("lectura") se filtrarán cuando al ID de usuario que invoca la API REST a través de HTTPS solo se le ha otorgado acceso al rol batchSubmitter. El emisor solo ve datos de instancia y ejecución que están asociados a instancias de trabajos que ha enviado el emisor. En cambio, los ID de usuario a los que se les ha otorgado los roles batchAdmin y batchMonitor son capaces de ver todos los datos de instancia y ejecución (devueltos por cualquier URL con cualquier conjunto de parámetros).

Un ID de usuario que tiene acceso solo al rol batchSubmitter genera resultados que se filtran por primera vez mediante los parámetros estándar, tal como se describe en la documentación del URL dado. Además, se realiza un filtrado adicional devolviendo solo datos de instancia y ejecución asociados a instancias de trabajo enviadas por el propio emisor.

Si desea más información, consulte Protección del entorno de proceso por lotes de Liberty.

Instancias de trabajo

GET /ibm/api/batch/jobinstances/
Este URI devuelve una lista de instancias de trabajo. Los parámetros de consulta incluyen:
  • page=[número página]: indica qué página (subconjunto de registros) se devuelve. El valor predeterminado es 0.
  • pageSize=[número de registros por página]: indica el número de registros por página. El valor predeterminado es 50.
Solicitudes de ejemplo:

https://localhost:9443/ibm/api/batch/jobinstances

https://localhost:9443/ibm/api/batch/jobinstances?page=13&pagesize=20

Respuesta de ejemplo:
[
    {
        "jobName":"test_sleepyBatchlet",
        "instanceId":7,
        "appName":"SimpleBatchJob#SimpleBatchJob.war",
        "submitter":"bob",
        "batchStatus":"COMPLETED",
        "jobXMLName":"test_sleepyBatchlet",
        "instanceState":"COMPLETED",
        "_links":[
            {
                "rel":"self",
                "href":"https://localhost:9443/ibm/api/batch/jobinstances/7"
            },
            {
                "rel":"job logs",
                "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs"
            }
        ]
    },
    {
        "jobName":"test_sleepyBatchlet",
        "instanceId":6,
        "appName":"SimpleBatchJob#SimpleBatchJob.war",
        "submitter":"bob",
        "batchStatus":"COMPLETED",
        "jobXMLName":"test_sleepyBatchlet",
        "instanceState":"COMPLETED",
        "_links":[
            {
                "rel":"self",
                "href":"https://localhost:9443/ibm/api/batch/jobinstances/6"
            },
            {
                "rel":"job logs",
                "href":"https://localhost:9443/ibm/api/batch/jobinstances/6/joblogs"
            }
        ]
    }
]
GET /ibm/api/batch/v2/jobinstances/
Este URI devuelve una lista de instancias de trabajo filtradas por los siguientes parámetros de consulta:
  • jobInstanceId=[instanceId]:[instanceId]: devuelve instancias de trabajo iguales a y entre el rango de instanceId.
  • jobInstanceId=>[instanceId]: devuelve instancias de trabajo igual a y mayor que el instanceId proporcionado.
  • jobInstanceId=<[instanceId]: devuelve instancias de trabajo igual o menor que el instanceId proporcionado.
  • jobinstanceId=[instanceId],[instanceId],[instanceId]: devuelve instancias de trabajo especificadas.
  • createTime=[aaaa-MM-dd]:[aaa-MM-dd]: devuelve instancias de trabajo entre el rango de fechas, estas inclusive.
  • createTime=[aaaa-MM-dd]: devuelve instancias de trabajo de la fecha proporcionada.
  • createTime=>3d: Devuelve instancias de trabajo creadas el mismo día o el día después de hace tres días. Por ejemplo, createTime es mayor que o igual al inicio del día de hace tres días.
  • createTime=<3d: Devuelve instancias de trabajo creadas el mismo día o el día antes desde hace tres días. Por ejemplo, createTime es menor que o igual al final del día de hace tres días.
  • instanceState=[state],[state]: devuelve instancias de trabajo con el estado proporcionado. Los estados de instancia válidos son SUBMITTED, JMS_QUEUED, JMS_CONSUMED, DISPATCHED, FAILED, STOPPED, COMPLETED y ABANDONED.
  • exitStatus=[string]: Devuelve instancias de trabajo que coinciden con la serie de estado de salida. Los criterios de serie pueden utilizar el operador de comodín (*) en cualquier lugar de la serie.
  • page=[número página]: indica qué página (subconjunto de registros) se devuelve. El valor predeterminado es 0.
  • pageSize=[número de registros por página]: indica el número de registros por página. El valor predeterminado es 50.
Nota: El rol del huso horario predeterminado del servidor en consultas que implican createTime

Cuando se envía un trabajo, createTime de la instancia de trabajo se almacena en el repositorio de trabajos y se normaliza a UTC. Al especifica fechas utilizando aaaa-MM-dd, como en createTime=[aaaa-MM-dd] o createTime=[aaaa-MM-dd]:[aaa-MM-dd]:, debe convertir la serie de fecha aaaa-MM-dd en un rango específico de horas UTC para que coincidan con los valores createTime en los registros de la tabla de instancia de trabajo. Para realizar esta función, la aplicación utiliza el huso horario predeterminado del servidor, que está manejando la solicitud REST. Es el huso horario de este servidor que se utiliza para convertir la serie de fecha en un rango de hora UTC con el que se comparará.

La tabla siguiente ilustra los datos devueltos por los parámetros de consulta jobInstanceId=10:13.
JOBINSTANCEID CREATETIME(* en el huso horario del servidor1) INSTANCESTATE EXITSTATUS
10 11-05-2015.01:10:00 COMPLETED SUCCESS
11 11-08-2014.02:20:00 COMPLETED SUCCESS
12 11-10-2015.03:30:00 FAILED FAILURE
13 11-11-2015:04:40:00 COMPLETED SUCCESS
*Puesto que el repositorio de trabajos almacena el createTime en un formato UTC, es importante comprender que los datos de la tabla muestran el createTime formateado utilizando el huso horario predeterminado de un servidor predeterminado, por ejemplo, "servidor1". Si hubiéramos construido una tabla similar a partir de la perspectiva de un segundo servidor con un huso horario predeterminado diferente (que el del "servidor1"), la tabla mostraría un conjunto distinto de valores de columna CREATETIME con una diferencia basada el huso horario correspondiente. Es el huso horario predeterminado del servidor que maneja la solicitud REST que se utiliza para correlacionar los parámetros de la serie de fecha aaaa-MM-dd con los valores de UTC createTime en la base de datos en los ejemplos siguientes.
Los siguientes mandatos devuelven el mismo resultado independientemente del servidor en el que se emitan:
  • jobInstanceId=11:13 devolvería los JOBINSTANCEID 11, 12 y 13.
  • jobInstanceId=>12 would return JOBINSTANCEID’s 12 and 13.
  • jobInstanceId=<12 devolvería los JOBINSTANCEID 11 y 12.
  • jobInstanceId=11,12 devolvería los JOBINSTANCEID 11 y 12.
  • instanceState=FAILED devolvería JOBINSTANCEID 12.
  • exitStatus=SUCCESS devolvería los JOBINSTANCEID 10, 11 y 13.
Los mandatos siguientes pueden devolver resultados diferentes en servidores con husos horarios predeterminados distintos. En estos ejemplos, se emiten en el "servidor1" (el mismo servidor que se utilizó para llenar la tabla anterior) en la fecha y hora: 11-11-2015:07:00:00 del huso horario predeterminado del servidor.
  • createTime=>2d devolvería los JOBINSTANCEID 12 y 13 (de hace 2 días, que era 11-09-2015, o posteriormente)
  • createTime=<2d devolvería los JOBINSTANCEID 10 y 11 (de hace 2 días, que era 11-09-2015, o anteriormente)
  • createTime=2015-11-08:2015-11-11 devolvería registros con los JOBINSTANCEID 11, 12 y 13.
  • createTime=2015-11-10 devolvería el registro con JOBINSTANCEID 12.
Solicitudes de ejemplo:
https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=20:50
https://localhost:9443/ibm/api/batch/jobinstances?createTime=>2d
https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=4,12,17&instanceState=COMPLETED
https://localhost:9443/ibm/api/batch/v2/jobinstances?jobInstanceId=4500:4600&createTime=2015-11-27&instanceState=COMPLETED&exitStatus=*JOB*&page=0&pageSize=1000
[16.0.0.4 and later]GET /ibm/api/batch/v3/jobinstances/
[16.0.0.4 and later]Además de todas las funciones del URI GET /ibm/api/batch/v2/job instances/, este URI devuelve una lista de instancias de trabajo filtradas por los siguientes parámetros de consulta:
  • lastUpdatedTime=[aaaa-MM-dd]: devuelve las instancias de trabajo que se han actualizado por última vez en la fecha proporcionada. Este valor de hora se actualiza durante las transiciones de estado de instancia. Por ejemplo, de SUBMITTED a DISPATCHED.
  • jobParameter.[paramName]=[paramValue]: devuelve instancias de trabajo con ejecuciones que tienen el par nombre:valor proporcionado como un parámetro de trabajo. Por ejemplo: jobParameter.jesJobName=myJobName. Los criterios de serie pueden utilizar el operador de comodín (*) en cualquier lugar de la serie.
  • sort=[string],[string]: especifica el parámetro o parámetros para clasificar los resultados. Mediante el uso del carácter - para prefijar el parámetro, se especifica que la clasificación se realizará en orden descendente. Por ejemplo,sort=submitter clasifica los resultados por emisor en orden ascendente. La especificación de sort=submitter,-lastUpdatedTime clasifica los resultados primero por emisor en orden ascendente y, a continuación, por lastUpdatedTime, en orden descendente.
[17.0.0.2 and later]GET /ibm/api/batch/v4/jobinstances/
[17.0.0.2 and later]Además de todas las funciones del URI GET /ibm/api/batch/v3/job instances/, este URI devuelve una lista de instancias de trabajo filtradas por los parámetros de consulta siguientes:
  • submitter=[user]: Devuelve todas las instancias de trabajo que fueron enviadas por el usuario especificado. Los criterios de serie pueden utilizar el operador de comodín (*) en cualquier lugar de la serie.
  • appName=[name]: Devuelve todas las instancias de trabajo con el nombre de aplicación especificado. Este puede ser el nombre de la aplicación simple, o el nombre completo del componente-módulo-aplicación. Por ejemplo, una búsqueda de MyApp o MyApp#MyApp.war devolverá una instancia de trabajo con un nombre de aplicación de MyApp y el nombre de módulo de MyApp.war. Los criterios de serie pueden utilizar el operador de comodín (*) en cualquier lugar de la serie.
  • jobName=[name]: Devuelve todas las instancias de trabajo con el nombre de trabajo especificado. Los criterios de serie pueden utilizar el operador de comodín (*) en cualquier lugar de la serie.
  • ignoreCase=true: De forma predeterminada, todo el texto que coincide distingue entre mayúsculas y minúsculas. La especificación de esta opción cambia todos los términos de búsqueda de texto para que no distingan entre mayúsculas y minúsculas.
  • lastUpdatedTime=[yyyy-MM-dd]:[yyyy-MM-dd]: Devuelve instancias de trabajo que se han actualizado en último lugar entre el rango de fechas, estas inclusive.
  • lastUpdatedTime=>3d: Devuelve instancias de trabajo que se han actualizado en último lugar o después del día que a contar desde hace tres días. Por ejemplo, el valor lastUpdatedTime es mayor o igual que el inicio del día de hace tres días.
  • lastUpdatedTime=<3d: Devuelve instancias de trabajo que se han actualizado por última vez o antes del día de hace tres días. Por ejemplo, el valor lastUpdatedTime es menor o igual que el final de hace tres días.
Nota: Los parámetros appName, exitStatus, jobName y submitter se pueden aplicar más de una vez. El resultado incluye todas las instancias de trabajo que coinciden y de los valores proporcionados. Por ejemplo, la especificación de jobinstances?submitter=Alice&submitter=Bob devuelve todas las instancias de trabajo enviados por Alice O Bob.
GET /ibm/api/batch/jobinstances/ID de instancia de trabajo
Este URI devuelve información detallada sobre la instancia de trabajo especificada como, por ejemplo, todas las ejecuciones que están asociadas con una instancia de trabajo especificada. Los resultados se devuelven en orden de más reciente a más antiguo. El resultado más reciente se muestra en el primer lugar de la lista.
Respuesta de ejemplo:
{
    "jobName":"test_sleepyBatchlet",
    "instanceId":7,
    "appName":"SimpleBatchJob#SimpleBatchJob.war",
    "submitter":"bob",
    "batchStatus":"COMPLETED",
    "jobXMLName":"test_sleepyBatchlet",
    "instanceState":"COMPLETED",
    "_links":[
        {
            "rel":"self",
            "href":"https://localhost:9443/ibm/api/batch/jobinstances/7"
        },
        {
            "rel":"job logs",
            "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/joblogs"
        },
        {
            "rel":"job execution",
            "href":"https://localhost:9443/ibm/api/batch/jobinstances/7/jobexecutions/7"
        }
    ]
}
POST /ibm/api/batch/jobinstances/
Utilice este URI para enviar (iniciar) un nuevo trabajo.
El siguiente ejemplo muestra el cuerpo de solicitud para enviar un trabajo empaquetado en un módulo WAR con formato JSON:
{ 
  "applicationName" : "SimpleBatchJob",
  "moduleName" : "SimpleBatchJob.war",
  "jobXMLName" : "test_batchlet_jsl",
  "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"}
}
El siguiente ejemplo muestra el cuerpo de solicitud para enviar un trabajo empaquetado en un módulo EJB con formato JSON:
{ 
  "applicationName" : "SimpleBatchJob",
  "moduleName" : "SimpleBatchJobEJB.jar",
  "componentName" : "MyEJB",
  "jobXMLName" : "test_batchlet_jsl",
  "jobParameters" : { "prop1" : "prop1value", "prop2" : "prop2value"}
}

applicationName identifica la aplicación por lotes. Es necesario a menos que se especifique moduleName, en cuyo caso, applicationName se obtiene de moduleName recortando el sufijo .war o .jar de moduleName. Por ejemplo, si no proporciona ningún applicationName y moduleName=SimpleBatchJob.war, applicationName toma el valor predeterminado SimpleBatchJob.

moduleName identifica el módulo dentro de la aplicación por lotes que contiene los artefactos de trabajo como, por ejemplo, el JSL. El trabajo se envía con el contexto de componente del módulo. moduleName es necesario a menos que se especifique applicationName, en cuyo caso moduleName se obtiene de applicationName añadiendo .war a applicationName. Por ejemplo, si proporciona applicationName=SimpleBatchJob y no proporciona ningún moduleName, moduleName toma el valor predeterminado SimpleBatchJob.war.

componentName identifica el componente EJB dentro del módulo EJB de la aplicación por lotes. Si se especifica, el trabajo se envía con el contexto de componente del EJB.
Nota: componentName sólo es necesario si el módulo es un módulo EJB. Cuando el módulo es un módulo WAR, componentName no es necesario.

Debe especificar un valor para jobXMLName. El valor de jobParameters es opcional.

Como alternativa a la utilización de la definición de trabajo JSL empaquetada en la aplicación por lotes en META-INF/batch-jobs, puede pasar el JSL en línea como parte de la solicitud de envío de trabajo REST. El JSL que se envía en línea altera siempre temporalmente cualquier JSL empaquetado con la aplicación por lotes. Puede utilizar dos métodos para enviar la parte en línea JSL como parte de la solicitud HTTP.
  1. Incluir el JSL como una propiedad JSON en la solicitud de envío de trabajo. Añada la propiedad jobXML al objeto JSON y añada todo el contenido del archivo JSL como una serie JSON como el valor de la propiedad.
    Nota: Debe colocar la serie XML correctamente entre caracteres de escape para que un analizador JSON la pueda analizar. La mayoría de las bibliotecas JSON realizan esta función automáticamente.
    El ejemplo siguiente ilustra el cuerpo de la solicitud para enviar un trabajo que utiliza una solicitud HTTP de una sola parte con el JSL que se pasa en línea mediante JSON.
    {
      "applicationName" : "SimpleBatchJob",
      "jobXMLName":"test_multiPartition_3Steps",
      "jobXML":"<?xml version=\"1.0\" encoding=\"UTF-8\" 
    standalone=\"yes\"?>
      \r\n<job id=\"test_multiPartition_3Steps\"
      xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\"r\n\tversion=\"1.0>
      \r\n\t<step id=\"step1"\" next=\"step2\">
      \r\n\t\t<batchlet ref=\"simpleBatchlet\"/>
      \r\n\t\t<partition>\r\n\t\t\t<plan  partitions=\"3\"/>
      \r\n\t\t</partition>\r\n\t</step>
      \r\n\t<step  id=\"step2\" next=\"step3\">
      \r\n\t\t<batchlet ref=\"simpleBatchlet\" />
      \r\n\t\t<partition>\r\n\t\t\t<plan  partitions=\"3\" />
      \r\n\t\t</partition>\r\n\t</step>\r\n\t<step  id=\"step3\">
      \r\n\t\t<batchlet ref=\"simpleBatchlet\" />\r\n\t\t<partition>
      \r\n\t\t\t<plan partitions=\"3\"/>
      \r\n\t\t</partition>\r\n\t</step>\r\n</job>"
    }
    Nota: El campo jobXML lo debe analizar un analizador JSON y clasificar en un objeto JSON válido. El campo jobXMLName es opcional, ya que la información de ID de trabajo en el JSL en línea se utiliza para el nombre de trabajo.
  2. Utilizar un formulario de varias partes HTTP. Cuando se utiliza un formato de varias partes de HTTP, los datos de envío del trabajo JSON y la definición del trabajo XML se deben enviar como dos partes separadas del cuerpo HTTP. La parte JSON del formulario de varias partes se debe denominar jobdata y la parte XML del formulario se debe denominar jsl. No es necesario clasificar el XML en una serie JSON cuando se utiliza un formulario de varias partes.
    El ejemplo siguiente ilustra la solicitud HTTP para enviar un trabajo que utiliza una solicitud HTTP de varias partes con el JSL que se pasa en línea mediante la parte del mensaje jsl.
    Content-Type: multipart/form-data;boundary=---------------------------49424d5f4a4241544348
    
    -----------------------------49424d5f4a4241544348
    Content-Disposition: form-data; name="jobdata"
    Content-Type: application/json; charset=UTF-8
    {  
      "applicationName" : "SimpleBatchJob", 
      "moduleName" : "SimpleBatchJob.war",  
      "jobXMLName" : "test_multiPartition"
    }
    
    -----------------------------49424d5f4a4241544348
    Content-Disposition: form-data; name="jsl" 
    Content-Type: application/xml; charset=UTF-8
    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <job id="test_multiPartition" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    version="1.0">
    <step id="step1">
    <batchlet ref="simpleBatchlet" />
    <partition>    
      <plan partitions="3" />    
      </partition>
    </step>
    </job>
    
    -----------------------------49424d5f4a4241544348--
        
    Nota: El campo jobXMLName es opcional, ya que la información de ID de trabajo en el JSL en línea se utiliza para el nombre de trabajo.
La respuesta de ejemplo siguiente muestra un envío de trabajo correcto:
{
    "jobName": "test_sleepyBatchlet",
    "instanceId": 10,
    "appName": "SimpleBatchJob#SimpleBatchJob.war",
    "submitter": "bob",
    "batchStatus": "STARTING",
    "jobXMLName": "test_sleepyBatchlet",
    "instanceState": "SUBMITTED",
    "_links": [
        {
            "rel": "self",
            "href": "https://localhost:9443/ibm/api/batch/jobinstances/10"
        },
        {
            "rel": "job logs",
            "href": "https://localhost:9443/ibm/api/batch/jobinstances/10/joblogs"
        }
    ]
}
PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=stop
Utilice este URI para detener la ejecución de trabajos más reciente asociada con esta instancia de trabajo si se está ejecutando. De lo contrario, la API devuelve un error.
PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=restart
Utilice este URI para reiniciar la ejecución de trabajos más reciente asociada con esta instancia de trabajo solo si tiene un estado STOPPED o FAILED. Si no hay ninguna ejecución de trabajo asociada a esta instancia, o la ejecución de trabajo más reciente está en un estado COMPLETED, la API devuelve un error.
PUT /ibm/api/batch/jobinstances/ID de instancia de trabajo?action=restart&reusePreviousParams=true
Utilice este URI para reiniciar la ejecución de trabajo más reciente y reutilizar los parámetros del trabajo de la ejecución anterior asociada con esta instancia de trabajo. El estado de la ejecución anterior debe ser STOPPED o FAILED. Si no hay ninguna ejecución de trabajo asociada a esta instancia, o la ejecución de trabajo más reciente está en el estado COMPLETED, la API devuelve un error. Tenga en cuenta que reusePreviousParams es un valor opcional. El valor predeterminado es reusePreviousParams=false.
Nota: Si reusePreviousParams=true, cualquier parámetro de trabajo que se envíe como parte de la solicitud de reinicio actual tiene prioridad sobre cualquier parámetro de trabajo anterior. Los parámetros actuales alteran temporalmente los parámetros anteriores con el mismo nombre de clave de parámetro de trabajo.
DELETE /ibm/api/batch/jobinstances/ID de instancia de trabajo
Este URI depura todas las entradas de base de datos y registros de trabajo asociados con esta instancia de trabajo. Esta API devuelve un error si la instancia de trabajo tiene ejecuciones de trabajos activas. Si se produce un error al suprimir los registros de trabajo, no se intentará suprimir los datos de la instancia de trabajo de la base de datos del almacén de trabajos. Los parámetros de consulta incluyen:
  • purgeJobStoreOnly=true|false: cuando purgeJobStoreOnly=true, no se intentará depurar los registros de trabajo asociados con esta instancia de trabajo. El valor predeterminado es purgeJobStoreOnly=false. Esta API devuelve un error si la instancia de trabajo tiene ejecuciones de trabajos activas.
    Nota: No se devuelve ningún mensaje de respuesta de depuración cuando se utiliza la API de depuración única.
DELETE /ibm/api/batch/v2/jobinstances/
Este URI depura todas las entradas de base de datos y todos los registros de trabajo asociados con las instancias de trabajo devueltas por los siguientes parámetros de filtro de depuración:
Nota: Se recomienda utilizar la interfaz GET para listar los trabajos y verificar que son los trabajos correctos para depurar, después de realizar la interfaz DELETE para depurarlos.
  • page=[número página]: indica qué página (subconjunto de registros) se devuelve. El valor predeterminado es 0.
  • pageSize=[número de registros por página]: indica el número de registros por página. El valor predeterminado es 50.
  • purgeJobStoreOnly=true|false: cuando purgeJobStoreOnly=true, no se intentará depurar los registros de trabajo asociados con esta instancia de trabajo. El valor predeterminado es purgeJobStoreOnly=false. Esta API devuelve un error si la instancia de trabajo tiene ejecuciones de trabajos activas.
  • jobInstanceId=[instanceId]:[instanceId]: depura instancias de trabajo igual a y entre el rango de instanceId.
  • jobInstanceId=>[instanceId]: depura instancias de trabajo igual a y mayor que el instanceId proporcionado.
  • jobInstanceId=<[instanceId]: depura instancias de trabajo igual a y menor que el instanceId proporcionado.
  • jobinstanceId=[instanceId],[instanceId],[instanceId]: depura instancias de trabajo especificadas.
  • createTime=[aaaa-MM-dd]:[aaa-MM-dd]: devuelve instancias de trabajo entre el rango de fechas, estas inclusive.
  • createTime=[aaaa-MM-dd]: devuelve instancias de trabajo de la fecha proporcionada.
  • createTime=>3d: Devuelve instancias de trabajo creadas el mismo día o el día después de hace tres días. Por ejemplo, createTime es mayor que o igual al inicio del día de hace tres días.
  • createTime=<3d: Devuelve instancias de trabajo creadas el mismo día o el día antes desde hace tres días. Por ejemplo, createTime es menor que o igual al final del día de hace tres días.
  • instanceState=[state],[state]: depura instancias de trabajo con el estado proporcionado. Los estados de instancia válidos son SUBMITTED, JMS_QUEUED, JMS_CONSUMED, DISPATCHED, FAILED, STOPPED, COMPLETED y ABANDONED.
  • exitStatus=[string]: Devuelve instancias de trabajo que coinciden con la serie de estado de salida. Los criterios de salida pueden utilizar el operador comodín(*) en cualquiera de los extremos.
Nota: De forma predeterminada, a menos que se especifiquen los parámetros page y pageSize, se depuran como máximo 50 registros.
Nota: El rol del huso horario predeterminado del servidor en consultas que implican createTime

Cuando se envía un trabajo, createTime de la instancia de trabajo se almacena en el repositorio de trabajos y se normaliza a UTC. Al especificar fechas mediante aaaa-MM-dd, como en createTime=[aaaa-MM-dd] o createTime=[aaaa-MM-dd]:[aaa-MM-dd]:, debe convertir la serie de fecha aaaa-MM-dd en un rango específico de horas UTC para que coincidan con los valores de los registros de tabla de instancia de trabajo. Para ello, la aplicación utiliza el huso horario predeterminado del servidor que está manejando la solicitud REST. Es el huso horario de este servidor que se utiliza para convertir la serie de fecha en un rango de hora UTC con el que se comparará.

La tabla siguiente ilustra los datos devueltos por los parámetros de consulta jobInstanceId=10:13.
JOBINSTANCEID CREATETIME(* en el huso horario del servidor1) INSTANCESTATE EXITSTATUS
10 11-05-2015.01:10:00 COMPLETED SUCCESS
11 11-08-2014.02:20:00 COMPLETED SUCCESS
12 11-10-2015.03:30:00 FAILED FAILURE
13 11-11-2015:04:40:00 COMPLETED SUCCESS
*Puesto que el repositorio de trabajos almacena el createTime en un formato UTC, es importante comprender que los datos de la tabla muestran el createTime formateado utilizando el huso horario predeterminado de un servidor predeterminado, por ejemplo, "servidor1". Si hubiéramos construido una tabla similar a partir de la perspectiva de un segundo servidor con un huso horario predeterminado diferente (que el del "servidor1"), la tabla mostraría un conjunto distinto de valores de columna CREATETIME con una diferencia basada el huso horario correspondiente. Es el huso horario predeterminado del servidor que maneja la solicitud REST que se utiliza para correlacionar los parámetros de la serie de fecha aaaa-MM-dd con los valores de UTC createTime en la base de datos en los ejemplos siguientes.
Los siguientes mandatos devuelven el mismo resultado independientemente del servidor en el que se emitan:
  • jobInstanceId=11:13 devolvería los JOBINSTANCEID 11, 12 y 13.
  • jobInstanceId=>12 would return JOBINSTANCEID’s 12 and 13.
  • jobInstanceId=<12 devolvería los JOBINSTANCEID 11 y 12.
  • jobInstanceId=11,12 devolvería los JOBINSTANCEID 11 y 12.
  • instanceState=FAILED devolvería JOBINSTANCEID 12.
  • exitStatus=SUCCESS devolvería los JOBINSTANCEID 10, 11 y 13.
Los mandatos siguientes pueden devolver resultados diferentes en servidores con husos horarios predeterminados distintos. En estos ejemplos, se emiten en el "servidor1" (el mismo servidor que se utilizó para llenar la tabla anterior) en la fecha y hora: 11-11-2015:07:00:00 del huso horario predeterminado del servidor.
  • createTime=>2d devolvería el 12 y 13 de JOBINSTANCEID (de o de después de 2 días, que era 11-09-2015)
  • createTime=<2d devolvería los JOBINSTANCEID 10 y 11 (de hace 2 días, que era 11-09-2015, o anteriormente)
  • createTime=2015-11-08:2015-11-11 devolvería registros con los JOBINSTANCEID 11, 12 y 13.
  • createTime=2015-11-10 devolvería el registro con JOBINSTANCEID 12.
Respuesta de ejemplo:
[{"instanceId":394,"purgeStatus":"COMPLETED","message":"Depuración satisfactoria.","redirectUrl":""},
{"instanceId":395,"purgeStatus":"COMPLETED","message":"Depuración satisfactoria.","redirectUrl":""},
{"instanceId":396,"purgeStatus":"COMPLETED","message":"Depuración satisfactoria.","redirectUrl":""},
{"instanceId":397,"purgeStatus":"COMPLETED","message":"Depuración satisfactoria.","redirectUrl":""},
{"instanceId":398,"purgeStatus":"COMPLETED","message":"Depuración satisfactoria.","redirectUrl":""}]
Se pueden devolver los siguientes valores purgeStatus:
COMPLETED
Indica que la depuración del trabajo se ha completado satisfactoriamente.
FAILED
Indica que la depuración de trabajo ha fallado.
STILL_ACTIVE
Indica que la depuración del trabajo ha fallado porque aún estaba activo.
JOBLOGS_ONLY
Indica que la depuración de la base de datos ha fallado, pero que los registros del trabajo se han depurado satisfactoriamente.
NOT_LOCAL
Indica que la depuración del trabajo ha fallado porque el trabajo no es local.

Ejecuciones de trabajos

GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos
Este URI devuelve información detallada sobre una ejecución de trabajos especificada, e incluye enlaces a ejecuciones de pasos y registros de trabajo asociados.
Solicitud de ejemplo:

https://localhost:9443/ibm/api/batch/jobexecutions/9

Respuesta de ejemplo:
{
    "jobName":"test_sleepyBatchlet",
    "executionId":9,
    "instanceId":9,
    "batchStatus":"COMPLETED",
    "exitStatus":"COMPLETED",
    "createTime":"2015/05/07 16:09:41.025 -0400",
    "endTime":"2015/05/07 16:09:52.127 -0400",
    "lastUpdatedTime":"2015/05/07 16:09:52.127 -0400",
    "startTime":"2015/05/07 16:09:41.327 -0400",
    "jobParameters":{
    },
    "restUrl":"https://localhost:9443/ibm/api/batch",
    "serverId":"localhost/C:/ibm/RAD_workspaces/Liberty7/build.image/wlp/usr/server1",
    "logpath":"C:\\ibm\\Liberty\\wlp\\usr\\servers\\server1\\logs\\joblogs\\test_sleepyBatchlet\\2015-05-07\\instance.9\\execution.9\\",
    "stepExecutions":[
        {
            "stepExecutionId":9,
            "stepName":"step1",
            "batchStatus":"COMPLETED",
            "exitStatus":"SleepyBatchlet:i=10;stopRequested=false",
            "stepExecution":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions/step1"
        }
    ],
    "_links":[
        {
            "rel":"self",
            "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9"
        },
        {
            "rel":"job instance",
            "href":"https://localhost:9443/ibm/api/batch/jobinstances/9"
        },
        {
            "rel":"step executions",
            "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/stepexecutions"
        },
        {
            "rel":"job logs",
            "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9/joblogs"
        },
        {
            "rel":"stop url",
            "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9?action=stop"
        }
    ]
}
GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/jobinstance
Este URI devuelve información detallada sobre la instancia de trabajo relacionada con la ejecución de trabajo especificada.
GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/jobexecutions
Este URI devuelve información detallada sobre la ejecución o las ejecuciones de trabajo para una instancia de trabajo especificada. Esto incluye enlaces a ejecuciones de pasos y registros de trabajo asociados.
GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/jobexecutions/Número de secuencia de ejecución de trabajo
Este URI devuelve información detallada sobre la ejecución de trabajo especificada en relación al ID de instancia de trabajo especificada. Esto incluye enlaces a ejecuciones de pasos y registros de trabajo asociados.
Nota: El número de secuencia de ejecución de trabajo significa la ejecución de trabajos número 0, 1 y 2 en relación a la instancia de trabajo especificada.
PUT /ibm/api/batch/jobexecutions/ID de ejecución de trabajos?action=stop
Utilice este URI para detener la ejecución de trabajos en ejecución especificada. Los parámetros necesarios incluyen action = stop, restart.
PUT /ibm/api/batch/jobexecutions/ID de ejecución de trabajos?action=restart
Utilice este URI para reiniciar la ejecución de trabajos especificada. Los parámetros necesarios incluyen action = stop, restart.

Ejecuciones de paso

GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/stepexecutions
Este URI devuelve una matriz JSON de todos los detalles de ejecución de pasos para la ejecución de trabajos especificada. Si el trabajo contiene un paso particionado, la información de partición se devuelve listada dentro de cada paso.
Solicitud de ejemplo:

https://localhost:8020/ibm/api/batch/jobexecutions/40/stepexecutions

El ejemplo siguiente muestra una respuesta para un paso particionado.
[
   { 
      "stepExecutionId":47,
      "executionId":39,
      "instanceId":35,
      "stepName":"step1",
      "batchStatus":"COMPLETED",
      "startTime":"2015/03/30 11:10:08.652 -0400",
      "endTime":"2015/03/30 11:10:09.817 -0400",
      "exitStatus":"COMPLETED",
      "metrics":{ 
         "READ_COUNT":"0",
         "WRITE_COUNT":"0",
         "COMMIT_COUNT":"0",
         "ROLLBACK_COUNT":"0",
         "READ_SKIP_COUNT":"0",
         "PROCESS_SKIP_COUNT":"0",
         "FILTER_COUNT":"0",
         "WRITE_SKIP_COUNT":"0"
      },
      "partitions":[ 
         { 
           "partitionNumber":0,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:09.579 -0400",
           "endTime":"2015/03/30 11:10:09.706 -0400",
           "exitStatus":"step1",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         },
         { 
           "partitionNumber":1,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:09.257 -0400",
           "endTime":"2015/03/30 11:10:09.302 -0400",
           "exitStatus":"step1",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         },
         { 
           "partitionNumber":2,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:09.469 -0400",
           "endTime":"2015/03/30 11:10:09.548 -0400",
           "exitStatus":"step1",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         }
      ]
   },
   { 
      "stepExecutionId":51,
      "executionId":39,
      "instanceId":35,
      "stepName":"step2",
      "batchStatus":"COMPLETED",
      "startTime":"2015/03/30 11:10:09.915 -0400",
      "endTime":"2015/03/30 11:10:10.648 -0400",
      "exitStatus":"COMPLETED",
      "metrics":{ 
         "READ_COUNT":"0",
         "WRITE_COUNT":"0",
         "COMMIT_COUNT":"0",
         "ROLLBACK_COUNT":"0",
         "READ_SKIP_COUNT":"0",
         "PROCESS_SKIP_COUNT":"0",
         "FILTER_COUNT":"0",
         "WRITE_SKIP_COUNT":"0"
      },
      "partitions":[ 
         { 
           "partitionNumber":0,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:10.324 -0400",
           "endTime":"2015/03/30 11:10:10.417 -0400",
           "exitStatus":"step2",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         },
         { 
           "partitionNumber":1,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:10.260 -0400",
           "endTime":"2015/03/30 11:10:10.347 -0400",
           "exitStatus":"step2",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         },
         { 
           "partitionNumber":2,
           "batchStatus":"COMPLETED",
           "startTime":"2015/03/30 11:10:10.507 -0400",
           "endTime":"2015/03/30 11:10:10.557 -0400",
           "exitStatus":"step2",
           "metrics":{ 
               "READ_COUNT":"0",
               "WRITE_COUNT":"0",
               "COMMIT_COUNT":"0",
               "ROLLBACK_COUNT":"0",
               "READ_SKIP_COUNT":"0",
               "PROCESS_SKIP_COUNT":"0",
               "FILTER_COUNT":"0",
               "WRITE_SKIP_COUNT":"0"
           }
         },
         {
            "_links":[
            {
               "rel":"job execution",
               "href":"https://localhost:9443/ibm/api/batch/jobexecutions/9"
            },
            {
               "rel":"job instance",
               "href":"https://localhost:9443/ibm/api/batch/jobinstances/9"
            }
        ]
    }
] 
GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/stepexecutions/nombre de paso
Este URI devuelve una matriz JSON que contiene los detalles de ejecución del paso para la ejecución del paso y el nombre del paso especificados.
GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/jobexecutions/número de secuencia de ejecución de trabajos/stepexecutions/nombre de paso
Este URI devuelve una matriz JSON que contiene los detalles de ejecución del paso para la instancia de trabajo, la ejecución del trabajo y el nombre de paso especificados.
GET /ibm/api/batch/stepexecutions/ID de ejecución de pasos
Este URI devuelve una matriz JSON que contiene los detalles de ejecución del paso para la ejecución del paso especificado.

Registros de trabajo

GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/joblogs
Este URI devuelve una matriz JSON con enlaces REST a todos los componentes de registro de trabajo para la instancia de trabajo especificada.
GET /ibm/api/batch/jobexecutions/job execution id/joblogs
Este URI devuelve una matriz JSON con enlaces REST a todos los componentes de registro de trabajo para la ejecución de trabajos especificada.
Importante: El ejemplo siguiente muestra el formato de los enlaces REST.
Si la ejecución de trabajos tiene los siguientes componentes de registro de trabajo:
joblogs/instance.inst-id/execution.exec-id/part.1.log
joblogs/instance.inst-id/execution.exec-id/part.2.log
joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.0/part.1.log
joblogs/instance.inst-id/execution.exec-id/step.step-name/partition.1/part.1.log
los enlaces REST correspondientes son:
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.1.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=part.2.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.0/part.1.log
/ibm/api/batch/jobexecutionsexec-id/joblogs?part=step.step-name/partition.1/part.1.log
Los parámetros opcionales son:
type = text
Text devuelve todos los registros de trabajo como texto sin formato. Todos los componentes de registro de trabajo se agregan conjuntamente. Se insertan registros de cabecera y pie de página delimitadores de componentes en la corriente para delimitar los distintos componentes a medida que se agregan conjuntamente.
type = zip
Zip devuelve todos los registros de trabajo para la ejecución de trabajos o la instancia de trabajo especificada como un archivo comprimido. La estructura de directorios de los registros de trabajo se conserva en el archivo comprimido.
GET /ibm/api/batch/jobinstances/ID de instancia de trabajo/joblogs?type=text|zip
GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/joblogs?type=text|zip
El comportamiento de estos dos URI con el parámetro type especificado varía según el valor.
type = text
Text devuelve todos los registros de trabajo como texto sin formato. Todos los componentes de registro de trabajo se agregan conjuntamente. Se insertan registros de cabecera y pie de página delimitadores de componentes en la corriente para delimitar los distintos componentes a medida que se agregan conjuntamente.
type = zip

Zip devuelve todos los registros de trabajo para la ejecución de trabajos o la instancia de trabajo especificada como un archivo comprimido. La estructura de directorios de los registros de trabajo se conserva en el archivo comprimido.

GET /ibm/api/batch/jobexecutions/ID de ejecución de trabajos/joblogs?part=vía de acceso al componente&type=text|zip
Con el parámetro part especificado, este URI devuelve los componentes de registro de trabajo como texto sin formato (type=text) o en un archivo comprimido (type=zip). El valor predeterminado es type=text.

Códigos de retorno HTTP

A continuación, se muestran los códigos de retorno HTTP para la API REST.
  • HTTP 200 Correcto.
  • HTTP 201 Se creado satisfactoriamente un nuevo recurso.
  • HTTP 202 Se ha aceptado la solicitar, pero el proceso no se ha completado.
  • HTTP 400 Solicitud anómala con parámetros no válidos. Consulte el mensaje devuelto para obtener más detalles.
  • HTTP 401 No está autorizado para acceder a este recurso.
  • HTTP 403 La autenticación ha fallado.
  • HTTP 404 El recurso solicitado no se encuentra o no existe.
  • HTTP 409 La solicitud está en conflicto con el estado actual del recurso. Consulte el mensaje devuelto para obtener más detalles.
  • HTTP 500 Error de servidor interno.

Solicitudes STOP en un entorno de proceso por lotes de servidor distribuido

Las solicitudes de detención enviadas a la API REST por lotes deben enviarse directamente al ejecutor donde se está ejecutando el trabajo. Si se envía una solicitud de detención a un asignador o a un ejecutor donde no se está ejecutando el trabajo, la solicitud se redirige al ejecutor correcto mediante un mensaje de respuesta de redirección HTTP 302. El campo ubicación en la respuesta de redirección HTTP 302 indica el URL correcto que se debe utilizar para la solicitud de detención.

Solicitudes JOBLOGS en un entorno de proceso por lotes de servidor distribuido

Las solicitudes para Joblogs que se envían a la API REST de proceso por lotes se deben enviar directamente al ejecutor donde se está ejecutando el trabajo. Si se envía una solicitud de registros de trabajos a un asignador o a un ejecutor donde no se está ejecutando el trabajo, la solicitud se redirige al ejecutor correcto mediante un mensaje de respuesta de redirección HTTP 302. El campo ubicación en la respuesta de redirección HTTP 302 indica el URL correcto que se debe utilizar para la solicitud de registros de trabajo.
Nota: Las solicitudes para Joblogs que se envían a la API REST de proceso por lotes para toda una instancia completa de trabajo solo funcionan si todas las ejecuciones de trabajo para dicha instancia se ejecutaron en el mismo ejecutor. Si las ejecuciones se han ejecutado en distintos ejecutores, las solicitudes de registros de trabajo de la instancia fallarán. En este caso, debe captar los registros de trabajo de cada ejecución por separado.

Solicitudes de depuración en un entorno por lotes de servidor distribuido

Las solicitudes de depuración enviadas a la API REST por lotes deben enviarse directamente al ejecutor donde se está ejecutando el trabajo. Si se envía una solicitud de depuración a un asignador o a un ejecutor donde no se está ejecutando el trabajo, la solicitud se redirige al ejecutor correcto mediante un mensaje de respuesta de redirección HTTP 302. El campo ubicación de la respuesta de redirección HTTP 302 indica el URL correcto que se debe utilizar para la solicitud de depuración.
Nota: Las solicitudes de depuración enviadas a la API REST por lotes para una instancia de trabajo completa solo funcionan si todas las ejecuciones de trabajos para esa instancia se han ejecutado en el mismo punto ejecutor. Si las ejecuciones se han ejecutado en distintos ejecutores, las solicitudes de depuración para la instancia fallarán.

Icono que indica el tipo de tema Tema de referencia

Nombre de archivo: rwlp_batch_rest_api.html