Novidades
o | 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; |
• | 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 com mode="lum_renderDetailsValue" como exibido abaixo:
...
<xsl:template match="*" mode="lum_renderDetailsValue">
<xsl:choose><BR><xsl:whentest="name()='photograph'">
<img src="{downloadInlineHref}" alt="{name}" />
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="lum_renderDetailsValue" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
...
o | Criada interface IClusterMember para representar membro do cluster. Consultar a API lumis.portal.cluster; |
• | 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: |
<?xml version="1.0" encoding="UTF-8"?>
<douiDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.lumis.com.br/lumisportal/xsd/douidefinition.xsd"
xmlns:control="http://www.lumis.com.br/douicontrols">
(...)
</douiDefinition>
|
Para:
<?xml version="1.0" encoding="UTF-8"?>
<doui:douiDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doui="http://www.lumis.com.br/lumisportal/xsd/doui"
xmlns:control="http://www.lumis.com.br/douicontrols">
(...)
</doui:douiDefinition>
|
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; |
o | lumis.portal.lock.ILockManager revisto e incompatível com a versão anterior; |
o | servicedefinition não possui mais elementos <lock> e <lockType>; |
• | DataBoundControl.setsSourceParameters() está deprecated; |
o | lumishibernate.cfg.xml: acrescentar a seguinte propriedade após o upgrade |
<property name="cache.use_query_cache">true</property> ;
o | servlet ReportImageServlet e filtro MonitorContextFilter incluídos no web.xml. Após o upgrade ele deve ser atualizado com estas configurações; |
o | Métodos anteriormente deprecated em IPageCacheManager, foram removidos; |
o | Os métodos IPageCacheManager.clearCacheByPageIds e IPageCacheManager.clearCacheByChannelIds sofreram alterações em suas assinaturas; |
o | No web.xml foi acrescentado o filtro TransactionCleanupFilter; |
o | PortalTransactionFactory.getTransaction() está deprecated ; |
• | 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); |
o | O parâmetro itemId sempre se refere à chave primária na tabela principal de dados do conteúdo. Não existe mais os conceitos de languageContentId ou versionContentId, cujos valores eram repassados no parâmetro itemId 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á o contentId, que é passado pelo parâmetro PortalRequestParameters.PAGE_PARAMETER_ITEM_ID ("lumItemId"); |
o | 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 ou versionContentId. Caso seja fornecido o parâmetro itemId e não lumItemId, o lumItemId que seria utilizado internamente, é calculado a partir do itemId, supondo que este corresponde à chave primária do dado. Caso request.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;
o | XML gerado pelo controle lum_language alterado; |
o | 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 de metaDataId como foreign key, precisa ser revista; |
o | Atributo lumMetaDataId não mais adicionado pelos process action padrões de content. Em seu lugar, é adicionado o atributo lumContentVersionId e lumContentId; |
o | metadatahyperlink.jsp substituído por contenthyperlink.jsp. Isso afeta por exemplo, os serviços de Newsletter e RSS; |
o | Valores de controle incluídos nos índices da busca para conteúdos alterados; |
o | Interface lumis.service.association.associatedContents: campos renomeados de associatedMetaDataId para associatedContentId e associatedMetaData para associatedContent; |
o | IWorkflowManager: alguns métodos deprecated e autoArchivePublishedContent substituído por outro com assinatura diferente; |
o | IWorkflowActionHandler: assinatura do método preProcessAction foi alterada; |
o | 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.
a) 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:
update lum_Content set serviceInstanceId='<identificador_da_instância_de_serviço>'
where serviceInstanceId in
(select serviceInstanceId from lum_ServiceInstance
where serviceId='<identificador_do_serviço>');
update lum_ContentPubServiceInst set serviceInstanceId='<identificador_da_instância_de_serviço>'
where serviceInstanceId in
(select serviceInstanceId from lum_ServiceInstance
where serviceId='<identificador_do_serviço>');
update lum_File set serviceInstanceId='<identificador_da_instância_de_serviço>'
where serviceInstanceId in
(select serviceInstanceId from lum_ServiceInstance
where serviceId='<identificador_do_serviço>');
|
b) 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;
c) 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 atributo publishAllAccessibleContents 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. |
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 tipo boolean, com valor false. Quando true, 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; |
o | lum_AlbumPhotograph.albumId foi alterado para lum_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 | O uso de itemId + serviceInstanceId + sourceId foi considerado como deprecated para especificar um conteúdo no IWorkflowManager. O método getAccessibleTransitions também está deprecated e possui substitutos. Para maiores detalhes, verificar o o javadoc do IWorkflowManager ; |
□ | Conteúdos com languageId com valor NULL (usado para representar o idioma "Todos"), terão o idioma (que agora não é permitido NULL) com valor "zz_ZZ" após o upgrade, e o defaultLocale 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. |
|