Customização de Instância de Interface e/ou Serviço
Através do menu de contexto de uma instância de interface, acessado através do botão direito sobre a mesma, é possível customizá-la e configurar determinados parâmetros para a instância de serviço.
A figura abaixo é representativa de tais customizações e parametrizações. Porém, cada interface pode apresentar parametrizações diferentes dependendo do serviço ao qual ela pertence.
Para facilitar, será adotado o termo "interface" ao invés de "instância de interface".
Propriedades
As propriedades da interface podem ser alteradas nas abas "Básico", "Cache", "Renderização", "Layout" e "Informações e Debug".
Na aba "Básico", encontram-se informações como Título e Nome:
- Título: título usado para exibição para usuário final. Se o valor desse campo for vazio, o título especificado na definição da interface será utilizado. Caso na definição da interface não exista título definido, o nome de exibição desta instância de interface (vide campo acima) será utilizado;
- Nome: o valor desse campo será usado como nome de exibição desta instância de interface durante a montagem do portal. Se o valor desse campo for vazio, o nome especificado na definição da interface será utilizado;
A figura abaixo exibe uma interface cujas configurações estão definidas na figura anterior.
A figura a seguir refere-se a aba "Cache" das propriedades de uma interface.
Para cada interface instanciada em uma página, o administrador poderá determinar se será cacheada ou não. Caso contrário assumirá as configurações default do framework.
Quando uma página possui uma instância de interface que não varia com a requisição, é possível que ela seja cacheada. Assim para as próximas requisições, essa interface não será executada, e sim, será retornado o código HTML localizado em memória.
Em um evento de limpeza de cache, por exemplo, quando um conteúdo é alterado, o código armazenado em memória referente à instância de interface é removido e no próximo acesso é gerado novamente.
Cache de interface é útil quando as páginas possuem conteúdos HTML, banners estáticos ou até mesmo listas de conteúdos. Não devem ser cacheadas as interfaces que interagem com os usuários, requisitam entrada de dados, possuem paginação, ou dependem de parâmetros.
As opções para cache são:
- Habilitado: determina se será gerado ou não um HTML da interface para ser guardado em cache de memória. Essa habilitação é feita por instância de interface da instância de serviço. Isso significa que ao cachear a interface A' da instância de serviço A, não significa que outra instância de interface A'' também será cacheada.
-
Nível: Quando uma página pertence a um template de página, a interface pode ser cacheada no nível do template. Com isso esse fragmento do código será armazenado apenas uma vez para todas as instâncias de interface.
Portanto, esta propriedade refere-se às intâncias de interface de templates de páginas. As interfaces neles instanciadas podem se cacheadas a nível de template ou a nível de página. Isso significa que, ao cachear uma interface a nível de template, será gerado apenas UM cache HTML a ser guardado em memória para aquela interface. Então, para cada página criada a partir do template, não será necessário processar a tal interface e sim, chamar o seu cache em memória. Já no nível de página (ou seja, local), para cada página criada a partir do template, será gerado um cache HTML de interface.
- Tempo de Expiração de Cache: informa que o cache de uma instância de interface deve expirar automaticamente após um determinado tempo. O valor padrão definido pelo portal (caso o serviço não troque este padrão) é não expirar. Caso a solução ache que é necessário que a instância atualize os seus valores periodicamente, ela pode informar no campo a periodicidade em que a instância de interface expirará o seu cache após a sua última geração. Quando uma instância de interface tem o seu cache expirado, todos os cache htmls que utilizam aquela instância de interface também serão expirados.
-
Chave: as instâncias de interfaces podem ter maior granularidade na forma que o seu cache é gerado. O valor padrão definido pelo portal (caso o serviço não troque este padrão) é utilizar a instância de interface e idioma. A solução pode alterar os valores padrões implementando uma classe que extende a interface
lumis.portal.serviceinterfaceinstance.IInterfaceInstanceCacheKeyProvider
ou utilizando o Contexto de Negócio. Debaixo da opção "Contexto", o portal listará todas as propriedades de contexto disponíveis no atual website.
A figura a seguir refere-se a aba "Renderização" das propriedades de uma interface. Tais propriedades referem-se ao tipo de renderização (pelo servidor e pelo browser cliente).
-
Renderização:
- Server Side: Propriedade default que define que quando o browser fizer uma requisição ao servidor web/servidor de aplicação, este fará uma requisição aos serviços e montará a página com tal interface;
- Client Side Script: Esta propriedade define que, quando o browser fizer uma requisição ao servidor web/servidor de aplicação, este retornará um javascript, que via tecnologia AJAX renderizará somente a interface, e não será realizado um refresh na página inteira.
- Desabilitado: Esta propriedade faz com que a interface não seja renderizada e nem seja possível chamar os process actions da mesma.
- Server side include: Permite determinar se será gerado ou não um HTML em data/pages/interfaces/guid_instancia_interface/locale.htm, para que determinadas páginas cacheadas apenas façam referência a tal arquivo gerado. Algumas tags específicas do HTML das páginas cacheadas são tratadas e substituídas no servidor para, dinamicamente, incluir conteúdo que não faz parte do seu HTML .
- Exibir Barra de Título: permite que seja atribuída à interface uma barra com o seu nome default. O valor desta propriedade por default é "não", significando que a barra de título está inibida;
- Permitir impressão: da interface determina se a interface sairá na impressão quando a página for impressa a partir do browser (valor="não") ou utilizando o serviço de impressão do Lumis (valor="sim"). Caso estas opções não sejam escolhidas, será adotado um valor default, definido no framework.
- Desabilitar edição em contexto: Permite desativar o Modo de Edição em Contexto para essa instância de interface.
Dimensões
- Largura: Permite configurar a largura da interface na página;
- Altura: Permite configurar a altura da interface na página;
Espaçamento
- Esquerda, Direita, Acima e Abaixo: espaçamento em pixels da interface com as demais interfaces, que estão contidas em uma mesma área;
- Col-Span e Row-Span: da interface;
Os valores para altura, largura e espaçamento não podem receber valores negativos. Caso deseja-se valores em porcentagem, é necessário informar o "%".
A aba "Informções e Debug" exibe propriedades referentes à identificação da interface e permite modificar o nível de depuração da instancia.
Debug
- Nível de Debug: Permiteconfigurar se será exibido stacktrace do Java quando há um erro de renderização. O mesmo efeito é possível através do botão direito, opção Atualizar, na interface que não rederizou, no modo administrativo do portal (dentro do F2). Ela é renderizada mostrando a mensagem de debug. Isso auxilia o desenvolvedor, pelo fato de não haver necessidade de verificar o erro no log. Pode-se definir, portanto, se o debug será baixo, médio ou alto. Como default, esta propriedade está definida como "Nenhum" nível de debug.
Identificação
- Interface: Nome de identificação que representa a interface (independente de quantas instâncias daquela interface estiverem instanciadas);
- Instância de Interface: ID da instância da interface;
- Serviço: O serviço ao qual a interface pertence;
- Instância de Serviço: O ID da instância de serviço ao qual a instância de interface pertence;
- Nome da Instância de Serviço: O nome usual da instância de serviço;
- Canal: O caminho do canal da onde provém a instância de serviço que possui tal interface.
Controlar Acesso
Modo de acesso rápido ao controle de acesso da instância de serviço, ao qual a interface pertence;
Estilo
Os estilos de uma interface são definidos por XSL . Através desta opção, é possível selecionar um estilo padrão do Lumis;e cadastrar novos estilos. Maiores detalhes consulte o tópico Editor de Estilos.
Número de Itens
Determina se a interface será paginada. Para isso, deve-se especificar quantos itens de registros serão renderizados. Imagine uma interface de lista com 4 registros, um embaixo do outro. Se for determinado que essa intenface terá 2 itens, ela portanto sofrerá paginação. Serão duas páginas da mesma interface, cada uma delas com dois itens. Ver figura abaixo:
Campos
Permite retirar ou acrescentar campos para exibição de dados em uma interface administrativa. Como pode ser visto na figura abaixo, as colunas "Incluir" e "Exibir", respectivamente, permitem indicar a disponibilidade de inclusão de tal campo na interface administrativa e se esta será exibida ou não.
Habilitar a opção Incluir de um campo, adiciona este campo no XML da interface. Por outro lado, habilitar a opção Exibir, adiciona a informação display="true" para tal campo no mesmo XML.Dessa forma, o XSL da interface implementado para ler essa informação do "display ", renderizará ou não o campo. Fica a critério do administrador do portal determinar, por questão de desempenho, se tais campos terão a possibilidade de fazer parte da interface (selecionar "Incluir") e se serão exibidas (selecionar "Exibir").
A desvantagem de habilitar e desabilitar a inclusão de determinados campos no XML da interface é que determinados XSLs customizados podem quebrar.
Caso seja necessário, pode-se restaurar a configuração padrão definida para a interface, acionando a opção Restaurar padrão .
Os campos que estão desabilitados não podem ser retirados da interface, ou seja, por default eles já estão habilitados para fazerem parte da interface, no entanto, ficam a critério do administrador do portal exibí-los ou não. Geralmente isso não ocorre, pois são campos utilizados na implementação da interface, como o "ID".
Ordenação
Permite ordenar os conteúdos através de critérios como ascendência ou descendência dos valores cadastrados para os campos escolhidos.
Considerando a figura acima, a ordenação dos conteúdos de determinada interface, ocorrerá da seguinte forma: primeiramente, os conteúdos serão ordenados pelos seus títulos de forma ascendente. Concomitantemente, os conteúdos serão ordenados pela data da última alteração do conteúdo, porém os de data mais recente para os de data mais antiga. Funciona como um agrupamento. Imagine dois conteúdos com o mesmo título e datas de alteração diferentes. Neste caso, o campo "Data da última alteração" é que determinará a ordenação, já que não dá para ordenar pela ascendência do valor do título, uma vez que os dois conteúdos apresentam o mesmo valor para o mesmo.
Por default , os conteúdos das interfaces de listas de conteúdo, estão ordenados por data de publicação descendente.
Filtros
Permite definir filtros para campos de uma interface com lista de conteúdos. Para cada um dos filtros, pode-se definir se receberá parâmetros do usuário ou não, se devem ou não por determinado momento ser aplicado na interface; entre outras configurações.
A figura abaixo exibe a tela de administração de filtros, onde é possível adicionar mais de um campo de filtro para a mesma interface. Para cada campo do filtro pode-se mover para cima ou para baixo, determinando a sua ordem no filtro.
No exemplo acima, o filtro definido para o campo "título" está configurado para retornar os conteúdos cujo título é igual ao definido para o valor do filtro. O segundo filtro definido para o campo "Data de publicação" está configurado para retornar os conteúdos cuja data de alteração seja maior ou igual ao definido para o valor do filtro.
Os filtros cadastrados acima são exibidos da seguinte maneira em uma interface de administração de conteúdos. Podem ser editados e excluídos conforme necessidade.
Os filtros cadastrados podem ser dos tipos: básico ou avançado.
a)Tipo básico: permite a configuração de um filtro através de escolha de vários parâmetros.
Informações do filtro para o tipo básico:
- Id: Campo obrigatório que identifica unicamente o filtro. Como é um campo que identificará unicamente o filtro a ser criado, dois filtros não podem ter a mesma identificação;
- Campo: Campo que receberá o filtro. Neste caso, somente os campos que existem para a interface (referentes a primeira coluna da interface campos) serão exibidos;
- Operador: pode-se escolher um dos operadores (igual a, diferente de, maior que, contendo, contendo - case sensitive, nulo, não nulo, entre outros) que irá determinar o conjunto dos resultados da aplicação do filtro. Por exemplo, se para um campo for definido o operador "diferente de", significa que ao digitar uma palavra no filtro, serão retornados os registros que não contenham tal palavra para aquele campo. Para filtros criados utilizando campos do tipo HTML e text, recomenda-se utilizar o operador contendo-case sensitive, pelo fato desses campos não possuírem suporte a upperem determinados banco de dados;
- Exibir itens: permite que os itens a serem filtrados não sejam exibidos no dropdown na interface, exigindo que o usuário digite o valor do filtro; ou que todos os itens sejam exibidos no dropdown (bastando o usuário selecionar o valor do filtro); e por último, somente os itens referenciados sejam exibidos no dropdown. Os itens referenciados são aqueles que possuem itens cadastrados associados aos itens a serem filtrados;
- Valor default: permite definir um valor fixo para o filtro, toda vez que a interface é acessada;
- Largura:permite definir o tamanho em pixels, para o campo do valor do filtro;
- Escondido: permite não exibir o filtro na interface, evitando removê-lo da administração de filtros, caso haja a necessidade de exibí-lo novamente.
Uma vez definido o filtro pelo tipo básico, pode-se verificar o XML da definição do filtro criado, selecionando o "Tipo Avançado".
b)Tipo Avançado: Exibe a definição XML do filtro configurado no "Tipo básico". Pode-se também customizar o filtro através de sua definição XML.
A figura abaixo exibe o resultado do XML de definição do filtro configurado na figura anterior:
Mais atributos ainda podem ser inseridos no filtro uma vez configurados no "Filtro Básico". Possíveis atributos para a definição do filtro:
- id: Id do filtro;
- fieldId: Campo sobre o qual o filtro é aplicado. Se não for definido vale o valor do atributo id;
- requestParameterName: Define o nome do parâmetro usado para obter o valor a ser filtrado. Se não for definido vale o valor do atributo id;
- operator:(equal/like/notEqual/greaterThan/greaterThanOrEqual/lessThan/lessThanOrEqual/contains/in/isNull/isNotNull);
- showItems: Exibe as opções em um dropdown (all/referenced). Tipo "all" exibe todas as possíveis opções e "referenced" apenas as que estejam presentes naquele campo em algum conteúdo;
- renderBlankOption="false": Permite que a opção "Todos" não apareça no dropdown;
- hidden:Filtro escondido (true/false[default]);
- required:Define a filtragem como necessária para a exibição dos resultados. Se é um filtro escondido que não recebeu o parâmetro, não serão exibidos resultados (true/false[default]);
- value: Define o valor que será usado na filtragem, sempre;
- defaultValue: Define o valor default usado na filtragem, caso outro não seja definido pelo usuário ou recebido como parâmetro;
- dependentOnFilter: Define dependência para um outro filtro. A dependência será calculada baseada em informações de lookup;
- maxrows: Define quantos itens filtrados serão exibidos por vez.
Pode-se ainda adicionar vários filtros que interagem um com o outro com os comparadores "e/ou".
A figura abaixo exibe o XML de um filtro avançado com uma comparação ou(or) entre o titulo e a data de publicação:
O elemento filters pode ter os seguintes atributos:
- id: Id do filtro. Caso não especificado será gerado um novo GUID. Deve ser único entre todos os filtros da instancia de interface.
- concatenationType: Define o tipo de concatenação que será feita nos filtros. Pode ser (or/and), quando não especificado assume o valor and
Serviço de Imagens
Permite selecionar o repositório de imagens que o serviço corrente utilizará, caso este requisite imagens.
Ao instanciar um serviço que necessita de um repositório de imagens, automaticamente o Lumis irá procurar por uma instância do serviço de imagens no canal corrente. Se não houver, ele procura no canal acima, cujo serviço de imagens tenha sido instanciado antes do serviço que irá utilizá-lo. Se em um mesmo diretório houver mais de um serviço de imagens, o Lumis não faz a seleção. Neste caso, o usuário deverá determinar qual instância será utilizada, através dessa opção.
Exemplos de serviços Lumis que necessitam selecionar o repositório de mídias: HTML, Links, Notícias, Banners;
Serviço de documentos
Permite selecionar o repositório de documentos pertencente a um canal, que o serviço corrente utilizará, caso este requisite utilizar documentos.
Ao instanciar um serviço que necessita de um repositório de documentos, automaticamente oLumis irá procurar por uma instância do serviço de documentos no canal corrente. Se não houver, ele procura no canal acima, cujo serviço de documentos tenha sido instanciado antes do serviço que irá utilizá-lo. Se em um mesmo diretório houver mais de um serviço de documentos, o Lumis não faz a seleção. Neste caso, o usuário deverá determinar qual instância será utilizada, através dessa opção.
Exemplo de serviço Lumis que necessita selecionar o repositório de documentos: HTML, pois o editor HTML apresenta uma opção de anexar arquivos.
Workflow
Esta opção permite determinar qual workflow a instância de serviço utilizará: workflow padrão do portal; workflows customizados, ou nenhum. No entanto, esta opção somente estará disponível para serviços que possuem suporte a tal funcionalidade.
Não é possível selecionar um tipo de workflow caso a instância esteja com conteúdos cadastrados.
Serviço de Categorização
Permite definir qual instância de serviço de Categorização será utilizada pelos serviços de gestão de conteúdo. Mais detalhes consultar Categorização de Conteúdos;
Propriedades de Busca
Permite habilitar/desabilitar a busca para a instância de serviço ao qual a interface pertence.
Ao desabilitar a busca para a instância de serviço ao qual a interface pertence, os conteúdos não serão recuperados. É importante salientar que a indexação continuará a ocorrer com a busca desabilitada. Posteriormente, quando a busca for novamente habilitada, não será necessário reindexar esta instância de serviço para que seus conteúdos sejam recuperados.
Atualizar
Atualização da interface após mudanças nas configurações. Permite também fazer limpeza de cache de interface e verificar os possíveis erros ocorridos na renderização.