Nouvelle publication

Rechercher

Annonce
· Avr 24

InterSystems Ideas News #21

Hi Community!

Welcome to Issue #21 of the InterSystems Ideas newsletter! This edition highlights the latest news from the Ideas Portal, such as:

✓ General statistics
✓ Community Opportunity ideas

   Here are some March numbers for you. During this month, we had:

  • 19 new ideas
  • 1 implemented idea
  • 6 comments
  • 72 votes

👏 Thanks to everyone who contributed in any way to the Ideas Portal last month.

   In recent months, you've added several ideas that were categorized as Community Opportunity, which means that any member of the Developer Community is welcome to implement them and thus pave their way to the Hall of Fame! So here they are:


✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life! 🙏

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 24 3m de lecture

Mini Dica do Dia - Pré carregando a licença na Imagem Docker IRIS

Quem nunca passou pela situação de estar desenvolvendo um belo exemplo usando uma imagem Docker do IRIS e o processo de geração da imagem falhar no Dockerfile porque a licença sob a qual a imagem foi criada não contém certas permissões?

No meu caso, o que eu estava implantando no Docker é uma pequena aplicação que usa o tipo de dado Vector. Com a versão Community, isso não é um problema porque ela já inclui o Vector Search e o armazenamento de vetores. No entanto, quando troquei a imagem do IRIS para um IRIS convencional (o latest-cd), descobri que ao construir a imagem, incluindo as classes que ele havia gerado, retornou este erro:

9.505 ERROR #15806: Vector Search not permitted with current license
9.505   > ERROR #5030: An error occurred while compiling class 'Inquisidor.Object.LicitacionOS'
9.505 Compiling class Inquisidor.Object.Licitacion
9.505 ERROR #15806: Vector Search not permitted with current license
9.505   > ERROR #5030: An error occurred while compiling class 'Inquisidor.Object.Licitacion'
9.538 Compiling class Inquisidor.Message.LicitacionResponse

Esse erro me deixou confuso, porque eu, como uma pessoa obediente, havia definido no meu docker-compose.yml o parâmetro que indica onde minha licença válida está localizada:

  iris:
    init: true
    container_name: iris
    build:
      context: .
      dockerfile: iris/Dockerfile
    ports:
      - 52774:52773
      - 51774:1972
    volumes:
    - ./iris/shared:/iris-shared
    environment:
    - ISC_DATA_DIRECTORY=/iris-shared/durable
    command: --check-caps false --ISCAgent false --key /iris-shared/iris.key

Demorei um pouco para perceber que o problema era a imagem original que eu estava usando, e não a licença que eu tinha, como você pode ver, não sou a pessoa mais esperta nesse caso.

O problema estava no ponto em que eu importava minhas classes para a imagem padrão do IRIS.

RUN \
zn "%SYS" \
do ##class(SYS.Container).QuiesceForBundling() \
do ##class(Security.Users).UnExpireUserPasswords("*") \
set sc=##class(%SYSTEM.OBJ).Load("/opt/irisapp/DemoSetup.Utilities.cls","ck") \
set helper=##class(DemoSetup.Utilities).%New() \ 
do helper.EnableSSLSuperServer() \
do ##class(Security.Applications).Import("/ApplicationInquisidor.xml",.n) \
zn "INQUISIDOR" \
set sc = $SYSTEM.OBJ.LoadDir("/opt/irisapp/src/Inquisidor", "ck", , 1) \
set production = "Inquisidor.Production" \
set ^Ens.Configuration("csp","LastProduction") = production \
do ##class(Ens.Director).SetAutoStart(production) \

A compilação do código estava retornando o erro anterior. O que eu deveria fazer para corrigir isso? Foi muito simples: eu tive que enviar a nova licença para a imagem IRIS inicial e pedir para ela atualizar a licença na primeira linha dos comandos que eu estava usando.

O primeiro passo é mover a nova licença para o diretório /mgr da instalação, o que eu fiz com este código:

COPY --chown=$ISC_PACKAGE_MGRUSER:$ISC_PACKAGE_IRISGROUP /iris/iris.key /usr/irissys/mgr
RUN chmod +x /usr/irissys/mgr/iris.key

O caminho de instalação do IRIS na nossa imagem é /usr/irissys/mgr, e o caminho /iris/iris.key é o meu diretório local. Com a licença na imagem IRIS, eu só precisei dizer ao IRIS para atualizar sua licença, então eu modifiquei os comandos anteriores adicionando a seguinte declaração:

RUN \
zn "%SYS" \
do ##class(%SYSTEM.License).Upgrade() \

Et voilà! Agora eu tenho minha imagem IRIS com minha licença carregada antes de importar e compilar minhas classes. Sem mais erros de compilação.

Espero que seja útil para você!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
InterSystems officiel
· Avr 24

As versões de manutenção 2024.1.4 e 2023.1.6 do InterSystems IRIS, IRIS for Health e HealthShare HealthConnect já estão disponíveis

As versões de manutenção 2024.1.4 e 2023.1.6 da plataforma de dados InterSystems IRIS® , InterSystems IRIS® for HealthTM, e HealthShare® Health Connect agora estão disponíveis para o público em geral (GA). Essas versões incluem as correções para o seguinte alerta emitido recentemente - Alerta: Queries SQL retornando resultados errados | InterSystems. Compartilhe seu feedback por meio da Comunidade de Desenvolvedores e assim construímos um produto melhor juntos. 

Documentação

Você pode encontrar as listas de alterações detalhadas e listas de verificação de atualizações nestas páginas:

Programa de Acesso Antecipado(EAPs)

Há muitos EAPs disponíveis agora. Confira esta página e inscreva-se para aqueles de seu interesse.

Como obter o software? 

Pacotes de instalação completas para ambos InterSystems IRIS e InterSystems IRIS for Health estão disponíveis através da página InterSystems IRIS Data Platform Full Kits do WRC. Kits do HealthShare Health Connect estão disponíveis através da página HealthShare Full Kits do WRC. Imagens de contêiner estão disponíveis através do InterSystems Container Registry. 

Disponibilidade e Informações do Pacote 

Esta versão inclui pacotes de instalação clássicos para todas as plataformas suportadas, bem como imagens de contêiner no formato Docker. Para obter uma lista completa, consulte o documento Plataformas Suportadas. Os números de compilação dessas Versões de Manutenção são: 2024.1.4.512.0 e 2023.1.6.809.0.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Discussion
· Avr 24

What is the best way to output JSON data in a REST API GET request?

Hi devs!

What is the best way to return JSON in IRIS for a GET request in a REST app?

This is how I do it now:

ClassMethod GetAllPersons() As %Stream.Object
{
    d ..%SetContentType("application/json")
    Set rset = ##class(dc.Sample.Person).ExtentFunc()

    set stream=##class(%Stream.TmpCharacter).%New()
    d stream.Write("[")
    if rset.%Next() {
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    While rset.%Next() {
        d stream.Write(",")
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    d stream.Write("]")
    return stream
}

The query is used vs the following persistent class:

Class dc.Sample.Person Extends (%Persistent, %JSON.Adaptor, %Populate)

{



Property Name As %VarString;



Property Title As %String;



Property Company As %String;



Property Phone As %VarString;



Property DOB As %Date(MAXVAL = "$piece($horolog, "","", 1)");



Property PersonId As %Integer [ Calculated, SqlComputeCode = { set {*}={%%ID}}, SqlComputed ];



/// Index for property DOB

Index DOBIndex On DOB;



ClassMethod AddTestData(amount As %Integer = 10)

{

d ..Populate(amount)

}

}

What I don't like:

1. "Unnecessary" "manual" writes of "[]":

d stream.Write("[")

2. Code block repeat for the first segment to excuse "," :


    if rset.%Next() {
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }
    While rset.%Next() {
        d stream.Write(",")
        Set person = ##class(dc.Sample.Person).%OpenId(rset.ID)
        Do person.%JSONExportToStream(.stream)
    }

3. I should introduce an "artificial" PersonId to make the response include record ID's (thanks to @Robert Cemper):

Property PersonId As %Integer [ Calculated, SqlComputeCode = { set {*}={%%ID}}, SqlComputed ];

Your ideas?

4 nouveaux commentaires
Discussion (4)1
Connectez-vous ou inscrivez-vous pour continuer
InterSystems officiel
· Avr 24

Las versiones de mantenimiento 2024.1.4 y 2023.1.6 de InterSystems IRIS, IRIS for Health y HealthShare HealthConnect ya están disponibles

Las versiones de mantenimiento 2024.1.4 y 2023.1.6 de la plataforma de datos InterSystems IRIS®, InterSystems IRIS® for Health™ y HealthShare® Health Connect ya están disponibles de forma general (GA). Estas versiones incluyen las correcciones para la siguiente alerta emitida recientemente: Alerta: Consultas SQL que devuelven resultados incorrectos | InterSystems. Por favor, compartid vuestros comentarios a través de la Comunidad de Desarrolladores para que podamos construir un mejor producto juntos.

Documentación

Podéis encontrar las listas detalladas de cambios y las listas de comprobación para la actualización en estas páginas:

Programas de Acceso Anticipado (EAPs)

Hay muchos Programas de Acceso Anticipado (EAPs) disponibles ahora. Echad un vistazo a esta página y registraos en aquellos que os interesen.

¿Cómo conseguir el software?

Los paquetes de instalación completos tanto para InterSystems IRIS como para InterSystems IRIS for Health están disponibles en la página InterSystems IRIS Data Platform Full Kits del WRC. Los kits de HealthShare Health Connect están disponibles en la página HealthShare Full Kits del WRC. Las imágenes de contenedor están disponibles en el InterSystems Container Registry.

Disponibilidad e información sobre los paquetes

Esta versión incluye paquetes de instalación clásicos para todas las plataformas compatibles, así como imágenes de contenedor en formato Docker. Para consultar la lista completa, dirigíos al documento de Plataformas Compatibles. Los números de compilación de estas versiones de mantenimiento son: 2024.1.4.512.0 y 2023.1.6.809.0.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer