CONTEÚDO

  1. Agendamento Ahgora


Desenvolvimento da rotina 'Agendamento Ahgora' conforme documentação do PO UI para uso do Datasul: https://po-ui.io/documentation/po-page-job-scheduler


O aplicativo com essa atualização está disponível no link abaixo:

https://code.engpro.totvs.com.br/totvs-recursos-humanos/calc-ahgora/releases/tag/vGPEM929-17.1.4


Ao acessar a tela de integração com a Ahgora, será mostrado um novo menu chamado 'Agendamento Ahgora'


Ao clicar no menu, a interface do po-page-job-sheduler dispara uma requisição.

Nessa requisição apenas retorne vazio, para que seja renderizado a tela dos processos.

O endpoint criado: /api/rh/ahgora/v1/agendamento 


Requisição 

Exemplo no protheus.

A primeira requisição será essa: 

GET: /api/rh/ahgora/v1/agendamento/processes

Veja que a interface adicionou o processes após o 'agendamento'.

O retorno pode ser vazio.

Exemplo de teste no protheus:



Tela aberta


Ao clicar no lookup do processo é disparado novamente o GET, agora com filtro processes, page, pageSize e o search: 

Exemplo protheus:

Exemplo do response:


A chamada no datasul seguirá dessa forma. GET: api/rh/ahgora/v1/agendamento/processes?page=1&pageSize=10&search=


No retorno você deverá passar o ID e a descrição:

Obs: Se atentar para a paginação com tamanho 10.

{
  "items": [
    {
      "processID": "proc1",
      "description": "Processo 1"
    },
    {
      "processID": "proc2",
      "description": "Processo 2"
    },
    {
      "processID": "proc3",
      "description": "Processo 3"
    },
    {
      "processID": "proc4",
      "description": "Processo 4"
    },
    {
      "processID": "proc5",
      "description": "Processo 5"
    },
    {
      "processID": "proc6",
      "description": "Processo 6"
    },
    {
      "processID": "proc7",
      "description": "Processo 7"
    },
    {
      "processID": "proc8",
      "description": "Processo 8"
    },
    {
      "processID": "proc9",
      "description": "Processo 9"
    },
    {
      "processID": "proc10",
      "description": "Processo 10"
    }
  ],
  "hasNext": true
}


Tela com os processos carregados.

Caso pesquise o processo, será disparado outro GET passando a pesquisa no &search=


Ao selecionar um processo será disparado um novo GET passando o ID para que seja possível retornar as configurações.

Exemplo:

Selecionei o primeiro 


GET: api/rh/v1/ahgora/agendamento/processes/proc1/parameters

Veja que o programa passa o id 'proc1' e na sequencia o 'parameters'. Esse endpoint é criado automaticamente pelo po-page-job.

Nessa requisição você deverá retornar os parâmetros desse processo, ou seja, você que definirá os campos que aparecerão na segunda tela, caso não envie nada, não será criado nenhum campo como parâmetro.


Exemplo no protheus:

GET: api/rh/v1/ahgora/agendamento/processes/proc1/parameters

Resposta


Tela criada conforme o meu json de retorno

Eu criei os 4 campos conforme exmplo da documentação, porém vocês deverão decidir o que enviar, quais campos vão criar para cada processo selecionado ou não enviar nenhum.

{
    "items": [
        {
            "property": "version",
            "label": "Versão",
            "required": true,
            "gridLgColumns": "6",
            "gridXlColumns": "6",
            "divider": "Informações"
        },
        {
            "property": "packages",
            "label": "Pacotes para atualizar",
            "optionsMulti": true,
            "gridLgColumns": "6",
            "gridXlColumns": "6",
            "options": [
                {
                    "value": "ui"
                },
                {
                    "value": "templates"
                },
                {
                    "value": "sync"
                },
                {
                    "value": "storage"
                },
                {
                    "value": "code-editor"
                }
            ]
        },
        {
            "property": "user",
            "label": "Usuário",
            "divider": "Credenciais",
            "gridXlColumns": "6",
            "gridLgColumns": "6"
        },
        {
            "property": "password",
            "label": "Senha",
            "secret": true,
            "gridXlColumns": "6",
            "gridLgColumns": "6"
        }
    ]
}


Preencher e avançar


Será mostrado a tela de conclusão 


Ao clicar em concluir será feito o POST.

Exemplo no protheus com retorno status 200

POST: api/rh/v1/ahgora/agendamento

Payload: {"firstExecution":"2025-01-01T09:47:00-03:00","recurrent":false,"executionParameter":{"version":"1","packages":["ui"],"user":"adimin","password":"1"},"processID":"proc1"}


Exemplo POST com retorno status 400

Resposta: {"code":400,"message":"Mensagem de erro"}



Na primeira tela, os campos periodicidade serão alterados conforme escolha.

Exemplo, ao clicar na diária, mais campos abaixo serão mostrados para escolha:


Semanal


Mensal


Os campos escolhidos mais os campos que você enviou na requisição dos parâmetros, serão retornados no POST.

Para verificar os nomes das propriedades, consulte a documentação: https://po-ui.io/documentation/po-page-job-scheduler


Payload com a opção 'Única'

{"firstExecution":"2025-01-01T10:00:00-03:00","recurrent":false,"executionParameter":{"version":"1","packages":[],"user":"admin","password":"1"},"processID":"proc1"}


Payload com a opção 'Diária'

{"firstExecution":"2025-01-01T10:14:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","daily":{"hour":17,"minute":30},"rangeExecutions":{"frequency":{"type":"hour","value":2},"rangeLimit":{"hour":18,"minute":0}}}


Payload com a opção 'Semanal'

{"firstExecution":"2025-01-01T10:15:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","weekly":{"daysOfWeek":["Monday","Tuesday","Friday"],"hour":18,"minute":0}}


Payload com a opção 'Mensal'

{"firstExecution":"2025-01-01T10:16:00-03:00","recurrent":true,"executionParameter":{"version":"1","user":"a","password":"1"},"processID":"proc1","monthly":{"day":1,"hour":18,"minute":0},"rangeExecutions":{"frequency":{"type":"day","value":1},"rangeLimit":{"day":30}}}