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 | ||
Projeto1 | PDR_LD_FRW001-132 | IRM1 | PCREQ-3617 |
Requisito1 | PCREQ-6054 | Subtarefa1 | Não se aplica |
Chamado2 | Não se aplica | ||
Release de Entrega Planejada | 12.1.8 | Réplica | Não se aplica |
País | (X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||
Outros | Não se aplica |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
Objetivo
Preparar o produto Logix para realizar a chamada da Central de Ajuda em todos os pontos onde hoje é executado o Help On-line.
Definição da Regra de Negócio
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
log1400 | [Alteração] | N/A | Realizar a chamada da nova Central de Ajuda |
fluigCommunityHelpCenter.apl | [Criação] | N/A | Realizar autenticação e busca de informações no Fluig |
paramsHelpCenter.apl | [Criação] | N/A | Realizar a busca dos parâmetros no ERP |
LOG1400 - Função de Ajuda
Na função log1400 deverá ser tratada a função "LOG_help" para suportar a nova chamada da Central de Ajuda. Serão suportados (via ativação de parâmetro) os modelos de chamada para o Help Online feito atualmente e a nova chamada para a Central de Ajuda.
Importante: Por padrão, o produto deverá chamar a nova Central de Ajuda. Caso o novo parâmetro seja setado, a chamada será direcionado ao modelo antigo, via Help Online.
Para setar o novo parâmetro, que ativará o modelo antigo de Help Online, é necessário adicionar a seguinte chave no arquivo de Profile (totvsprofile.pro):
logix.help.helpcenter=false
Caso não exista o parâmetro ou caso o valor atribuído seja "true" será considerado o novo formato de ajuda (Central de Ajuda).
Deverá ser criada uma função (log1400_helpCenterMode) que terá por objetivo verificar o novo parâmetro "LOGIX.HELP.HELPCENTER" no arquivo de profile, e indicar se o formato de chamada de help será o via Central de Ajuda ou o de Help Online.
#----------------------------------# FUNCTION log1400_helpCenterMode() #----------------------------------# IF m_helpMode = 0 THEN LET m_helpMode = 1 #--# Padrão Central de Ajuda #--# IF UPSHIFT(fgl_getresource("LOGIX.HELP.HELPCENTER")) = "FALSE" OR fgl_getresource("LOGIX.HELP.HELPCENTER") = "0" THEN LET m_helpMode = -1 END IF END IF RETURN (m_helpMode = 1) END FUNCTION
Após a verificação do parâmetro indicando qual o help deverá ser utilizado, caso o retorno seja o help via Central de ajuda, deverá ser feito a busca do caminho do novo Help através de uma nova função (log1400_pathHelpCenterMode) a ser criada, conforme exemplo abaixo:
#---------------------------------------------# FUNCTION log1400_pathHelpCenterMode(l_valid) #---------------------------------------------# DEFINE l_valid SMALLINT DEFINE l_caminho_help VARCHAR(255), l_length SMALLINT LET l_caminho_help = fgl_getresource("LOGIX.HELP.FILES") IF l_caminho_help IS NULL OR l_caminho_help = " " THEN #--# Caminho em disco padrão para armazenar o help do sistema #--# IF l_valid THEN CALL log0030_mensagem("Caminho da documentação do sistema LOGIX não informado. Entrar em contato com contato com o setor de TI.","excl") END IF RETURN "" END IF #--# Se caminho de help for em disco possui caracter "\" #--# #--# Se caminho de help for endereço HTTP possui "/" #--# IF l_caminho_help LIKE "%\\\\%" THEN LET l_caminho_help = log0800_trim(log0800_replace(l_caminho_help,"\\","/")) LET l_caminho_help = "file:///",l_caminho_help END IF LET l_length = LENGTH(l_caminho_help) IF l_caminho_help[l_length] <> "/" THEN LET l_caminho_help = l_caminho_help CLIPPED,"/" END IF RETURN l_caminho_help END FUNCTION
Importante: Para o novo formato de ajuda deverá ser indicado via parâmetro qual o caminho dos fontes da nova solução. Para isso, deverá ser obrigatoriamente setado o parâmetro logix.help.files no arquivo de profile (totvsprofile.pro). Exemplo:
logix.help.files=C:\RepoSVN\CentralAjuda (dentro desta pasta existe o arquivo index.html e todos os outros fontes necessários para executar a solução).
Para efetuar a nova chamada da Central de Ajuda, deverá ser efetua a passagem de novos parâmetros, como segmento, linha de produto, módulo e programa. Abaixo um exemplo de como deve ser efetuada a busca dessas informações:
IF log1400_helpCenterMode() THEN LET l_caminho_help = l_caminho_help CLIPPED,"?" LET l_caminho_help = l_caminho_help CLIPPED,"LINEPRODUCT=LOGIX" LET l_caminho_help = l_caminho_help CLIPPED,"&SEGMENT=",_ADVPL_license_getSegmento() LET l_caminho_help = l_caminho_help CLIPPED,"&VERSION=",eng00001_get_versao(),"_",LOG_replace(eng00001_get_release(),'.','_') LET l_caminho_help = l_caminho_help CLIPPED,"&LANGUAGE=pt" IF l_file <> " " THEN LET l_caminho_help = l_caminho_help CLIPPED,"&MODULE=",log0010_get_sigla_modulo_logix(l_file) LET l_caminho_help = l_caminho_help CLIPPED,"&ACTION=",l_file END IF LET l_caminho_help = l_caminho_help CLIPPED,"&URLHELPCENTERFLUIG=http://",LOG_getServerIP(),':',_ADVPL_LOG_GetPvProfString("HTTP","PORT","","TotvsAppServer.ini"),'/fluigCommunityHelpCenter.apl' LET l_caminho_help = l_caminho_help CLIPPED,"&URLHELPCENTERPARAMS=http://",LOG_getServerIP(),':',_ADVPL_LOG_GetPvProfString("HTTP","PORT","","TotvsAppServer.ini"),'/paramsHelpCenter.apl' ELSE . . .
Importante: O formato de chamada do Help Online atual deverá ser mantido sem alterações.
fluigCommunityHelpCenter
Para a Central de Ajuda efetuar a busca de informações no Fluig de forma autenticada, deverá ser criado um serviço no ERP que será acessado pela Central de Ajuda (reconhecido pelo parâmetro passado inicialmente - URLHELPCENTERFLUIG). Este serviço, deverá receber como parâmetro, qual a comunidade que será feita a busca de informações e qual a função de callback a ser retornada.
O serviço deverá efetuar a autenticação junto ao Fluig (oAuth1.0 - através de Tokens) e realizar a busca na comunidade, retornando todo o conteúdo encontrado via formato Json. Abaixo um exemplo da implementação:
#include "framework.ch" Function fluigCommunityHelpCenter(__aCookies,__aPostParms,__nProcID,__aProcParms) Local cCallBack := "" Local cCommunity := "" Local nPos := 0 Local cJson := "" Local oClientFluig nPos = aScan(__aProcParms,{|x|x[1] = 'callback'}) If nPos > 0 cCallBack := __aProcParms[nPos][2] EndIf nPos = aScan(__aProcParms,{|x|x[1] = 'community'}) If nPos > 0 cCommunity := __aProcParms[nPos][2] EndIf HTTPCTType('application/jsonp; charset=ISO-8859-1') oClientFluig := FWoAuth1Fluig():New("123456789","123456789abcdef","http://spon4827:8090","") //--------------------------------------- // Seta os tokens para consumir o serviço //--------------------------------------- oClientFluig:SetToken("b8409f59-6dfc-4adb-8463-1ee0d4e5fca1") oClientFluig:SetSecretToken("c7d3985f-de45-4702-bfe7-81fe7e439811799288f7-9b3d-4b3f-b125-547baf14e341") //---------------------------- // Consome o serviço do Fluig //---------------------------- cJson := oClientFluig:GetListSortedPost(cCommunity,,5) cJson := cCallBack + "(" + cJson + ")" Return cJson
paramsHelpCenter
Para a Central de Ajuda efetuar a busca de informações no ERP (de parâmetros utilizados para customização da ajuda pelo cliente), deverá ser criado um serviço no ERP que será acessado pela Central de Ajuda (reconhecido pelo parâmetro passado inicialmente - URLHELPCENTERPARAMS). Este serviço, deverá receber como parâmetro qual a função de callback a ser retornada.
O serviço deverá efetuar a busca no ERP dos parâmetros de customização, retornando todo o conteúdo encontrado via formato Json. Abaixo um exemplo da implementação:
#include "framework.ch" Function paramsHelpCenter(__aCookies,__aPostParms,__nProcID,__aProcParms) Local cCallBack := "" Local nPos := 0 Local cJson := "{" cJson += '"baseurl":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.BASEURL"),.F.) cJson += ',"initialurl":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.INITIALURL"),.F.) cJson += ',"advancedurl":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.ADVANCEDURL"),.F.) cJson += ',"seemoreurl":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.SEEMOREURL"),.F.) cJson += ',"urlfield":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.URLFIELD"),.F.) cJson += ',"titlefield":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.TITLEFIELD"),.F.) cJson += ',"titlelimit":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.TITLELIMIT"),.F.) cJson += ',"pagetitle":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.PAGETITLE"),.F.) cJson += ',"arrayname":'+FWJsonSerialize(_4GL_LOG_fgl_getresource("LOGIX.HELP.ARRAYNAME"),.F.) cJson += '}' nPos = aScan(__aProcParms,{|x|x[1] = 'callback'}) If nPos > 0 cCallBack := __aProcParms[nPos][2] EndIf HTTPCTType('application/jsonp; charset=ISO-8859-1') //---------------------------- //Consome o serviço do Fluig //---------------------------- cJson := cCallBack + "(" + cJson + ")" Return cJson
Importante: Os parâmetros serão armazenados no ERP no arquivo de profile: logix.help.*
Abaixo segue a lista dos parâmetros, juntamente de um exemplo apontando para o Youtube:
logix.help.baseurl=http://www.youtube.com.br/watch?v=
logix.help.initialurl=https://www.googleapis.com/youtube/v3/search?part=id%2C+snippet&q={{segmento}}&channelId=UChsYWCL7MFkDM4OsK7de8dw&type=video&maxResults=5&key=AIzaSyDR9G02qdX5eC8kczis4g9_JkICS-fRZoY
logix.help.advancedurl=https://www.googleapis.com/youtube/v3/search?part=id%2C+snippet&q={{segmento}}+{{text}}&channelId=UChsYWCL7MFkDM4OsK7de8dw&type=video&maxResults=5&key=AIzaSyDR9G02qdX5eC8kczis4g9_JkICS-fRZoY
logix.help.seemoreurl=https://www.youtube.com/playlist?list={{segmento}}
logix.help.urlfield=id.videoId
logix.help.titlefield=snippet.title
logix.help.titlelimit=80
logix.help.pagetitle=Minha fonte de documentos
logix.help.arrayname=items
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|