Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
#INCLUDE "tlpp-core.th"
#include 'totvs.ch'

NAMESPACE defina.seu.namespace
USING NAMESPACE totvs.protheus.backoffice.ba.insights

Class SimpleInsightProcess From InsightsProcess
    
    Public Data oJsonPayload       As Object

    Public Method New() Constructor

    // Overrides
    Public Method ProcessInsight(oInsightMessage As Object) As Logical
    Public Method GetKey() As Character
    Public Method GetFilter() As Character
    Public Method GetDateFrom() As Date
    Public Method GetDateTo() As Date

EndClass

Method New() Class PermissionAlertsProcess
    _Super:New()
Return Self

Method ProcessInsight(oInsightMessage As Object) As Logical Class PermissionAlertsProcess

    Local lProcessOk        As Logical
    Local oException        As Object
    Local oInsightEntry     As Object
    Local xJsonParse        As Variant
    Local lReprocess        As Logical

    _Super:ProcessInsight(oInsightMessage)

    Try
        // Extrai o payload da mensagem e aloca o atributo oJsonPayload
        // para futura utilizacao em outras funcoes que serao executadas
        ::oJsonPayload := JsonObject():New()
        xJsonParse := ::oJsonPayload:FromJson(oInsightMessage:cMsgPayload)

       	// Atualiza mensagem de insight (tabela I19) com a informação de início de processamento
		oInsightMessage:UpdateProc("Processamneto de insight iniciado", .T., ::oInsightConfig:cVersao)

        // Inicia uma nova linha de insight (tabela I21)
        oInsightEntry := InsightEntry():New()
        
        oInsightEntry:cMsgUuid := ::oInsightMessage:cMsgUuid
        oInsightEntry:cInsightName:= ::oInsightMessage:cMsgInsight
        oInsightEntry:cModulo := cModulo
        oInsightEntry:cPayload := ::oJsonPayload:toJson()
        oInsightEntry:cDtProcess := FWTIMESTAMP(5)
        oInsightEntry:cVersaoProcess := ::oInsightConfig:cVersao

        // Calcula o campo key (I21_KEY) - Opcional
        If ::oInsightConfig:lCalcKey
            oInsightEntry:cKey := ::GetKey()
        EndIf

        // Calcula o campo key (I21_FILTER) - Opcional
        If ::oInsightConfig:lCalcFilter
            oInsightEntry:cFilter := ::GetFilter()
        EndIf

        // Retorna as datas referente aos campos I21_DTDE e I21_DTATE - Opcional
        oInsightEntry:dDataDe   := ::GetDateFrom()
        oInsightEntry:dDataAte  := ::GetDateTo()
        
        // Insere a linha da I21 na tabela
        oInsightEntry:Insert(lReprocess)
        oInsightMessage:UpdateProc("Processamneto de insight finalizado", .T., ::oInsightConfig:cVersao)
        lProcessOk := .T.
    Catch oException
        lProcessOk := .F.
		// Caso exista alguma excecao no processamento, informa na tabela I19 o erro de processamento
        oInsightMessage:UpdateProc("Processamneto de insight finalizado com erro: " + oException:description, .F., ::oInsightConfig:cVersao)
        Throw oException
    Finally
        FreeObj(oInsightEntry)
    EndTry

Return lProcessOk

Method GetKey() As Character Class PermissionAlertsProcess
	// Retorna um valor caracter que pode ser utilizado para pesquisar o registro por SQL na tabela I21 campo I21_KEY
    Local cKey As Character
    cKey := ::oJsonPayload["key"]
Return cKey

Method GetFilter() As Character Class PermissionAlertsProcess
	// Retorna um valor caracter que pode ser utilizado para filtrar o registro por SQL na tabela I21 campo I21_FILTER 
	Local cFilter As Character
	cFilter := ::oJsonPayload["key"] + ::oJsonPayload["filter"]
Return cFilter

Method GetDateFrom() As Date Class PermissionAlertsProcess
	// Retorna um valor do tipo data que pode ser utilizado para pesquisar o registro por SQL na tabela I21 campo I21_DTDE
Return dDataBase

Method GetDateTo() As Date Class PermissionAlertsProcess
	// Retorna um valor do tipo data que pode ser utilizado para pesquisar o registro por SQL na tabela I21 campo I21_DTATE
Return StoD(::oJsonPayload["dataAte"])


Obs: Os objetos oInsightMessage e oInsightConfig são providos pelo "Executor de Mensagens de Insight" e referentes a Mensagem de Insight (tabela I19) e Configuração de Insight (tabela I20) referentes a mensagem a ser processada.

Obs: A utilização da Tabela de Insights Unificada (I21) é opcional e vai de acordo com a necessidade de cada Regra de Negócio em particular.











05. Front-End

06. Pipelines Carol

...