ir ao artigo Cristiano Silva · Mar. 22 Olá Juliano. A forma mais rápida é via exportação para arquivo CSV e utilizar um dos conectores existentes https://support.google.com/looker-studio/answer/7333350#zippy=%2Cneste-artigo Desenvolver uma API JSON daí você pode usar um conector de já existente como por exemplo https://windsor.ai/connect/json-google-data-studio-integration/. Uma alterna total aderente às suas necessidades é desenvolver seu próprio conector. Não conheço a arquitetura, mas acredito que possa usar JDBC que pode facilitar um pouco. Segue documentação: https://developers.google.com/looker-studio/connector
ir ao artigo Cristiano Silva · Dez. 6, 2022 Olá @thales fernando alonso Infelizmente não temos muita literatura sobre as tecnologias da InterSystems. Baixe nestes links: Conhecendo o Caché e Introdução a Orientação a Objetos escritos pelo Amir (hoje Diretor de Soluções e Arquitetura da InterSystems). Espero que ajude.
ir ao artigo Cristiano Silva · Dez. 6, 2022 Olá @Luiz Henrique Carvalho Martarelli Você pode sobrescrever o método OnPreDispatch da sua classe que herda de %CSP.REST O Método OnPréDispatch é executado antes de que o método que conste na regra de roteamento seja executada. Abaixo um exemplo onde faço o controle de CORS se o método da requisição for OPTION, e checo token de acesso para todos os endpoint exceto para o endpoints ping. O parâmetro pContinue quando verdadeiro sinaliza que o método que está na configuração de roteamento deverá ser executado, se falso responde para quem fez a chamada geralmente com algum HTTPStatus que indique o erro. ClassMethod OnPreDispatch(pUrl As %String, pMethod As %String, ByRef pContinue As %Boolean) As %Status { #Dim %request As %CSP.Request = %request #Dim %response As %CSP.Response = %response If (pMethod = "OPTIONS") // Controle de CORS { Set pContinue = 0 // Do ..HandleDefaultOptionsRequest(pUrl) Do ..HandleDefaultCorsRequest(pUrl) // Return $System.Status.OK() } If (pUrl = "/ping") { Set pContinue = 1 // Return $System.Status.OK() } #Dim authorization As %String = $ZConvert(%request.GetCgiEnv("HTTP_AUTHORIZATION"), "L") #Dim token As %String = $Piece(authorization, " ", 2) #Dim erro As %DynamicObject = {"Erro:" : "Token de autorização é obrigatório"} If (token = "") { Set pContinue = 0 Set %response.Status = ..#HTTP400BADREQUEST // Write erro.%ToJSON() // Return $System.Status.OK() } ElseIf (token '= "t0k3n_d3_v4lid@c@0") { Set erro = {"Erro": "Token não autorizado!"} Set pContinue = 0 Set %response.Status = ..#HTTP401UNAUTHORIZED // Write erro.%ToJSON() // Return $System.Status.OK() } Set pContinue = 1 // Return $System.Status.OK() }
ir ao artigo Cristiano Silva · Nov. 11, 2022 Olá @Rafaela Moreira, Uma vez que você tenha escrito seus testes eles podem ser executados em qualquer ambiente. Veja se o tutorial da documentação pode te ajudar: Caché Unit Test Tutorial Link direto para Test Automation
ir ao artigo Cristiano Silva · Out. 24, 2022 Olá Rafaela, Isso você consegue checar no log de auditoria, desde que habilitada e o evento de sistema "Routine Change" esteja ativado: Estando ativo você pode consultar pelo próprio portal na página de do Log de Auditoria: Se quiser pode também consultar a tabela diretamente um exemplo: SELECT Namespace, UserName, UTCTimeStamp, Description FROM %SYS.Audit WHERE Event = 'RoutineChange' Mais informações acesse a documentação: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=AAUDIT Lembrando: a consulta deve ser executada no namespace %SYS e que a data retornada está no formato UTC como o próprio nome já diz. Para converter a data use o método ConvertUTCtoLocal da classe %UTC
ir ao artigo Cristiano Silva · Set. 5, 2022 Parabéns pelo artigo Emily. Uma correção no item 3 o parâmetro CONTENTTYPE está com um erro de digitação: aSpplication quando deveria ser application. No item 4, por questão de segurança, (em ambiente produtivo ao menos) não é recomendado adicionar o %ALL como função do aplicativo, e sim uma função específica ao que necessário se acessar para que a aplicação funcione.