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.
Los ejemplos utilizan la biblioteca requests. Antes de ejecutarlos, sustituya la dirección del servidor y todos los GUID por valores de su instalación. Los GUID del Robot, de la Versión del proceso y del Trabajo en la entrada del registro deben corresponder al mismo Trabajo. Utilice un certificado de servidor confiable para HTTPS.
import base64
import json
import requests
host = 'https://orchestrator.example.com' # Replace with your Orchestrator URL
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': r'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)
#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)
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)
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)
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)
print('resultado de /api/asset/update/', r.text)
#Agregamos un nuevo registro en el log
new_log = {
'robot_guid': robot_guid,
'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)