Introdução
Este tutorial mostra como implementar scripts Groovy para trabalhar com grades de Dados e iteradores de grade de Dados. Use a lógica condicional para definir as cores de fundo em uma grade de dados, implementar benchmarking de desempenho e definir valores de dados padrão em uma grade.
Histórico
Uma interface de grade de dados fornece acesso às células de cabeçalho PDV/Linha/Coluna e fornece vários iteradores para iteração nas células de dados.
Pré-requisitos
Os Tutoriais Práticos do Cloud EPM podem exigir que você importe um instantâneo para sua instância do Cloud EPM Enterprise Service. Para poder importar um instantâneo de tutorial, você deve solicitar outra instância do Cloud EPM Enterprise Service ou remover seu aplicativo e processo de negócios atuais. O instantâneo do tutorial não será importado sobre seu aplicativo ou processo de negócios existente, nem substituirá ou restaurará automaticamente o aplicativo ou processo de negócios com o qual você está trabalhando no momento.
Antes de iniciar este tutorial, você deve:
- Tenha acesso do Administrador de Serviço a uma instância do Cloud EPM Enterprise Service.
- Faça upload e importe este snapshot para sua instância do Planning.
Observação:
Se você encontrar erros de migração importando o snapshot, execute novamente a migração excluindo o componente HSS-Shared Services, bem como os artefatos Segurança e Preferências do Usuário no componente Principal. Para obter mais informações sobre upload e importação de snapshots, consulte a documentação Administrando a Migração para o Oracle Enterprise Performance Management Cloud.Dica:
Os scripts necessários para este tutorial são vinculados como arquivos de texto em cada seção.Definindo cor de fundo usando lógica condicional
Nesta seção, você implementa um script Groovy para definir a cor de fundo para células com valor de dados #MISSING para colorir █ (0x00BFFF), células com valor de dados menor ou igual a 50000 para colorir █ (0xFF8C00) e células com valores de dados maiores que 50000 para colorir █ (0x00FA9A).
Observação:
Depois de definir um script Groovy, ele pode ser associado a qualquer formulário, ao contrário das regras de Validação de Dados, que precisam ser definidas no contexto de cada formulário.- Abra o Calculation Manager e crie uma regra chamada Cor de Fundo do Conjunto Groovy no cubo Plan1.
- No Editor de Regras, altere a opção Designer para Editar Script e defina o Tipo de Script como Script Groovy.
- Copiar este script e colá-lo no editor:
- Na barra de ferramentas, clique em
(Salvar) para salvar o script e clique em
(Validar e Implantar) para validar e implantar o script. Clique em OK quando solicitado. Fechar o Calculation Manager.
- No Navegador, abra o Gerenciador de Formulários e selecione o formulário EmployeeDriverForm.
- Edite o formulário e associe a regra Cor de Fundo do Conjunto Groovy a ser executada Após o Carregamento. Salve o formulário e feche a janela Gerenciador de formulários.
- No Navegador ou na home page, clique em Dados. Abra o formulário EmployeeDriverForm e verifique se o script destaca as células conforme projetado.


operation.grid.dataCellIterator.each {if(it.missing) {
it.bgColor = 0x00BFFF
} else if(it.data <= 50000)
it.bgColor = 0xFF8C00
else if(it.data > 50000) it.bgColor = 0x00FA9A
}
O script itera sobre cada célula de dados na grade de dados atual,
operation.grid
, retornada por dataCellIterator
.
A variável "it" implícita refere-se ao item atual que está sendo iterado. Nesse caso, a variável "it" refere-se à célula de dados atual retornada por dataCellIterator
.
Dica:
Você também pode usar uma variável explicitamente nomeada, como "cell", conforme mostrado no exemplo abaixo:operation.grid.dataCellIterator.each { cell -> if(cell.missing) { cell.bgColor = 0x00BFFF } }
Para a célula de dados atual, o script verifica se há um valor ausente.
Observação:
Observe quecell.data
retorna 0 (zero) para células que são #MISSING ou zero. Para verificar uma célula para #MISSING e não para zero, você pode usar a propriedade cell.missing
. Para verificar um valor zero em uma célula e não em #MISSING, você pode usar uma condição como cell.data == 0 && !cell.missing
. Se VERDADEIRO, o script define a cor de fundo da célula como
0x00BFFF
( █ )
O script verifica se o valor dos dados é menor ou igual a 50000.
Se VERDADEIRO, o script define a cor de fundo da célula como
0xFF8C00
( █ )
Se o valor de dados da célula for maior que 50000, o script definirá a cor de fundo da célula como
0x00FA9A ( █ )




Criando perfil e depurando o script
Nesta seção, você aprende a usar iteradores fornecidos pela interface DataGrid, traçar o perfil do código e adicionar instruções de depuração à console de jobs.
- Abra o Calculation Manager e crie uma regra chamada Desempenho do Groovy Iterator no cubo Plan1 .
- No Editor de Regras, altere a opção Designer para Editar Script e defina o Tipo de Script como Script Groovy.
- Copiar este script e colá-lo no editor:
- Na barra de ferramentas, clique em
(Salvar) para salvar o script e, em seguida, clique em
(Validar e Implantar) para validar e implantar o script. Clique em OK quando solicitado. Fechar o Calculation Manager.
- No Navegador, abra o Gerenciador de Formulários e selecione o formulário EmployeeDriverForm.
- Edite o formulário e associe a regra Desempenho do Iterador Groovy a ser executada Após Salvar. Salve o formulário e feche a janela Gerenciador de formulários.
- No Navegador ou na home page, clique em Dados. Abra o formulário EmployeeDriverForm e altere o Salário Mínimo do Grau 1 para 35000 e o Bônus Mínimo do Grau 2 para 2000.
- Salve e feche o form. Navegue até a console Jobs.
- Clique em Desempenho do Groovy Iterator para exibir os detalhes do job. Clique no status Concluído para ver as mensagens de log impressas pelo script Groovy.


def benchmark(GridIterator itr) {def start = currentTimeMillis()
itr.each { println "$it.memberNames, cell data: $it.data, $it.formattedValue" }
def elapsed = currentTimeMillis() - start println "\nTime taken by iterator: $elapsed"
} println "Iterate over all data cells in this data grid...\n"
benchmark operation.grid.dataCellIterator()
println "Iterate over edited data cells in this data grid...\n" benchmark operation.grid.dataCellIterator({DataCell cell -> cell.edited})
println "Iterate over Min Salary and Min Bonus data cells in this data grid...\n" benchmark operation.grid.dataCellIterator('Min Salary', 'Min Bonus')
![]()
Defina um método de utilitário chamado
benchmark()
que use o GridIterator
especificado para iterar sobre suas células e imprima a lista de nomes de membros de todas as dimensões que a célula representa junto com seus dados. Ele também imprime o tempo gasto pelo iterador.
Inicie um temporizador.
Itere sobre cada célula usando o
GridIterator
especificado e imprima a lista de nomes de membros de todas as dimensões que a célula representa junto com seu valor de dados e valor formatado. $it.data
retorna o valor numérico da célula e $it.formattedValue
retorna valores não numéricos, como Texto, Smart List ou Data, conforme informado pelo usuário.
Imprima o tempo gasto pelo iterador no console de trabalho.
Registre uma mensagem de depuração no console de jobs.
Chame o método
benchmark()
com um iterador para iterar sobre cada célula na grade de dados atual.
Chame o método benchmark() com um iterador para iterar sobre as células editadas na grade de dados atual.
Dica:
Esse iterador pode ser usado com qualquer propriedade no objeto DataCell que retorne um booliano, como bloqueado, ausente, válido, readOnly, validIntersection e assim por diante. Chame o método
benchmark()
com um iterador para iterar sobre as células de dados Salário Mínimo e Bônus Mínimo na grade de dados atual.





O primeiro iterador imprime todas as células e os valores de dados, o segundo iterador imprime apenas as duas células que foram editadas e o terceiro iterador imprime apenas as células para as colunas Salário Mínimo e Bônus Mínimo.
Definindo valores de dados padrão
Nesta seção, você aprende a definir os valores de dados padrão na grade usando a interface DataGridBuilder
.
- Abra o Calculation Manager e crie uma regra chamada Groovy - Redefinir Dados do Nível no cubo Plan1.
- No Editor de Regras, altere a opção Designer para Editar Script e defina o Tipo de Script como Script Groovy.
- Copiar este script e colá-lo no editor:
Cube cube = operation.application.getCube("Plan1")
DataGridBuilder builder = cube.getDataGridBuilder("MM/DD/YYYY")
builder.addPov('FY16', 'Current', 'USD', 'BegBalance', 'BU Version_1', 'No Entity')
builder.addColumn('Min Salary', 'Max Salary', 'Min Bonus', 'Max Bonus') builder.addRow(['Grade 1'], [30000, 50000, '#missing', '#missing']) builder.addRow(['Grade 2'], [40000, 60000, '#missing', 5000]) builder.addRow(['Grade 3'], [70000, 90000, '#missing', 10000]) DataGridBuilder.Status status = new DataGridBuilder.Status()
builder.build(status).withCloseable { DataGrid grid ->
println("Total number of cells accepted: $status.numAcceptedCells")
println("Total number of cells rejected: $status.numRejectedCells") println("First 100 rejected cells: $status.cellsRejected") cube.saveGrid(grid)
}
- Na barra de ferramentas, clique em
(Salvar) para salvar o script e clique em
(Validar e Implantar) para validar e implantar o script. Clique em OK quando solicitado. Fechar o Calculation Manager.
- No Navegador, abra o Gerenciador de Formulários e associe a regra Redefinir Dados de Nível do Groovy ao formulário EmployeeDriverForm. Salve o formulário e feche a janela do Gerenciador de Formulários.
- Na Home page do Planning, clique em Dados. Abra o formulário EmployeeDriverForm, clique em Ações e selecione Regras de Negócios no menu drop-down. Clique em Redefinir Dados do Nível do Groovy para executar a regra.
- Após a execução bem-sucedida da regra, clique em OK na caixa de diálogo Informações e verifique se os dados da grade foram redefinidos.
- Feche o formulário e navegue para abrir a console Jobs.
- Clique em Redefinir Dados do Nível do Groovy para exibir os detalhes do job. Clique no status Concluído para ver os detalhes de quantas células foram aceitas e/ou rejeitadas.
Crie um objeto de cubo para o cubo do Plano 1.
Obtenha um DataGridBuilder para o cubo; defina o formato no qual o script fornece os valores de data.
Observação:
O DataGridBuilder também suporta o salvamento de dados em nome de um usuário do sistema aceitandoExecuteAsUser
como o segundo parâmetro. Salvar dados como usuário do sistema permite que os dados sejam salvos sem aplicar a segurança do usuário atual. Os valores válidos para ExecuteAsUser
são CURRENT_USER
(o padrão) e SYSTEM_USER
, como no seguinte exemplo:DataGridBuider builder = cube.dataGridBuilder("MM/DD/YYYY", SYSTEM_USER)
Construa uma grade de dados adicionando os membros PDV, os membros de coluna e as linhas com valores de dados.
Crie um objeto de status para o objeto DataGrid criado na próxima etapa.
Crie o objeto DataGrid com a construção withCloseable. A construção fecha o objeto DataGrid quando o bloco de código conclui a execução. Isso é importante para garantir que a regra não deixe o objeto DataGrid aberto na memória após a conclusão das operações.
Imprime o número de células aceitas ou rejeitadas pelo construtor no console de jobs. Todas as células somente leitura são rejeitadas.
Salve a grade de dados.
A grade é fechada automaticamente.





Próximo Tutorial
Links Relacionados
- Documentação: Usando Regras do Groovy
- Vídeos Groovy no canal Tutoriais do Oracle EPM YouTube
- EPM Cloud Planning - Tutoriais Groovy
- Oracle Enterprise Performance Management Cloud, Referência de API Java das Regras Groovy
- API REST para o Oracle Enterprise Performance Management Cloud
- Referência de Script Groovy
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse a Oracle University para ver os recursos de treinamento disponíveis.
Para obter a documentação do produto, visite o Oracle Help Center.
Como Trabalhar com Grades de Dados e Iteradores no Groovy
G42665-01
Setembro de 2025