Nova postagem

Pesquisar

InterSystems Oficial
· Mar. 7

Descontinuação do MultiValue no InterSystems IRIS 2025.1

A partir da plataforma de dados InterSystems IRIS® versão 2025.1, a InterSystems está oficialmente descontinuando o MultiValue e incluindo-o na lista de Recursos Descontinuados e Obsoletos. Embora a InterSystems continue a oferecer suporte aos clientes existentes que usam o MultiValue, ele não é recomendado para novos aplicativos.

O Que Isso Significa:

  • Suporte Contínuo: O suporte para MultiValue ainda estará disponível por meio do Worldwide Response Center (WRC) em uma base de "melhor esforço", como é fornecido para lançamentos mais antigos do que nossas Versões Mínimas Suportadas.
  • Possibilidade de Remoção Futura: Embora não haja planos imediatos para remover o MultiValue de nossos produtos, a InterSystems reserva-se o direito de fazê-lo em um lançamento futuro.
  • Orientação ao Cliente: Se você tiver dúvidas sobre seu uso atual ou planejado do MultiValue, recomendamos que você entre em contato com sua equipe de conta da InterSystems para obter orientação.

A designação obsoleta sinaliza que os clientes devem planejar eliminar o uso do MultiValue. Reconhecemos que isso pode impactar projetos em andamento e agradecemos sua cooperação à medida que continuamos a evoluir nossa plataforma.

Para mais informações ou preocupações, sinta-se à vontade para comentar abaixo ou entrar em contato com seu representante da InterSystems.

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Mar. 7 7min de leitura

Especificações de Geração de OpenAPI

Introdução

Uma API REST (Representational State Transfer ou Transferência de Estado Representacional) é uma interface que permite que diferentes aplicações se comuniquem entre si através do protocolo HTTP, usando operações padrão como GET, POST, PUT e DELETE. APIs REST são amplamente utilizadas no desenvolvimento de software para expor serviços acessíveis por outras aplicações, possibilitando a integração entre diferentes sistemas.

No entanto, para garantir que as APIs sejam fáceis de entender e usar, uma boa documentação é essencial. É aqui que o OpenAPI entra em cena.

OpenAPI é um padrão para descrever APIs RESTful. Ele permite uma definição estruturada da funcionalidade de uma API, especificando endpoints disponíveis, tipos de dados aceitos e retornados, parâmetros necessários e respostas esperadas. Todas essas informações são coletadas em um arquivo de especificação (geralmente com extensão .yaml ou .json), que pode ser interpretado por ferramentas automatizadas para gerar código, documentação e muito mais.

A Especificação OpenAPI é projetada para ser legível tanto por máquinas quanto por humanos, possibilitando a descrição, produção, consumo e visualização de serviços web RESTful de forma padronizada. Portanto, um documento OpenAPI representa uma descrição formal da API, útil tanto para desenvolvedores que precisam usá-la quanto para ferramentas que podem aproveitá-la para automatizar vários processos.

Por que é útil definir um arquivo de especificação?

Adotar o OpenAPI para documentar uma API oferece diversos benefícios:

  • Clareza: Ele fornece documentação detalhada e estruturada, permitindo que os desenvolvedores entendam rapidamente como interagir com a API, quais requisições enviar e quais dados esperar em resposta.
  • Automação: A documentação pode ser gerada automaticamente a partir do código, mantendo-se atualizada com quaisquer alterações na API.
  • Interatividade: Ferramentas como o Swagger, um conjunto de código aberto para documentação e teste de APIs, incluem o Swagger UI. Isso permite explorar e testar APIs diretamente do navegador, simplificando o desenvolvimento, a verificação e a compreensão das APIs.
  • Padronização: Usar o OpenAPI garante que a documentação siga um formato compartilhado e reconhecido, facilitando a integração com outras ferramentas e serviços.

Como você pode produzir um documento OpenAPI?

Existem duas abordagens principais para gerar um arquivo de especificação OpenAPI:

  • Abordagem "Código-primeiro" (automática): Se uma API REST já foi desenvolvida no InterSystems IRIS, você pode gerar automaticamente a documentação OpenAPI sem escrever manualmente o arquivo de especificação. O IRIS oferece um recurso integrado para exportar a documentação OpenAPI em formato JSON ou YAML, com base nas definições de classe REST.
  • Abordagem "Especificação-primeiro" (manual): Neste caso, o arquivo OpenAPI é escrito manualmente em YAML ou JSON, descrevendo todos os endpoints, parâmetros e respostas esperadas. Essa abordagem é útil quando você deseja definir a API antes de implementá-la, facilitando o design e o compartilhamento com outros desenvolvedores ou stakeholders.

Abordagem Automática

Existem duas maneiras de gerar automaticamente o arquivo de especificação OpenAPI no InterSystems IRIS.

Método 1: Usando a Função GetWebRESTApplication

Uma abordagem é usar a função GetWebRESTApplication fornecida pela classe %REST.API.

Um exemplo prático de como usá-la é adicionando a seguinte função na classe de despacho:

ClassMethod GenerateOpenAPI() As %Status
{
    // The name of the REST application
    Set webApplication = "MyAPP"  // Replace with the name of your web app
    // Retrieve the OpenAPI 2.0 documentation
    Set sc = ##class(%REST.API).GetWebRESTApplication("", webApplication, .swagger)
    
    If $$$ISERR(sc) {
        Quit sc  // If an error occurred, exit the method
    }
    
    // Return the documentation in JSON format
    Set %response.ContentType = "application/json"
    Do ##class(OMRREST.impl).%WriteResponse(swagger.%ToJSON()) 

    Quit $$$OK
}

Adicionalmente, adicione a seguinte rota ao UrlMap:

  <Route Url="/openapi" Method="GET" Call="GenerateOpenAPI"/>

Neste ponto, você terá tudo o que precisa para gerar o arquivo de especificação a partir de sua classe de despacho. Para visualizar a documentação, conecte-se à URL mostrada (onde MyWebapp é o nome da sua aplicação web, conforme definido no portal de gerenciamento):

<host>:<port>/MyWebapp/openapi

O JSON gerado dessa forma representa a especificação OpenAPI da sua API. Após explorar o segundo método, veremos como visualizá-lo e testá-lo no Swagger.

Método 2: Usando a API de Gerenciamento

Outra maneira de gerar o arquivo de especificação OpenAPI é usando a API de Gerenciamento do InterSystems IRIS.

Para chamar este serviço, você pode usar ferramentas como o Postman, que é uma ferramenta de desenvolvedor que permite testar, documentar e automatizar APIs.O Postman fornece uma interface simples e intuitiva para enviar requisições HTTP (GET, POST, PUT, DELETE, etc.), visualizar respostas, gerenciar autenticação e criar testes automatizados.

Para fazer a requisição usando o Postman, siga estes passos:

  1. Clique no botão Novo e crie uma requisição HTTP.
  2. Configure a requisição da seguinte forma e envie-a:
    • Selecione GET como o método HTTP.
    • Especifique a URL no seguinte formato, usando o <baseURL> da sua instância:
      https://<baseURL>/api/mgmnt/v1/namespace/myapp
      Aqui, namespace é o nome do namespace onde você criou o serviço REST, e myapp é o nome da sua aplicação web.
    • Defina o método de Autorização para Basic Auth e forneça o nome de usuário e senha de um usuário com acesso de leitura ao namespace especificado.

Uma vez que o JSON é gerado, ele pode ser visualizado e testado usando ferramentas como o Swagger Editor.

{
   "info":{
      "title":"",
      "description":"",
      "version":"",
      "x-ISC_Namespace":"MyNamespace"
   },
   "basePath":"/MyWebapp",
   "paths":{
      "/loginForm":{
         "post":{
            "parameters":[
               {
                  "name":"payloadBody",
                  "in":"body",
                  "description":"Request body contents",
                  "required":false,
                  "schema":{
                     "type":"string"
                  }
               }
            ],
            "operationId":"loginForm",
            "x-ISC_ServiceMethod":"loginForm",
            "responses":{
               "default":{
                  "description":"(Unexpected Error)"
               },
               "200":{
                  "description":"(Expected Result)"
               }
            }
         }
      },
      "/refresh":{
         "post":{
            "parameters":[
               {
                  "name":"payloadBody",
                  "in":"body",
                  "description":"Request body contents",
                  "required":false,
                  "schema":{
                     "type":"string"
                  }
               }
            ],
            "operationId":"refresh",
            "x-ISC_ServiceMethod":"refresh",
            "responses":{
               "default":{
                  "description":"(Unexpected Error)"
               },
               "200":{
                  "description":"(Expected Result)"
               }
            }
         }
      },
      "/logout":{
         "post":{
            "parameters":[
               {
                  "name":"payloadBody",
                  "in":"body",
                  "description":"Request body contents",
                  "required":false,
                  "schema":{
                     "type":"string"
                  }
               }
            ],
            "operationId":"logout",
            "x-ISC_ServiceMethod":"logout",
            "responses":{
               "default":{
                  "description":"(Unexpected Error)"
               },
               "200":{
                  "description":"(Expected Result)"
               }
            }
         }
      },
      "/openapi":{
         "get":{
            "operationId":"GenerateOpenAPI",
            "x-ISC_ServiceMethod":"GenerateOpenAPI",
            "responses":{
               "default":{
                  "description":"(Unexpected Error)"
               },
               "200":{
                  "description":"(Expected Result)"
               }
            }
         }
      }
   },
   "swagger":"2.0"
}

Abordagem Manual

A abordagem manual para gerar um documento OpenAPI envolve escrever o arquivo de especificação à mão no formato YAML ou JSON. Essa abordagem é particularmente útil quando você deseja controle completo sobre o design da API antes de sua implementação, ou ao documentar uma API já existente sem depender de ferramentas automatizadas

Para escrever o arquivo de especificação OpenAPI, você pode consultar a documentação oficial da versão 2.0 da Especificação OpenAPI, onde encontrará informações sobre campos obrigatórios e como descrever endpoints, parâmetros, respostas e muito mais. Este guia detalhado o ajudará a entender como estruturar adequadamente o arquivo YAML ou JSON para atender aos padrões OpenAPI.

Um bom exemplo de usar essa abordagem é ao criar um serviço REST usando os métodos descritos na documentação oficial do InterSystems IRIS.
Você pode encontrar uma introdução sobre como desenvolver e configurar uma aplicação REST no IRIS seguindo esta página da documentação, que descreve passo a passo os métodos necessários para expor uma aplicação RESTful com IRIS.

Discussão (0)1
Entre ou crie uma conta para continuar
InterSystems Oficial
· Mar. 7

Alerta: Consultas SQL Retornando Resultados Errados

19 de Fevereiro de 2025 – Alerta: Consultas SQL Retornando Resultados Errados

A InterSystems corrigiu dois problemas que podem fazer com que um pequeno número de consultas SQL retornem resultados incorretos. Além disso, a InterSystems corrigiu uma inconsistência no tratamento de tipo de dados de data/hora que pode levar a resultados diferentes e inesperados — mas corretos — para aplicativos existentes que dependem do comportamento inconsistente anterior.

DP-436825: Consultas SQL com Junção Lateral Podem Retornar Resultados Errados

O primeiro problema (DP-436825) afeta apenas consultas SQL que usam uma junção lateral, implícita ou explicitamente, em uma instância configurada com limite de memória por processo não padrão (parâmetro “bbsiz” no arquivo .cpf). Uma instalação limpa do InterSystems IRIS tem um bbsiz padrão de -1 (portanto, não há limite de memória), enquanto uma atualização de uma versão mais antiga preservaria a configuração anterior. Quando tal consulta usa execução paralelizada em tempo de execução, incluindo casos em que o sistema usa execução paralelizada, a consulta pode retornar resultados incorretos. Esse problema afeta as versões 2023.3, 2024.1.0, 2024.1.1, 2024.1.2, 2024.2 e 2024.3 dos seguintes produtos:

  • InterSystems IRIS® data platform
  • InterSystems IRIS® for Health
  • HealthShare® Health Connect

O problema também afeta outros produtos InterSystems baseados nos produtos acima, incluindo o HealthShare® Unified Care Record and Suite: Versão 2024.2. Embora o Unified Care Record and Suite não faça uso de consultas SQL que usam uma junção lateral no código do produto, os clientes do HealthShare que atualizarem para o HealthShare 2024.2 com um limite de memória por processo não padrão que também escrevem suas próprias consultas SQL que usam uma junção lateral podem ser afetados.

Para evitar o problema, use uma das três opções a seguir:

  • Remova o limite de memória por processo definindo o parâmetro bbsiz como -1.
  • Use a palavra-chave %NOPARALLEL em consultas que incluem uma junção lateral.
  • Desabilite temporariamente o Modo Adaptativo para a instância, o que evita o processamento paralelo automático de consultas elegíveis.

Tudo isso garante que a consulta retorne resultados corretos. A correção para esse defeito é identificada como DP-436825 e será incluída em todas as versões futuras do produto, começando com 2024.1.3 e 2025.1.0. Também está disponível por meio de distribuição ad hoc.

DP-436998: Consultas SQL com classificação reversa por %ID entrando em loop infinito

O segundo problema (DP-436998) afeta consultas SQL que ordenam por ID de linha decrescente e nas quais a ID de linha é um inteiro positivo (compatível com bitmap) e, em particular, circunstâncias específicas de dados. Sob essas condições, a consulta pode entrar em um loop infinito e continuar retornando o mesmo conjunto de resultados até ser abortada. Esse problema afeta as versões 2022.2, 2022.3, 2023.x e 2024.x dos seguintes produtos:

  • InterSystems IRIS® data platform
  • InterSystems IRIS® for Health
  • HealthShare® Health Connect

Ele também afeta outros produtos InterSystems baseados nos produtos acima, incluindo HealthShare® Unified Care Record and Suite: Versão 2024.1 e versão 2024.2. Embora o Unified Care Record and suite não faça uso de consultas SQL com classificação reversa por %ID no código do produto, os clientes do HealthShare 2024.1 e HealthShare 2024.2 que escrevem suas próprias consultas SQL com classificação reversa por %ID podem ser afetados. A correção para esse defeito é identificada como DP-436998. Ele será incluído em todas as versões futuras do produto a partir de 2023.1.6, 2024.1.3 e 2025.1.0. Ele também está disponível por meio de distribuição ad hoc.

DP-436633: Consultas SQL Comparando valores de DATA e TIMESTAMP

A InterSystems corrigiu recentemente uma inconsistência em como os valores DATE e TIMESTAMP são comparados usando os operadores <=, > e BETWEEN. Essa correção altera os resultados de comparações específicas de data e hora. O comportamento atualizado foi introduzido na versão 2023.3 de:

  • InterSystems IRIS® data platform
  • InterSystems IRIS® for Health
  • HealthShare® Health Connect

Ele também afeta outros produtos InterSystems baseados nos produtos acima, incluindo HealthShare® Unified Care Record and Suite: Versão 2024.2.

Ele se aplica a todas as versões subsequentes.

Com o comportamento atualizado, os valores DATE são forçados para um valor TIMESTAMP antes da comparação. Isso está em conformidade com o padrão SQL de forçar o tipo de dados menos preciso para o tipo de dados mais preciso.

Por exemplo, com o novo comportamento (que é compatível com o padrão), um predicado de consulta "MyTimeStamp > MyDate" é avaliado como FALSE quando os valores para esses campos correspondem à mesma data do calendário, exceto quando MyTimestamp corresponde exatamente à meia-noite. Anteriormente, o comportamento era totalmente compatível com o padrão apenas quando o campo MyTimeStamp era definido com o formato %PosixTime e retornava resultados não compatíveis em certos casos ao usar %Timestamp ou certas combinações de funções e variáveis ​​especiais.

Para garantir comparações previsíveis, a InterSystems recomenda usar funções CAST explícitas, especialmente ao usar instruções CASE ou funções SQL como GETDATE(), NVL() e IFNULL(), onde o tipo resultante pode não ser óbvio.

Para ajudar a avaliar quais instruções são afetadas pela mudança de comportamento, a InterSystems introduziu um aviso no plano de consulta e um sinalizador de sistema opcional para fazer com que tais instruções gerem um erro no tempo de execução. Habilitar o sinalizador pode ser útil durante o teste de regressão do código do aplicativo e pode oferecer uma rede de segurança adicional para consultas do usuário no tempo de execução. Este recurso informativo é identificado como DP-436633 e será incluído em todas as versões futuras do produto a partir de 2024.1.4 e 2025.1.0.

Mais Informações

Se você sentir o impacto desse defeito, entre em contato com o Worldwide Response Center (WRC) para obter assistência.

Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· Mar. 7

AI Meetup in afterwork mode with InterSystems. We show you the new Iberia headquarters!

It's time for us to meet!

AI Meetup in afterwork mode with InterSystems 🍕

   

Are you passionate about artificial intelligence and want to discover how RAG is revolutionising generative AI? Then we have the perfect plan for you:   

27 March 18:30 - InterSystems Iberia, C. de Quintanadueñas, 6, Edificio ARQBÓREA, Fuencarral-El Pardo, Madrid.

Come to our AI meetup in afterwork format. We will talk about how RAG improves accuracy and contextuality in generative models, but without boring theoretical stuff. It will be a fun session, with demos, interesting conversations and, most importantly... pizzas and drinks! 🍕🥤  

🎉 We will count with our Master of Ceremonies: @Luis Angel Pérez Ramos 

Learn, share and have fun with other AI enthusiasts - no need for a suit or tie, just a desire to chat and enjoy! 😎 

Book your place and join the future of AI.  

Are you up for it? 🔥

Discussão (0)1
Entre ou crie uma conta para continuar
Job
· Mar. 7

Vacante: Arquitecto principal e ingeniero de integración

Función: Arquitecto principal e ingeniero de integración

Tipo de empleo: Jornada completa 

Nota: Es obligatorio tener experiencia en Rhapsody/Intersystems.

 

Responsabilidades principales  

  1. Estrategia tecnológica: Contribuidor clave a la estrategia tecnológica de la empresa, impulsando la excelencia en nuestra adopción e implementación de tecnologías para ofrecer servicios de intercambio/integración de datos, habilitación de API y migración de datos ahora y en el futuro. 
  2. De cara al cliente: Este líder técnico representará a la tecnología de cara al público, debe pensar con rapidez y ser un comunicador que genere confianza en reuniones y eventos con clientes. Participará activamente en reuniones de cuentas, revisiones del estado de los proyectos, preventa y marketing. 
  3. Mejores prácticas de entrega: Garantizarán que se establezca un listón alto para las mejores prácticas, donde lo suficientemente bueno no sea suficiente, los equipos se desafíen a sí mismos para seguir mejorando y se utilice un conjunto completo de metodologías y normas en todos los compromisos con los clientes.  
  4. Personal de ingeniería y entrega: En colaboración con nuestros Centros de Desarrollo globales, se asegurarán de que en la contratación atraigamos y aportemos los mejores talentos, lo que incluye participar activamente en las actividades de contratación. Establecer parámetros objetivos para el desarrollo y la clasificación del personal, garantizando que el personal desarrolle todo su potencial y esté preparado para nuevos grados o ascensos.  
  5. Resultados medibles: Establecer y mantener métricas de rendimiento clave que midan la eficacia de la tecnología, el desarrollo de las personas y las mejores prácticas. 
  6. Arquitectura, planificación y entrega: supervisará la arquitectura de las soluciones de los clientes, planificará y contribuirá a los compromisos de los clientes con nuestros centros de desarrollo y gestionará la eficacia de las relaciones con proveedores externos. Cuando sea necesario, aprovechará sus conocimientos técnicos para diseñar y crear soluciones en las tecnologías adecuadas, asumiendo el papel de desarrollador/arquitecto senior. 
  7. Innovación: Se mantiene al día de las tendencias tecnológicas actuales. Tendrá que mantenerse al día de las tendencias del mercado e identificar nuevas oportunidades para la empresa, asegurándose de que éstas se alinean con los objetivos empresariales y las necesidades de nuestra base de clientes.  
  8. Cumplimiento, regulación y ciberseguridad: Creación, mejora y refuerzo de las políticas, procedimientos y mejores prácticas tanto de VLSI como de toda la empresa para garantizar el cumplimiento de la regulación del sector y la ciberseguridad. 
Discussão (0)1
Entre ou crie uma conta para continuar