quarta-feira, 20 de agosto de 2025

Alterando o Método de Autenticação do Oracle APEX Builder

Olá pessoal,

Espero que estejam bem.

Em alguns cenários, principalmente em ambientes corporativos ou de desenvolvimento colaborativo, pode ser necessário alterar a forma de autenticação utilizada para acessar o App Builder — a interface administrativa onde desenvolvemos e mantemos nossas aplicações APEX.

Por padrão, para autenticar no Oracle APEX, você deve digitar o workspace, usuário e senha. Em ambientes on-premise o padrão é usar as Contas do APEX, mas há outra opções nativas que podem ser configuradas muito facilmente como SSO (Single Sign-On), LDAP, Usuários de Banco de Dados etc.


BEGIN
APEX_INSTANCE_ADMIN.SET_PARAMETER(
'APEX_BUILDER_AUTHENTICATION',
'APEX'
);
COMMIT;
END;

Como realizar a alteração

A mudança do método de autenticação é feita a nível de instância APEX, afetando todos os workspaces.

Para realizar o ajuste, é necessário executar o seguinte bloco PL/SQL logado como SYS, SYSTEM ou um usuário que possua a role APEX_ADMINISTRATOR_ROLE:


Valores possíveis para o parâmetro APEX_BUILDER_AUTHENTICATION

No exemplo acima utilizamos 'APEX' como parâmetro do APEX_BUILDER_AUTHENTICATION de forma a definir as contas do APEX como a forma de autenticação. Entretanto, o APEX suporta diferentes esquemas de autenticação para o Builder. Os valores válidos são:

  • APEX → Oracle APEX workspace accounts authentication (padrão).

  • DB → Database accounts authentication.

  • HEADER → HTTP header variable based authentication.

  • SSO → Oracle Application Server Single Sign-On authentication (OracleAS PL/SQL SSO SDK).

  • LDAP → LDAP authentication.

  • SAML → SAML Sign-In authentication.

  • SOCIAL → Social Sign-In authentication.

Isso oferece flexibilidade para que cada organização utilize o método que melhor se integra ao seu ecossistema de segurança



Onde consultar outros parâmetros disponíveis

Além do parâmetro APEX_BUILDER_AUTHENTICATION, a API APEX_INSTANCE_ADMIN permite configurar diversos outros parâmetros da instância, como limites de upload, idioma padrão, uso de REST, segurança de sessão e muito mais.

Segue link da documentação oficial dos parâmetros disponíveis para API APEX_INSTANCE_ADMIN:
https://docs.oracle.com/en/database/oracle/apex/24.2/aeapi/APEX_INSTANCE_ADMIN.Available-Parameter-Values.html#GUID-75DCF658-5A76-4E81-B12D-04E254A3D80A


Conclusão

Alterar a autenticação do Builder é um passo importante para alinhar o ambiente APEX às necessidades de segurança e governança da organização. Com apenas uma chamada ao APEX_INSTANCE_ADMIN.SET_PARAMETER, é possível migrar de contas do APEX para SSO corporativo, LDAP ou até autenticação via SAML, simplificando o gerenciamento de usuários e garantindo maior segurança.

sexta-feira, 21 de junho de 2024

Oracle APEX 24.1 está no ar!

Olá, pessoal! 


Foi lançado esta semana o Oracle APEX 24.1, trazendo uma série de melhorias e novidades. Confira as principais: 

  • IA Generativa

  • Novos itens de página "Selecionar Um" e "Selecionar Muitos"

  • Componentes de modelo mais rápidos e flexíveis

  • Melhorias no Fluxo de trabalho e Aprovações

  • Suporte para perfis de origem de dados REST hierárquicos

  • Grupos de componentes

  • Melhorias nas Cópias de Trabalho

  • Impressão remota do Gerador de Documentos

  • Aprimoramentos nas extensões do Builder

  • Melhorias gerais do Builder

  • Atualizações do Tema Universal e Fonte APEX

  • Melhorias de Acessibilidade

  • Descarte automático de mensagens de sucesso

Há muitas outras novidades e detalhes que podem ser conferidos clicando aqui.

A equipe do APEX preparou uma série de quatro vídeos no Office Hours, explicando detalhadamente todas as novidades. Confira aqui.

Pela primeira vez, a nova versão foi disponibilizada simultaneamente para On-premise e Cloud. Para baixar a versão mais recente do APEX, clique aqui.

Abraço a todos!


sexta-feira, 25 de agosto de 2023

Selecionar primeira linha na Grade interativa não funciona?

Olá pessoal,


hoje um desenvolvedor precisava que a primeira linha da grade interativa fosse selecionada.

Ah, é fácil! Basta marcar a propriedade: "Selecionar Primeira Linha" nos atributos da grade interativa, certo?



Não funcionava de jeito nenhum!

Até que descobri que para que essa propriedade funcione, deve-se definir uma chave primária... :)

Portanto, não esqueça de definir a chave primária conforme exemplo abaixo.


Até a próxima!

terça-feira, 6 de dezembro de 2022

Como alinhar os itens com o botão nos formulários

 Olá pessoal,

hoje vamos aprender como alinhar os itens com o botão.

Quando a gente tenta colocar o botão na mesma linha do item, você já se deparou com a situação em que  eles ficam desalinhados conforme abaixo? 

Para resolver esta situação é bem simples! 

Basta na propriedade "Classes CSS da linha" do primeiro elemento da linha adicionar o seguinte CSS: "u-align-items-center" conforme imagem abaixo.


Ao executar novamente o aplicativo, agora o botão ficará alinhado ao centro com o item.


Atenção: Essa classe só funciona no APEX 22 ou superior.



Espero que tenha gostado!


terça-feira, 12 de abril de 2022

Como ativar e consultar o log de atividades no APEX

 Prezados,

hoje vamos falar sobre como ativar e consultar o log de atividades no APEX.

Como tudo no APEX, é muito fácil!

Você pode ativar o log de atividades do usuário no nível da sua instância do APEX ou da sua aplicação.

Para ativar o log no nível da instância, acesse com seu login e senha de administrador de instância o ambiente de administração usando a URL: https://seudomíniodoapex/ords/apex_admin ou digitando INTERNAL como o workspace na tela de login do ambiente de desenvolvimento do APEX.




Após isso, acesse: Gerenciar Instância >  Configuração de Recursos e na seção Monitoramento, defina a propriedade "Log de Atividades do Aplicativo" com o valor desejado.


Por padrão, o APEX deixa que cada aplicativo defina se vai gerar o log de atividades, mas caso queira que todas as aplicações gerem log (o desenvolvedor não consegue desativar a nível de aplicação), você pode definir a propriedade como "Sempre".

Outras opções são definir como "Nunca" gerar log ou para que ao criar uma aplicação, inicialmente a aplicação não gere log a não ser que o desenvolvedor ative o log ("Inicialmente Desativado para Novos Aplicativos").

Portanto, ao definir a propriedade como "Sempre" ou deixar como padrão ("Usar Definições do Aplicativo"), a sua aplicação poderá gerar log de atividades.


Caso no nível de instância seja definido como "Padrão", o desenvolvedor pode ativar a geração de log de atividades no nível da aplicação.

Obs: O APEX antes chamava de "aplicação", mas as novas versões estão chamando de "aplicativo".

Para definir no nível da aplicação, o desenvolvedor deve logar no espaço de trabalho, acessar a aplicação no AppBuilder, nos Componentes Compartilhados, acessar "Atributos de Definição do Aplicativo" na seção Propriedades, você pode ativar a opção "Log" (conforme imagem abaixo). 


Isso faz com que os logs de atividades sejam gerados pelo APEX.

E como posso acessar essa informação?

O log é salvo internamente e fica acessível por meio da view APEX_WORKSPACE_ACTIVITY_LOG quando consultada no esquema APEX correspondente. 

Vamos fazer uma consulta no SQL Workshop de exemplo.

select * from apex_workspace_activity_log



O log do APEX registra as visualizações e submissões de página, além de chamadas ajax (normalmente ações dinâmicas) e contém diversas informações interessantes, tais como: workspace,  usuário logado, id e nome da aplicação, id e nome da página, data de visualização, tempo de execução, IP, Agent (Browser), Sessão APEX, mensagens de erro etc.

Caso tenha dúvidas do que alguma coluna significa, você pode consultar o comentário de cada coluna usando o dicionário do APEX usando a seguinte consulta:

select * from apex_dictionary 
where apex_view_name = 'APEX_WORKSPACE_ACTIVITY_LOG'


E quais são os pontos negativos desse log de atividades?

Na minha opinião os principais pontos negativos são:
1) O log é armazenado por padrão apenas por duas semanas.
2) Não armazena informações do estado da sessão. Por exemplo, a gente sabe que um usuário acessou uma página de uma aplicação em determinado dia/hora, mas não sabemos que informações estavam nos itens da página.
3) Aplicações com muitos acessos vão gerar logs gigantescos que ocupam muito espaço.

Como minimizar estes pontos negativos?
1) Criar alguma job para armazenar em tabela o log.
2) Criar algum mecanismo para salvar o valor dos itens das páginas críticas em relação a segurança em alguma tabela (Muito cuidado ao fazer isso, pois poderá estar expondo dados sigilosos)
3) Desligar o log em aplicações com muitos acessos caso não seja necessário. (Não recomendo muito)

Antes de finalizar, vale lembrar que esse log NÃO salva informações de alterações em tabelas. O melhor mecanismo para isso no Oracle provavelmente será o FDA (Flashback Data Archive).

Se seu interesse é em log de alterações de tabelas, segue um vídeo interessante sobre FDA:
Vídeo do Connor McDonald (inglês):   https://youtu.be/FpRAc-FEWbE

Espero que tenha gostado.
Até a próxima!

quarta-feira, 23 de março de 2022

Minhas impressões sobre o Oracle APEX no Brasil

 Olá pessoal,

como vocês devem saber, o GUOB lançou uma pesquisa sobre o Oracle APEX no Brasil.

Caso não tenha participado da pesquisa, pode responder no seguinte link (ficará indisponível em breve): https://docs.google.com/forms/u/2/d/1CrKA9QgQp5MUTtGvk910aKsy0vf-wlcCF25Mux9ZOu4

A grande vantagem de participar é que ao final você terá acesso ao resultado completo com as respostas consolidadas de todos os participantes.

De qualquer forma, abaixo faço um compilado das minhas principais impressões sobre o resultado da pesquisa GUOB APEX:

1) Há uma concentração de uso nas regiões Sul, Sudeste e Centro-oeste (Regiões mais ricas?).

2) É muito utilizado na iniciativa privada, mas também em instituições públicas.

3) Para todos os tipos de projeto.

4) A maioria dos sistemas se inicia em APEX (não de migrações).

5) Principal fator de uso é a produtividade low code e o aproveitamento de conhecimento existente (PLSQL, banco Oracle etc)

6) Achei bem interessante o fato de pessoas dizerem que tem poucas vagas de APEX e outros dizerem que está difícil contratar, pois é difícil encontrar profissionais APEX. (Falta alguma ponte esse essas pessoas?)

7) Praticamente metade trabalha 100% home office.

8) Mais da metade das pessoas começou no APEX há menos de 5 anos.

9) Há um empate técnico entre Oracle On Premise e Oracle Cloud na hospedagem.

10) Maioria ainda está usando a versão 20.

11) A certificação mais obtida é a de SQL.

12) O YouTube parece ser o canal mais utilizado para aprender.

13) As pessoas usam muito o "APEX puro" (sem uso de ferramentas acessórias de versionamento do APEX ou versionamento do BD, logging, modelagem, automação de testes, build etc).

14) Apesar dos problemas, o Jasper Reports é a ferramenta mais utilizada para impressão.

15) O lugar mais utilizado para dúvidas é a Oracle Communities.

16) Comunidades mais usadas: Oracle APEX Brasil no Linkedin, GUOB, e apex.world.


Se tiver interesse, participei de uma live do GUOB com especialistas em Oracle APEX para debater os resultados da pesquisa. Segue o link: https://www.youtube.com/watch?v=XD47oi4fUmQ


Deixe seu comentário se interpretou algo de diferente. 

Não deixe de responder a pesquisa. Você vai ter acesso a resultados bem legais.

Espero que tenha gostado.

Até a próxima!

quarta-feira, 31 de março de 2021

Como disparar ação dinâmica quando fecho o modal no X

 Olá pessoal,

espero que todos estejam bem.

Hoje vamos falar sobre uma dúvida recorrente que é como disparar uma ação dinâmica quando fechamos a caixa de diálogo modal no X.

Antes de dar a solução, primeiro vamos explicar alguns conceitos.

Há duas opções de ações que podem ocorrem quando uma caixa de diálogo é fechada: Close Dialog (Fechar Caixa de Diálogo) e Cancel Dialog (Cancelar Caixa de Diálogo).


O Close Dialog é um evento que deve ser acionado quando você fez alguma ação na página modal e agora quer fechá-la. Este evento é disparado normalmente quando você pressiona um botão, por exemplo o botão "Criar", "Excluir", "Aplicar alterações" etc.

O Cancel Dialog é um evento que deve ser acionado quando você simplesmente quer fechar sem ter feito ação alguma no modal. Normalmente ocorre quando o modal é fechado no "X" ou no botão de "Cancelar".

Um problema comum é que muitos usuários querem disparar ação dinâmica quando o evento Cancel Dialog é disparado, normalmente quando o usuário fecha a caixa de diálogo modal no "X". Como os dois eventos (Close Dialog e Cancel Dialog) internamente são acionados pelo evento javascript personalizado "dialogclose" do APEX, a solução é bem simples: você deve criar na página que abre o modal uma ação dinâmica que seja acionada pelo Evento Personalizado: "dialogclose" para o Seletor JQuery: body.


Espero que tenha gostado!

Até a próxima.

[Atualização: O APEX 21 possui esse recurso agora de maneira nativa]