Trabalho com filas, tarefas, recursos e logs#

A partir da versão 1.27, todos os componentes da plataforma suportam o acesso a filas, tarefas, recursos e logs não apenas por meio de GUID, mas também por meio de seus nomes (Name).

Abaixo estão exemplos de chamadas para recursos, tarefas e logs do Orquestrador. Essas solicitações podem ser executadas conforme necessário a partir do código do robô Python.

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 do orquestrador
robot_guid = 'da8bc2f0-8065-4385-b867-405e66b8e151' #GUID do robô
headers = {
    'Authorization': 'Basic ' + base64.b64encode(robot_guid.encode('utf-8')).decode('utf-8')
}

#Adicionando uma nova tarefa na fila de tarefas '0cff3e77-78fc-405e-98c9-ef5076c0c883'
new_task = {
            'queue_guid': '0cff3e77-78fc-405e-98c9-ef5076c0c883',
            'name': 'Nova tarefa',
            'parameters': json.dumps({'query_id': '123', 'query_link': 'D:\CommonFolder\Packet123.zip', 'query_status': 'new', 'doc_type': 'PCT', 'doc_status': 'new'})
}
r = requests.post(host + '/api/task/create', data=new_task, headers=headers, verify=False)

#Para controle, exibimos o resultado da solicitação - GUID da tarefa criada
added_task = json.loads(r.text)
print('GUID da tarefa adicionada: ', added_task ['guid'])

#Obtendo a última tarefa na fila (sem 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)

#Dicionário de status das tarefas
STATUS_NEW   = 0;    #Nova tarefa
STATUS_IN_PROGRESS  = 1;   #Tarefa em andamento
STATUS_SUCCESS  = 2;    #Tarefa concluída com sucesso
STATUS_FAILED  = 3; #Tarefa falhou com Exceção de Aplicação
STATUS_FAILED_BUSINESS  = 4; #Tarefa falhou com Exceção de Negócio
STATUS_POSTPONED   = 5;   #Tarefa adiada até o horário especificado
STATUS_ABANDONED   = 6;  #Tarefa abandonada (não processada a tempo)

#Atualizando o status da tarefa obtida 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)

#Obtendo 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)

#Atualizando recurso
asset_update = {
    'guid': asset['guid'],
    'name': 'novo nome',  #Nome do recurso
    'text': 'novo texto',  #Texto, login (para o tipo Credenciais) ou calendário serializado
    'password': 'nova senha'  #Nova senha
}
r = requests.put(host + '/api/asset/update', data=asset_update, headers=headers, verify=False)
print('resultado de /api/asset/update/', r.text)

#Adicionando uma nova entrada no 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': 'Nova mensagem'
}
r = requests.post(host + '/api/log/create', data=new_log, headers=headers, verify=False)