Open the menu

    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 um dos atributos className ou scriptPath .

    Se espeficado o atributo className , ele deve conter o nome totalmente qualificado da classe Java que implementa IBusinessContextValueProvider . Já, se for especificado o atributo scriptPath , ele deve conter o caminho do arquivo de script que define a classe Java implementando 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 :