Dados Não Vinculativos Compartilhados Entre Painéis¶
No Vinyl é possível compartilhar dados entre dois Painéis sem a necessidade de criar uma junção cruzada nos bastidores do Business Object. Este artigo mostrará um exemplo de configuração de dados não vinculativos compartilhados entre painéis, aproveitando o Shared() função.
Neste exemplo, temos uma lista de Projetos e uma lista de Funcionários e queremos atribuir um Funcionário a um Projeto simplesmente clicando em um botão da lista. Neste exemplo, um Projeto possui um Cargo e um Funcionário possui um Nome Completo. Depois de concluir o exercício de exemplo, nossa página ficará assim:
Etapa 1: Atualizar a Regra do Painel de Funcionários¶
Nesta etapa, atualizaremos a Regra de Negócios que suporta o painel Funcionário para adicionar uma nova Coluna que aproveite a função Compartilhada. Por exemplo: adicione uma coluna a Funcionário (Fonte) usando o valor shared('ProjectID')
, Alias como ProjectID e Cast the Logic como ID exclusivo.
Etapa 2: Crie uma Regra CRUD Cram¶
Nesta etapa criaremos uma Regra CRUD Cram com as tabelas Funcionário e Projeto, para inserir o Funcionário selecionado ao Projeto utilizando a função Compartilhada.
A Regra Crud terá a Ação de Cram, e alavancará as tabelas Funcionário (E) e Projeto (P).
Colunas a serem configuradas para regra:
- E. EmployeeID tem como alvo o EmployeeID
- P.ProjectID tem como alvo o ProjectID
- NEWUUID() tem como alvo o ProjectEmployeeID
Etapa 3: Adicionar a Regra CRUD a uma Ação no Objeto de Negócios Employee¶
Nesta etapa adicionaremos a regra CRUD Cram a uma ação para um evento personalizado que criaremos chamado "AssignEmployee". Defina o Escopo de Atualização como Global. Associe este Evento ao Objeto de Negócios Funcionário.
Para que isso funcione corretamente, precisaremos configurar dois registros Binding para a Action.
- EmployeeID para EmployeeID
- ProjectID para ProjectID
Etapa 4: Adicionar o Evento a um Botão¶
Nesta etapa adicionaremos o evento personalizado AssignEmployee criado na etapa 2 a um controle de botão chamado "Assign" que adicionaremos ao painel Employee na página.
Etapa 5: Configurar a Vinculação do Painel¶
Nesta etapa, compartilhe o ProjectID por meio da Associação de Painel, certificando-se de que o Painel de Funcionários e o painel Funcionários Atribuídos ao Projeto estejam ambos vinculados a Projetos. Você precisará adicionar informações de Colunas de Ligação, cujo padrão é uma ligação regular, então você selecionará inicialmente uma Coluna aleatória para o Painel Filho (Atual) e o ProjectID desejado como Pai.
Depois de adicionar as informações do Painel de Ligação, selecione e abra o registro Colunas de Ligação e altere o valor Tipo para Compartilhado.
Isso limitará as informações do resultado apenas ao valor da Coluna Pai que você deseja compartilhar, que é ProjectID neste exemplo. Clique em Salvar.
Agora, ao atualizar a página e clicar no botão Atribuir no Painel de Funcionários, você verá o Funcionário selecionado ser adicionado ao Projeto selecionado no Painel de Funcionários Atribuídos do Projeto resultante. Observe que isso é feito sem a necessidade de criar uma junção cruzada no objeto de negócios Employee. Cross Joins podem utilizar muitos recursos e, às vezes, retardar o processamento do aplicativo.
Nota
Dependendo do caso de uso ou da frequência com que uma Coluna Compartilhada é usada em Ações, também é possível adicionar o valor Compartilhado a uma seleção de Coluna do Objeto de Negócios ou usá-lo em instruções Where.