Contexto de Negócio
Um contexto de negócio do portal é um conjunto de propriedades que serão disponibilizadas de forma centralizada. Um contexto é definido por um arquivo chamado contextdefinition.xml . A referência deste arquivo é o XSD contextdefinition.xsd, que deve utilizar a localização http://www.lumis.com.br/context e na distribuição do produto encontra-se em def/lumis/portal/businesscontext/contextdefinition.xsd .
A estrutura básica do arquivo de definição do contexto é a seguinte:
Cada propriedade (nó property) deve possuir um dos seguintes nós:
- fixed: utilizado para expor um valor fixo no contexto.
- expression: utilizado para expor o valor de uma EL (expression language) no contexto.
- custom: utilizado para customizar a obtenção do valor para ser exposto no contexto.
Valores fixos no contexto
Para expor um valor fixo no contexto, um parâmetro pode ser definido como:
Onde valor é o valor
a ser exposto.
Valores de EL no contexto
Para expor valores de EL no contexto, um parâmetro pode ser definido como:
Onde el
é a EL a ser exposta. As variáveis disponíveis são listadas em Recursos disponíveis em EL, marcadas com o escopo LayoutFile. A variável pageWebResource
, no entanto, não está disponível.
Além dessas variáveis, as seguintes variáveis estão disponíveis:
groupsHash
: retorna um hash dos grupos do usuário corrente.lum_device
: retorna o dispositivo que está acessando o portal.
As funções disponíveis são:
isMemberOf(String groupAlias)
: Retorna se o usuário atual pertence ao grupo dado. Em outras palavras, retorna verdadeiro se existe um grupo G tal que apelido de G é igual ao parâmetro fornecido.groupsHash()
: Retorna um hash com os grupos que o usuário pertence.
Valores customizados no contexto
Para expor valores customizados no contexto, é necessário definir o elemento <custom>
especificando
a classe que implementa IBusinessContextValueProvider
utilizando o atributo className
.
Se espeficado o atributo className
, ele deve conter o nome totalmente qualificado da classe Java
que implementa IBusinessContextValueProvider
.
Na definição da propriedade customizada podem ser passados parâmetros para serem utilizados no cálculo do valor a ser exposto, como no seguinte exemplo:
Nesse caso, lumis.portal.businesscontext.example.HelloWorldContextValueProvider
é o nome totalmente qualificado da classe customizada a ser utilizada. Essa classe deve implementar lumis.portal.businesscontext.IBusinessContextValueProvider
. Para uma melhor compatibilidade futura, é recomendado estender a classe abstrata lumis.portal.businesscontext.AbstractBusinessContextValueProvider . A interface define os seguintes métodos:
public String get(HttpServletRequest request)
: Método utilizado para calcular o valor da propriedade na requisição.public void initialize(Map<String, String> parameters)
: Método de inicialização que recebe um mapa de parâmetros opcionais passados no nó parameters dentro do nó custom. No exemplo, esse mapa seria: {name
=World
}.
Abaixo uma implementação de exemplo:
Nessa implementação de exemplo, o valor da propriedade seria "Hello, World", onde World
é o parâmetro com o nome name
.
Para maiores informações, veja a API Java e XSD.
Exemplos de utilização
Para expor o dispositivo do usuário na propriedade device.os
:
Para expor o tipo de dispositivo do usuário na propriedade device.type
:
Para expor o hash dos grupos do usuário na propriedade groups.hash
:
Para expor se o usuário pertence a algum grupo na propriedade is.member.of.apelido
:
Para obter o contexto atual no contexto de uma interface (ou seja, em um controle, em um process action , em um data provider etc), basta utilizar o método getBusinessContext()
do request de interface, por exemplo:
Em um process action ou controle:
Em um data provider :