Versão 4.2.0.080723
Novidades
- Serviço Relatórios ;
- Adição de novos jars referentes ao funcionamento do Serviço de Relatórios;
- Acrescentado em lumisportalconfig.xml o elemento
serverId
para especificar uma identificação para o servidor. O valor desse atributo deve ser único entre servidores em um ambiente multiserver. Atualizar o lumisportalconfig.xml com essa configuração; - Serviço de Categorização de Conteúdos ;
- Nova arquitetura de content;
- Informação de interface sendo carregada: a configuração é realizada no elemento
<loadingHtmlMessage>
no lumisportalconfig.xml que permite atribuir informações de progresso nas chamadas das interfaces client-side. Por default, o usuário visualizará uma imagem, juntamente com a string "Carregando". A renderização das interfaces client-side passou a ser assíncrona, ou seja, o portal não espera que uma interface seja renderizada, para renderizar a outra. As renderizações são realizadas em paralelo. Atualizar o lumisportalconfig.xml com essa configuração; - Novo estilo para a interface Busca com Resultados: ListAcessible.xsl (Lista Acessível). Este estilo permite que a interface com comportamento client-side também seja acessível;
Melhorias
- Exportação/Importação: Regras de membros de grupos locais e lista de controle de acesso;
- Serviço Fale Conosco agora possui categoria para as mensagens;
- Criado o controle
lum_conditionalRender
que somente é renderizado, bem como os seus filhos, caso a condição definida em uma EL for satisfeita; - Implementado o template com
mode="lum_renderDetailsValue" name="lum_renderDetailsValue
" no doui controls. Para customizar a renderização de um campo da interface de detalhes, é possível criar o proprio template commode="lum_renderDetailsValue
" como exibido abaixo: - Cluster:
- Criada interface
IClusterMember
para representar membro do cluster. Consultar a APIlumis.portal.cluster
;
- Criada interface
- Alteração do Header Html de páginas, com a possibilidade de adição de meta-tags description e keywords que facilitam a indexação pelos mecanimos de busca. Para a página de Detalhes é possível customizar título e os metadados em tempo de execução;
- Suporte a annotations de lifecycle do JPA;
- Conforme o padrão J2EE, foi adicionado no web.xml o elemento
<distributable/>
. Sem esse elemento, o HttpSession não se replicaria, quando a devida configuração de replicação é ativada no application server. Atualizar o web.xml com essa configuração; - lumishibernate.cfg.xml: acrescentar a seguinte propriedade, após o upgrade, de preferência em um bloco geral para servir a qualquer string de conexão:
<property name="jdbc.batch_size">0</property>
Esta propriedade é necessária para o correto funcionamento do banco, por exemplo, para evitar erros de adição de conteúdo com workflow no MySQL;
- Inclusão do filtro
WebDataFilter
no arquivo web.xml que serve arquivos localizados em www/data, para ser utilizado quando webRootPath for externo ao servidor de aplicação;
Alterações
- Em decorrência de alterações na definição do schema do douidefinition, a raiz dos arquivos customizados devem ser atualizadas de:
Para:
Os arquivos douidefinition.xml com o trecho antigo continuam funcionando normalmente, mas ferramentas de edição de XML, que dão suporte à validação de schema ou auto complete, podem indicar erros ou não serem capazes de utilizar essas funcionalidades corretamente.
- Os arquivos .lec do produto (prebuilt channels) foram alterados para conter a versão 4.2.0.0 e os antigos para 1.0.0.0. Para a importação, se a versão do arquivo .lec não for igual do .lec atual, será exibida uma mensagem de erro alertando sobre tal diferença de versão, e a importação será interrompida;
- Lock:
lumis.portal.lock.ILockManager
revisto e incompatível com a versão anterior;- servicedefinition não possui mais elementos
<lock>
e<lockType>
;
DataBoundControl.setsSourceParameters()
está deprecated;- Relatórios:
- lumishibernate.cfg.xml: acrescentar a seguinte propriedade após o upgrade
<property name="cache.use_query_cache">true</property>
; - servlet
ReportImageServlet
e filtroMonitorContextFilter
incluídos no web.xml. Após o upgrade ele deve ser atualizado com estas configurações;
- lumishibernate.cfg.xml: acrescentar a seguinte propriedade após o upgrade
- Cache:
- Métodos anteriormente deprecated em
IPageCacheManager
, foram removidos; - Os métodos
IPageCacheManager.clearCacheByPageIds
eIPageCacheManager.clearCacheByChannelIds
sofreram alterações em suas assinaturas;
- Métodos anteriormente deprecated em
- Contexto Transacional
- No web.xml foi acrescentado o filtro
TransactionCleanupFilter
; PortalTransactionFactory.getTransaction()
está deprecated;- Nova feature de propagação de transação documentada em
lumis.portal.transaction
- No web.xml foi acrescentado o filtro
- Serviço de Fórum: alteração na estrutura de dados;
- Serviços de Busca: A definição de controles da interface Busca com Resultados do serviço de Busca foi alterada para se utilizar o controle lum_button com o controle
lum_buttonList
; - Agora o portal considera a extensão determinada no lumisportalconfig.xml para páginas cacheadas. Se ela for acessada com qualquer outra extensão, será retornado erro 404 (página não encontrada);
- Content
- O parâmetro
itemId
sempre se refere à chave primária na tabela principal de dados do conteúdo. Não existe mais os conceitos delanguageContentId
ouversionContentId
, cujos valores eram repassados no parâmetroitemId
quando o source possuía multi-idioma ou versionamento. Para identificar um conteúdo de forma mais genérica, sem especificar qual idioma ou versão, há ocontentId
, que é passado pelo parâmetroPortalRequestParameters.PAGE_PARAMETER_ITEM_ID ("lumItemId")
; - URLs para detalhes de conteúdos alteradas. Agora, é utilizado o parâmetro
lumItemId
contendo o contentId ao invés de itemId contendo a chave primária,languageContentId
ouversionContentId
. Caso seja fornecido o parâmetroitemId
e nãolumItemId
, o lumItemId que seria utilizado internamente, é calculado a partir do itemId, supondo que este corresponde à chave primária do dado. Casorequest.getParameter("itemId")
seja chamado em uma requisição com lumItemId e sem itemId, o itemId é calculado como sendo a chave primária do dado publicado, correspondente ao conteúdo especificado em lumItemId, para o usuário atual, considerando idioma e regras de publicação. Isto reduz incompatibilidades de URLs antigas para conteúdos sem multi-idioma ou versionamento.Esta inferência de lumItemId a partir de itemId é feita apenas para reduzir incompatibilidades. Seu uso pode causar ineficiência na detecção de cache de páginas htmls a serem expiradas (expirar mais páginas do que necessário) ou outros overheads. Neste cenário, o recomendado é ajustar para os links para utilizarem as URLs no novo padrão;
- XML gerado pelo controle
lum_language
alterado; - Foi alterada a forma como os metadados de conteúdo são armazenados. Parte da api do pacote
lumis.content.metadata
foi removida, o restante está deprecated. A nova API está no pacote lumis.content.core. Portanto, qualquer customização que referencia diretamente os metadados de conteúdo, por exemplo, utilizando o valor demetaDataId
como foreign key, precisa ser revista; - Atributo
lumMetaDataId
não mais adicionado pelos process action padrões de content. Em seu lugar, é adicionado o atributolumContentVersionId
elumContentId
; - metadatahyperlink.jsp substituído por contenthyperlink.jsp. Isso afeta por exemplo, os serviços de Newsletter e RSS;
- Valores de controle incluídos nos índices da busca para conteúdos alterados;
- Interface
lumis.service.association.associatedContents
: campos renomeados deassociatedMetaDataId
paraassociatedContentId
eassociatedMetaData
paraassociatedContent
; IWorkflowManager
: alguns métodos deprecated eautoArchivePublishedContent
substituído por outro com assinatura diferente;IWorkflowActionHandler
: assinatura do métodopreProcessAction
foi alterada;- Nesta versão não existe mais a possibilidade de um source tipo contentTable de não possuir isolação por instância de serviço. Para migrar os casos implementados para a nova versão do produto, existem as possibilidades descritas abaixo:
- Migrar todos os conteúdos para a mesma instância de serviço:
Esta solução consiste em migrar todos os conteúdos para uma única instância de serviço e sempre utilizar interfaces desta mesma instância de serviço. Quando não há necessidade de controle de acesso mais complexo, esta é um meio simples de manter a forma como o serviço funcionava anteriormente.
- Primeiro passo: ajustar a base de dados, para que os conteúdos desse serviço passem a pertencer a uma instância de serviço específica. Para isso obtenha o identificador da instância de serviço desejada, e do respectivo serviço. Pode ser obtida na aba 'Avançado' das propriedades de uma interface dessa instância de serviço, nos campos 'Instância de Serviço' e 'Serviço'. Executar os seguintes SQLs para atualizar a base de dados:
- Segundo passo: editar as páginas para utilizarem interfaces apenas da instância de serviço selecionada acima. É necessário ir em cada página com interface de outra instância de serviço, remover a interface e adicionar em seu lugar a interface da instância de serviço correta;
- Terceiro passo: pode-se remover as demais instâncias de serviço, que não serão mais utilizadas;
- Utilizar o atributo
publishAllAccessibleContents
no source que não possuía isolação: Esta solução resolve o problema de nas interfaces de publicação exibir também conteúdos de outras interface. No entanto, este atributo não afeta as interfaces de administração. Se também for desejado que a interface de administração exiba todos os conteúdos, será necessário migrar os conteúdos para uma mesma instância de serviço, como explicado acima, mas será necessário efetuar o passo 2 apenas para as interfaces de administração, pois o atributopublishAllAccessibleContents
fará com que as interfaces de publicação exiba os conteúdos da instância de serviço de administração. O passo 3 poderia ser feito apenas para instâncias de serviço não mais utilizadas.
- Migrar todos os conteúdos para a mesma instância de serviço:
- Para ser possível publicar dados de múltiplas instâncias de serviços em uma interface, a configuração se os dados serão ou não filtrados pelas regras de publicação para instâncias de serviço deve ser definida em cada source no douidefinition. O source do tipo contentTable poderá ter o atributo
publishAllAccessibleContents
tipoboolean
, com valorfalse
. Quandotrue
, a query gerada pelo content framework, além de exibir os conteúdos publicados para a instância de serviço da interface, também exibirá os conteúdos das instâncias de serviço que o usuário corrente tem permissão, através do controle de acesso "Visualizar Instância de Serviço". Este atributo afetará apenas interfaces de publicação. Interfaces de administração não serão afetadas por este atributo; lum_AlbumPhotograph.albumId
foi alterado paralum_AlbumPhotograph.albumContentId
, que referencia o identificador do conteúdo do álbum. O upgrade efetua a conversão necessária, porém pode haver incompatibilidade se alguma customização referencia albumId;- O uso de itemId + serviceInstanceId + sourceId foi considerado como deprecated para especificar um conteúdo no
IWorkflowManager
. O métodogetAccessibleTransitions
também está deprecated e possui substitutos. Para maiores detalhes, verificar o o javadoc doIWorkflowManager
; - Upgrade:
- Conteúdos com
languageId
com valorNULL
(usado para representar o idioma "Todos"), terão o idioma (que agora não é permitidoNULL
) com valor "zz_ZZ" após o upgrade, e odefaultLocale
também será "zz_ZZ" para estes conteúdos, para manter a funcionalidade que "Todos" causava.O idioma 'zz_ZZ' aparece em branco no front-end de edição, e deve ser alterado manualmente, respeitando as novas regras de conteúdos multi-idioma.
Para os demais conteúdos defaultLocale será NULL;
- Todas as instâncias de serviços que possuem algum source content devem ser reindexadas;
- Esta versão efetua o versionamento de alguns metadados, o que não ocorria na versão anterior. Durante o upgrade, conteúdos com versionamento terão estes metadados versionados copiados da versão atual para as versões anteriores;
- Todos os serviços content devem ter seus registros atualizados. O processo de upgrade já atualiza os registro dos serviços padrões do produto. Os demais precisam ser atualizados manualmente no gerenciador de serviços;
- Recomenda-se limpar toda a lista de cache de página html, para evitar cache de urls não mais existentes.
- Conteúdos com
- O parâmetro