Trabajo con colas, tareas, recursos y registros#

A partir de la versión 1.27, todos los componentes de la plataforma admiten el acceso a colas, tareas, recursos y registros no solo mediante GUID, sino también mediante sus nombres (Name).

A continuación se presentan ejemplos de llamadas a recursos, tareas y registros del Orquestador. Estas solicitudes se pueden realizar desde el código del robot en Python según sea necesario.

import base64
import json
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
host = 'http://192.168.1.111:4500' #host del orquestador
robot_guid = 'da8bc2f0-8065-4385-b867-405e66b8e151' #GUID del robot
headers = {
    'Authorization': 'Basic ' + base64.b64encode(robot_guid.encode('utf-8')).decode('utf-8')
}

#Agregamos una nueva tarea a la cola de tareas '0cff3e77-78fc-405e-98c9-ef5076c0c883'
new_task = {
            'queue_guid': '0cff3e77-78fc-405e-98c9-ef5076c0c883',
            'name': 'Nueva tarea',
            'parameters': json.dumps({'query_id': '123', 'query_link': 'D:\CommonFolder\Packet123.zip', 'query_status': 'new', 'doc_type': 'PPT', 'doc_status': 'new'})
}
r = requests.post(host + '/api/task/create', data=new_task, headers=headers, verify=False)

#Para control, mostramos el resultado de la solicitud - GUID de la tarea creada
added_task = json.loads(r.text)
print('GUID de la tarea agregada: ', added_task ['guid'])

#Obtenemos la última tarea en la cola (sin filtros)
r = requests.get(host + '/api/queue/lastTask/0cff3e77-78fc-405e-98c9-ef5076c0c883', headers=headers, verify=False)
print('resultado de api/queue/lastTask', r)
print('    ', r.text)
new_task = json.loads(r.text)

#Directorio de estados de tareas
STATUS_NEW   = 0;    #Nueva tarea
STATUS_IN_PROGRESS  = 1;   #Tarea en progreso
STATUS_SUCCESS  = 2;    #Tarea completada con éxito
STATUS_FAILED  = 3; #Tarea fallida con Exception de Aplicación
STATUS_FAILED_BUSINESS  = 4; #Tarea fallida con Exception de Negocio
STATUS_POSTPONED   = 5;   #Tarea pospuesta hasta el tiempo especificado
STATUS_ABANDONED   = 6;  #Tarea abandonada (no procesada a tiempo)

#Actualizamos el estado de la tarea obtenida anteriormente
task_update = {
    'guid': new_task['guid'],
    'status': 1
}
r = requests.put(host + '/api/task/update', data=task_update, headers=headers, verify=False)
print('resultado de /api/task/update', r.text)

#Obtenemos el recurso (asset)
r = requests.get(host + '/api/asset/read/533daa45-8c3e-42ff-a5ae-b5023715d929', headers=headers, verify=False)
print('resultado de /api/asset/read/', r.text)
asset = json.loads(r.text)

#Actualizamos el recurso
asset_update = {
    'guid': asset['guid'],
    'name': 'nuevo nombre',  #Nombre del recurso
    'text': 'nuevo texto',  #Texto, inicio de sesión (para el tipo Credentials) o calendario serializado
    'password': 'nueva contraseña'  #Nueva contraseña
}
r = requests.put(host + '/api/asset/update', data=asset_update, headers=headers, verify=False)
print('resultado de /api/asset/update/', r.text)

#Agregamos un nuevo registro en el log
new_log = {
    'robot_guid': '9be0687d-4e00-4742-a53f-c9b622d076db',
    'process_version_guid': '4443fc75-4b55-41a2-bb61-9132b6e55d6b',
    'job_guid': '55056968-cb1b-4919-ad7b-9370c6e81e55',
    'level': 'Info',   #Valores permitidos 'Info', 'Critical', 'Error', 'Warning', 'Debug'
    'message': 'Nuevo mensaje'
}
r = requests.post(host + '/api/log/create', data=new_log, headers=headers, verify=False)