2021.10.4
Data de lançamento: 7 de abril de 2022
Após alguns vai e vens na área de gatilhos de fila, estamos recaracterizando a maneira como os gatilhos de fila iniciam trabalhos e esperamos que seja a implementação definitiva e a melhor possível.
Declaração do problema: sempre que suas filas continham menos itens novos do que itens em progresso, nenhum trabalho era iniciado, apesar de existirem robôs ociosos. Isso acontecia porque o número de trabalhos em execução (processando ativamente itens de fila) excedia o número de trabalhos de destino (trabalhos necessários para processar os novos itens).
Correção inicial: o Orchestrator contabilizava tanto itens de fila novos quanto os em andamento ao calcular o número de trabalhos de destino, em vez de apenas os itens novos. Parecia algo bom. Mas não funcionava.
Correção nova e brilhante: o Orchestrator contabiliza novos itens ao calcular o número de trabalhos de destino, mas analisa o número de trabalhos pendentes ao decidir se inicia um novo trabalho ou não.
- Digamos que você tenha 2 itens novos em uma fila e existam 2 trabalhos pendentes => então nenhum novo trabalho é iniciado.
- Digamos que você tenha 2 itens novos e exista 1 trabalho pendente => então 1 novo trabalho é iniciado.
Isso garante que o Orchestrator vai iniciar trabalhos suficientes para processar todos os novos itens sem exagerar.
-
Sabemos que suas tabelas Ledger de banco de dados podem ficar bastante lotadas, exigindo assim uma limpeza frequente. Para isso, disponibilizamos um novo script de limpeza, permitindo que você exclua os dados da tabela Ledger a cada sete dias e aplique um tamanho de lote de 1.000 entradas. Descubra o novo script em nossa documentação:
- Instalação do Orchestrator independente
- Instalação do Automation Suite
-
Como um host, tentar finalizar uma janela de manutenção por meio da interface gráfica do Swagger pode falhar. Isso acontece porque a interface gráfica do Swagger usa cookies para a autenticação, que são perdidos ao fechar o navegador.
Para finalizar o modo de manutenção por meio da API, use uma das seguintes soluções alternativas:
- Não feche o navegador e faça a solicitação POST para
/api/Maintenance/End
a partir da interface gráfica do Swagger. -
Use um aplicativo de teste de API (por exemplo, o Postman) para:
-
recuperar um token de acesso substituindo suas credenciais no endpoint
/api.Account/Authenticate
e, em seguida -
faça uma solicitação POST para o endpoint
/api/Maintenance/End
usando o cabeçalhoAuthorization: Bearer {access_token}
.
-
-
Execute o seguinte script do PowerShell:
- Não feche o navegador e faça a solicitação POST para
$orchestratorUrl="https://localhost:6234"
$hostTenant="host"
$hostUser="admin"
$hostPassword=""
$tenantId="" #number
# Authenticate
$body=@{
"tenancyName"="$hostTenant";
"usernameOrEmailAddress"="$hostUser";
"password"="$hostPassword"
}
$response = Invoke-WebRequest -Uri "$orchestratorUrl/api/account/authenticate" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
$token = "Bearer " + ($response | ConvertFrom-Json).result
# End maintenance mode
$headers=@{
"Authorization"="$token"
}
$res = Invoke-WebRequest -Uri "$orchestratorUrl/api/maintenance/end?tenantId=$tenantId" -Headers $headers -Method Post -ContentType "application/json" -ErrorAction Stop
if ($res -and ($res.StatusCode -eq 200)) {
Write-Host "Maintenance mode ended successfully for tenant $tenantId"
}
$orchestratorUrl="https://localhost:6234"
$hostTenant="host"
$hostUser="admin"
$hostPassword=""
$tenantId="" #number
# Authenticate
$body=@{
"tenancyName"="$hostTenant";
"usernameOrEmailAddress"="$hostUser";
"password"="$hostPassword"
}
$response = Invoke-WebRequest -Uri "$orchestratorUrl/api/account/authenticate" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
$token = "Bearer " + ($response | ConvertFrom-Json).result
# End maintenance mode
$headers=@{
"Authorization"="$token"
}
$res = Invoke-WebRequest -Uri "$orchestratorUrl/api/maintenance/end?tenantId=$tenantId" -Headers $headers -Method Post -ContentType "application/json" -ErrorAction Stop
if ($res -and ($res.StatusCode -eq 200)) {
Write-Host "Maintenance mode ended successfully for tenant $tenantId"
}
-
Um problema foi corrigido que permitia que um invasor com acesso privilegiado a um robô recuperasse a LicenseKey (MachineKey) de outros robôs dentro do mesmo tenant, usando força bruta com chamadas de API para o Orchestrator. Teoricamente, isso permitiria que o invasor acessasse recursos restritos apenas àquele robô.
Leia os conselhos de segurança para UiPath — Captura de Conta de Robô.
- Ocasionalmente, as execuções de trabalho para fluxos de trabalho de longa execução ficavam travadas em um estado Em execução sem transitar para um estado Suspenso. Após encerrar esses trabalhos, os trabalhos mudavam e travavam em um estado Encerrando. O problema subjacente foi corrigido e agora trabalhos de longa duração transitam para os diferentes estados conforme o esperado e são executados sem problemas.
- Cometemos um erro de digitação na janela Atribuir funções a uma conta de robô. Em vez de dizer Pesquisar uma conta de robô, o campo dizia Pesquisar uma conta de robô. O nome do campo agora está escrito corretamente.
- Os nomes de pacotes carregados manualmente não eram exibidos nos detalhes da auditoria. Esse problema afetava tanto os pacotes carregados individualmente quanto os carregados em massa. Agora, os nomes de todos os pacotes carregados são registrados com sucesso nos detalhes da auditoria.
- Os usuários que não tinham um Sobrenome especificado no Active Directory não conseguiam entrar.