Low Code Web

Data: de publicação: 30/09/2026
Esta versão do Low Code Web corrige o travamento das execuções de FaaS das versões 1.18.1 a 1.18.3: os clientes HTTP compartilhados passam a ter limites de conexão e timeouts, com padrões calibrados e configurÔveis por variÔveis de ambiente. Nenhuma configuração é obrigatória, e voltar para a 1.18.3 traz o travamento de volta. Recomenda-se, porém, revisar heap, threads e cabeçalho HTTP dos pods: o risco de falta de memória dessa combinação existe desde a 0.7.4 e não muda nesta versão.
O que mudou
- Novas variÔveis (padrões): FAASCLIENT_HTTP_MAXCONNPERROUTE=50, FAASCLIENT_HTTP_MAXCONNTOTAL=200, FAASCLIENT_HTTP_CONNECTTIMEOUTMS=5000, FAASCLIENT_HTTP_CONNECTIONREQUESTTIMEOUTMS=10000, FAASCLIENT_HTTP_READTIMEOUTMS=90000, FAASCLIENT_HTTP_KEEPALIVEMS=2000. Os APP_HTTPCLIENT_* (busca de tokens) têm os mesmos padrões, exceto APP_HTTPCLIENT_CONNECTIONREQUESTTIMEOUTMS=5000 e APP_HTTPCLIENT_READTIMEOUTMS=10000.
- Inalterados: SERVER_MAXHTTPHEADERSIZE (10MB) e SERVER_TOMCAT_THREADS_MAX (200).
- Função com mais de 90 s sem responder passa a falhar com Read timed out (e segue executando no node-faas).
Antes do deploy
- FunƧƵes com mais de 90 s sem resposta: configurar FAASCLIENT_HTTP_READTIMEOUTMS.
- Ingress (Kong 60 s, OpenShift Route 30 s, ingress-nginx 60 s): ajustar se funƧƵes acionadas pelo navegador puderem demorar mais.
- Liveness com timeoutSeconds: 5 e failureThreshold: 3; -XX:+ExitOnOutOfMemoryError em JAVA_TOOL_OPTIONS (não testada).
- Remover FAASCLIENT_DEFAULTCONNECTION_CONNECTIONTIMEOUT do ConfigMap, se existir.
- Conferir o heap mƔximo efetivo dos pods e aplicar a faixa abaixo.
Depois do deploy: linhas FaaS HTTP client: ... e REST HTTP client: ... no log sem WARN (a segunda só após uma busca de token); nenhum OutOfMemoryError; readiness abaixo de 1 s no pico.
Faixas de heap (distribuĆda = 10MB e 200 threads; ver Parametrização por faixa de heap)
- Abaixo de 4 GB (template de referência, cerca de 2,8 GiB): não é segura; falta memória a partir de cerca de 115 a 120 requisições simultâneas por pod. Use a recomendação de 4 GB com SERVER_MAXHTTPHEADERSIZE=64KB; ou suba o heap para 4 GB e, com 10MB, use 130 threads e mais réplicas.
- 4 GB: não é segura; falta memória a partir de cerca de 170 a 180. Normal: SERVER_MAXHTTPHEADERSIZE=64KB. Intenso: 64KB e SERVER_TOMCAT_THREADS_MAX=400. Com 10MB indispensÔvel: 130 threads, junto com mais réplicas.
- 6 GB: no limite (segura só com base de até cerca de 0,4 GB); satura threads com cerca de 180 a 220. Normal: nada, se a base couber; senão 64KB. Intenso: 64KB e 400 threads.
- 8 GB: memória com folga; o limite são as threads (cerca de 180 a 220). Normal: nada. Intenso: 270 threads mantendo 10MB, ou 64KB e 400 threads.
- FaaS: padrões em qualquer faixa; FAASCLIENT_HTTP_MAXCONNPERROUTE=100 só em uso intenso, se a fórmula 1 pedir e o node-faas comportar. Capacidade extra vem de réplicas.
- Antes de reduzir o cabeƧalho, procurar requisiƧƵes acima de 64 KB; antes de passar de 200 threads, conferir max_connections do PostgreSQL e o pool de cada tenant.
CombinaƧƵes perigosas
- 10MB com threads acima do teto da faixa (130 / 200 / 270), como 400: cerca de 9,6 GB só de buffers. Ao voltar de 64KB para 10MB, levar as threads ao teto da faixa antes ou no mesmo rollout; antes, considerar 128KB ou 256KB.
- Reduzir threads (ex.: 130) sem aumentar rƩplicas: colapso por falta de threads.
- FAASCLIENT_HTTP_MAXCONNPERROUTE acima de 100 (150 foi rejeitado) ou de metade das threads.
- FAASCLIENT_HTTP_CONNECTIONREQUESTTIMEOUTMS ℠15000 ou ℠pool.connectionTimeout de algum tenant (erros de banco e de autenticação enganosos; tenant com pool.connectionTimeout abaixo de 10000 deve ir para pelo menos 15000); abaixo de 10000, perde execuções. 0 em timeout = sem limite.
Detalhes em Configuração, Ajuste de heap, threads e cabeçalho (todos os ambientes), Orientações para deploy e Validação.


š ExecuƧƵes de FaaS presas em fila após a versĆ£o 1.18.1
O que foi corrigido
- Limites de conexão nos dois clientes: 50 por destino e 200 no total.
- Timeouts para conectar, aguardar conexão livre e receber resposta, com padrões por cliente (mais curtos no genérico); ao estourar, a chamada falha e libera a conexão.
- Reutilização de conexões ociosas limitada a 2 s: o node-faas as fecha após 5 s, e reaproveitar uma conexão nesse instante fazia a execução falhar, sem repetição automÔtica; o limite deixa 3 s de margem (KEEPALIVEMS em Parâmetros).
- VariÔveis de ambiente com padrões (Configuração); nenhuma ação obrigatória.
- Log dos valores em uso na primeira utilização de cada cliente, com WARN para valor invÔlido ajustado ou proteção desligada (ex.: timeout 0).
- Substituição de FAASCLIENT_DEFAULTCONNECTION_CONNECTIONTIMEOUT (propriedade faas-client.default-connection.connection-timeout): só valeu da 1.6.0 Ć 1.8.6 (antes, aceita mas nĆ£o lida; valor Ćŗnico em segundos, 90 se ausente, para os trĆŖs timeouts); desde a 1.8.7 nĆ£o Ć© lida, e o FaaS ficou sem timeout. SubstituĆda pelos FAASCLIENT_HTTP_* (os 90 s de resposta equivalem ao padrĆ£o antigo); continua ignorada e pode ser removida.
- Testes automatizados do limite antigo, da concorrência, da liberação por timeout, da reutilização de conexões e da leitura das variÔveis.
Configuração
Os padrões jÔ resolvem o travamento. Os parâmetros são variÔveis de ambiente no ConfigMap do deployment do Low Code. Cada execução ocupa uma thread do Low Code durante todo o percurso: obtém conexão do pool (até MAXCONNPERROUTE; com todas ocupadas, espera na fila até CONNECTIONREQUESTTIMEOUTMS), conecta se precisar (até CONNECTTIMEOUTMS), aguarda a resposta (até READTIMEOUTMS) e devolve a conexão (descartada se ociosa além de KEEPALIVEMS). Quem espera na fila também ocupa thread (as mesmas de telas, APIs e health checks).
Parâmetros
Dois grupos com os mesmos seis parâmetros; nome = prefixo + parâmetro.
- FAASCLIENT_HTTP_*: chamadas ao node-faas (grupo deste card).
- APP_HTTPCLIENT_*: busca de tokens no Keycloak (recurso público com credenciais do projeto ou padrão; agente iniciado sem usuÔrio autenticado). Raramente precisa de ajuste.
- Grafia sem separador: FAASCLIENT_HTTP_MAX_CONN_PER_ROUTE não é reconhecida, e o padrão vale sem aviso (mesma convenção de FAASCLIENT_DEFAULTCONNECTION_URL).
MAXCONNPERROUTEā padrĆ£o 50 nos dois grupos
- MÔximo de execuções de FaaS simultâneas por pod; com 3 réplicas, até 150 no node-faas (mais os pods extras do rolling update). Ao atingir, não falha: entra na fila.
- No mÔximo cerca de metade de SERVER_TOMCAT_THREADS_MAX e nunca acima de 100 (150 rejeitado; fórmula 1): funções que chamam o Low Code precisam de uma segunda thread e, sem ela, só terminam por timeout.
- Aumentar só com execuƧƵes legĆtimas acima do limite e folga no node-faas (senĆ£o a fila só muda de lugar); diminuir para protegĆŖ-lo de picos.
MAXCONNTOTAL ā padrĆ£o 200 nos dois grupos
- Teto somando destinos (só importa com vÔrios, ex.: FaaS por tenant). Ao atingir, não falha: entra na fila. Deve ser ℠MAXCONNPERROUTE, senão vira o limite (o log avisa). Não dividir pelas réplicas.
CONNECTTIMEOUTMS ā padrĆ£o 5000 nos dois grupos
- Abertura TCP de conexão nova (no genérico, também cada etapa do TLS). Ao estourar: connect timed out (destino fora do ar, sobrecarregado ou rede); aumentar não resolve.
CONNECTIONREQUESTTIMEOUTMS ā padrĆ£o 10000 no FaaS, 5000 no genĆ©rico
- Espera na fila por conexão livre. Ao estourar: Timeout waiting for connection from pool.
- Faixa vÔlida (fórmula 7): 10000 ⤠FAASCLIENT_HTTP_CONNECTIONREQUESTTIMEOUTMS < 15000 e abaixo do pool.connectionTimeout de cada tenant (11 a 14 s não testados).
- Abaixo de 10 s, perde execuƧƵes mesmo com carga saudĆ”vel. Esperas longas prendem threads (ā execuƧƵes/s Ć espera: com 30 s, cerca de 7 execuƧƵes/s por pod ocupam 200 threads; com 10 s, cerca de 20) e, como cada execução na fila segura uma conexĆ£o do pool de banco (inferĆŖncia), passar de APP_DATASOURCE_POOL_CONNECTIONTIMEOUT (padrĆ£o 15000) ou do pool.connectionTimeout do tenant gera erros de banco e de autenticação enganosos (atĆ© 352 403 Access Denied numa rodada com 20 s).
- Aumentar, dentro da faixa, só para picos curtos acima da capacidade do node-faas; para preservar threads, use réplicas ou revise threads e cabeçalho.
READTIMEOUTMS ā padrĆ£o 90000 no FaaS, 10000 no genĆ©rico
- Tempo mÔximo sem resposta (reinicia a cada trecho recebido). Ao estourar: Read timed out, conexão descartada e vaga liberada; é o que impede uma chamada presa de ocupar a vaga para sempre.
- Não limita a função: ela segue no node-faas com todos os efeitos (gravações, integrações); nova tentativa do usuÔrio pode executÔ-la de novo.
- script.timeout do node-faas (padrĆ£o 60 s): no runtime 1.x (produção) só cobre o código atĆ© a primeira espera assĆncrona (await de HTTP, banco, SDK ou setTimeout), e READTIMEOUTMS Ć© o Ćŗnico limite efetivo; no 2.x, interrompe a função cerca de 61 s após o inĆcio da execução (a fila interna nĆ£o conta).
- Aumentar para funções legitimamente longas (relatórios, integrações lentas, lote), junto com o script.timeout e o timeout do ingress.
KEEPALIVEMS ā padrĆ£o 2000 nos dois grupos
- Tempo mÔximo de reaproveitamento de uma conexão ociosa; depois, abre-se outra (milissegundos no cluster).
- Deve ficar bem abaixo dos 5 s do node-faas (com Node.js 20, das imagens atuais, o fechamento ocorre exatamente no tempo anunciado); a margem de 3 s tambĆ©m absorve pausas do runtime 1.x (função sĆncrona longa impede a leitura das conexƵes). Ao errar: falhas esporĆ”dicas (trĆ”fego baixo ou rajadas) com Connection reset ou <host>:<porta> failed to respond (NoHttpResponseException; ex.: node-faas:3000 failed to respond).
- 0 desliga o limite (vale só o Keep-Alive do servidor): não recomendado no FaaS; gera WARN, assim como valor não abaixo de 5 s.
- Melhoria recomendada no node-faas, fora desta versão: server.keepAliveTimeout (hoje 5 s) bem acima deste limite elimina o risco.
Timeouts 0 ou negativos = sem limite, como nas versões que travavam. Não recomendado; gera WARN.
Exemplo de ConfigMap
data:
FAASCLIENT_HTTP_MAXCONNPERROUTE: '50'
FAASCLIENT_HTTP_MAXCONNTOTAL: '200'
FAASCLIENT_HTTP_CONNECTTIMEOUTMS: '5000'
FAASCLIENT_HTTP_CONNECTIONREQUESTTIMEOUTMS: '10000'
FAASCLIENT_HTTP_READTIMEOUTMS: '90000'
FAASCLIENT_HTTP_KEEPALIVEMS: '2000'
APP_HTTPCLIENT_MAXCONNPERROUTE: '50'
APP_HTTPCLIENT_MAXCONNTOTAL: '200'
APP_HTTPCLIENT_CONNECTTIMEOUTMS: '5000'
APP_HTTPCLIENT_CONNECTIONREQUESTTIMEOUTMS: '5000'
APP_HTTPCLIENT_READTIMEOUTMS: '10000'
APP_HTTPCLIENT_KEEPALIVEMS: '2000'
- Valores entre aspas; declare só o que diferir do padrão (o exemplo equivale a não declarar nada).
- Lidas só na subida do pod: alterações exigem novo rollout (kubectl rollout restart deployment/<nome-do-deployment>).
- Valor não numérico (ex.: 5s) impede a subida: APPLICATION FAILED TO START com a propriedade e a variÔvel (ex.: Property: faas-client.http.read-timeout-ms e Origin: System Environment Property, seguido de "FAASCLIENT_HTTP_READTIMEOUTMS"), código 1 e CrashLoopBackOff (num rollout, os pods antigos seguem atendendo e o rollout para). Veja com kubectl logs <pod> --previous.
Como verificar os valores em uso
Cada pod registra os valores efetivos uma vez: na primeira execução de FaaS e na primeira busca de token.
FaaS HTTP client: maxConnPerRoute=50, maxConnTotal=200, connectTimeoutMs=5000, connectionRequestTimeoutMs=10000, readTimeoutMs=90000, keepAliveMs=2000
REST HTTP client: maxConnPerRoute=50, maxConnTotal=200, connectTimeoutMs=5000, connectionRequestTimeoutMs=5000, readTimeoutMs=10000, keepAliveMs=2000kubectl logs -l app=<nome-do-deployment> --prefix --tail=-1 | grep "HTTP client"- Sem a linha: o pod ainda não executou FaaS ou não buscou token (casos em Parâmetros). Não é erro.
- --tail=-1 é necessÔrio (com -l, saem só 10 linhas por pod). Com outro rótulo, use kubectl get pods e kubectl logs <nome-do-pod> | grep "HTTP client"; após rotação, a ferramenta de logs centralizada.
- Valor invÔlido (ex.: MAXCONNPERROUTE igual a 0) aparece jÔ ajustado, seguido de WARN. Valores inesperados: confira a grafia (Parâmetros) e se o pod reiniciou após a alteração.
Como ajustar
- Timeout waiting for connection from pool (cliente recebe 409): fila do pool acima de CONNECTIONREQUESTTIMEOUTMS; deve ser rara no pico. node-faas saturado ā rĆ©plicas dele. Com folga nele: falhas recorrentes ā rĆ©plicas do Low Code, ou FAASCLIENT_HTTP_MAXCONNPERROUTE (MPR) atĆ© 100 se a fórmula 1 pedir (e atĆ© metade das threads); picos curtos ā espera maior, abaixo de 15000 e do pool.connectionTimeout dos tenants.
- Read timed out (409): node-faas sem responder por READTIMEOUTMS. Função legitimamente longa ā FAASCLIENT_HTTP_READTIMEOUTMS maior (e script.timeout) e, se acionada pelo navegador, a cadeia de entrada (Timeouts da cadeia de entrada); a função continua no node-faas. Sob carga ā node-faas saturado, MPR acima da capacidade dele ou falta de threads para as chamadas de volta (fórmula 2).
- connect timed out: o node-faas nĆ£o aceitou a conexĆ£o (pod caĆdo ainda nos endpoints, rede ou NetworkPolicy descartando pacotes, sobrecarga); DNS falha como UnknownHostException, Service sem pods prontos como Connection refused. Investigue pods, Service e endpoints; aumentar o timeout só mascara.
- Connection reset ou failed to respond esporĆ”dicos: conexĆ£o reaproveitada jĆ” fechada (com o padrĆ£o, provĆ”vel pausa longa do node-faas por código sĆncrono). Confirme KEEPALIVEMS bem abaixo de 5 s e diferente de 0; se persistir, FAASCLIENT_HTTP_KEEPALIVEMS=1000 (conexĆ£o nova custa menos de 1 ms) e identifique as funƧƵes sĆncronas longas. Definitivo: server.keepAliveTimeout maior no node-faas.
- Pod sem responder (nem aos health checks) numa lentidão do node-faas, ou health check lento com falhas por fila (e Read timed out, quando hÔ poucas threads): faltam threads (fórmula 2). MPR até metade das threads, espera na faixa da fórmula 7, Health checks e revisão de threads, cabeçalho e heap.
- Unable to acquire JDBC Connection ou Connection is not available, request timed out after ...ms: pool de banco do tenant esgotado; reduza C_pod com réplicas e confira o pool (fórmula 5). Rajadas de 401 ou 403 Access Denied junto: efeito sobre a autenticação, não permissão (inferência).
- Erros encadeados BusinessObject -> BusinessObject -> ... nas chamadas das funções ao Low Code: nos testes, só com falta de memória ou pool de banco esgotado.
- Request header is too large (cliente recebe 400): requisição acima de SERVER_MAXHTTPHEADERSIZE; só a primeira ocorrência em INFO, as seguintes em DEBUG. HeadersTooLargeException em ERROR (cliente recebe 500): cabeçalho de resposta acima do limite.
- Falha ao obter token com os erros acima: mesmas causas no cliente genƩrico, ou provedor de identidade acima de APP_HTTPCLIENT_READTIMEOUTMS. Verifique o provedor; se for legitimamente lento, aumente APP_HTTPCLIENT_READTIMEOUTMS (ex.: 15000).
Timeouts da cadeia de entrada
Para funções acionadas pelo navegador vale o menor timeout da cadeia (balanceador, roteador, ingress); se um componente desistir antes, o navegador recebe 504 Gateway Timeout e a execução continua no servidor. Tempo mÔximo no Low Code, com os padrões:
- fila (10 s) + conexão (5 s, só se nova) + resposta (90 s): até cerca de 105 s; com busca de token antes (recursos públicos com credenciais do projeto: 5 + 5 + 10 s), até cerca de 125 s;
- função que chama outra pelo Low Code: cada nĆvel soma nova fila e nova execução;
- sob sobrecarga, as esperas do pool de banco somam até mais 2 à 15 s (medido: 90,4 s com FAASCLIENT_HTTP_MAXCONNPERROUTE 50, 119,5 s com 100 e 132 s com 150); os 130000 do exemplo do Kong ficam no limite.
Confira o componente Ć frente do Low Code em cada ambiente:
- Kong (ingress do repositório): padrão 60 s; konghq.com/read-timeout e konghq.com/write-timeout no Service (ms). Anotações do ingress-nginx não têm efeito no Kong.
- OpenShift Route: padrão 30 s; haproxy.router.openshift.io/timeout (ex.: 130s). Na AWS, a ociosidade do balanceador também precisa acompanhar.
- ingress-nginx: padrão 60 s; nginx.ingress.kubernetes.io/proxy-read-timeout e nginx.ingress.kubernetes.io/proxy-send-timeout (segundos).
Exemplo para o Kong, no Service do Low Code, acomodando os padrƵes (atƩ cerca de 125 s; sob sobrecarga, fica no limite):
metadata:
annotations:
konghq.com/read-timeout: "130000"
konghq.com/write-timeout: "130000"Se as funções acionadas pelo navegador forem sempre rÔpidas, não é preciso alterar.
Health checks
Os probes (/lowcode/management/health/liveness e /readiness) usam as mesmas threads de telas, APIs e FaaS; uma lentidão do node-faas pode atrasÔ-los e reiniciar vÔrios pods juntos.
- Liveness com timeoutSeconds: 5 e failureThreshold: 3, nunca failureThreshold: 1 (o template de referĆŖncia usa 1, com 1 s). Mesmo assim, um colapso prolongado reinicia os pods.
- Opcional: porta própria com MANAGEMENT_SERVER_PORT (ex.: 9090). Porta e caminho mudam juntos: probes (liveness, readiness e startup, se houver) em 9090 com /management/health/liveness e /management/health/readiness, sem /lowcode; mudar só um faz os probes falharem. Declarar a porta em ports é recomendado (obrigatório só se o probe usar o nome dela). Com porta separada, o readiness deixa de refletir a saturação das threads principais.
Ajuste de heap, threads e cabeƧalho (todos os ambientes)
Esta versão não altera o heap, SERVER_MAXHTTPHEADERSIZE (10MB) nem SERVER_TOMCAT_THREADS_MAX (200); o cabeçalho de 10MB e as 200 threads valem desde a 0.7.4 (2022). Com heap de 4 GB, essa configuração ficou sem memória com cerca de 180 requisições simultâneas por pod, qualquer que fosse MAXCONNPERROUTE (25, 50, 100) ou CONNECTIONREQUESTTIMEOUTMS (5, 10, 20, 30 s). O risco não foi introduzido pela 1.18.4; voltar para a 1.18.3 não o elimina e traz de volta o travamento. Revise esta seção em todos os ambientes. Os limites valem por pod; o total no node-faas e no PostgreSQL é o limite à réplicas. Nesta seção, MPR = FAASCLIENT_HTTP_MAXCONNPERROUTE, T = SERVER_TOMCAT_THREADS_MAX e H = SERVER_MAXHTTPHEADERSIZE.
Parametrização por faixa de heap
- Heap efetivo: -Xmx, ou limite do container Ć MaxRAMPercentage (70% de 4Gi ā 2,8 GiB); sem nenhum dos dois, 25% do limite (1 GiB com 4Gi). Entre faixas, use a inferior ou a fórmula 3.
- Uso intenso: X_pod acima de 40, falhas por fila recorrentes em pico normal, ou C_pod acima do que o uso normal da faixa comporta.
- Tetos com 10MB (130, 200, 270) supƵem base atĆ© 0,4 GB e nenhuma conexĆ£o longa; senĆ£o, fórmula 3 ou 64KB. Nos limites com ā O, substitua O; os vindos só da fórmula 5 (180 ā K, 130, 80) ainda nĆ£o descontam os demais usos do banco.
- Demais parâmetros e pool de banco: padrões. Números medidos, emulados (4 GB com cabeçalho de 7400KB para 6 GB e 5120KB para 8 GB) ou calculados, num ambiente local (Validação): dimensione pelas fórmulas.
Abaixo de 4 GB (inclui o template de referĆŖncia: limite de 4Gi, MaxRAMPercentage=70)
- DistribuĆda: falta memória a partir de cerca de 115 a 120 simultĆ¢neas (calculado). Use a recomendação de 4 GB com 64KB.
- Sem 64KB: aumente o limite do container atĆ© a faixa de 4 GB (cerca de 5,7Gi) e aplique 130 threads com mais rĆ©plicas; só aumentar o heap nĆ£o basta. Mantendo cerca de 2,8 GiB e 10MB, a fórmula 3 dĆ” cerca de 85 threads: cerca de 15 execuƧƵes simultĆ¢neas (85 ā 50 ā 20) menos O, e o MPR 50 passa de T Ć· 2 (cerca de 42). NĆ£o recomendado.
Heap de 4 GB
- DistribuĆda: nĆ£o Ć© segura. cerca de 130 requisiƧƵes em processamento com folga de 15%, falta de memória acima de cerca de 170 (calculado) e OutOfMemoryError com 180 em todas as configuraƧƵes testadas (com node-faas lento, entre 120 e 220), de qualquer tipo de requisição. Após o erro, a JVM nĆ£o encerra e fica degradada (50% a 79% do tempo em coleta); nĆ£o foi testado se o liveness reinicia o pod nesse estado.
- Uso normal (recomendado mesmo sem uso intenso):
- Preferencial, após verificar os logs de acesso: SERVER_MAXHTTPHEADERSIZE=64KB, 200 threads, MPR 50 (nenhuma rodada 64KB ficou sem memória). Capacidade: C_pod ⤠130 ā O (fórmulas 2 e 5).
- Com 10MB necessĆ”rio: SERVER_TOMCAT_THREADS_MAX=130 (ou menos, pela fórmula 3): sem falta de memória atĆ© 220 simultĆ¢neas, mas capacidade de cerca de 60 ā O (130 ā 50 ā 20 ā O).
- NĆ£o aplique os 130 sozinho: cargas de cerca de 110 a 170 simultĆ¢neas que hoje funcionam com 200 threads passam a colapsar. Verifique os logs primeiro (com 64KB o corte Ć© desnecessĆ”rio); se cortar, faƧa no rollout do aumento de rĆ©plicas, ou depois, com C_pod ⤠60 ā O (fórmula 6). AtĆ© lĆ”, mais rĆ©plicas e -XX:+ExitOnOutOfMemoryError.
- Uso intenso: SERVER_MAXHTTPHEADERSIZE=64KB, SERVER_TOMCAT_THREADS_MAX=400 e MPR 50 (100 só se a fórmula 1 pedir e o node-faas comportar 100 Ć maxReplicas). O limite passa a ser o banco: C_pod ⤠180 ā K (130 no pior caso com MPR 50); exige a verificação do PostgreSQL. Com 10MB, nĆ£o hĆ” opção viĆ”vel de uso intenso em 4 GB: aumente heap ou rĆ©plicas.
Heap de 6 GB
- DistribuĆda: no limite. Segura só com base atĆ© cerca de 0,4 GB e sem conexƵes longas relevantes: 200 threads sĆ£o o teto da fórmula 3 (pico cerca de 85% calculado; cerca de 95% com base de 1 GB, o que leva Ć falta de memória). Capacidade limitada pelas threads: C_pod ⤠130 ā O no pior caso de chamadas de volta (cerca de 180 ā O com chamadas curtas, como nos testes).
- Uso normal: meça a base; se couber, nada a alterar. Senão, 64KB (após os logs de acesso) ou threads pela fórmula 3 com mais réplicas. Não aumente as threads com 10MB.
- Uso intenso: preferencial igual a 4 GB (64KB, 400 threads, MPR 50 ou 100; com 6 GB hĆ” mais folga). Com 10MB necessĆ”rio: no mĆ”ximo 200 threads (ou a fórmula 3), MPR 50 e rĆ©plicas atĆ© C_pod ⤠130 ā O; ou heap de 8 GB.
Heap de 8 GB
- DistribuĆda: memória com folga; o limite sĆ£o as threads (com as 200 ocupadas, cerca de 64% do heap calculado, cerca de 71% com base de 1 GB).
- Uso normal: nada a alterar; limites de C_pod iguais aos de 6 GB (130 ā O).
- Uso intenso: mantendo 10MB, SERVER_TOMCAT_THREADS_MAX=270 e MPR 50 (teto com base 0,4 GB; cerca de 245 com base de 1 GB; pico cerca de 84% num heap real, calculado). Fórmula 2: C_pod ⤠200 ā O (MPR 50) ou 150 ā O (MPR 100); fórmula 5: C_pod ⤠130 (MPR 50) ou 80 (MPR 100) no pior caso; use o menor. MPR 100 nĆ£o testado com 270 threads. Alternativa, após os logs de acesso: 64KB e 400 threads. Nos dois casos, verifique o PostgreSQL antes de passar de 200 threads.
Ordem das alteraƧƵes
- Heap: confirme o heap efetivo (-Xmx em JAVA_TOOL_OPTIONS ou JDK_JAVA_OPTIONS, ou limite à MaxRAMPercentage), escolha a faixa e meça a base. Confira também application-*.yml montados (server.max-http-header-size, server.tomcat.threads.max ou o antigo server.tomcat.max-threads) e SERVER_TOMCAT_MAXTHREADS, nome antigo ainda aceito.
- kubectl exec <pod> -- env | grep -E '^(JAVA_TOOL_OPTIONS|JDK_JAVA_OPTIONS|SERVER_MAXHTTPHEADERSIZE|SERVER_TOMCAT_THREADS_MAX|SERVER_TOMCAT_MAXTHREADS|SPRING_CONFIG_[A-Z_]+)=' kubectl get pod <pod> -o jsonpath='{.spec.containers[0].resources.limits.memory}{"\n"}{.spec.containers[0].volumeMounts}{"\n"}'
- Health checks e falta de memória: antes de qualquer aumento de carga, liveness 5 s à 3 e -XX:+ExitOnOutOfMemoryError.
- Logs de acesso: antes de reduzir o cabeƧalho, procure requisiƧƵes acima de 64 KB (Cuidados).
- Cabeçalho antes das threads: aplique SERVER_MAXHTTPHEADERSIZE antes de aumentar SERVER_TOMCAT_THREADS_MAX. Com 10MB, nunca acima do teto da faixa nem da fórmula 3. Redução de threads só com o aumento de réplicas, ou depois. Para voltar a 10MB (ex.: cliente recebendo 400 após 64KB): threads de volta ao teto da faixa antes ou no mesmo rollout (só remover SERVER_MAXHTTPHEADERSIZE com 400 threads exige cerca de 9,6 GB de buffers); antes, considere 128KB ou 256KB.
- PostgreSQL: antes de passar de 200 threads, max_connections e pool de cada tenant (Cuidados).
- Réplicas: HPA (minReplicas e maxReplicas, com a réplica extra) e réplicas do node-faas (fórmulas 4 e 6), antes de aumentar o MPR.
- MPR: só agora, se a fórmula 1 pedir e o node-faas comportar: FAASCLIENT_HTTP_MAXCONNPERROUTE=100.
- Demais FAASCLIENT_HTTP_*: só diante de sintoma (Como ajustar).
Um item por vez (exceto a redução de threads, que acompanha as réplicas); cada alteração exige rollout, fora do pico; observe um pico real antes da próxima.
Como verificar após a alteração
- FaaS: linha FaaS HTTP client sem WARN em seguida. Exemplo com MPR 100:
FaaS HTTP client: maxConnPerRoute=100, maxConnTotal=200, connectTimeoutMs=5000, connectionRequestTimeoutMs=10000, readTimeoutMs=90000, keepAliveMs=2000- Threads e cabeçalho não aparecem no log: use os comandos do item 1 de Ordem das alterações (sem definição, valem 10MB e 200). Para o limite de cabeçalho, envie 70 KB: 400 = rejeitado (como com 64KB); outro status = aceito (com MANAGEMENT_SERVER_PORT, a 8080 responde 404, também aceito).
# em um terminal
kubectl port-forward pod/<pod> 8080:8080
# em outro terminal
curl -s -o /dev/null -w '%{http_code}\n' -H "X-Teste: $(head -c 70000 /dev/zero | tr '\0' a)" http://localhost:8080/lowcode/management/health/readiness- Falta de memória: nenhum OutOfMemoryError (nos testes, Failed to complete processing of a request seguido de java.lang.OutOfMemoryError: Java heap space); se houver, reinicie o pod e revise cabeçalho e threads. Com -XX:+ExitOnOutOfMemoryError, sai Terminating due to java.lang.OutOfMemoryError e o container reinicia (kubectl logs <pod> --previous).
kubectl logs -l app=<nome-do-deployment> --prefix --tail=-1 | grep "OutOfMemoryError"- Health check no pico: readiness abaixo de 1 s (até 169 ms nas rodadas saudÔveis); sem eventos Unhealthy nem aumento em RESTARTS. Health check rÔpido não descarta colapso por pool de banco (até 204 ms nesse colapso): confira as mensagens (Como ajustar). Falta de memória: 2 a 16 s; falta de threads: 12 a 26 s.
curl -s -o /dev/null -w '%{http_code} %{time_total}s\n' http://localhost:8080/lowcode/management/health/readiness
kubectl get events --field-selector reason=Unhealthy
kubectl get pods -l app=<nome-do-deployment>Cuidados
- Cabeçalho de 64KB: antes, procure requisições acima de 64 KB na linha de requisição + cabeçalhos (filtros longos na URL, cookies, tokens); logs de acesso comuns não registram esse tamanho:
- Ingress: $request_length (nginx) ou request.size (Kong), só triagem: incluem o corpo, e pipelines de log truncam linhas longas.
- URL longa conhecida: GET /lowcode/api/secure?jwe=...&client_pub_jwk=... (SDK para SSE).
- Chamadas internas (ex.: node-faas ā Low Code) nĆ£o sĆ£o registradas: use um pod canĆ”rio com 64KB e procure Request header is too large.
- O trÔfego externo provavelmente jÔ é limitado (ingress nginx: 4 à 8 KB; roteador do OpenShift: cerca de 32 KB); o risco estÔ nas chamadas internas. Cabeçalho de resposta grande (Set-Cookie, Content-Disposition) dÔ 500 (não testado com 64KB).
- O 10MB existe desde a 0.7.4 sem motivo documentado. Se algum cliente precisar de mais, 128KB ou 256KB (cerca de 100 e cerca de 200 MB com 400 threads; calculado, não testado).
- Conexões longas com 10MB: cada SSE aberto ou requisição recebida em parte custa 22 a 24 MB além das threads, sem limite prÔtico (8192 conexões). Se forem muitas, 64KB.
- PostgreSQL ao aumentar threads: com um tenant ativo por pod, nada muda; com vÔrios, 270 ou 400 threads podem aumentar as conexões por pod na mesma proporção. Confira se max_connections ℠(maxReplicas + pods extras do rolling update) à (o menor valor entre T + tarefas em segundo plano e a soma dos maximumPoolSize dos tenants ativos no pod, mais os pools de conexões dinâmicas, 100 cada por padrão) + outros clientes + reserva. Confira também o pool de cada tenant (fórmulas 5 e 7). Não aumente APP_DATASOURCE_POOL_MAXIMUMPOOLSIZE para ganhar capacidade de FaaS.
- node-faas: recebe MPR à réplicas do Low Code (com pods do HPA e do rolling update); MPR acima da capacidade só transfere a fila e gera Read timed out.
- Probes: com falta de memória (health check de 2 a 16 s), o liveness de 5 s detecta ainda menos o estado degradado; daà -XX:+ExitOnOutOfMemoryError (encerra no primeiro OutOfMemoryError e o Kubernetes reinicia; não testado). 400 threads é o maior valor testado.
- HPA por CPU: com 64KB e 400 threads, média de 0,5 a 2,1 núcleos (amostra de 4,8; 0,5 a 0,7 no colapso); contra o request de 1 CPU e o alvo de 65% do template, não dÔ para prever se o HPA cria pods num colapso, e eles somariam conexões e execuções sem resolver. Limite maxReplicas pela fórmula 4 e pelo PostgreSQL.
- Memória do container (MaxRAMPercentage=70): heap de 4 GB exige cerca de 5,7Gi; 6 GB, cerca de 8,6Gi; 8 GB, cerca de 11,4Gi (memória fora do heap não medida).
- Homologação: teste as configurações de uso intenso em homologação, com o runtime de produção do node-faas.
O que cada execução de FaaS ocupa
- Uma thread do Tomcat durante todo o percurso e uma vaga do pool FaaS enquanto aguarda o node-faas.
- Uma conexão do pool de banco do tenant (inferência): padrão de 200 por tenant e por pod (APP_DATASOURCE_POOL_MAXIMUMPOOLSIZE), espera de até 15 s (APP_DATASOURCE_POOL_CONNECTIONTIMEOUT).
- Mais uma thread e uma conexão a cada chamada da função ao Low Code (chamada de volta).
- Heap para buffers de cabeƧalho: cerca de 2 Ć SERVER_MAXHTTPHEADERSIZE por requisição em processamento (qualquer uma, inclusive health checks, seja qual for o tamanho real dos cabeƧalhos) e por conexĆ£o aberta sem thread (SSE, respostas assĆncronas, requisiƧƵes recebidas em parte). Com 10MB, 22 a 24 MB por requisição, conforme a regiĆ£o do G1 (22 MB medidos com -Xms2g -Xmx4g; 24 MB calculados para -Xms4g -Xmx4g e para heaps de 6 e 8 GB com -Xms2048m). Após um pico, o Tomcat retĆ©m atĆ© cerca de 200 processadores, sem passar dos que chegaram a ser usados, cada um com os dois buffers (cerca de 200 Ć 2 Ć H: 4,4 a 4,8 GB com 10MB; com 130 threads, 2,75 GB vivos mesmo após coleta completa forƧada), reaproveitados no pico seguinte.
Fórmulas de dimensionamento
Grandezas, por pod:
- R: réplicas no pico (pior caso: maxReplicas). X_pod (lei de Little) = (pico de execuções/s no cluster ÷ R) à tempo médio da execução em s, com a fila do node-faas.
- C_pod: pico de requisições de FaaS simultâneas, com a fila do pool (cerca de X_pod em regime normal; cresce numa lentidão do node-faas).
- K: chamadas de volta simultâneas, de 0 a MPR; passa de MPR com chamadas paralelas (Promise.all) ou /faas/run (que também ocupa o pool FaaS). O: demais requisições (telas, APIs, integrações).
- S: conexões longas sem thread: SSE (importação e instalação de pacotes do designer, que não expiram; /{bo}/sse; /adapter/sse), streams do SDK por GET /lowcode/api/secure?jwe=... e requisições recebidas em parte; único limite: server.tomcat.max-connections (8192).
- MPR = FAASCLIENT_HTTP_MAXCONNPERROUTE; T = SERVER_TOMCAT_THREADS_MAX; H = SERVER_MAXHTTPHEADERSIZE; Xmx = heap mƔximo efetivo.
- MPR: MPR = 50 se 1,25 à X_pod ⤠50; MPR = 100 se 1,25 à X_pod ⤠100; acima disso, aumente réplicas (fórmula 6). Nunca acima de 100 (150 gerou de 136 a 146 Read timed out, de 43 a 361 erros de banco ou de autenticação e fila de até 250 no node-faas). Mantenha MPR ⤠T ÷ 2. Cada pod atende no mÔximo cerca de MPR ÷ tempo médio da execução execuções/s.
- Threads: T ℠C_pod + K + O + 20 (health checks e folga). Acima de T, health check de 12 a 26 s e sucesso de 17% a 38%, mesmo com memória sobrando.
- Heap: pico ā base + P Ć custo, com P = requisiƧƵes em processamento (atĆ© T) + S. Custo: 24 MB com 10MB; cerca de 0,13 MB com 64KB (400 threads ā 50 MB; mil conexƵes longas ā 130 MB).
- Base: meça a do ambiente (G1 Old Gen logo após uma coleta, sob carga normal), de preferência num pod com 64KB: com 10MB, a medida inclui os buffers retidos do maior pico, a descontar. No teste, 0,18 a 0,41 GB (0,4 GB é a escolha conservadora usada abaixo); em produção (vÔrios tenants, caches, respostas grandes), pode chegar a cerca de 1 GB.
- Folga-alvo de 15%: T ⤠(0,85 Ć Xmx ā base) Ć· 24 MB ā S. Base 0,4 GB e S = 0: cerca de 130 (4 GB), 200 (6 GB), 270 (8 GB), os tetos das faixas. Base 1 GB: cerca de 100, 175 e 245 (200 threads em 6 GB chegam a cerca de 95% e 270 em 8 GB a cerca de 92%; nos dois casos, falta memória). Sem medir base nem S, use 0,75 (cerca de 110, 175 e 240) ou 64KB.
- Folga medida nos tetos: pico da geração antiga de 77,5% (4 GB, 130 threads), 88,1% (6 GB emulado, 200) e 87,0% (8 GB emulado, 270); folga de 12% a 13% nas emulações, estimativa de 82% a 85% num heap real; somando os objetos temporÔrios, o uso chegou a 93,5%.
- node-faas: MPR à (maxReplicas do Low Code + pods extras do rolling update) ⤠réplicas do node-faas à execuções simultâneas seguras por réplica. O runtime 1.x não limita execuções simultâneas: meça essa capacidade em teste de carga.
- Banco, por tenant e por pod: C_pod + K + demais usos do banco ⤠90% do pool do tenant (180 com o padrão de 200); margem de planejamento, não limite medido. pool.maximumPoolSize e pool.connectionTimeout do recurso de banco (DATABASE) do tenant prevalecem: confira em cada tenant.
- Réplicas: C_pod_alvo = maior C_pod que atende 2, 3 e 5; minReplicas = arredondamento para cima de (pico de execuções simultâneas no cluster ÷ C_pod_alvo) + 1. A réplica extra cobre um pod a menos: com o maxUnavailable de 25% do template, num rolling update ou perda de pod os demais recebem até cerca de 1/3 a mais (ou use maxUnavailable: 0). Rollouts fora do pico.
- Espera na fila: 10000 ⤠FAASCLIENT_HTTP_CONNECTIONREQUESTTIMEOUTMS < menor espera do pool de banco entre os tenants (APP_DATASOURCE_POOL_CONNECTIONTIMEOUT, padrão 15000, ou pool.connectionTimeout). Tenant com pool.connectionTimeout abaixo de 10000 quebra a regra jÔ com o padrão (401 e 403 enganosos): ajuste-o para pelo menos 15000.
Exemplo: 3 rĆ©plicas, 120 execuƧƵes/s, 1,5 s por execução, K atĆ© MPR, O = 20. X_pod = (120 Ć· 3) Ć 1,5 = 60; 1,25 Ć 60 = 75 > 50 ā MPR = 100; threads 60 + 100 + 20 + 20 = 200, acima do teto de 130 (4 GB com 10MB): 64KB com 400 threads ou heap de 8 GB com 270 (fórmula 5: 160 ⤠180). Com 6 rĆ©plicas: X_pod = 30, MPR = 50, threads 120; C_pod_alvo = 130 ā 50 ā 20 ā 20 = 40, minReplicas = ā(120 Ć 1,5) Ć· 40ā + 1 = 6. Escalar horizontalmente costuma ser o mais simples.
Validação
Ambiente: uma mÔquina (32 núcleos, sem limite de CPU), um Low Code 1.18.4, um node-faas (runtime 2.x, até 4 funções por vez, cerca de 24 a 45 execuções/s) e um tenant. Função de teste: consulta a objeto de negócio (100 a 150 ms) que chama o Low Code. Clientes em ciclo fechado ("simultâneas à execuções por cliente"); JVM -Xms2g -Xmx4g (G1, regiões de 1 MB); readiness medido a cada 1 s; lentidão simulada com +1,5 s por chamada. Nas rodadas por faixa de heap, percentuais = geração antiga; nas demais, valores em GB = heap total com objetos temporÔrios (com 64KB, geração antiga até 0,4 GB).
Heaps de 6 e 8 GB emulados (sem memória livre na mÔquina): heap de 4 GB com 7400KB (16 MB por requisição, 4/6 de 24 MB) e 5120KB (12 MB, 4/8). Os 24 MB num heap real de 6 ou 8 GB são calculados (supondo -Xms2048m), não medidos; como a base pesa mais em 4 GB, heaps reais teriam um pouco mais de folga. Uma primeira emulação de 6 GB com 6826KB (14 MB, cerca de 12,5% otimista) teve 97,9%, 98,8% e 37%.
DistribuĆda (10MB, 200 threads), 4 GB, seis configuraƧƵes do pool FaaS (padrĆ£o; esperas de 5, 20 e 30 s; MPR 25 e 100)
- 100 à 6: 100%, heap até 2,73 GB. 150 à 6: 99,1% a 100% (espera de 5 s: 96,1%), geração antiga em 93% (97% a 98% com temporÔrios).
- 180 à 6: OutOfMemoryError nas seis em 2 a 4 s; 82,9% a 92,5%; 50% a 65% do tempo em coleta; health check até 4,1 s.
- Nenhum MPR ou espera mudou esse ponto. Abaixo dele, MPR 100 teve p95 de 4,9 s com 150 (padrão: 6,8 a 9,6 s).
Faixas com 10MB (14 mediƧƵes, espera de 10 s)
- 4 GB, 130 threads (medido): até 77,5%, sem falta de memória até 220. 130 simultâneas: 89,7% (health check de 12,9 s); 180: 32,9% e 12 Read timed out (só 367 das 1.080 chamadas chegaram ao node-faas, por falta de threads para as chamadas de volta); 220: 26,9%, 34 Read timed out (até 26,2 s).
- 6 GB, 200 threads (emulado): 150 e 180: 99,2% e 99,4% (até 80 ms); 220: 38,3% (até 13 s; 88%). Heap real de 6 GB (rodada anterior, fora das 14 medições; não registrou coleta de lixo nem espera na fila): 100% com 150 e 180, health check abaixo de 150 ms.
- 8 GB, 200 threads (emulado): 180: 98,4% (atƩ 98 ms); 220 e 260: 37% e 29,9% (atƩ 13,7 s); atƩ 63%.
- 8 GB, 270 threads (emulado): 220 e 260: 86,2% e 84,6%, até 124 ms, falhas só por fila; pico de 87%.
- Nenhuma falta de memória, coleta completa ou erro de banco; Read timed out só com 130 threads.
- Modelo de memória: a fórmula 3 previu a memória após o pico com erro de até 3,2%, mas, com a base do pod ocioso (102 a 121 MB), ficou abaixo do pico medido nas 14 medições (geração antiga de 2,4% a 10% acima do previsto). Requisições em processamento = menor valor entre as threads e "simultâneas + cerca de 5" (chamadas de volta e health checks).
64KB e 400 threads, 4 GB (MPR 50, 100 e 150 com 10 s; MPR 100 com 20 s)
- CabeƧalho: 60.000 bytes, 200; 70.000 e 200.000, 400; token na URL (cerca de 1,7 KB), 200.
- 180 à 6: 99,4% a 100%, health check até 115 ms, heap até 1,44 GB.
- 300 à 4: colapso (35,9% a 55,9%). MPR 50: 43%, só falhas por fila, health check até 99 ms (só cerca de 8 execuções/s chegaram ao node-faas, contra cerca de 38 com 180; causa não diagnosticada). MPR 100: 62 Read timed out; MPR 150: 136 Read timed out e 43 erros de banco ou de autenticação; 20 s: 405 desses erros (198 403 Access Denied) e 364 por fila.
- 420 à 3: 16,6% a 29%, health check de 12,1 a 14,3 s, heap até 1,53 GB. MPR 100: 91 Read timed out; MPR 150: 146 Read timed out, 361 erros de banco ou de autenticação e fila de 250 no node-faas; 20 s: 599 erros (352 403 Access Denied) e 296 por fila.
- MPR 100 dobra as chamadas simultâneas enviadas ao node-faas (de 51 para 101; o runtime local executou no mÔximo 4 por vez): melhora vazão e tempo abaixo do limite, mas sob sobrecarga gerou de 62 a 91 Read timed out.
- Colapso entre 260 (270 threads) e 300 simultĆ¢neas (400 threads), em configuraƧƵes diferentes; atribuĆ-lo ao pool de banco Ć© inferĆŖncia (PostgreSQL com 198 a 207 conexƵes desde 180 simultĆ¢neas; em 4 de 6 thread dumps, chamadas ao node-faas + esperas na fila = exatamente 200). Com 300, nenhum MPR ou espera o evitou.
node-faas lento, 4 GB
- 10MB, 200 threads: 100% com 60 e 120 (espera de 5 s com 120: 96,7%); com 120, geração antiga jÔ em 3,0 a 3,1 GB (3,1 a 3,2 GB de heap total); 220: OutOfMemoryError, 22,7% a 52,4%, 70% a 79% em coleta, health check de 11,4 a 16,3 s.
- 64KB, 200 threads, MPR 50: 100% com 60 e 120 (heap de 1,2 a 1,3 GB); 220: 37,4% e 13,3 s (threads).
- 64KB, 400 threads, MPR 100: 100% com 60 e 120 (33,6 execuƧƵes/s, contra 26,1 com MPR 50 e 200 threads); 220: 84,8%, atƩ 101 ms.
Espera na fila: 5 s perdeu 3,9% com 150 e 3,3% com 120 e node-faas lento; 10 s, 0 a 2,1% até 180 (0 a 1,6% sem a primeira emulação de 6 GB); 20 s gerou os erros de banco e de autenticação acima; 30 s, com 300 simultâneas, levou o health check a 32,9 s (11% de sucesso, 81% de falhas por fila e 8% de Read timed out; rodada de 222 s). Este resultado e o de 5 s com 150 simultâneas (89% de sucesso, 11% de falhas por fila) vêm das primeiras rodadas, antes de fixar o heap em 4 GB, e não são diretamente comparÔveis.
Reutilização de conexões ociosas (comportamento do Node.js 20): sem limite, falhas numa faixa de cerca de 2 ms abaixo de 5 s de ociosidade (179 em 4.100 tentativas; nenhuma falha em 2.700 tentativas com pausas fixas entre 3,9 e 5 s) e, com travamentos de cerca de 0,9 s, a partir de 4,5 s. Limite de 4 s: nenhuma falha em 6.800 tentativas sem travamento, mas travamentos de 1,5 s ou mais ainda falharam. Limite de 2 s: travamentos de até 2,9 s sem falhas. O ambiente local (Node.js 24, que mantém a conexão 1 s além do anunciado) não reproduziu o problema em 84 execuções.
Resultado: nenhuma execução ficou presa indefinidamente, ao contrÔrio das 1.18.1 a 1.18.3.
O que não foi medido
- Produção: runtime 1.x, vÔrias réplicas, vÔrios tenants por pod, max_connections, pools por tenant fora do padrão, base de memória real e conexões longas sob carga.
- Heaps reais de 6 e 8 GB no limite; 64KB com 6 e 8 GB; limite de CPU de 2 núcleos (a média de 2,1 e o pico de 4,8 jÔ o passam); memória fora do heap e OOMKilled.
- Threads diferentes de 130, 200, 270 e 400; MPR acima de 150; MPR 100 com 270 threads e nas rodadas por faixa de heap; espera de 11 a 14 s; 128KB e 256KB; -XX:+ExitOnOutOfMemoryError; os demais parâmetros sob carga e o APP_HTTPCLIENT_*.
- CabeƧalhos de resposta grandes com 64KB; /faas/run; chamadas de volta paralelas; chegada contĆnua de requisiƧƵes numa lentidĆ£o (testes em ciclo fechado, atĆ© cerca de 4 chamadas de volta simultĆ¢neas; o proxy de atraso nĆ£o ocupou worker do node-faas nem thread de chamada de volta): funƧƵes lentas ou com muitas chamadas ao Low Code podem esgotar threads e conexƵes antes do medido.
- Probes no Kubernetes real: só o tempo do readiness, com sondagem sequencial. Com falta de memória, travamentos de 2 a 16 s; de 2 a 7 sondagens por nĆvel passaram de 1 s (timeout do liveness do template) e de 5 a 47 nĆ£o retornaram 200; reinĆcio pelo liveness possĆvel, nĆ£o testado.
Os números são de um ambiente de desenvolvimento e servem como referência de comportamento, não de capacidade de produção.

Este documento pressupõe que a atualização estÔ sendo feita da versão 1.18.3 para a 1.18.4. Caso esse não seja o seu cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão atualmente instalada no ambiente até alcançar a versão 1.18.3.
š³ Imagens Docker
Utilize a imagem abaixo, conforme o ambiente:
Run2biz
Esta versão não exige migração de dados e não requer atualização do FaaS.
As novas variÔveis (FAASCLIENT_HTTP_* e APP_HTTPCLIENT_*) têm padrão; nenhuma é obrigatória. Recomenda-se:
- FunƧƵes FaaS com mais de 90 s sem resposta: configurar FAASCLIENT_HTTP_READTIMEOUTMS antes do deploy (MudanƧas de comportamento).
- Ajustar o timeout do componente de entrada (Kong, OpenShift Route ou ingress-nginx), se funƧƵes acionadas pelo navegador puderem demorar mais (Timeouts da cadeia de entrada).
- Revisar os health checks (Health checks).
- Revisar heap, threads e cabeçalho conforme Parametrização por faixa de heap, mesmo sem uso intenso de FaaS (ver Resumo para a infraestrutura). O risco de falta de memória existe desde a 0.7.4; voltar para a 1.18.3 não o elimina e traz de volta o travamento.
- Remover FAASCLIENT_DEFAULTCONNECTION_CONNECTIONTIMEOUT do ConfigMap, se existir (não é lida desde a 1.8.7).
- Após o deploy, conferir as linhas FaaS HTTP client: ... e REST HTTP client: ... sem WARN; a segunda só aparece após uma busca de token (Como verificar os valores em uso).
- Alterações posteriores no ConfigMap só valem após novo rollout (Exemplo de ConfigMap).
Ambientes com imagem corrigida manualmente a partir da 1.18.3 (tag não oficial) devem migrar para a 1.18.4-RELEASE oficial: correção equivalente, com limites configurÔveis, padrões calibrados e reutilização de conexões ociosas limitada.
MudanƧas de comportamento
- Execuções simultâneas no node-faas, por pod: sem limite até a 1.18.0; apenas 2 da 1.18.1 à 1.18.3 (causa do travamento); 50 na 1.18.4.
- Espera por conexão livre: não se aplicava até a 1.18.0; indefinida da 1.18.1 à 1.18.3; 10 s na 1.18.4, depois erro.
- Tempo sem resposta do node-faas: sem limite da 1.8.7 à 1.18.3; 90 s na 1.18.4, depois erro (a função continua no node-faas).
- Busca de token: sem timeout até a 1.18.3; sem limite de buscas simultâneas até a 1.18.0; apenas 2 por pod da 1.18.1 à 1.18.3, com fila indefinida; na 1.18.4, até 50 simultâneas, fila de até 5 s e resposta em até 10 s, depois erro.
Principal mudança percebida: funções FaaS que passam mais de 90 s sem responder passam a falhar no Low Code. Se existirem, configure FAASCLIENT_HTTP_READTIMEOUTMS antes da atualização.
Data: de publicação: 30/09/2026
Esta versão do Low Code Web complementa as correções introduzidas na versão 1.18.2, ampliando a compatibilidade com formatos antigos de configurações gerais da plataforma. A atualização também inclui uma nova migração automÔtica do banco de dados e testes adicionais para garantir maior confiabilidade no carregamento dos Settings.

āļø Correção na recuperação dos parĆ¢metros gerais do Low Code
Corrigido o carregamento das configurações gerais da plataforma (Settings) em ambientes que ainda apresentavam falhas após a atualização para a versão 1.18.2. O ajuste amplia o reconhecimento de formatos antigos armazenados na coluna general da tabela settings, evitando erros que poderiam afetar operações comuns da plataforma, como consultas de objetos de negócio, registro de logs, autenticação e inicialização da aplicação.
O que foi corrigido:
- Leitura compatĆvel com diferentes formatos antigos: o conversor GeneralSettingsConverter passou a reconhecer arrays que contenham exatamente um objeto de configuraƧƵes, mesmo quando os demais elementos forem nulos ou textos. Isso contempla formatos como [null, {...}], ["<texto>", {...}] e [{...}], permitindo recuperar corretamente as configuraƧƵes armazenadas.
- Tratamento de valores vazios: valores como null, [] e [null], inclusive quando contêm espaços em branco, passam a ser interpretados como ausência de configurações gerais, em vez de provocar falhas durante a leitura.
- Validação de formatos invÔlidos: arrays que não correspondam aos formatos previstos, como aqueles que contêm mais de um objeto de configurações, continuam sendo rejeitados com erro. Isso evita que dados realmente invÔlidos sejam aceitos silenciosamente.
- Nova migração para normalização dos dados: foi adicionada a migração 20260930-normalize-general-settings-legacy-arrays, executada automaticamente pelo Liquibase durante a inicialização da aplicação. Ela converte os formatos antigos de arrays para objetos JSON simples e limpa os arrays vazios, como [] e [null]. Registros com JSON invÔlido são ignorados com a emissão de um aviso, sem interromper a migração. O processo é idempotente: registros que jÔ estão no formato correto não são alterados.
- Ampliação dos testes automatizados: os testes do conversor foram atualizados para contemplar os formatos [null, {...}] e [{...}], valores vazios com e sem espaços e a rejeição de arrays com mais de um objeto. Isso ajuda a garantir que os diferentes cenÔrios sejam tratados corretamente.
Observação técnica
As migrações 20260418-add-log-metrics e 20260928-normalize-general-settings não foram alteradas. Como jÔ foram aplicadas em ambientes atualizados, modificar seu conteúdo poderia invalidar o checksum registrado pelo Liquibase e impedir a inicialização da aplicação.
A correção foi implementada por meio de uma nova migração, executada após as anteriores, inclusive em instalações novas.

As orientações abaixo consideram a atualização da versão 1.18.2 para a 1.18.3. Caso o ambiente esteja em uma versão anterior, siga as orientações das releases intermediÔrias, partindo da versão atualmente instalada até chegar à versão 1.18.2.
- Parâmetros de configuração: esta versão não introduz novos parâmetros.
- FaaS: não é necessÔrio atualizar o FaaS nesta versão.
- Migração de dados: a atualização aplica automaticamente o changeset 20260930-normalize-general-settings-legacy-arrays durante a inicialização da aplicação.
š³ Imagens Docker
Utilize a imagem abaixo, conforme o ambiente:
Cloud4Biz
A migração normaliza a coluna general da tabela settings nos registros que contêm os formatos antigos de arrays. Os demais dados são preservados, e registros com JSON invÔlido são ignorados com a emissão de um aviso. Não é necessÔria nenhuma ação manual para executar a migração. Ambientes em que a coluna general jÔ tenha sido corrigida manualmente não serão afetados, pois os valores que jÔ estão no formato de objeto JSON simples permanecem inalterados.
Data: de publicação: 28/09/2026
Esta versão do Low Code Web traz melhorias na leitura e no gerenciamento das configurações gerais da plataforma, garantindo maior compatibilidade com dados de versões anteriores e mais confiabilidade na recuperação das configurações vigentes.

āļø Correção no carregamento das configuraƧƵes gerais (Settings)
Corrigido o carregamento das configurações gerais da plataforma em ambientes que possuem dados gravados em formatos antigos. A atualização também garante que o sistema identifique corretamente o registro de configuração mais recente, evitando a utilização de informações desatualizadas.
O que foi corrigido:
- Compatibilidade com formatos antigos: o conversor GeneralSettingsConverter foi ajustado para reconhecer o formato legado utilizado por versƵes anteriores da plataforma. Quando identifica esse formato, o sistema extrai corretamente o objeto de configuraƧƵes, permitindo a leitura dos dados existentes.
- Tratamento de configurações vazias: valores vazios, como [] e [null], passam a ser interpretados como ausência de configurações, sem provocar falhas durante o carregamento.
- Normalização dos dados no banco de dados: foi adicionada uma migração automÔtica do Liquibase, identificada como 20260928-normalize-general-settings, que converte os registros armazenados no formato legado para o formato JSON simplificado. Registros com JSON invÔlido são ignorados durante essa migração e geram um aviso, sem interromper o processo.
- Seleção correta da configuração vigente: as consultas utilizadas para carregar e atualizar os Settings passaram a selecionar o registro ativo mais recente, utilizando a ordenação ORDER BY id DESC. Isso evita que ambientes com múltiplos registros antigos sem exclusão utilizem configurações desatualizadas.
- Ampliação dos testes automatizados: foram adicionados testes para validar a leitura de configurações no formato JSON simples, no formato legado, em formatos vazios e em situações com valores invÔlidos. Com isso, o comportamento do conversor é verificado em diferentes cenÔrios.

As orientações abaixo consideram a atualização da versão 1.18.1 para a 1.18.2. Caso o ambiente esteja em uma versão anterior, siga as orientações das releases intermediÔrias, partindo da versão atualmente instalada até chegar à versão 1.18.1.
- Parâmetros de configuração: esta versão não introduz novos parâmetros de configuração.
- FaaS: não é necessÔrio atualizar o FaaS nesta versão.
- Migração de dados: a atualização aplica automaticamente o changeset 20260928-normalize-general-settings durante a inicialização da aplicação.
š³ Imagens Docker
Utilize uma das imagens abaixo, conforme o ambiente:
Cloud4Biz
A migração normaliza a coluna general da tabela settings somente nos registros armazenados no formato legado. Os demais dados são preservados, e registros com JSON invÔlido são ignorados com a emissão de um aviso.
Não é necessÔria nenhuma ação manual para executar a migração.
Data: de publicação: 24/09/2026
Esta versão do Low Code Web traz melhorias de segurança, desempenho e confiabilidade. As atualizações incluem novos controles para restringir componentes de fluxo, otimizações na execução de funções FaaS e correções no tratamento de datas e na conversão de atributos de objetos de negócio.

Veja abaixo as melhorias desta versão
š Configuração para desabilitar componentes crĆticos de fluxo
Agora Ć© possĆvel desabilitar componentes especĆficos dos fluxos do Low Code por meio de uma configuração do ambiente, atendendo a instalaƧƵes com requisitos de seguranƧa mais rigorosos. Um exemplo Ć© o Java Process Builder, que permite executar comandos no sistema operacional do servidor.
Essa evolução, originalmente disponibilizada na versão 1.17.1-STJ, passa a integrar a linha principal do produto a partir desta versão.
O que foi implementado:
- Novo parĆ¢metro de configuração: foi criada uma variĆ”vel de ambiente que permite informar quais tipos de componentes de fluxo devem ser desabilitados. A lista pode conter um ou mais componentes, separados por vĆrgula.
- Remoção dos componentes da paleta de criação: os componentes configurados deixam de aparecer na paleta do editor de fluxos ESI. Dessa forma, não podem ser adicionados durante a criação de novos fluxos nem em novas versões de fluxos existentes.
- Bloqueio dos componentes durante a execução: a restrição também se aplica aos fluxos jÔ salvos ou importados que contenham componentes desabilitados. Ao identificar um desses componentes, o sistema interrompe a execução de forma controlada e registra o motivo no log de erro da instância. Assim, um componente desabilitado não pode continuar sendo executado indiretamente por meio de fluxos antigos ou importados.
- Mensagens de erro traduzidas: a mensagem apresentada quando uma execução é bloqueada respeita o idioma configurado na aplicação, com suporte a português, inglês e espanhol (pt/en/es).
- Configuração independente por ambiente: a lista de componentes desabilitados é carregada na inicialização da aplicação. Isso permite que cada ambiente ou cliente defina quais componentes podem ser utilizados, por meio de suas configurações de deployment.
Como configurar
A variĆ”vel utiliza o nome do tipo do componente, correspondente ao nome simples da classe, e aceita vĆ”rios valores separados por vĆrgula.
Para desabilitar o Java Process Builder, configure:
Para desabilitar mais de um componente, acrescente os nomes na mesma variƔvel:
Comportamento padrão
Quando a variÔvel não é informada ou estÔ vazia, nenhum componente é desabilitado. Portanto, os ambientes existentes não precisam fazer alterações para manter o comportamento atual.
ObservaƧƵes importantes:
- A configuração é avaliada durante a inicialização da aplicação. Para aplicar alterações na lista, é necessÔrio reiniciar a instância.
- O mesmo identificador Ć© utilizado tanto para ocultar o componente na paleta quanto para bloquear sua execução. Isso garante que um componente indisponĆvel na interface tambĆ©m seja impedido de executar.
┠Otimização do desempenho na execução de FaaS
Foi otimizado o processo de execução das funções FaaS, reduzindo o tempo necessÔrio para preparar as chamadas HTTP e evitando o acúmulo de conexões não liberadas.
Antes dessa melhoria, cada execução de FaaS construĆa do zero o cliente HTTP utilizado para chamar o serviƧo. Essa preparação consumia aproximadamente 21 ms por execução. AlĆ©m disso, a conexĆ£o HTTP criada a cada chamada nĆ£o era liberada, fazendo com que os recursos se acumulassem ao longo do tempo.
O que foi implementado:
- Reutilização do cliente HTTP: o cliente HTTP passou a ser construĆdo uma Ćŗnica vez e compartilhado entre as execuƧƵes, eliminando a necessidade de reconstruĆ-lo a cada chamada.
- Manutenção dos dados especĆficos de cada chamada: informaƧƵes que variam entre as execuƧƵes, como o endereƧo do serviƧo e os cabeƧalhos HTTP, continuam sendo definidas individualmente. Dessa forma, a otimização nĆ£o altera o comportamento funcional das chamadas.
- Otimização da autenticação entre serviços: a mesma melhoria foi aplicada ao cliente HTTP utilizado na autenticação entre serviços, reduzindo também o custo de preparação dessas chamadas.
- Eliminação do acúmulo de conexões: com a mudança, deixa de ocorrer o acúmulo de conexões não liberadas a cada execução de FaaS, melhorando a utilização dos recursos da aplicação.
Resultados medidos:
- Tempo de montagem do cliente HTTP: reduziu de 21,2 ms para praticamente zero por execução.
- Tempo mĆnimo de ponta a ponta: a chamada POST /integrations/{name}/faas passou de 33,6 ms para 11,1 ms.
- Uso de recursos: eliminado o acúmulo de conexões não liberadas a cada execução de FaaS.

š Correção de datas e horĆ”rios ao executar regras de negócio
Corrigido um problema que alterava indevidamente valores de data e hora durante a gravação de objetos de negócio que possuem regras de negócio associadas à inclusão ou alteração.
O que foi corrigido:
- Identificação correta dos campos de data e hora: os campos passam a ser identificados com base nos metadados do objeto de negócio. Isso contempla tanto as datas que a regra de negócio apenas repassa quanto aquelas que ela preenche ou modifica.
- Correção centralizada no momento da gravação: a restauração do tipo correto dos valores passou a ocorrer em um único ponto do processo de gravação, abrangendo operações de inclusão e alteração.
- Cobertura dos diferentes caminhos de gravação: a correção atende não apenas às operações realizadas por regras de negócio, mas também às gravações originadas por fluxos ESI e outros caminhos que recebam datas nesse formato.
- Preservação dos valores vÔlidos: a conversão é aplicada somente aos valores que apresentam o formato afetado. Datas recebidas em outros formatos, como as enviadas pelas telas, e valores que jÔ possuem o tipo correto são preservados sem alteração.
Atenção ao fuso horÔrio da JVM
Não altere o fuso horÔrio da JVM de um ambiente que jÔ estÔ em produção como tentativa de contornar esse problema. Em um ambiente configurado com UTC-3, mudar a JVM para UTC não é uma medida segura: os registros jÔ gravados não são modificados, pois representam instantes absolutos, mas a exibição e as novas gravações podem sofrer deslocamentos devido às convenções utilizadas pelo sistema.
A padronização dos fusos em UTC estÔ planejada para uma versão futura, juntamente com a normalização mais ampla do tratamento de datas.
Recomendação para novas instalações
Para novas instalaƧƵes realizadas em um ambiente limpo, recomenda-se configurar a JVM em UTC desde o inĆcio, utilizando:
Essa recomendação é destinada a novas instalações e não deve ser aplicada como alteração de configuração durante a atualização de ambientes existentes.
š Correção de falhas intermitentes na conversĆ£o de atributos
Corrigidas falhas intermitentes que ocorriam durante operações de leitura e gravação de objetos de negócio, relacionadas à conversão de atributos utilizados pela plataforma.
O que foi corrigido:
- Instância independente do conversor YAML: o YamlConverter passou a criar uma nova instância de Yaml a cada conversão, eliminando o compartilhamento de estado entre operações simultâneas.
- Proteção adicional no conversor de listas: a inicialização do ObjectMapper compartilhado no ListConverter também foi ajustada para ser segura em cenÔrios de concorrência, prevenindo o mesmo tipo de problema.
- Testes automatizados de concorrência: foram adicionados testes que reproduzem a falha observada nas versões anteriores e verificam o comportamento esperado após a correção.
- Eliminação da necessidade de contornos nas aplicações consumidoras: com a correção aplicada diretamente na origem do problema, deixam de ser necessÔrios os mecanismos de repetição de leitura e de serialização de gravações que algumas aplicações poderiam ter adotado para contornar as falhas.
Essas mudanças aumentam a confiabilidade das operações com objetos de negócio, reduzindo erros intermitentes causados pela execução simultânea de solicitações.

As orientações abaixo consideram a atualização da versão 1.18.0 para a 1.18.1. Caso o ambiente esteja em uma versão anterior, siga as orientações das releases intermediÔrias, partindo da versão atualmente instalada até chegar à versão 1.18.0.
- Migração de dados: esta versão não exige migração de dados.
- Atualização do FaaS: não é necessÔrio atualizar o FaaS nesta versão.
- Fuso horÔrio da JVM: não altere a configuração durante este deploy. Consulte as orientações da correção de datas e horÔrios descrita nesta release.
š³ Imagens Docker
Utilize uma das imagens abaixo, conforme o ambiente:
Cloud4Biz
š Novo parĆ¢metro de configuração de seguranƧa
Antes de publicar em produção, revise se o ambiente precisa desabilitar algum componente de fluxo.
O parĆ¢metro permite definir quais tipos de componentes devem ficar indisponĆveis na paleta de criação e bloqueados durante a execução.
Configuração | Descrição |
|---|---|
app.security.flow.disabled-element-types | Parâmetro de configuração da aplicação que recebe os tipos de componentes a desabilitar. |
APP_SECURITY_FLOW_DISABLED_ELEMENT_TYPES | Nome da variƔvel de ambiente correspondente, utilizado, por exemplo, em configuraƧƵes do Kubernetes. |
Valor padrão | Lista vazia. Nenhum componente é desabilitado e o comportamento atual é preservado. |
Como definir a variƔvel:
Informe os nomes dos tipos de componentes separados por vĆrgula. Por exemplo:
As variĆ”veis de ambiente seguem as regras de binding relaxado do Spring Boot: os nomes sĆ£o escritos em maiĆŗsculas, os pontos sĆ£o substituĆdos por _ e os hĆfens sĆ£o removidos.
A configuração é carregada na inicialização da aplicação. Portanto, após alterar a lista de componentes desabilitados, reinicie a instância para que a mudança seja aplicada.
Data: de publicação: 10/06/2026
š AtualizaƧƵes do Low Code
Esta versão traz melhorias importantes em desempenho, monitoramento, integração e estabilidade da plataforma, tornando o ambiente mais eficiente e confiÔvel.

š Monitoramento mais completo de execuƧƵes
O sistema passou a registrar informações mais detalhadas sobre execuções, incluindo consumo de memória, tempo de processamento, consultas realizadas e etapas executadas.
š Isso facilita a anĆ”lise de desempenho e a identificação de possĆveis gargalos.
š¤ Integração aprimorada com componentes gerados por IA
Foram adicionados novos recursos para gerenciamento e sincronização de formulÔrios, objetos de negócio e regras.
š O processo de importação ficou mais simples, organizado e com melhor acompanhamento de status e erros.
š Nova tela para anĆ”lise de desempenho
Foi criada uma nova tela para consulta das execuƧƵes com maior consumo de recursos.
Agora Ć© possĆvel visualizar rapidamente:
- Tempo de processamento
- Consumo de memória
- UsuƔrio responsƔvel
- Origem da execução
- Status da operação
š Facilitando investigaƧƵes e anĆ”lises operacionais.
š Melhor controle de inicialização em ambientes distribuĆdos
O processo de inicialização foi otimizado para ambientes com múltiplas instâncias da aplicação.
š Isso reduz processamento duplicado e melhora a estabilidade durante a subida do sistema.
š§¹ Logs mais limpos e organizados
Foram reduzidas mensagens desnecessÔrias durante a compilação e inicialização da aplicação.
š Os registros ficaram mais claros e fĆ”ceis de analisar.
š Relacionamento entre logs de execução
Agora execuƧƵes relacionadas podem ser conectadas entre si, permitindo acompanhar toda a cadeia de processamento de forma mais organizada.
š Isso facilita auditorias e diagnósticos.
š Melhor desempenho dos endpoints seguros
Os endpoints protegidos receberam otimizações que reduzem consumo de memória e melhoram a velocidade de resposta.
AlƩm disso:
- Respostas ficaram mais consistentes
- Tratamento de erros foi aprimorado
- Maior controle sobre respostas muito grandes
š Tudo isso mantendo os mesmos nĆveis de seguranƧa.
┠Mais eficiência em consultas de objetos de negócio
As consultas originadas por integrações e fluxos passaram a consumir menos memória e registrar informações de execução de forma mais eficiente.
š Otimização de relacionamentos em consultas
Melhorado o carregamento de relacionamentos em objetos de negócio.
š Consultas com grande volume de dados passaram a ter melhor desempenho.

šŖ Correção na geração de cookies de autenticação
Resolvido um problema que fazia o sistema gerar informações duplicadas relacionadas ao token de autenticação.
āļø Correção na execução de regras de negócio
Corrigido um erro que impedia a execução correta de determinadas regras acionadas por URL.
š As regras agora sĆ£o localizadas e executadas corretamente.
š Correção na criação de versƵes de formulĆ”rio
Ajustado um comportamento que criava novas versões de formulÔrios mesmo quando nenhuma alteração havia sido realizada.
š Agora novas versƵes sĆ£o geradas apenas quando realmente necessĆ”rio.
šļø Correção na exclusĆ£o de abas de formulĆ”rio
Resolvido um problema que impedia a remoção definitiva de abas no desenho de formulÔrios.
š As alteraƧƵes agora sĆ£o salvas corretamente.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.17.2 para a 1.18.0.
- Caso esse não seja o seu cenÔrio, siga as Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a versão 1.17.2.
š³ Imagens Docker
ā ļø Importante
Para que as implementações do card #13553 funcionem, é necessÔrio atualizar o FaaS para a versão 1.7.0-RELEASE ou superior.
Novos parâmetros de configuração (revisar antes de produção):
As variĆ”veis de ambiente (ex.: Kubernetes) seguem a binding relaxada do Spring Boot: nome em MAIĆSCULAS, pontos viram _ e hĆfens sĆ£o removidos.
- app.queries.jwe-inline-max-bytes (env: APP_QUERIES_JWEINLINEMAXBYTES) ā teto de tamanho da resposta JWE inline (padrĆ£o 32 MB).
- app.log.sql-metrics-enabled (env: APP_LOG_SQLMETRICSENABLED) / app.log.memory-profiling-enabled (env: APP_LOG_MEMORYPROFILINGENABLED) ā instrumentação de log ligada por padrĆ£o (registra tempo decorrido, bytes alocados e SQL por execução). Mantida ativa; ajustĆ”vel por ambiente.
Data: de publicação: 09/06/2026
Esta versão traz ajustes importantes para melhorar integrações, controle de acesso e consistência das informações no sistema.

- š Correção no tratamento de campos de data
Corrigido um problema que podia afetar o funcionamento de colunas do tipo data em objetos de negócio.
š Agora sĆ£o processadas e exibidas de forma mais consistente, evitando erros e divergĆŖncias nas informaƧƵes.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.17.1 para a 1.17.2.
- Caso esse não seja o seu cenÔrio, siga as Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a versão 1.17.1.
š³ Imagens Docker
Data: de publicação: 04/05/2026
Esta versão traz ajustes importantes para melhorar integrações, controle de acesso e consistência das informações no sistema.

- š Correção no retorno de relacionamentos em objetos de negócio
- Corrigido um problema onde o recurso de criar ou atualizar objetos de negócio createOrUpdate não retornava corretamente os dados relacionados.
- š Correção no controle de permissƵes do Core
- Ajustado um erro onde o sistema não estava respeitando corretamente as configurações de acesso definidas para funcionalidades do Core.
- A aplicação não estava obedecendo às configurações de:
- APP_SECURITY_COREFEATURES_ACCESSROLES_{IDENTIFICADOR DA FUNCIONALIDADE}
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.17.0 para a 1.17.1.
- Caso esse não seja o seu cenÔrio, siga as Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a versão 1.17.0.
š³ Imagens Docker
Data: de publicação: 10/04/2026

- š« Controle de formulĆ”rio via parĆ¢metro
- Para pÔginas de formulÔrio Low Code renderizadas via iframe, todos os controles do formulÔrio são desabilitados quando for enviado o query param disabled=true
- ┠Atualização do AngularJS
- O sistema foi atualizado para uma versão mais recente NES v1.9.7, trazendo mais estabilidade e compatibilidade. Foi feito o tratamento de rejeição de promises e tratamento do .success no $http
- š” Novo modelo de carregamento de dados em tempo real
- Criado endpoint que retorna dados de objeto de negócio com SSE;
Foi adicionado o endpoint:
Que retorna dados de forma incremental via Server-Sent Events (SSE).
Funcionamento
- Executa a query em streaming direto do banco (ResultSet);
- Envia os dados em lotes dinâmicos baseados em tamanho (bytes), não por quantidade fixa de registros;
- Eventos suportados:
- start: inĆcio;
- data: lote de registros;
- end: finalização;
- error: erro ou limite excedido.
- O cancelamento ocorre automaticamente ao fechar a conexão (client abort).
- š Consumo de dados mais eficiente no front-end
- Adequado o SDK JavaScript para ler dados de objeto de negócio com SSE.
Foi adicionado o mĆ©todo listWithSse(params, onDataChunk) na classe BusinessObject do SDK, para consumo assĆncrono do endpoint /{project}/{business-object}/sse via SSE.
Funcionamento
- O método usa a infraestrutura _getSse(...) do AxiosTransaction para abrir a conexão SSE e processar os eventos do backend;
- Os eventos data recebidos sĆ£o acumulados em um array interno e a operação Ć© concluĆda quando o evento end Ć© recebido;
- Retorno do mƩtodo:
- promise: resolve com os dados completos ao final
- abort(): encerra a conexão SSE manualmente
Recursos Adicionais
- Suporte opcional ao callback onDataChunk, executado a cada lote recebido;
- Controle de sequência dos eventos por lastEventId, com validação para evitar duplicidade ou quebra de ordem;
- Compatibilidade com ambiente com JWE habilitado, incluindo decrypt dos lotes quando necessƔrio.
BenefĆcios
- Permite consumir consultas grandes de forma incremental no frontend;
- Reduz a necessidade de resposta Ćŗnica e imediata;
- MantĆ©m suporte a cancelamento explĆcito da operação pelo cliente.
- š Mais tolerĆ¢ncia de seguranƧa no tempo de validação
- Aumentado o tempo de tolerância na validação de segurança, evitando erros por diferença de horÔrio entre sistemas.
O valor default da variƔvel APP_SECURITY_JWE_ANTIREPLAY_SKEWSECONDS foi alterado de 30 segundos para 300 segundos (5 minutos).
- Esse parâmetro define a margem de tolerância de tempo usada na validação do campo ts do payload JWE, permitindo pequenas diferenças de relógio entre cliente e servidor; fora dessa faixa, a mensagem é rejeitada com erro de timestamp invÔlido.
- š Geração de ID mais segura e rĆ”pida
- Melhorado mecanismo de geração de PK de objeto de negócio;
Foi adotado o JdbcTemplate para definição do valor de PK de objetos de negócio baseada em sequences.
A mudanƧa trouxe melhorias imediatas:
- Fim dos vazamentos de conexão (abertura/fechamento seguro com o banco);
- TransaƧƵes mais seguras (ID respeita a mesma transação; em rollback o ID nĆ£o se perde āsoltoā);
- Consultas mais rÔpidas (sem depender de pré-compilação);
- Resolução facilitada (falhas viram exceções padronizadas, com suporte mais claro).
- š¬ Melhor controle ao restaurar tickets
Adicionados novos parâmetros que melhoram o controle de comentÔrios e visualização ao restaurar tickets.
- Inclusão dos atributos commentMode e view na chamada ServiceRequestIncidentRepository.restoreRequest do dynamic-task-controller.js .
- ⳠControle de tempo nas integrações
Agora as integraƧƵes com ITSM possuem limite de tempo para resposta, evitando travamentos.
- Implementado timeout de conexão e response nas chamadas ao ITSM;
- Implementação de readTimeout e connectionTimeout nas integrações do Low Code com o ITSM.
- š Melhor uso de conexƵes com banco de dados
O sistema agora utiliza melhor as conexƵes com o banco, deixando tudo mais rƔpido e estƔvel.
- Otimizado o uso de conexões nas operações BD de objeto de negócio;
- Melhoria nos mƩtodos da classe DataManager para aproveitar ao mƔximo as conexƵes de banco de dados.

- š Correção no retorno de ID
- Corrigido erro onde, ao criar um registro em objeto de negócio, o sistema não retornava o PK gerado corretamente.
- š Correção em grids de formulĆ”rio
- Ajustado problema onde a grid padrão business-object-list não traziam corretamente os relacionamentos;
- 𧾠Correção ao salvar formulÔrios
Resolvido erro que impedia o envio de formulƔrios dentro do Centro de Experiencia em alguns cenƔrios:
- Quando havia erro na configuração de template de formulÔrios, o submit emitia erro no console e não efetivava a gravação.
- šļø Correção na criação de estrutura no banco
Ajustado problema que impedia a aplicação de regras obrigatórias (campos obrigatórios) ao importar dados.
- O histórico de alterações de nulidade de colunas de tabelas de BD agora é criado na importação de pacotes;
- DDL de objeto de negócio com SET NOT NULL agora é executada.
- š Correção em relatórios antigos
Corrigido erro em relatórios mais antigos que não estavam enviando todas as informações necessÔrias.
- Para relatórios criados nas primeiras versƵes da integração com Stimulsoft, variĆ”veis nĆ£o marcadas com āViewerā agora sĆ£o enviadas ao backend.
- š Correção de fuso horĆ”rio (timezone)
Ajustado o tratamento de data e hora, garantindo que:
- horƔrios sejam exibidos corretamente
- diferenças de fuso não causem erros
Foram revisadas e corrigidas consultas e atualizações de dados de objetos de negócio contendo timestamp (com e sem timezone):
- Ao carregar o formulƔrio Low Code, o sistema armazena LOWCODE_CONFIG.timeZone e LOWCODE_CONFIG.utcOffset com base no cadastro do usuƔrio no Frontmanager;
- Caso não existam, o sistema obtém timeZone e utcOffset do navegador;
- A cada requisição, o frontend envia nos headers:
- Time-Zone com LOWCODE_CONFIG.timeZone
- UTC-Offset com LOWCODE_CONFIG.utcOffset
- Foi criado o tipo de coluna Timestamp TZ, garantindo armazenamento consistente com time zone e offset:
- O backend converte para UTC considerando o time zone informado no header e grava como Timestamp UTC no banco;
- O tipo de coluna Datetime foi renomeado para Timestamp UTC:
- Para esse tipo, o backend recebe a data/hora do navegador e não faz conversão
- š½ Correção no campo de seleção mĆŗltipla
Corrigido problema no campo de seleção onde:
- não aparecia opção de remover item;
- não mostrava corretamente as descrições.
O componente input.select agora traz o Ćcone de exclusĆ£o e a descrição quando a propriedade āSeleção mĆŗltiplaā estĆ” habilitada.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.16.6 para a 1.17.0.
- Caso esse não seja o seu cenÔrio, siga as Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a versão 1.16.6.
š³ Imagens Docker
Data: de publicação: 01/03/2026

Agora a pÔgina da tarefa consegue buscar e carregar corretamente as informações da solicitação, sem perder dados ou ficar desatualizada.
- Recuperado $rootScope.request na pƔgina de tarefa.

š§© Foram corrigidos:
- Corrigido um problema que impedia visualizar corretamente os registros (logs) de pacotes;
- Corrigido um erro que acontecia ao tentar apagar 1ª VariÔvel do Fluxo de Integração do Low Code;
- Ajustado um problema em que os relatórios Stimulsoft não seguiam o idioma escolhido no Frontmanager;
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.16.3 ou 1.16.4 para a 1.16.6.
- Caso esse não seja o seu cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão atualmente instalada no ambiente até alcançar a versão 1.16.3 ou 1.16.4.
š³ Imagens Docker
Data: de publicação: 31/01/2026

𧩠Corrigido o erro no upload do repository de objeto de negócio
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.16.2 para a 1.16.3.
- Caso esse não seja o cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão do ambiente até alcançar a versão 1.16.2.
š³ Imagens Docker
Data: de publicação: 19/01/2026

Implementado multi-seleção e botão de ação na grid da diretiva business-object-list
- AƧƵes globais aparecem na barra de aƧƵes do grid (por exemplo, ao lado do botĆ£o āCriarā). Elas podem operar sobre uma seleção mĆŗltipla (ex.: Exportar) ou nĆ£o exigir seleção (ex.: Importar).

- Foram criadas as seguintes propriedades na diretiva business-object-list:
Propriedade | Tipo | Descrição | Uso prÔtico |
|---|---|---|---|
is-checkbox | Boolean | Ativa a exibição de checkboxes no grid, permitindo a seleção de um ou mais registros. | Usar quando houver ações em lote, como exportação ou exclusão. |
checked-attribute | String | Define o atributo do item usado como identificador único da seleção. | Normalmente utiliza-se id ou uuid. |
selected-items | Array | Lista contendo apenas os identificadores dos itens selecionados. | Ideal para chamadas ao backend baseadas em IDs. |
selected-models | Array | Lista com os objetos completos dos registros selecionados. | Usado quando a ação precisa de mais dados do item. |
additional-actions | Array | Conjunto de aƧƵes globais customizadas exibidas na barra do grid. | Permite criar aƧƵes como Exportar, Importar e Processar. |
 |  |  |  |
- Estrutura de uma ação customizada utilizada em additionalActions, incluindo seus atributos e o contexto (ctx) recebido no callback onClick.
Atributo | Tipo | Descrição | Observações / Conteúdo |
|---|---|---|---|
label | String | Texto exibido para o usuÔrio na ação. | Exemplo: 'Exportar', 'Importar', 'Processar'. |
icon | String | Classe CSS do Ćcone exibido junto ao rótulo da ação. | Normalmente utiliza classes do Font Awesome, ex.: 'fa fa-download'. |
requireSelection | Boolean | Indica se a ação exige pelo menos um item selecionado no grid. | Quando true, a ação só fica habilitada se houver seleção. |
onClick | Function | Função executada ao clicar na ação. | Recebe um objeto ctx com informações do grid e da seleção. |
ctx.selectedItems | Array | Lista dos identificadores (ex.: id ou uuid) dos itens selecionados. | Usa o atributo definido em checked-attribute. |
ctx.selectedModels | Array | Lista dos objetos completos selecionados no grid. | Evita a necessidade de nova consulta ao backend. |
ctx | Object | Contexto completo fornecido à ação. | Pode conter outros metadados do grid, dependendo da implementação. |
Exemplo de utilização no javascript:
Implementado botão de ação para cada item da grid da diretiva business-object-list
- Ações por linha aparecem junto de cada item do grid. Elas executam operações contextuais sobre um único registro, sem depender de seleção múltipla (ex.: abrir detalhes, duplicar, executar ação customizada).

- Foi criada a propriedade row-additional-actions na diretiva business-object-list, contendo o array de aƧƵes para cada item.
- Estrutura de uma ação customizada utilizada em rowAdditionalActions (row-additional-actions na diretiva), incluindo seus atributos e o contexto (ctx) recebido no callback onClick:
Atributo | Tipo | Descrição | Observações / Conteúdo |
|---|---|---|---|
label | String | Texto exibido para o usuÔrio na ação. | Exemplo: 'Exportar', 'Importar', 'Processar'. |
icon | String | Classe CSS do Ćcone exibido junto ao rótulo da ação. | Normalmente utiliza classes do Font Awesome, ex.: 'fa fa-download'. |
onClick | Function | Função executada ao clicar na ação. | Recebe um objeto ctx com informações do grid e da seleção. |
visible | Function | Função que determina se a ação Ć© visĆvel. | Recebe um objeto ctx com informaƧƵes do grid e da seleção. |
ctx.model | Object | Item selecionado. |  |
ctx | Object | Contexto completo fornecido à ação. | Pode conter outros metadados do grid, dependendo da implementação. |
- Exemplo de utilização em JavaScript:
Tratar original Url com http ou https no envelope JWE
- Tratamento do atributo originalUrl do envelope JWE quando a URL jƔ contƩm http/https ou o contexto do Low Code.

𧩠Corrigido a exibição do painel esquerdo da tela CRUD de projetos
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização esteja sendo realizada da versão 1.16.1 para a 1.16.2.
- Caso este não seja o seu cenÔrio, siga as orientações das Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a 1.16.1, antes de aplicar esta atualização.
š³ Imagens Docker
Data: de publicação: 08/01/2026

𧩠Tratamento de query parameters na pÔgina de tarefa Ajuste para tratar corretamente os parâmetros ticketId e workItemId na pÔgina de tarefa.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupƵe que a atualização esteja sendo realizada da versĆ£o 1.16.0 ā 1.16.1.
- Caso este não seja o cenÔrio do ambiente, siga as orientações das Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a 1.16.0, antes de aplicar esta atualização.
š³ Imagens Docker
- registry.cloud4biz.com/deployscdi/hyper-lowcode:1.16.1-RELEASE nexus.centralit.io:9091/hyper-lowcode:1.16.1-RELEASE
Data: de publicação: 31/12/2025 

šCriptografia JWE de ponta a ponta
- Foi implementada criptografia ponta a ponta nas requisições entre frontend e API, utilizando o padrão JWE (RFC 7516).
- A partir desta versão, os dados deixam de trafegar em JSON aberto e passam a ser criptografados no cliente, sendo decriptados apenas pela aplicação de destino.
- A solução utiliza chaves públicas expostas via /.well-known/jwks.json, geração de chaves efêmeras por requisição e criptografia bidirecional (request/response), garantindo maior confidencialidade, integridade dos dados e segurança contra inspeção de payload.
Funcionamento resumido
- O backend disponibiliza sua chave pública por meio de um endpoint padrão /.well-known/jwks.json
- Antes de cada requisição, o frontend:
- 1 - Gera uma chave criptogrÔfica efêmera (temporÔria).
- 2 - Monta um envelope contendo mƩtodo, URL, payload, identificadores e metadados.
- 3 - Criptografa todo esse conteĆŗdo usando JWE com a chave pĆŗblica do servidor.
- A requisição é enviada contendo apenas:
- Um campo jwe, com o conteĆŗdo criptografado.
- A chave pública efêmera do cliente, necessÔria para a resposta.

š§©SDK do Low Code e Stimulsoft com suporte a JWE
O SDK do Low Code é uma abstração da implementação do FaaS que pode ser utilizada no Javascript.
O SDK do Low Code passou a tratar criptografia JWE de forma transparente no consumo de:
- Objetos de Negócio
- Componentes Query
- FaaS
- ESI
Exemplos de utilização do SDK:




š API Key para acesso Ć API
- Com a implementação da criptografia ponta a ponta nas requisições entre frontend e backend, os dados passaram a ser trafegados exclusivamente no padrão JWE (RFC 7516). Dessa forma, não é mais permitido o consumo da API do Low Code utilizando JSON aberto.
- Entretanto, a adoção desse modelo inviabiliza o acesso direto à API por clientes externos que não implementam JWE. Para atender esse cenÔrio, foi criado um mecanismo de autenticação via API Key para os endpoints de Objetos de Negócio, Componentes Query, FaaS e ESI.
- A partir desta versão, os administradores devem criar uma ou mais API Keys por projeto e fornecê-las aos clientes que irão consumir a API do Low Code. A criação da API Key é realizada na tela de manutenção de projeto, e a chave é exibida apenas no momento da criação, em uma janela popup.
- Por motivos de segurança, a API Key não pode ser visualizada novamente após a criação. Portanto, é indispensÔvel que a chave seja copiada e armazenada com segurança antes de ser compartilhada com o cliente.
Como criar uma API-Key ou X-API-Key


O Cadastro da API Key possui:
- Um Prefixo e sufixo utilizados para identificação;
- Uma data de expiração, permitindo controle do perĆodo de validade, e os acessos podem ser configurados de forma granular por tipo de recurso.
- PermissƵes granulares por tipo de recurso
Recursos com permissão configurÔvel
Ć possĆvel definir permissƵes especĆficas para os seguintes recursos:
- Objeto de Negócio: Leitura, Criação, Alteração, Exclusão
- Componente Query: Execução
- FaaS: Execução
- Fluxo (ESI): Execução

Uso da API Key
Para consumir os endpoints protegidos, o cliente deve informar a API Key no header da requisição REST, utilizando um dos seguintes nomes de cabeçalho:
O valor informado no header deve corresponder à API Key vÔlida configurada no projeto. Requisições sem o header ou com chave invÔlida serão rejeitadas pela aplicação.
š CRUD de Projeto via API
A partir da versĆ£o 1.16.0, Ć© possĆvel:
- Listar;
- Criar;
- Alterar;
- Remover projetos atravĆ©s de API especĆfica no Low Code.

š CRUD de Regra de Negócio via API
A partir da versĆ£o 1.16.0, Ć© possĆvel:
- Listar;
- Criar;
- Alterar;
- Remover regras de negócio atravĆ©s de API especĆfica no Low Code.

šļø CRUD de Objeto de Negócio via API
A partir da versĆ£o 1.16.0, Ć© possĆvel:
- Listar;
- Criar;
- Alterar;
- Remover oĀ Ā objetos de negócio atravĆ©s de API especĆfica no Low Code.

š Endpoint para SQL SELECT
Foi criado o endpoint para execução de SQLs de SELECT de objeto de negócio:

āļø Endpoint para SQL UPDATE/DELETE
Foi criado o endpoint para execução de SQLs de UPDATE e DELETE de objeto de negócio:

šTemplates ITSM em FormulĆ”rios
Foi disponibilizada uma opção no cadastro de formulÔrios para criar templates de portfólio no ITSM.
Essa opção só estĆ” disponĆvel se a variĆ”vel de ambiente abaixo estiver parametrizada:


ā PermissĆ£o de CRUD via API Key
AtravĆ©s da propriedade āAPI de cadastroā o registro de API Key na tela de gerenciamento de projetos permite habilitar ou desabilitar o acesso aos endpoints de:
- CRUD de projeto;
- Regra de negócio;
- Objeto de negócio.

š¼ļøImagens
šORIENTAĆĆES PARA DEPLOY
Este documento pressupõe que a atualização estÔ sendo feita da versão 1.15.x para a 1.16.0. Caso esse não seja o cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão do ambiente até alcançar a versão 1.15.x.
Para a correta utilização dos recursos de criptografia ponta a ponta (JWE) e API Key, é obrigatório configurar previamente as variÔveis de ambiente relacionadas à segurança da aplicação.
ā ļø Importante
A aplicação não inicializa sem a configuração correta das variÔveis de segurança.
šConfiguração de API Key
A partir desta versão, o acesso aos endpoints de Objetos de Negócio, Componentes Query, FaaS e ESI por clientes externos requer o uso de API Key, quando a criptografia JWE estiver habilitada.
As seguintes variƔveis de ambiente devem ser configuradas
- Alterar o PEPPER invalida todas as API Keys existentes.
šConfiguração de Criptografia JWE
Quando habilitada, a criptografia JWE passa a ser obrigatória para todas as requisições entre frontend e backend.
As seguintes variƔveis de ambiente devem ser configuradas:
ā ļø OBSERVAĆĆES IMPORTANTES
- Todas as chaves e valores sensĆveis devem ser armazenados de forma segura (ex.: secrets manager, variĆ”veis de ambiente protegidas).
- AlteraƧƵes em chaves criptogrƔficas ou API Keys podem impactar integraƧƵes existentes.
- Recomenda-se planejar a rotação de chaves utilizando mĆŗltiplos kids durante perĆodos de transição.
- Sem a configuração correta dessas variÔveis, a aplicação não inicializarÔ corretamente.
Exemplo de configuração:
š ļø Utilização do Gerador de Configuração de SeguranƧa
Para facilitar a configuração das variÔveis de ambiente relacionadas à API Key e à criptografia ponta a ponta (JWE), foi disponibilizado o utilitÔrio:
Ele estĆ” disponĆvel no https://nexus.centralit.ioā atualmente na versĆ£o 1.0.2:

Este utilitÔrio deve ser executado durante o processo de implantação da aplicação, gerando automaticamente as chaves criptogrÔficas e os valores necessÔrios para configuração dos ambientes.
ā”ļø Execução
A execução do gerador requer Java JRE 11 ou superior, e pode ser feita de duas formas:
- Em mƔquina local, por meio do comando:
- Em container, por meio do comando:
O parâmetro optional-key-name é opcional e pode ser utilizado apenas para identificação do contexto de geração. Ao ser executado, o utilitÔrio retorna as variÔveis de ambiente para configuração dos containers:
·        Configuração de segurança do Low Code (JWE e API Key);
Ā·Ā Ā Ā Ā Ā Ā Ā Ā Chave X-Api-Key para ITSM, Events, Agility backend e FaaS.
Essas variÔveis podem ser copiadas diretamente para a definição do container ou para o gerenciador de secrets utilizado no ambiente:
- Low Code
- ITSM
- Events
- Agility Backend
- FaaS (ConfigMap)
ā ļø OBSERVAĆĆES IMPORTANTES
- As chaves geradas contĆŖm informaƧƵes sensĆveis e devem ser armazenadas de forma segura.
- Recomenda-se executar o gerador sempre que houver necessidade de rotação de chaves ou criação de uma nova configuração de segurança.
ā Compatibilidade de versƵes e configuração dos serviƧos integrados
Para o correto funcionamento da autenticação via API Key e da criptografia ponta a ponta (JWE), Ć© obrigatório que os serviƧos integrados estejam nas seguintes versƵes mĆnimas:
ServiƧo | VersĆ£o mĆnima |
|---|---|
ITSM | 1.9.20 |
Events | 1.4.0 |
Agility Frontend | 1.2.2 |
Agility Backend | 1.9.1 |
FaaS | 1.5.0 |
Além da compatibilidade de versão, os serviços FaaS, Events e ITSM devem ser configurados para utilizar a API Key do Low Code, gerada pelo utilitÔrio security-config-generator.
- Configuração no ITSM
O ITSM deve receber a API Key por meio da seguinte variƔvel de ambiente:
- Configuração no Events
O Events deve receber a API Key por meio da seguinte variƔvel de ambiente:
- Configuração no Agility backend
O Agility backend deve receber a API Key por meio da seguinte variƔvel de ambiente:
- Configuração no FaaS
O FaaS deve ser configurado com a API Key no arquivo ConfigMap:
Onde <API_KEY_MASTER> corresponde ao valor gerado pelo security-config-generator e utilizado para autenticação entre os serviços.
ā ļø OBSERVAĆĆES IMPORTANTES
- A API Key configurada nesses serviƧos deve ser a mesma utilizada pelo Low Code.
- A ausência ou configuração incorreta dessas variÔveis resulta em falhas de autenticação e indisponibilidade das integrações.
- Recomenda-se validar essas configurações após o deploy, antes da liberação do ambiente para uso.
Data: de publicação: 08/01/2026

𧩠Tratamento de query parameters na pÔgina de tarefa Ajuste para tratar corretamente os parâmetros ticketId e workItemId na pÔgina de tarefa.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupƵe que a atualização esteja sendo realizada da versĆ£o 1.15.4 ā 1.15.5.
- Caso este não seja o cenÔrio do ambiente, siga as orientações das Notas de Release anteriores, partindo da versão atualmente instalada até alcançar a 1.15.4, antes de aplicar esta atualização.
š³ Imagens Docker
- registry.cloud4biz.com/deployscdi/hyper-lowcode:1.15.5-RELEASE
- nexus.centralit.io:9091/hyper-lowcode:1.15.5-RELEASE
Data: de publicação: 30/12/2025

𧩠SQL mais esperto Corrigido um erro que fazia o sistema entender errado os tipos de parâmetros usados nos SQLs dos objetos de negócio.
šļø Atualização sem erro Ajustado um problema que causava falha na leitura do DDL (estrutura do banco) na hora de atualizar um objeto de negócio.
āORIENTAĆĆES PARA DEPLOY
- Este documento pressupõe que a atualização estÔ sendo feita da versão 1.15.1, 1.15.2 ou 1.15.3 para a 1.15.4. Caso esse não seja o cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão do ambiente até alcançar a versão 1.15.1, 1.15.2 ou 1.15.3.
š¼ļøImagens
- Nexus: nexus.centralit.io:9091/hyper-lowcode:1.15.4-RELEASE
- Portus: registry.cloud4biz.com/deployscdi/hyper-lowcode:1.15.4-RELEASE
Data: de publicação: 19/12/2025 

š ļø CorreƧƵes importantes
- šļø Campo de data corrigido O campo datasearch agora nĆ£o aceita mais datas invĆ”lidas, evitando erros inesperados.
- šØ Tela de erro de instalação melhorada Agora a tela mostra:
- š Detalhes do erro (stack trace)
- š BotĆ£o para atualizar a pĆ”gina š Facilita muito identificar e resolver problemas.
- š Relacionamentos de dados corrigidos O sistema voltou a buscar corretamente os relacionamentos dos objetos de negócio.
- š§© SQL mais flexĆvel Corrigido o erro que obrigava tipar parĆ¢metros no SQL. Agora o parse funciona corretamente sem ajustes manuais.
- ⰠComponente de data e hora ajustado Corrigido o erro de renderização do campo Date Time nos formulÔrios.
Data: de publicação: 16/12/2025 

š Campo de busca mais eficiente O campo datasearch agora só aceita valores vĆ”lidos, evitando erros e resultados estranhos.
ā ļø Tela de erro mais clara Quando dĆ” problema na instalação, a tela de erro agora:
- Mostra o erro completo (stack trace)
- Tem um botão para atualizar e tentar novamente
š Relacionamentos funcionando corretamente Foi corrigido um erro que impedia a recuperação correta dos relacionamentos dos objetos de negócio.
š§¾ SQL mais flexĆvel O sistema agora interpreta melhor os parĆ¢metros SQL dos objetos de negócio, sem obrigar vocĆŖ a definir a tipagem direto no SQL.
Data: de publicação: 22/11/2025 

- Adicionado um novo meio para tratar acesso de formulÔrios públicos no caso de URL invÔlida

- Resolvido um problema no componente query
- Corrigido um erro de base de dados na etapa de configuração de database
- Corrigido o erro "Could not determine data type of parameter" nas tabelas de objeto de negócio
- Corrigido um erro na importação de pacotes pela API
Data: de publicação: 18/10/2025 

Reformulação tela do FaaS replicando tela Regras de Negócio  A tela do FaaS agora segue a mesma identidade visual da nova tela do fluxo, mantendo as mesmas funcionalidades e regras de negócio. |  ![]() |
|---|---|
Tela de debug - experiência mais fluida  Agora, a tela de debug do fluxo também pode ser acessada durante a criação/edição de um fluxo, permitindo debugar o processo durante a criação do próprio fluxo. Juntamente com essa alteração, a tela de debug foi reformulada para ter a mesma identidade visual do novo fluxo e facilitar a utilização. |  ![]() |
Tela de scripts ESI expandida  O espaço ocupado pela tela de scripts dos Componentes ESI foi expandido, para facilitar a visualização. |  |
BotĆ£o limpar - CRUD  Agora Ć© possĆvel esconder o botĆ£o Limpar no popup de CRUD |  |
Adequação na autenticação de recursos pĆŗblicos para keycloak 26  Para resolver um problema de compatibilidade com a versĆ£o 26 do keycloak, foi retirado o atributo ārealmā da tela de parĆ¢metros de autenticação para URL pĆŗblica. A partir dessa versĆ£o, o campo URL de autenticação da aba SeguranƧa da pĆ”gina SETTINGS deve ser preenchido de forma completa. |  ![]() |
Importação de pacotes reformulada  O āexecute-ddlā da importação de pacotes passou a ser string e o sistema agora faz um parse seguro para Boolean |  |
Identificar URL de origem e Referer no Log  Agora o sistema identifica o uuid do log, a URL de origem completa e o Referer da requisição, facilitando a identificação da origem de erros e avisos. | Exemplo: 2025-10-18 14:34:44.191 [0;39m [33mb337f6fe-a300-426f-a3b1-f78b9570b0da WARN http://localhost:8081/lowcode/rest/dynamic/petshop/pet/getPage - Referer: http://localhost:8081/lowcode/form/pet/crud [0;39m |
Ajustes na tela do novo fluxo  A tela de fluxo agora possui mais funcionalidades para facilitar seu uso. | Adicionar scroll no diagrama para garantir visibilidade correta quando o fluxo for editado em resoluƧƵes mais altas ![]() Adicionar tĆtulo nas abas do menu lateral da esquerda ![]() Permitir fechar o menu lateral da esquerda totalmente. ![]() |
Melhorias no cache de conexões dinâmicas e otimização do uso de memória  O mecanismo de cache de conexões dinâmicas foi totalmente refatorado para aprimorar desempenho e estabilidade. As principais melhorias incluem: |
|
Todos os endpoints de listagem de registros de objetos de negócio sem paginação e listagem de componentes query foram refatorados para uso mais eficiente de memória. |
|
A otimização nesses endpoints envolve: |
|
Form-builder simplificada  Agora a diretiva form-builder pode ser utilizada sem autenticação. |  |
Divergências de data corrigidas  Foi corrigida a divergência de timezone entre o Frontmanager e o backend do Low Code, que causava exibição incorreta (um dia a menos) nas datas dos formulÔrios.  |
|
Evolução nos cabeƧalhos HTML  Foi incluĆda a aba Header HTML na criação de pĆ”ginas. Agora Ć© possĆvel incluir e parametrizar tags Open Graph usando uma lista padrĆ£o prĆ©-definida.  A propriedade og:url Ć© retornada com o valor {{ autoCurrentUrl }} que se for mantido irĆ” recuperar automaticamente o caminho da pĆ”gina. Este valor pode ser alterado para outra URL de interesse. |  ![]() |
Criação de endpoint para exibir configuração do ambiente  A URL ... /lowcode/env retorna informações de configuração da JVM e Time Zone. | {
"JAVA_TOOL_OPTIONS": "-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UseStringDeduplication -XX:MaxMetaspaceSize=512m -Xms2048m -XX:MaxRAMPercentage=70.0 -XX:+AlwaysPreTouch",
"tz": {
"jvm.zoneId": "GMT",
"jvm.timeZoneId": "GMT",
"sysprop.user.timezone": "GMT",
"db.session.timezone": "GMT",
"headers.Time-Zone": "GMT",
"headers.UTC-Offset": "+00:00",
"headers.UTC-Offset-Minutes": "0",
"now.instant": "2025-10-18T15:11:45.433084Z",
"now.zoned.jvm": "2025-10-18T15:11:45.433084Z[GMT]",
"now.zoned.header": "2025-10-18T15:11:45.433084Z[GMT]"
},
"jvm.inputArguments": [
"-XX:+UseG1GC",
"-XX:MaxGCPauseMillis=200",
"-XX:+UseStringDeduplication",
"-XX:MaxMetaspaceSize=512m",
"-Xms2048m",
"-XX:MaxRAMPercentage=70.0",
"-XX:+AlwaysPreTouch"
]
}  |

CorreƧƵes |
|---|
Corrigir duplicação de nomes de widgets na inclusão de componente Custom no form |
NĆ£o exibe desenho do fluxo no modo debug |
Cadastros do projeto abertos numa aba do browser influenciam em outra aba |
Alterações de coluna e chave de objeto de negócio sumindo da relação de DDL |
A importação de pacote lowcode não esta salvando a DDL de views. |
Erro na validação de Ćcone do fluxo ESI |
Não atualiza o status de execução de ESI no log |
Correção no Fluxo ao abrir através da tela de projetos |
A listagem paginada do objeto de negócio não respeita as colunas qdo isForGrid = true |
Erro no objeto de negocios, para o valor default no campo. LowCode |
Correção do parse de arquivos de ECM no componente ESI de email |
Os erros de alguns controllers não são capturados no log |
Revisar labels em inglĆŖs |
Corrigir fechamento de resultSet em métodos que checam existência de tabela |
Erro de cast na execução de SQL de objeto de negócio |
Data: de publicação: 01/07/2025

⨠1) Fluxos ESI com visual melhor O desenho dos fluxos ficou mais claro e organizado ā agora Ć© mais fĆ”cil entender o que cada etapa faz. š§© | ![]() |
|---|---|
⨠2) E-mail do ESI mais flexĆvel Agora dĆ” pra usar variĆ”veis no código da caixa de e-mail (UUID). Isso ajuda a reaproveitar configuraƧƵes em cenĆ”rios diferentes. š ļøš§ | ![]() |
⨠3) Sem e-mail repetido O sistema bloqueia destinatĆ”rios duplicados no envio de e-mails do ESI. Menos retrabalho e nada de mensagens em duplicidade. š«šØ | ![]() |
⨠4) Relatórios mais leves no design No construtor de relatórios (Stimulsoft) você pode limitar quantas linhas o sistema traz só no modo de design:
 | ![]() |
Essas melhorias elevam a experiência de uso, reduzem tempo e contribuem diretamente para melhor fluidez nos processos de gestão e operação. |
|---|

āļø UUID do e-mail no ESI Consertado um erro que atrapalhava a leitura do código (UUID) da caixa de e-mail no componente ESI. Tudo certo agora. ā |
|---|
Data: de publicação: 03/06/2025

⨠1. Acesso sem login (URL PĆŗblica) Agora Ć© possĆvel abrir certas pĆ”ginas sem precisar fazer login. š Pode ser de 3 jeitos:
 š 1.1 - Caso esteja com o valor Anonymous ou All, a aba de seguranƧa vai exibir a opção āAcesso pĆŗblico sem autenticaçãoā  š 1.2 - Por padrĆ£o, o sistema ainda bloqueia acesso pĆŗblico. Só libera se for configurado no projeto. | š 1.1 - ![]() š 1.2 - ![]() |
|---|---|
⨠2. PermissƵes para acesso sem login āļø Se vocĆŖ escolher a opção "Acesso pĆŗblico definido no projetoā, o sistema permite configurar as permissƵes para acesso anĆ“nimo.
| ![]() |
⨠3. Novo Campo āDescriçãoā obrigatório š Em colunas de objetos de negócio, agora tem um campo de descrição. ā”ļø Precisa ter pelo menos 2 palavras e 5 caracteres. | ![]() |
⨠4. Novo campo āTags Autocompleteā nos formulĆ”rios š·ļø Foi criado um componente que deixa vocĆŖ escolher vĆ”rias tags (como palavras-chave) em formulĆ”rios. Ele permite a seleção de um ou mais valores atravĆ©s de um mĆ©todo de busca . | ![]() |
⨠5. Melhor controle em versƵes š¦ Quando o sistema busca informaƧƵes de um projeto (deployment), agora ele leva em conta a versĆ£o certa e o local (tenant). ā”ļø Isso evita erros e registros duplicados. | ⨠6. Nome āpayloadā proibido š« Para evitar problemas tĆ©cnicos, nĆ£o dĆ” mais pra usar o nome payload em cadastros de negócio. |

āļø Ajustado um problema de bloqueio em tabelas internas; |
|---|
āļø Corrigido erro na interpretação de variĆ”veis em relatórios (Stimulsoft). |
Data: de publicação: 14/05/2025

š Acesso PĆŗblico Mais Inteligente Agora vocĆŖ pode liberar pĆ”ginas sem exigir login! š” Uma nova configuração permite escolher como esse acesso serĆ” feito:
Além disso, ao ativar o acesso sem login, aparece no projeto a opção "Acesso público sem autenticação" para facilitar. | ![]() ![]() |
|---|---|
š”ļø Acesso pĆŗblico com seguranƧa Se um recurso estiver liberado para uso pĆŗblico, vocĆŖ pode agora configurar quais aƧƵes podem ser feitas por quem nĆ£o estĆ” logado. | ![]() |
š Descrição de colunas Na hora de criar campos no seu banco de dados, agora Ć© obrigatório preencher o campo āDescriçãoā com pelo menos duas palavrinhas. Isso ajuda todos a entenderem melhor para que serve aquele campo. |  ![]() |
š·ļø Novo campo de seleção com Tags Criamos um novo componente chamado Tags Autocomplete para formulĆ”rios! š Ele permite escolher uma ou vĆ”rias opƧƵes com busca inteligente, super prĆ”tico! | ![]() |
š§© Evitando duplicaƧƵes Agora o sistema verifica melhor as versƵes e os ambientes em uso, evitando confusƵes com registros duplicados quando existem vĆ”rias empresas usando o mesmo banco de dados. | ā Fim dos conflitos com o nome "payload" Para evitar problemas internos, agora o sistema nĆ£o permite mais usar o nome āpayloadā em campos de dados. Isso ajuda a manter tudo funcionando direitinho. |

āļø Corrigido problema de travamento em uma tabela especĆfica ; |
|---|
āļø Corrigido erro ao lidar com listas de dados em relatórios . |
Data de Publicação: 04/04/2025
š MELHORIAS / NOVAS FUNCIONALIDADES
- Restringir acesso Ć s funcionalidades do core do sistema.
ā CORREĆĆES
- Não traz views materializadas na conexão de Banco de Dados;
- Não atualiza o usuÔrio quando faz redirecionamento keycloak usando Chrome;
- Correção do acesso de formulÔrios Low Code no ITSM.
Data de Publicação: 18/03/2025
š MELHORIAS / NOVAS FUNCIONALIDADES
⢠7975 - Restringir acesso às funcionalidades do core do sistema
šORIENTAĆĆES PARA DEPLOY
A partir desta versão 1.11.0-RELEASE, o usuÔrio só consegue acessar as funcionalidades do core do Low Code se o token de autenticação contiver uma ou mais roles, que podem ser definidas na configuração do sistema das seguintes formas:
- Configurando uma ou mais roles padrão para acesso a todas as funcionalidades do core: APP_SECURITY_COREACCESSROLES_DEFAULT: {nome da role 1}, {nome da role 2}, ... {nome da role n} O sistema jÔ vem configurado com a role padrão "lowcode_core" na variÔvel APP_SECURITY_COREACCESSROLES_DEFAULT. Ou seja, caso essa configuração não seja alterada, a partir da versão 1.11.0-RELEASE, o token do usuÔrio deverÔ conter a role "lowcode_core" para que ele possa acessar as funcionalidades do core do sistema.
- Configurando uma ou mais roles padrĆ£o para acesso a funcionalidades especĆficas do core: APP_SECURITY_COREACCESSROLES_{identificador da funcionalidade}: {nome da role 1}, {nome da role 2}, ... {nome da role n} Por exemplo, para configurar a role hyp_admin para acesso Ć funcionalidade de gerenciamento de projetos: APP_SECURITY_COREACCESSROLES_PROJECT_MANAGER: hyp_admin Estes sĆ£o os identificadores das funcionalidades disponĆveis: BUSINESS_OBJECT, BUSINESS_RULE_DESIGN, COMPONENT, COMPONENT_PROPERTY, CSS, DATABASE, DATABASE_CONNECTION, DATA_MODELING, DATA_TYPE, DOMAIN, FAAS, FLOW, FORM, HTML_PAGE, I18N, IMAGE, JAVASCRIPT, LOG, PACKAGE, PAGE_CONFIG, PARAMETER, PROJECT_MANAGER, QUERY_COMPONENT, REPORT_CONFIG, REPORT_FILE, SETTINGS, SNIPPET.
ā ļø Importante:
Por razões óbvias de segurança, é fortemente recomendado manter pelo menos uma role padrão configurada na variÔvel APP_SECURITY_COREACCESSROLES_DEFAULT. No entanto, em casos excepcionais, esse controle pode ser desativado atribuindo "" a essa variÔvel. Este documento pressupõe que a atualização estÔ sendo feita da versão 1.10.1 para a 1.11.0. Caso esse não seja o cenÔrio, siga as orientações das Notas de Release anteriores, começando pela versão do ambiente até alcançar a versão 1.10.1.
Data de Publicação: 11/03/2025
ā CORREĆĆES
- Correção da internacionalização do lowcode;
- Correção da exibição "Trial" na visualização de relatórios Stimulsoft.
Data de Publicação: 05/03/2025
š MELHORIAS / NOVAS FUNCIONALIDADES
- tooltips;
- Integração da ferramenta Stimulsoft;
- Permitir a autenticação externa keycloak e atualizaçao do token;
- Implementar importação e exportação de relatórios Stimulsoft;
- Restringir acesso a relatórios por roles.
ā CORREĆĆES
- Erro no tratamento de objetos JSON no componente ESI REST;
- Erro na inclusão de objetos de negócio no package.
Data de Publicação: 14/02/2025
ā CORREĆĆES
- NĆ£o estĆ” trazendo os labels de projeto.
Data de Publicação: 17/01/2025
š MELHORIAS / NOVAS FUNCIONALIDADES
- Extração dos fontes .html, .css e .js de um pacote para criação de projeto externo:
- Implementação do botĆ£o āCódigo fonteā no CRUD de pacotes:
- Ao clicar nesse botão, o sistema gera um .zip com todos os .css, .html, .js e imagens do pacote:
- Conversão do LowcodeSDK do FaaS para funcionar em .js no runtime do Low Code:
- O LowcodeSDK do FaaS estĆ” disponĆvel no frontend do Low Code. Ć só chamar āSDKā ao invĆ©s de āLowcodeSDKā e retirar o FaaS.lowcodeHttpConfig da criação dos objetos:
- Importante ressaltar que não existe qualquer referência à classe FaaS. As variÔveis e objetos devem ser tratados como Javascript puro que roda no browser.
ā CORREĆĆES
- Validar se existe código antes de salvar um FaaS;
- Correção do path app-builder;
- Erro no componente de form input.select;
- Correção da identificação do path dos recursos quando a URL é /lowcode/lowcode;
- Configuração dos .jsp para UTF-8.
Data de Publicação: 20/12/2024
ā CORREĆĆES
- Erro na execução de regra de negócio do tipo Node.js.
Data de Publicação: 18/12/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- ForƧar carga de imagens qdo o bucket MinIO estƔ vazio;
- Criação de novos componentes ESI;
- Retirar propriedade de timeout na execução de FaaS.
ā CORREĆĆES
- Erro na integração Low Code x ITSM em ambiente de desenvolvimento;
- Correção da importação de pacote com componente ESI de email.
Data de Publicação: 06/12/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Permitir acesso à pÔgina SPA sem configuração de acesso público;
- Melhoria na tela de acompanhamento da instalação;
- Adicionar qrcode na pƔgina de projeto para mobile.
ā CORREĆĆES
- Componentes de formulÔrio depreciados da versão 9 não são importados no lowcode;
- HTMLs de pÔginas 'task' e 'default' migrados da versão 9 não são renderizados corretamente;
- Erro na clÔusula REFERENCES na DDL de relacionamentos de objeto de negócio;
- Correção da renderização de pÔgina HTML;
- Erro na importação de recursos CSS, mesmo marcando opção a opção replace;
- Erro "Page configuration 'null' is undefined for the form..." na importação de pacotes.
Data de Publicação: 06/11/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Voltar para tela de edição após debug do FaaS.
ā CORREĆĆES
- Erro "Page configuration 'null' is undefined for the form..." na importação de pacotes:
- Erro na edição de pacote recém-criado.
Data de Publicação: 08/10/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Refactory na estrutura de forms para melhoria na performance de importação de pacotes
- Refactory na estrutura de objetos de negócio para melhoria na performance de importação de pacotes
- Refactory na execução da DDL de forma assincrona, com gravação de logs

- TambĆ©m Ć© possĆvel ver o histórico de importação do pacote. Na tela principal, foi disponibilizado um botĆ£o de consultar log:

- Ao clicar no botĆ£o, Ć© exibido o histórico de importação, sendo possĆvel filtrar por data, usuĆ”rio e IP de origem:

- Ao clicar na ação detalhar, o sistema exibe um tela com a identificação da importação e a relação dos objetos importados:

- Permitir a inclusão de recursos javascript do Low Code como dependências do FaaS

- TambĆ©m Ć© possĆvel adicionar dependĆŖncias diretamente no código atravĆ©s da classe FaaS.Util:

- Enviar mensagem websocket no log-trace do fluxo ESI
- Quando a rastreabilidade do fluxo ESI estÔ ativada, o sistema exibe o canal web socket que permite a interação com a execução do fluxo:

- AtravĆ©s do componente Trace Log Ć© possĆvel enviar mensagens ao web socket:

- Para exibir as mensagens capturada do web socket, basta utilizar o mƩtodo subscribeToWs no formulƔrio Low Code:

ā CORREĆĆES
- Atualização de itens do projeto no pacote não salva no BD
- Mensagem indevida de alteração por outro usuÔrio na gravação de objeto de negócio
- Correção de defeitos na criação de form CRUD no cadastro de objetos de negócio
Data de Publicação: 11/09/2024
ā CORREĆĆES
- Correção da injeção de dependência FaaS;
- Os formulĆ”rios Low Code com dependĆŖncias āFaaSā nĆ£o funcionavam no ambiente ITSM;
- Correção da funcionalidade data modeling.
Data de Publicação: 15/08/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Permitir a criação de componentes dinâmicos de fluxo ESI:
- Foi criada uma opção para definir se o fluxo ESI aparece como componente para criação de outros fluxos. Se essa opção for marcada, o usuÔrio deve selecionar o grupo e a imagem que vai aparecer na paleta.
- O fluxo se torna um componente da paleta e as variÔveis marcadas como obrigatórias aparecem para configuração;
- Criar tipo de fluxo "Agente";
- Um agente Ć© um fluxo ESI que Ć© iniciado de forma manual ou na subida do sistema e roda indefinidamente, conforme definido no seu design;
- Para configurar um fluxo ESI como agente, basta marcar a opção āDeploy como agenteā e definir se ele deve ser iniciado na subida do sistema ou de forma manual;
- Para que o agente seja executado, é necessÔrio configurar a autenticação na funcionalidade .../lowcode/page/settings;
- Foi criada a funcionalidade para monitoração de agentes, que possibilita o deploy/ undeploy do agente e a visualização de logs;
- Melhorias FaaS;
- Foi desenvolvida uma nova interface Javascript para integração com a versão 1.3.0-RELEASE do FaaS. Segue alguns exemplos de código: Executar um FaaS no front end:
Data de Publicação: 23/07/2024
ā CORREĆĆES
- Botão atualizar versão dos elementos no pacote não atualiza a versão na tela:
- Botão incluir pÔgina de formulÔrio estÔ abrindo tela de salvar.
Data de Publicação: 18/07/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Melhorias na funcionalidade de salvar o formulÔrio na mesma versão e nova versão:
- Foi acrescentado um terceiro número na versão (patch). Sempre que o usuÔrio salvar o formulÔrio na mesma versão, o patch é incrementado e a versão anterior é preservada.
- Foi criada uma funcionalidade para comparar código Javascript e HTML de versões diferentes do formulÔrio;
- Quando o usuÔrio seleciona a versão para comparar, o sistema exibe os locais onde hÔ diferença de código e o usuÔrio pode clicar para visualizar as diferenças;
- Ao clicar para visualizar as diferenças, o usuÔrio pode fazer merge de código com a versão anterior;
- No caso do desenho da tela, o sistema exibe as diferenƧas de HTML mas nĆ£o Ć© possĆvel fazer merge de componentes visuais;
- Ao salvar o formulÔrio e quando houver alterações por parte de outro usuÔrio, o sistema oferece a opção de merge de código semelhante à funcionalidade de comparação de versões;
- Todas as alteraƧƵes do formulƔrio ficam registradas em log.
ā CORREĆĆES
- Importação de fluxos não traz conteúdo de scripts:
- Criação de code snippet não preserva o idioma;
- Duplicação de conteúdo HML em mais de uma linha do desenho do formulÔrio;
- Mensagem "Acess Denied" após a importação do pacote:
Data de Publicação: 02/06/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Reverter a inibição de edição de recursos JS, CSS e HTML:
- Ajuste no filtro de autenticação para priorizar cookie criado pelo Frontmanager.
Data de Publicação: 21/05/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Minificação Low Code:
- Na aba de identificação do formulÔrio, o sistema permite que o usuÔrio selecione o tipo de proteção de código: Nenhuma proteção (default), Minificação ou Ofuscação.
- O código Javascript do Controller de cada pÔgina serÔ alterado conforme a opção selecionada:
- Inserir comentÔrio na gravação de versão nova do form;
- Ao clicar no botĆ£o Salvar da tela de CRUD de formulĆ”rio, o sistema exibe uma popup para que o usuĆ”rio informe as āNotas de Releaseā com o que foi alterado. Se o usuĆ”rio estiver gravando uma nova versĆ£o, o comentĆ”rio Ć© obrigatório:
- Na tela de listagem de formulĆ”rios, ao clicar no botĆ£o de ação āLogā, o sistema exibe a lista de alteraƧƵes em ordem decrescente de data:
- Upload de recursos CSS, JS e HTML:
- Nos CRUDs de Javascript, CSS e PÔgina HTML, o sistema exige que o usuÔrio selecione um arquivo para upload e não permite mais que o código seja alterado diretamente na tela.
- Associar recursos CSS, JS, HTML, Imagem e Parâmetro a projeto:
- Nos CRUDs de Javascript, CSS, PÔgina HTML, Imagem e Parâmetro, o sistema permite (opcionalmente) que o usuÔrio selecione o projeto associado ao recurso.
- A Ɣrvore do CRUD de projeto tambƩm foi alterada para contemplar os recursos vinculados ao projeto;
- Exportação de pacotes via API:
- A API de automação permite a exportação de um pacote. Basta informar o nome do pacote no query param āpackage-nameā e o sistema gera um arquivo .zip com o conteĆŗdo do pacote.
ā CORREĆĆES
- Falha ao acessar dois formulƔrios low code simultaneamente com HTML.
Data de Publicação: 02/05/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Melhoria nos logs low code:
- Todos os erros que ocorrem no consumo da API Rest do Low Code ficam registrados em Log que pode ser consultado no menu Consultas -> Log de execução.
- O resultado da execução de fluxos ESI, com o conteĆŗdo das variĆ”veis de entrada e saĆda e a execução de componentes assĆncronos (email, por exemplo), tambĆ©m fica registrado no Log;
- O resultado da execução de FaaS, com o conteĆŗdo das variĆ”veis de entrada e saĆda), tambĆ©m fica registrado no Log;
- Aceitar arquivo zipado na importação/exportação de pacotes:
- A importação de pacotes aceita arquivos .zip e continua aceitando .json.
- A exportação que fica na tela de detalhes do pacote oferece a opção de exportar .zip ou .json;
- A exportação na tela de grid só faz exportação para .zip.
Data de Publicação: 04/04/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Implementar nas telas do lowcode de CSS, Javascript, HTML o mesmo recurso de "acesso pĆŗblico" que foi implementado em imagens:
- As telas de cadastro de CSS, Javascript e HTML permitem selecionar o tipo de acesso.
- Criar mecanismo para configurar propriedades de e-mail no componente ESI:
- Foi acrescentada uma aba āConfiguraçãoā no componente de email do ESI que permite a configuração de propriedades do componente Spring JavaMailSender (ver https://www.baeldung.com/spring-email).
- Possibilitar enviar email com anexo de ECM sem identificação do container:
- Não é mais necessÔrio informar o UUID do container ECM para identificar quais anexos serão enviados no email.
ā CORREĆĆES
- Falha no "flowInstance.executeEsiFlow":
- Falha ao enviar e-mail com a variƔvel nula ou vazia:
Data de Publicação: 15/03/2024
š MELHORIAS / NOVAS FUNCIONALIDADES

ā CORREĆĆES
- Corrigir ordenação da grid de objeto de negócio:
- Revert das alterações de propriedades do pool de conexão.
Data de Publicação: 06/03/2024
ā CORREĆĆES
- Problema no refresh do token.
Data de Publicação: 04/03/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Melhoria no componente datagrid para configurar apenas visualização.
ā CORREĆĆES
- Correção de execução de SQL de objeto de negócio qdo a coluna não existe:
Data de Publicação: 25/01/2024
š MELHORIAS / NOVAS FUNCIONALIDADES
- Criação de mecanismo vinculado a Roles para permitir a descriptografia de informação sensĆvel:
- Implementação da integração com MySQL para conexões de BD e API de objetos de negócio;
- Permitir HTML no componente de email do ESI:
ā CORREĆĆES
- A pesquisa avançada não traz os dados do formulÔrio Low Code:
- Erro no carregamento da tela de merge de Código javascript.
Data de Publicação: 29/12/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Criar engine de integração do Low Code com o Service Management:
- Criar serviƧos para recuperar anexos de ticket do Service Management;
- Permitir enviar anexos de ticket no componente de email ESI;
- Permitir identificar quais anexos de ticket ou ECM serão enviados no componente de email ESI;
- Permitir enviar anexos ECM no componente de email ESI;
- Acrescentar prefixo "lowcode" nos nomes de bundle .js e .css;
- Adicionar formulÔrio lowcode na tela de gerenciamento de liberação do Service Management;
- Atualização do jwt e do USER_LOGGED quando o Frontmanager envia um broadcast de refresh do token. Importante: caso o Low Code esteja integrado ao Service Management (ver Orientações para deploy), o USER_LOGGED terÔ todos os atributos do USER_LOGGED do Centro de Experiência do Service Management:
ā CORREĆĆES
Data de Publicação: 29/12/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Implementar integração com banco de dados DB2:
- Implementar controle de acesso no cadastro de conexƵes de BD;
- Refactory no log de execução ESI, no padrão do log FaaS;
- Permitir envio de anexos de container ECM;
- Permitir merge de código javascript de formulÔrios.
ā CORREĆĆES
- Erro na identificação de parâmetros do tipo array na API do objeto de negócio.
šORIENTAĆĆES PARA DEPLOY

- Para funcionar o envio de email corrigido no card #4429, devem ser observadas as mesmas instruções descritas nas notas de release da versão 1.1.3:;
- Deve ser acrescentada a variÔvel APP_INTEGRATIONS_FRONTMANAGERURL no ConfigMap do Low Code, apontando para a URL de backend do Frontmanager. Exemplo: APP_INTEGRATIONS_FRONTMANAGERURL: http://hyper-frontmanager-api;
- Deve ser implantada a versão 2.5.0 ou superior do frontmanager-api, que contenha o endpoint que detalha a caixa postal de email: GET internal/email-boxes/{uuid}.
Data de Publicação: 28/11/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Criação de log para execução de FaaS;
- Criação de endpoint para listagem paginada de objetos de negócio e utilização na diretiva de grid o /data/{project}/{business-object}/paged.
ā CORREĆĆES
- Componente Email ESI não envia anexo.
Data de Publicação: 08/11/2023
ā CORREĆĆES
- Correção da importação de fluxos ESI:
- Inibição da atualização do token até resolver problema de refresh de telas.
Data de Publicação: 22/10/2023
ā CORREĆĆES
- Correção da integração com Service Management acarretada pela minificação de recursos. Algumas funcionalidades do Service Management que dependem de integração com o Low Code deixaram de funcionar na versão 1.1.0-RELEASE. Por exemplo: flowDesign.
Data de Publicação: 10/10/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Minificação de recursos javascript e css:
- Criação de componentes ESI para criptografia de informações;
- Criação de atributo com informaƧƵes sensĆveis no objeto de negócio;
- Criação de componente de formulÔrio para criptografia de informações;
ā CORREĆĆES
- Correção da exclusão de tabs de formulÔrios Low Code:
- Correção do componente de formulÔrio input.identifier;
- Correção dos atributos de acesso público na importação de pacote.
Data de Publicação: 29/09/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Criação de mecanismo para compartilhamento de recursos MinIO entre dois tenants:
- Solução de deadlock na execução de script de BD;
- Criação de botĆ£o para executar DDL de Ćndice no objeto de negócio;
- Aumento do limite de tamanho de upload de arquivo na importação de pacotes;
- Simplificação de imagem Docker do Low Code para diminuir tamanho.
ā CORREĆĆES
- Problema no refresh do token.
Data de Publicação: 21/09/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Acrescentar FaaS.Console na saĆda do endpoint integrations/{name}/faas:
- Atributo _search em conflito com o atributo _filter na API data do Low Code;
- Refactory na parametrização da URL da IDE e Renderer do Mobile no Low Code.
ā CORREĆĆES
- Correção da duplicação de Schema e Screen na IDE Mobile.
Data de Publicação: 31/08/2023
š MELHORIAS / NOVAS FUNCIONALIDADES
- Desenvolvimento de solução de testes integrados no Low Code;
- Criação de novos componentes Low Code para IA:
- AITextClassification;
- AIPredictDataByModelTF;
- AIPredictDataByModelSKLearn;
- AIPredictDataByModelCode;
- Criação de novos componentes de fluxo ESI:
- AIOCR;
- MSTeams;
- Discord;
- GenerativeAIOpenAI;
- SlackSendMessage;
- Kafka;
- FileToBase64;
- ApacheVelocity;
- Criação serviço REST Low Code para importação de pacotes:
- Criação de endpoint POST /automations/${tenant_id}/packages para importação de pacotes;
- Criação de endpoint GET /automations/${tenant_id}/packages/${uuid}/logs para obtenção do log de importação de pacotes;
- Refactory das propriedades dos componentes da IDE (definitions);
- Adequação do backend e fluxo ESI de geração do build Mobile para usar Expo;
- Refactory dos parâmetros do Build Mobile;
- Segregação dos ambientes de IDE e renderização do Mobile;
- Alteração do tipo das colunas timestamp para resolver timezone e reestruturação das propriedades do Build.
ā CORREĆĆES
- Correção da duplicidade de aplicações Mobile no frontend do Low Code;
- Correção de problema na propagação de exceção do tipo BD na execução de fluxos ESI;
- Correção da exibição de Ćcones em abas de formulĆ”rios Low Code.





















