Atualizar campos na tabela Módulo a partir da tabela de Aplicações Sistemas utilizando o Flow

Alan Carvalho
Tera Contributor

Boa tarde pessoal.

 

Criei a coluna u_exposto_para_internet do tipo escolha contendo as opções "Sim" e 'Não" na tabela cmdb_ci. Essa nova coluna bem como suas escolhas foram replicadas para as tabelas u_module e u_cmdb_ci_aplication_system, uma vez que elas são extensão da cmdb_ci. Com isso, estou construindo um Flow que atualize a coluna u_exposto_para_internet na tabela u_module com o valor dessa mesma coluna que está na tabela u_cmdb_ci_aplication_system sempre que esse for atualizado.

O flow contém um gatilho a partir da tabela u_cmdb_ci_aplication_system que á acionado quando algumas atualizações são realizadas. Logo após, tenho uma ação Atualizar Registro na tabela u_module onde selecionei o campo Exposto para internet (u_exposto_para_internet) e arrastei a pílula de dados do gatilho Aplicação e Sistema conforma abaixo.

 

AlanCarvalho_0-1734718109809.png

 

A atualização até ocorre, porém, ao inves de selecionar a opção "Sim" ou "Não" cadastradas previamente conforme mencionei acima, um terciero valor de "Sim" ou "Não" é inserido no campo.

AlanCarvalho_1-1734718468617.png

 

Poderiam me ajudar com uma solução que resolva esse problema?

4 REPLIES 4

Carlos Camacho
Mega Sage
Mega Sage

CarlosCamacho_0-1734723209372.png

1 - Na tabela CMDB CI APPLICATION SYSTEM criei um campo do tipo True/False. Como essa tabela estende a CMDB CI, quando for inserido um registro nessa tabela este também será visível a partir da leitura dos registros da CMDB CI. 
2 - Os campos da u_module não podem ser copiados para a própria CMDB CI APPLICATION SYSTEM?
Caso você tenha uma persona que precise ver/editar apenas parte das colunas que se referem a essa tabela u_module, é possível criar um componente chamado View Rule para controlar quais campos um usuário vai ver ao acessar determinada tabela. 

CarlosCamacho_1-1734723507113.png

 

Teste as operações em uma PDI antes de aplicar na instância de desenvolvimento corporativa.
Abraços.

@Carlos Camacho 

O campo Exposto para Internet (u_exposto_para_internet) que eu criei na tabela cmdb_ci aparece perfeitamente nas tabelas u_module e u_cmdb_ci_aplication_system.

 O problema que estou enfrentando é a dificuldade de copiar o valor de escolha (Sim ou Não) da tabela u_cmdb_ci_aplication_system para u_module através de um flow.

Ex: Tenho uma apçicação cadastradas na tabela u_cmdb_ci_aplication_system e quando atualizar o campo Exposto para Internet (u_exposto_para_internet) preciso atualizar o campo Exposto na Internet na tabela u_module, uma vez que nessa tabela cadastro os Módulos que são filhos da Aplicação.

Suponha que eu inclui na tabela u_module um registro com o campo Description contendo "Teste Módulo 1". 
Esse registro está vinculado a qual registro na tabela u_cmdb_ci_aplication_system?

JessicaLanR
Kilo Guru

Oi, tudo bem?

Isso acontece porque, ao passar o valor diretamente da pílula de dados, o Flow está inserindo um valor “livre” e não a opção já existente no campo do tipo escolha. Isso gera uma nova opção invisível na prática, mesmo que seja “Sim” ou “Não”.

Para resolver:

  1. Use um valor fixo no campo "Atualizar Registro": Em vez de arrastar diretamente a pílula da variável, crie uma ação Script ou um Branch com condição para verificar o valor do campo de origem.

  2. Exemplo com Script:
    Crie uma ação intermediária com Script e defina explicitamente:

if (current.u_exposto_para_internet == 'Sim') {
flow.variables.exposto = 'Sim';
} else {
flow.variables.exposto = 'Não';
}

 

  1. Depois, no campo de destino, use flow.variables.exposto.

  2. Outra opção: Transforme o valor com uma ação "Set Value" antes de enviar para o campo de destino, garantindo que seja exatamente o valor existente no campo de escolha.

Esse erro é comum quando o campo aceita valores que não estão previamente definidos nas opções. O ideal é sempre garantir que o valor passado seja idêntico ao que já existe como opção cadastrada.