Páginas filhas
  • ER_PCREQ-4888_Unificar_bibliotecas_compartilhadas_dos_frameworks_Logix_Protheus

Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.

Informações Gerais

Especificação

Produto

Logix

Módulo

Framework

Segmento Executor

Tecnologia

Projeto

LD_FRW_FRW001

IRM

PCREQ-4887

Requisito

PCREQ-4888

Subtarefa

PDR_LD_FRW001-68

Release de Entrega Planejada

12.1.7

País

(X) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

 


Objetivo

Unificar as bibliotecas e componentes de framework compartilhados entre os produtos Protheus e Logix para que não haja qualquer incompatibilidade ou conflito na unificação dos mesmos em um repositório de objetos (RPO) único.


Definição da Regra de Negócio

Atualmente no Logix são utilizadas diversas bibliotecas que foram duplicadas do Protheus, porém com a unificação dos frameworks, estes fontes irão conflitar com os já existentes no Protheus. Para evitar tais conflitos, as bibliotecas utilizadas no Logix serão revisadas conforme as necessidades abaixo:

  1. Adequação:
    Funções do Logix com nomes iguais a funções do Protheus serão renomeadas ou serão retirados do código fonte do Logix.
  2. Renomeação:
    Caso o código fonte utilizado pelo Logix sofreu muitas alterações, o mesmo será renomeado e todos os outros fontes que o utilizam serão alterados.
  3. Verificação de produto:
    Caso o código fonte não possa ser renomeado, será feita uma alteração para verificar o produto em questão, executando a lógica conforme o resultado.

Para outras bibliotecas que não sofreram alterações, será apenas necessário readequar o local em que se encontra o código fonte - os mesmos deverão permanecer na pasta de códigos fontes do Protheus.

Adequação

No Logix existem funções que possuem nomes iguais as já existentes no Protheus (pode-se perceber isto durante a unificação do RPO), estas são funções copiadas de códigos fontes do Protheus ou por coincidência foram criadas com o mesmo nome. Neste caso deve-se avaliar cada uma das funções conflitantes para que a mesma seja renomeada, alterada para estática ou retirada do código fonte de Logix para que o mesmo passe a utilizar a função que se encontra no Protheus.


Código Fonte: LPrinterBase.prw
Conflito: Funções GetCoefFromIni, GetPrinterSession, PrinterSetup e IsPrinterOK já existentes no Protheus.
Solução: Remover estas funções do fonte LPrinterBase.prw e recolocá-las como estáticas no fonte LReportFile.prw que é onde são utilizadas.


Código Fonte: LNumericField.prw
Conflito: Função RemoveChar já existe no Protheus.
Solução: Remover a função do fonte LNumericField.prw, esta função não está sendo mais utilizada no Logix.


Código Fonte: miscfunctions.prw
Conflito: Função LoadBitmap já existe no Protheus.
Solução: Remover a função do fonte miscfunctions.prw e alterar os fontes do Logix para utilizar a função original do Protheus.

Fontes afetados
Revisar as chamadas da função LoadBitmap no Logix.

LTable.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LTableColumnEx.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
-----------------------------------------------------------------------------------------------------------------------------------------

 

Código Fonte: string.prw
Conflito: Função Capital já existe no Protheus.
Solução: Remover a função do fonte string.prw, os fontes do Logix que a utilizam passarão a usar a função original do Protheus.


Código Fonte: version.prw
Conflito: Função GetVersao já existe no Protheus.
Solução: Remover a função do fonte version.prw, os fontes do Logix que a utilizam passarão a usar a função original do Protheus.


Código Fonte: mail.prw
Conflito: Include já existe com este mesmo nome no Protheus.
Solução: Renomear as funções de envio de e-mail.

Fontes afetados
Revisar as chamadas das funções de envio de e-mail.

LConfiguratorEmail.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/configurator
LMail.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
log5600.4gl$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/log/funcoes
log5600.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/log/funcoes
-------------------------------

----------------------------------------------------------------------------------------------------------

 

Renomeação

Com a evolução de ambos os produtos, algumas bibliotecas duplicadas para uso no Logix foram alteradas com diversas correções e melhorias inviabilizando a combinação entre os códigos fontes. Para que não haja qualquer impacto tanto no produto Logix quanto no Protheus, o código fonte alterado será renomeado, criando-se assim uma nova classe ou biblioteca específica para o produto Logix.


Código Fonte: style.ch
Conflito: Include já existe com este mesmo nome no Protheus.
Solução: Renomear a include de style.ch para logixstyle.ch.

Fontes afetados
Alterar chamada da include style.ch para logixstyle.ch.

eai.ch$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/include
framework.ch$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/include
log8100.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/audit_trail
log8110.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/audit_trail
log8120.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/audit_trail
log8130.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/audit_trail
log8140.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/audit_trail
tinterop4gl.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/lib/generico
tlocalfile.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/menu10R2
tpmenugroup.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/menu10R2
tpmenuitem.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/menu10R2
-----------------------------------------------------------------------------------------------------------------------------------------

 

Código Fonte: FWChart.prw, FWChartBar.prw, FWCharColor.prw, FWChartFactory.prw, FWChartLegend.prw, FWChartLine.prw, FWChartPie.prw, FWChartSerie.prw
Conflito: Foram realizadas diversas melhorias e correções nos componentes, inviabilizando a combinação entre os fontes Logix e Protheus.
Solução: Renomear os componentes FWChart* para LFWChart* e revisar os fontes que o utilizam no Logix.

Fontes afetados
Rever a utilização dos componentes.

LBarChart.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LChart.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LLineChart.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LPieChart.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
-----------------------------------------------------------------------------------------------------------------------------------------

 

Código Fonte: FWLayer.prw, FWLayerCollumn.prw, FWLayerWindow.prw
Conflito: Foram realizadas diversas melhorias e correções nos componentes, inviabilizando a combinação entre os fontes Logix e Protheus.
Solução: Renomear os componentes FWLayer* para LFWLayer* e revisar os fontes que o utilizam no Logix.

Fontes afetados
Rever a utilização dos componentes.

LLayer.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LLayerCollumn.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LLayerPanel.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
-----------------------------------------------------------------------------------------------------------------------------------------

 

Código Fonte: FWWindow.prw
Conflito: Foram realizadas diversas melhorias e correções nos componentes, inviabilizando a combinação entre os fontes Logix e Protheus.
Solução: Renomear os componentes FWWindow para LFWWindow e revisar os fontes que o utilizam no Logix.

Fontes afetados
Rever a utilização dos componentes.

FWLayerWindow.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/lib/component
-----------------------------------------------------------------------------------------------------------------------------------------

 

Código Fonte: xtree.prw
Conflito: Foram realizadas diversas melhorias e correções nos componentes, inviabilizando a combinação entre os fontes Logix e Protheus.
Solução: Renomear os componentes XTree para LXTree e revisar os fontes que o utilizam no Logix.

Fontes afetados
Rever a utilização dos componentes.

LTree.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LTreeItem.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LTreeEx.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LTreeItemEx.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
LTreeNodeEx.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/free_form
menulogix110.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/menu11R0
-----------------------------------------------------------------------------------------------------------------------------------------


Código Fonte: Transparent.prw
Conflito: As funções do fonte Transparent.prw foram completamente alteradas para que fossem utilizadas no Logix.
Solução: Criar um novo fonte com outro nome e recriar as funções do Transparent.prw com outros nomes neste novo fonte.

Fontes afetados
Rever a utilização das funções.

LConfiguratorIdentity.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/configurator
login.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/lib/login
-----------------------------------------------------------------------------------------------------------------------------------------


Código Fonte: FWSCIMSystray.prw
Conflito: As funções do fonte FWSCIMSystray.prw foram alteradas para que fossem utilizadas no Logix.
Solução: Renomear o fonte FWSCIMSystray.prw para LFWSCIMSystray.prw e revisar os fontes que o utilizam no Logix.

Fontes afetados
Rever a utilização das funções.

LConfiguratorIdentity.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/configurator
-----------------------------------------------------------------------------------------------------------------------------------------

Verificação do Produto

Em casos específicos, como serviços WebServices (WS) SOAP e REST, não é possível renomear o código fonte e suas funções - o mesmo código fonte deve ser utilizado por ambos os produtos. Para isso, estas bibliotecas serão alteradas para verificar se o produto em execução é Logix ou Protheus e executará a lógica conforme o resultado.

A verificação poderá consistir o produto conforme uma chave encontrada no arquivo APPSERVER.INI, conforme exemplo abaixo:

FWIsLogix
Function FWIsLogix(cSection)
Local lRet := .F.
If  Empty(cSection)
    lRet := Upper( GetPvProfString( "GENERAL" , "SERVERTYPE" , "" , GetAdv97() ) ) == "4GL" .Or. ;
            Upper( GetPvProfString( "GENERAL" , "DATEZERO"   , "" , GetAdv97() ) ) == "4GL
    If !lRet
        lRet := Upper( GetPvProfString( GetEnvServer() , "SERVERTYPE" , "" , GetAdv97() ) ) == "4GL"
                Upper( GetPvProfString( GetEnvServer() , "DATEZERO"   , "" , GetAdv97() ) ) == "4GL
    EndIf
Else
    lRet := GetPvProfString( cSection, "LOGIX" , "0" , GetAdv97() ) == "1"
EndIf
Return lRet

É importante lembrar que a verificação acima deve ser realizada nos códigos fontes do Protheus.


Os serviços WS SOAP e REST abaixo do Logix serão renomeadas para funções, a chamada para elas, a partir desta alteração, será realizada pelo serviço do Protheus:

Fontes afetados
Renomear fontes conflitantes do Logix.

EAIService.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/eai2/nucleo
LSCIMEntitlements.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/identity
LSCIMPing.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/identity
LSCIMResources.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/identity
LSCIMSync.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/identity
LSCIMUsers.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/identity
FWQuickSearch.prw$/Logix/Fontes_Doc/Sustentacao/10R2-11R0/10R2-11R0/framework/fluig/quicksearch
-----------------------------------------------------------------------------------------------------------------------------------------

 

Alguns outros fontes, serão renomeados por já existirem o fonte com o mesmo nome no Protheus, como:

Nome atualNome novo
EAIService.prwEAIServiceLogix.prw
FWHTTPAuth.prwFWHTTPAuthLogix.prw
FWSAMLSession.prwFWSAMLSessionLogix.prw
-----------------------------------------------------------------------------------------------------------------------------------------

 

Abaixo segue um exemplo de como ficará a chamada do EAIService do Logix de dentro do Protheus:

EAIService.prw
WSMETHOD receiveMessage  WSRECEIVE inMsg WSSEND outMsg WSSERVICE EAIService
Local lRetorno := .T.
 
If  FWIsLogix()
    lRetorno := EAIReceiveMessageLogix(self)
Else
    /* Código Protheus */
    lRetorno := .T.
EndIf
Return lRetorno

 

 

Importante

Devido a todas estas reestruturações de códigos fontes e funções, podem haver problemas de conflitos de funções duplicadas na aplicação do pacote no RPO.
Pensando nisto, será criado um pacote de acerto para ser aplicado antes da atualização oficial nos casos em que ocorrer este tipo de problema.

Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.