Limpar filtro
Artigo
Danusa Calixto · Mar. 27, 2023
InterSystems FAQ
Você pode recuperar datas e tamanhos de rotina programaticamente usando a consulta RoutineList da classe %Library.Routine (ou apenas %Routine).
A consulta RoutineList tem um argumento e o nome da rotina a ser pesquisado pode ser especificado por correspondência de prefixo ou correspondência intermediária. (Para curingas, especifique * ou ?)
No exemplo a seguir. *.MAC é especificada como argumento.
SET tStatement = ##class(%SQL.Statement).%New()
DO tStatement.%PrepareClassQuery("%Routine" , "RoutineList")
SET rs = tStatement.%Execute("*.MAC",,0)
DO rs.%Display()
Além da lista de rotinas, você também pode obter a lista de definições de classe.
Artigo
Henrique Dias · Jun. 10, 2023
20 anos.
Agora em 2023 eu completo 20 anos trabalhando com tecnologia, desenvolvendo sistemas, implementando, criando novas soluções e posso afirmar que trabalhar com tecnologia InterSystems fez e faz parte da minha vida. Afinal, foram 18 anos trabalhando todos os dias com essa tecnologia.
Comecei a trabalhar com o Caché 4, lá atrás em 2003, vivenciei as mudanças para o Caché 5, Caché e Ensemble 2008, 2010, 2012, 2014, 2017, 2018 e até finalmente chegarmos no InterSystems IRIS.
A evolução da plataforma é algo notável e sempre trouxe mais robustez, flexibilidade e estabilidade para nós desenvolvedores.
Sempre fui apaixonado pela facilidade de desenvolver um sistema com a plataforma InterSystems e como conseguia obter excelentes resultados em performance e velocidade de implementação com uma tecnologia que poucas pessoas conheciam.
Agora em 2023, no "meu aniversário" de 20 anos trabalhando com tecnologia, a InterSystems completa 45 anos!
E quando vejo como a InterSystems evoluiu e onde ela está agora, fico muito feliz de ter conseguido vivenciar e experimentar a evolução dessa tecnologia.
Mas, em contrapartida, são 45 anos e já encontrei muita gente utilizando a tecnologia da mesma forma que se desenvolvia sistemas, utilizava o banco de dados como a 45, 40 anos atrás! Não evoluíram o desenvolvimento ao longo dos anos, continuavam/continuam desenvolvendo como na época do meu saudoso Caché 4 ou até mesmo antes disso.
Então, sempre que ouviam falar de Caché, torciam o nariz e menosprezam o sistema. Mesmo sendo o sistema com maior estabilidade, velocidade e escalabilidade nas empresas.
E para eles, o Caché/MUMPS que era um sucesso no passado, passou a ser muito mal visto. E até me lembra um trecho do filme do Batman Dark Knight:
"You Either Die a Hero, or You Live Long Enough To See Yourself Become the Villain"
Eu costumo dizer que nessas empresas eles tem uma Ferrari nas mãos, mas só sabem andar de 1a e 2a marcha hehehe
E isso me traz para um segundo ponto.
A falta de conhecimento fez com que esses desenvolvimentos ficassem parados no tempo. Fez com que uma tecnologia que vem sendo evoluida continuamente não fosse aproveitada em seu potencial máximo.
E o mais agravante, como você consegue ter uma equipe especializada em uma tecnologia que não é muito conhecida?
Quantos estagiários saem da faculdade conhecendo de InterSystems IRIS, sabendo o que é uma global, entendendo como fazer uma integração no Ensemble?
Para que você possa trocar a marcha da sua Ferrari, é preciso focar na capacitação do seu time, é preciso fomentar e formar novos talentos e ensinar sobre a arquitetura do seu sistema.
E trago aqui um reforço na importância que é a capacitação da sua equipe.
Um estudo do Google aponta exatamente a falta de mão de obra qualificada na área de TIGoogle for Startups: para 92% das empresas entrantes faltam profissionais de TI no Brasil
É formando pessoas capacitadas que você consegue evoluir sua equipe, seu produto.
Seria ingenuidade da nossa parte pensar em substituir sistemas que veem sendo desenvolvidos ao longo de anos. A evolução do sistema, uma melhoria gradual e continua é muito mais aconselhavel do que um "RIP and Replace".
Por esses motivos que o "onboarding" de novos desenvolvedores é fundamental. Entender o conceito por trás do Caché/IRIS e conseguir fazer com que a curva de aprendizado seja a menor possível.
Sendo assim, eu (Henrique), prefiro ensinar o básico antes de sair ensinando as maiores novidades da plataforma.
Com isso sempre em mente, fiz a iniciação ao mundo InterSystems de muitos filhos estagiários, que se tornaram profissionais excelentes, sem nunca sequer ter ouvido falar de InterSystems ou o que era uma global na faculdade 😂
Para essa "iniciação", quero destacar alguns conceitos e funções básicas que serão muito úteis no dia a dia.
Introdução as Globais segundo a documentação oficial:
InterSystems IRIS suporta um tipo especial de variável que não é vista em outras linguagens de programação; esta é a variável global, que geralmente é simplesmente chamada de global. No InterSystems IRIS, o termo global indica que esses dados estão disponíveis para todos os processos que acessam este banco de dados. Este uso é diferente de outras linguagens de programação nas quais global significa "disponível para todo o código neste módulo". O conteúdo de um global é armazenado em um banco de dados InterSystems IRIS.
No InterSystems IRIS, um banco de dados contém globais e nada mais; até mesmo o código é armazenado em globais. No nível mais baixo, todo acesso a dados é feito através de acesso global direto — isto é, usando comandos e funções que trabalham diretamente com globais.
Tentando facilitar o entendimento para quem veem de uma estrutura mais "relacional", podemos dizer que global seria o equivalente a uma tabela.
E na representação abaixo, estamos definindo o nome de um cliente na "tabela" hero
set ^hero(1)="Tony Stark~Armor~29/05/1970"
set ^hero(2)="Steve Rogers~Shield~04/07/1920"
Se compararmos a estrutura da global acima com uma tabela relacional, esta seria o que o seu "SELECT * FROM hero" retornaria
No exemplo da global acima, ^hero é uma global, enquanto 1 e 2 são subscritos que especificam entradas individuais nessa global. Aqui, ^hero(1) se refere a "Tony Stark" e ^hero(2) a "Steve Rogers".
As globais podem também ter múltiplos níveis de subscritos, como mostrado no exemplo a seguir:
set ^hero(1,"codename")="Iron Man"
set ^hero(1,"power")="flight"
set ^hero(2,"codename")="Captain America"
set ^hero(2,"power")="superStrength"
Neste exemplo, conseguimos ver que cada hero tem seu codename em um subscrito relacionado.
A estrutura flexivel das globais, pode até mesmo ser descrita como o JSON a seguir
[
{
"id": 1,
"codename": "Iron Man",
"power": "flight"
},
{
"id": 2,
"codename": "Captain America",
"power": "superStrength"
}
]
Índices no InterSystems IRIS
Índices são estruturas de dados que permitem acesso rápido a informações específicas em um global. Em bancos de dados relacionais, um índice é criado em uma coluna de uma tabela para acelerar consultas que envolvem essa coluna. No IRIS, um índice é uma estrutura de dados criada em um global.
Veja um exemplo de como um índice pode ser definido:
set ^heroIdx("power","flight",1)=""
set ^heroIdx("power","superStrength",2)=""
Aqui, ^heroIdx é um índice que permite que você encontre rapidamente todos os heroes com um determinado poder.
Para completar esse InterSystems IRIS express overview, trago uma lista de funções úteis para lidar com a maravilhosa estrutura multidimensional.
Funções de String: O ObjectScript tem várias funções para manipulação de strings, incluindo:
$GET(variable,[defaultValue]): Se a variável ou a localização do array especificada existir, $GET retornará seu valor. Se não existir, $GET retornará um valor padrão, se fornecido, ou uma string vazia.
$LENGTH(string,[delimiter]): Retorna o número de caracteres em uma string, ou o número de substrings delimitadas.
$EXTRACT(string,start,[end]): Retorna uma substring de uma string.
$PIECE(string,delimiter,[start,[end]]): Retorna uma substring de uma string dividida por um delimitador.
Funções de Data e Hora: ObjectScript fornece funções para manipulação de datas e horas, incluindo:
$HOROLOG: Retorna a data e a hora atuais como um valor $H.
Curiosidade: A função $HOROLOG retorna a data e a hora atual no formato $HOROLOG.
O formato $HOROLOG é uma representação numérica do tempo na seguinte forma: dias,segundos, onde dias é o número de dias desde 31 de dezembro de 1840, e segundos é o número de segundos desde a meia-noite do dia atual. Por exemplo, $HOROLOG pode retornar 63940,71700, o que representaria a data e a hora no momento da execução da função.
$ZDATETIMEH(datetime): Converte uma data e hora do formato $H para o formato ODBC.
$ZDATEH(date): Converte uma data do formato $H para o formato ODBC.
Funções de Manipulação de Globais: ObjectScript tem várias funções para trabalhar com globais, como:
SET ^global(subscript)=value: Define o valor de um global.
KILL ^global(subscript): Remove um global ou uma parte de um global.
$DATA(^global(subscript)): Verifica a existência de um global e se ele tem algum valor.
Funções de Manipulação de Listas: As funções de lista incluem:
$LISTBUILD(element1,[element2,...]): Cria uma lista de elementos.
$LISTLENGTH(list): Retorna o número de elementos em uma lista.
$LISTGET(list,index): Retorna o valor de um elemento em uma posição específica em uma lista.
Se você chegou até aqui e ficou se perguntando que tipo de casos de uso, InterSystems IRIS pode ajudar a resolver no seu projeto, sistema, empresa, eu digo para você que todos.
A arquitetura que podemos usar com globais faz com que a forma de encarar determinadas situações possam ser simplificadas, aumentando performance, reduzindo tempo de desenvolvimento.
Como nessa questão trazida pelo meu amigo Henry.
https://community.intersystems.com/post/hierarchical-queries
A solução proposta pelo Timothy é elegante
Class DC.Demo.Hierarchy Extends %Persistent [ MemberSuper = AppS.Index.Methods ]
{
Property message As %String;
Property login As %String;
Property parentId As DC.Demo.Hierarchy [ SqlFieldName = parent_id ];
Index parentId On parentId [ Type = bitmap ];
ClassMethod RunDemo()
{
Do ..%KillExtent()
&sql(insert into DC_Demo.Hierarchy (message, login, parent_id)
values ('Bacon ipsum dolor amet pork shoulder ribs', 'User 1', null))
&sql(insert into DC_Demo.Hierarchy (message, login, parent_id)
values ('BGouda croque monsieur emmental.', 'User 2', 1))
&sql(insert into DC_Demo.Hierarchy (message, login, parent_id)
values ('Manchego fromage frais airedale', 'User 3', 2))
Do ##class(%SQL.Statement).%ExecDirect(,
"select id, message, parent_id from DC_Demo.Hierarchy "_
"where id %FIND DC_Demo.Hierarchy_parentIdFind(2,'all descendants')").%Display()
Do ##class(%SQL.Statement).%ExecDirect(,
"select id, message, parent_id from DC_Demo.Hierarchy "_
"where id %FIND DC_Demo.Hierarchy_parentIdFind(3,'all related')").%Display()
}
}
No entanto, caso estivessemos olhando para um modo de desenvolvimento com globais ao invés da estrutura mais relacional, nosso resultado mais simples.
^messages(idMensagem) = "Bacon ipsum dolor amet pork shoulder ribs"
^messages(idMensagem,idParent) = "Gouda croque monsieur emmental."
^messages(idMensagem,idParent) = "Manchego fromage frais airedale"
Com isso, conseguiriamos recuperar facilmente os itens ordenando pela ordem do "parent id". Simples e eficaz.
Nesses 45 anos, conseguimos muitas melhorias, uma evolução constante em arquitetura, performance, features e muito mais. E nessa linha evolutiva constante, temos também a possibilidade de utilizar agora diferentes linguagens e não apenas ObjectScript.
Embedded Language Development
Você pode agora usar diferentes linguagens e trabalhar com a plataforma InterSystems, seja utilizando Python, .Net, Noje.js, ou até mesmo Java (tem gosto para tudo 😂)
E para encerrar deixo aqui dessa flexibilidade com um exemplo de Embedded Python.
Embedded Python
Class User.EmbeddedPython
{
/// Description
ClassMethod Test() As %Status [ Language = python ]
{
# print the members of the Fibonacci series that are less than 10
print('Fibonacci series:')
a, b = 0, 1
while a < 10:
print(a, end=' ')
a, b = b, a + b
# import the iris module and show the classes in this namespace
import iris
print('\nInterSystems IRIS classes in this namespace:')
status = iris.cls('%SYSTEM.OBJ').ShowClasses()
return status
}
}
Se você não morreu de tédio lendo esse texto, te convido para dar um like no artigo e mandar esse texto para os seus estagiários, ou mesmo para aqueles que ainda usam a plataforma como há 40 anos atrás 😂 Parabéns Henrique pela postagem!
Sempre temos o desafio de explicar a tecnologia, principalmente em projetos integrados com outras linguagens onde enxergam o IRIS como uma tecnologia "alienígena"!
Esse é um ótimo post para usar como apresentação!
Excelente artigo Henrique, parabéns!!! Realmente o IRIS é uma tecnologia extremamente potente e pouco aproveitada. Só acho que a Intersystems poderia divulgar mais a tecnologia com cursos mais acessíveis nas empresas, escolas técnicas, universidades. @Felipe.Carvalho muito obrigado! 😃
Acho que todos nós que trabalhamos com tecnologia InterSystems temos esse desafio. Mostrar que não é um bicho de 7 cabeças, que não tem nada de alienígena numa global e que um $order não mata ninguém hahaha
E acho que o maior desafio de todos é provar que diferente do COBOL, a plataforma veio continuamente evoluindo Oi @VeraLucia.AlvesdeOliveira concordo plenamente.
Tenho esse mesmo sentimento. É uma excelente tecnologia, mas sinto muita falta dessa tecnologia não ser amplamente divulgada e difundida.
Quem sabe a gente não monta um curso no TikTok para atrair o público mais jovem? kkkkkk
Anúncio
Danusa Calixto · Jul. 4, 2022
Olá, pessoal!
O Global Summit 2022 em Seattle terminou há pouco mais de uma semana, mas as palestras já estão disponíveis para aqueles que perderam enquanto estavam no local ou que não puderam participar deste evento presencial por algum motivo ou outro (ou apenas para aqueles que desejam refrescar a memória e ouvi-los novamente).
Sem mais delongas, o início do Global Summit também conhecido como Saudações da Comunidade:
Divirta-se assistindo todas as palestras dos três dias do Global Summit 2022 através dessa playlist do YouTube:
➡️ Global Summit 2022 on InterSystems Developers YouTube
E junte-se a nós no próximo em Hollywood, Florida! 🤩 Details.
Anúncio
Benjamin De Boe · Out. 27, 2020
Esta é uma tradução do anúncio original.
A primeira versão completa de nossa biblioteca de código aberto para NLP (processamento de linguagem natural), o iKnow, está disponível agora no GitHub e PyPI!
Este processador de linguagem natural esteve disponível como uma tecnologia embarcada InterSystems por aproximadamente 10 anos e a sua biblioteca foi publicada como código aberto no início deste ano.. Agora, juntamente com as outras novidades apresentadas no Virtual Summit 2020, estamos orgulhosos de anunciar a disponibilização da v1.0, que adiciona acesso total via Python ao mecanismo principal, documentações e exemplos sobre os conteúdos dos modelos de linguagem e um bloco de notas Jupyter de demonstração para ser utilizado como um ponto de partida. A tecnologia continua a estar disponível como parte da plataforma de dados IRIS para uso embarcado com o nome de InterSystems IRIS NLP e está incluída em todos seus tipos de licenciamento. Kudos para todo o time que nos fez alcançar este nível de excelência tanto na versão de código aberto quanto na embarcada na plataforma!
Para baixar e instalar o iKnow, tudo que você precisa fazer é executar pip install iknowpy e então você já estará pronto para indexar !!!
Eu e @Aohan.Dang os levaremos através do "COMO" e "O PORQUÊ" da biblioteca durante a Sessão de Foco do Virtual Summit 2020 que acontecerá dia 27 de Outubro às 13:15 (horário de brasília) , se você estiver totalmente impaciente, pode dar uma olhada em nossa demo na Demo Zone:
Anúncio
Cristiane Ferreira Mello · Fev. 11, 2022
Vaga para atuar na Rede Santa Catarina
Atribuições:
Atuar como Desenvolvedor de Integrações entre Sistemas, realizando implementação de novas integrações, manutenção, correções de defeitos, testes, documentação, reuniões com equipes da instituição (áreas de TI e demais Setores) e fornecedores;
Suporte a integrações desenvolvidas nos sistemas SOULMV E ENSEMBLE;
Atuar na manutenção, implantação e configuração dos módulos do sistema de gestão hospitalar, através de testes em ambiente de homologação para continuidade do negócio;
Fornecer suporte e acompanhamento das dificuldades operacionais que venham ocorrer nos diversos sistemas da instituição, para evitar retrabalho.
Requisitos/Conhecimentos Imprescindíveis:
Ensino Superior Completo em T. I. ou áreas afins. Desejável Especialização e/ou Pós-Graduação em área correlata. Desejáveis certificações na Área de TI;
Habilidades de análise e desenvolvimento de softwares;
Habilidades de Desenvolvimento baseado em especificações funcional e técnica;
Tecnologias da plataforma Intersystems;
Experiência com desenvolvimento Ensemble / HealthConnect;
Experiência de Programação em Intersystems COS (Cache Object Script);
Experiência com Banco de Dados Oracle;
Conhecimento em SQL Oracle;
Conhecimento em PL/SQL Oracle;
Modelagem de dados;
Conhecimento de conceitos relativos a Barramento de Integrações;
Comunicação com APIs;
WebServices (Soap/Rest);
Versionamento de Software com Git;
Requisitos/Conhecimentos Desejáveis:
Operação em SO Linux;
Conhecimento em processos Hospitalares.
Link Linkedin: https://www.linkedin.com/jobs/view/2912840887/
Anúncio
Evgeny Shvarov · Out. 22, 2021
Olá participantes!
Nós divulgamos um os bônus tecnológicos para os projetos concorrentes no Concurso de Interoperabilidade InterSystems 2021!
E aqui estão os projetos que receberam os bônus:
Projeto
BPL ou DTL
Adaptador Customizado
PEX
Workflow
Docker
ZPM
Demo Online
Qualidade do Código
Artigo na CD
Vídeo no YouTube
Bônus Total
Nominal
3
2
4
2
2
2
3
2
2
3
25
ESKLP
3
3
6
CSV to M$-OFX
3
2
2
2
2
3
14
iris-crypto-tracker
3
4
2
9
LabResultsVerification-hl7
3
2
2
3
2
3
15
appmsw-telealerts
2
2
2
6
interoperability-for-money
3
2
2
7
IRIS Big Data SQL Adapter
4
2
2
4
3
13
IRIS Interoperability Message Viewer
2
2
3
2
2
3
14
Node-RED node for InterSystems IRIS
3
2
2
2
9
Os bônus são sujeitos alateração conforme melhorias ou requisições, no caso de esquecermos algo!
Deixe por favor seus comentários nesta postagem ou no Discord.
Boa sorte no Concurso !!!
Anúncio
Olga Zavrazhnova · Mar. 18, 2021
Olá Desenvolvedores!
Nós dobramos o número de pontos ganhos para cada post ou tradução feita na Comunidade de Desenvolvedores. Valendo a partir de 18/03/21, você ganhará para cada artigo ou pergunta:
✅ 200 pontos na Comunidade de Desenvolvedores em Inglês✅ 400 pontos* nas Comunidades em Português / Espanhol / Chinês / Japonês
e✅ 100 pontos para cada tradução!
Além disso, vocês lembram que vocês ganham vários pontos para conjuntos de artigos / comentários ?
Vejam a relação:
1° artigo
5 artigos
10 artigos
25 artigos
50 artigos
1.500 pontos
7.500 pontos
15.000 pontos
40.000 pontos
75.000 pontos
1ª pergunta
5 perguntas
10 perguntas
25 perguntas
50 perguntas
500 points
2.000 points
5.000 points
15.000 points
30.000 points
Além disto vocês também estão ganhando distintivos para cada um destes marcos ! Neste artigo, você poderá encontrar todos os níveis e distintivos (coloque o cursor do mouse sobre o distintivo para verificar como obtê-lo).
*Aumento de número de pontos para as Comunidades de Desenvolvedores em Português / Espanhol / Chinês e Japonês durante o período de lançamento.
Informações adicionais sobre o Global Masters:
Como se juntar ao InterSystems Global Masters
Distintivos do Global Masters: descrição e regras para obtê-los
Se você ainda não se juntou ao InterSystems Global Masters, esta é a hora!
Sintam-se a vontade para tirarem suas dúvidas nos comentários deste post.
Anúncio
Angelo Bruno Braga · Mar. 10, 2022
Olá Desenvolvedores !
Segue uma oportunidade para bolsas de estudo remuneradas:
Duas bolsas de estudo para área de tecnologia da informação:• Valor de R$ 7.373,10 durante 24 meses• https://inovahc.hc.fm.usp.br/oportunidades/• Código da vaga: HC04 Desenvolvedor• Código da vaga: HC05 Desenvolvedor Integrador
Desenvolvedor e Desenvolvedor Integrador
Requisitos:
Graduação completa em Análise de Sistemas, Desenvolvimento de Sistemas, Ciências da Computação, Sistemas de Informação ou Engenharia da Computação, Elétrica, Biomédica, Informática, Estatística, Matemática, Física.
Conhecimento em Lógica de programação orientada a objeto, Programação C#, geração de relatórios, SQL (select, insert, update, procedures, funções e views), banco de dados relacional (ORACLE e MS-SQL); geração de relatório (ireport, crystal report e afins), desenvol.de produtos para área de saúde digital;
Diferenciais:
Conhecimento em TASY / MV, InterSystems Ensemble / InterSystems Caché
Técnico em informática ou sistemas da informação ou eletrônica é um diferencial.
Atribuições:
Desenvolvimento de sistemas em saúde digital para apoiar os projetos de conectividade 5G.
Desenvolver e realizar a integração das soluções c/ os sistemas legados.
Tipo de local de trabalho: híbrido (presencial e home office) Duração: até dezembro de 2023.
Os candidatos interessados deverão enviar currículo e certificados de formação citados na divulgação da vaga desejada, até o dia 17/03/22, para o e-mail rhselecao@ffm.br, mencionando no assunto o código completo da vaga.
Artigo
Danusa Calixto · Out. 10, 2022
Estou feliz em compartilhar com você minha primeira experiência usando uma versão de contêiner docker do IRIS for Health para explorar seu interesse em fazer um teste ou usar um contêiner docker leve e fácil de implantar. Este guia abordará as etapas de implementação usando o repositório GitHub chamado ENSDEMO, escrito por Renan Lourenco.
Etapas para configurar um ambiente de contêiner docker do IRIS for Health Community Edition
Docker em funcionamento
Download da imagem do docker
docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.304.0
Clone o repositório de fonte do GitHub
git clone https://github.com/OneLastTry/irishealth-ensdemo
Altere o diretório de arquivo para onde você clonou do Github.
Crie uma imagem de contêiner a partir do arquivo docker-compose.yml
docker-compose build
Execute seu contêiner
docker-compose up -d
Na minha tentativa inicial, não consegui baixar a versão exata do irishealth community:2022.2.0.304.0, porque havia mudado desde o lançamento inicial do ENSDEMO. A correção é extrair a tag disponível mais recente no registro ao tentar extrair a imagem do docker do InterSystems Container Registry.
Outro erro que encontrei estava indicando "=>ERROR[internal] load metadata for docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.293.0" após a execução do comando docker-compose build. Isso ocorre porque há um conflito entre a versão da imagem do docker que transferi por download e a versão da imagem do contêiner especificada em Dockerfile.
Para fazer login no IRIS for Health:
Portal de Gerenciamento: http://localhost:9092/csp/sys/%25CSP.Portal.Home.zen
Nome de usuário: SuperUser
* Senha: SYS
* Porta do SuperServer: 9091
* Porta Web: 9092
* Namespace: ENSDEMO
Inicie uma sessão de terminal do IRIS: docker exec -it ensdemo iris session iris
Inicie uma sessão bash: docker exec -it ensdemo /bin/bash
Meu vídeo de implementação passo a passo: https://www.loom.com/share/36bd8c63db724eebae65debf0d89c821
Referências:
https://github.com/OneLastTry/irishealth-ensdemo
de Renan Lourenco (Renan.Lourenco@intersystems.com)
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ACLOUD
Pergunta
Jose Lazarete · Set. 8, 2021
Olá pessoal, tudo bem?
Estou com uma mensagem de alerta no portal do IAM, informando que a licença está prestes a expirar em alguns dias. Acredito que essa licença não tem ligação com a licença do IRIS, já que a licença IRIS vencerá com outra data.
Além da licença IRIS há a necessidade de adquirir uma licença junto ao Kong?
- IAM versão: iam:2.3.3.2-1
Tudo bem José?
A licença do IRIS possui um trecho onde está contida a licença do IAM, entretanto a validade é distinta da validade da licença do IRIS. Para solicitar uma nova licença do IRIS com a validade da licença do IAM atualizada você precisa entrar em contato com o Account Manager da InterSystems responsável.
Abraço Tudo jóia Angelo.
Grato pelo retorno e esclarecimentos.
Anúncio
Danusa Calixto · Abr. 9
Olá Comunidade,
É hora do novo lote de #Perguntas-Chave do mês anterior.
Aqui estão as principais perguntas de março escolhidas pelos especialistas da InterSystems em todas as comunidades:
📌 Message Count por @Farman.Ullah2607 (EN)
📌 Walking a virtual document's structure por @Colin.Brough (EN)
Essas perguntas serão destacadas com a tag #Pergunta Principal e seus autores receberão o emblema de Key Question no Global Masters.
Se você achar a(s) pergunta(s)-chave de outras comunidades interessante(s), deixe-nos uma mensagem nos comentários e traduziremos a(s) pergunta(s) e a(s) resposta(s) aceita(s).
Parabéns e obrigado a todos pelas perguntas interessantes. Continuem enviando!
Vejo vocês no mês que vem 😉
Artigo
Cristiano Silva · Abr. 27, 2023
InterSystems FAQ rubric
Neste artigo, apresentaremos como lidar com a situação: "Excluí acidentalmente uma global!"
Arquivos de backup e journals são usados para recuperar globais específicas que foram excluídas acidentalmente. A restauração é executada especificando as condições e restaurando registros do journal usando o utilitário ^ZJRNFILT. Dessa forma, você pode aplicar um backup pontual do banco de dados e até incluindo a exclusão de uma global específica para registros do journal que contêm as exclusões. Para obter mais informações sobre o utilitário ^ZJRNFILT, consulte a documentação:
Filter Journal Records Using ^ZJRNFILT [IRIS]Filter Journal Records Using ^ZJRNFILT
【Exemplo】
- Existe um backup de 14/10/2020 (assumindo que o backup foi executado em 15/10/2020 00:30) Journal: 1 dia de 15/10/2020 existe (15/10/2020) Após o backup do dia14/10)・Global alvo: ^TEST1
A imagem está abaixo.
Global ^TEST1 será preenchida a partir de 14/10.A global ^TEST1 foi excluída acidentalmente com uma instrução KILL às 15:30 do dia 15 de Outubro.Neste estágio, queremos restaurar a global ^TEST1 imediatamente antes do KILL.No exemplo, ^TEST1(1) a ^TEST1(100) são restaurados usando o journal da global criado pelos comandos abaixo.
USER>for i=1:1:100 set ^TEST1(i)=$ZTIMESTAMPUSER>for i=1:1:100 set ^TEST2(i)=$ZTIMESTAMPUSER>kill ^TEST1 // ← Processando até aqui para recuperar usando o arquivo de journal para a global ^TEST1
[Procedimento de Restauração]
Fazer backup/restauração ou copiar (montar) arquivos de banco de dados de backup (CACHE.DAT/IRIS.DAT) para outro sistema
Copie os journals após a resturação do backup para outro sistema
Identificar os registros do journal para o comando kill do último arquivo de journal
Observação1: Visualizar os registros do journal no Portal de Administração ( Portal de Gerenciamento > [Operações do Sistemas] > [Arquivos de Journals] > clique no link [Exibir] para o arquivo específico) (Para o exemplo exibido, o deslocamento do registro do journal para o comando KILL é 9060180)
Observação 2: Você também pode verificar os registros do journal usando a rotina do sistema SELECT^JRNDUMP.
Restaure os arquivos de journal em ordem, apenas as globais a serem restauradas estão OK.
Para o último arquivo use o utilitário ZJRNFILT
Exporte a global recuperada, copie e importe para o sistema original
Abaixo o código de exemplo da rotina ZJRNFILT utilizada no 5º passo(deve ser criada no namespace %SYS com o nome ZJRNFILT ).
ZJRNFILT (pid,dir,glo,type,restmode,addr,time)
set restmode =1
// If TEST1 is included in the global variable name
// and the journal record is 9060180 or later, set restmode=0 (=do not restore)
if ( glo [ "TEST1" ) & ( addr >=9060180) {
set restmode =0
}
quit
Abaixo exemplo da restauração do último arquivo de journal usando ZJRNFILT (as entradas estão em letras azuis em negrito).
%SYS>do ^JRNRESTO
This utility uses the contents of journal files
to bring globals up to date from a backup.
Restore the Journal? Yes => Yes
Use current journal filter (ZJRNFILT)? yes
Use journal marker filter (MARKER^ZJRNFILT)? no
Apply filter to every selected file? Yes => yes
Process all journaled globals in all directories? no
Are journal files imported from a different operating system? No => no
Directory to restore [? for help]: c:\intersystems\hscv\mgr\user\ c:\intersystems\hscv\mgr\user\
Redirect to Directory: c:\intersystems\hscv\mgr\user\
=> c:\intersystems\hscv\mgr\user\--> c:\intersystems\hscv\mgr\user\
Process all globals in c:\intersystems\hscv\mgr\user\? No => no
Global ^TEST1
Global ^
Directory to restore [? for help]:
Processing globals from the following datasets:
1. c:\intersystems\hscv\mgr\user\ Selected Globals:
^TEST1
Specifications correct? Yes => yes
Are journal files created by this IRIS instance and located in their original
paths? (Uses journal.log to locate journals)? no
If you have a copy of the journal history log file from the Cache or IRIS
instance where the journal files were created, enter its full path below;
otherwise, press ENTER and continue.
Journal history log:
Specify range of files to process (names in YYYYMMDD.NNN format)
from: <20201012.002> [?] => 20201015.001
through: <20201015.001> [?] =>
Provide or confirm the following configuration settings:
Journal File Prefix: [?] =>
Files to dejournal will be looked for in:
c:\intersystems\hscv\mgr\journal\
in addition to any directories you are going to specify below, UNLESS
you enter a minus sign ('-' without quotes) at the prompt below,
in which case ONLY directories given subsequently will be searched
Directory to search: <return when done>
Here is a list of directories in the order they will be searched for files:
c:\intersystems\hscv\mgr\journal\
Prompt for name of the next file to process? No => no
The following actions will be performed if you answer YES below:
* Listing journal files in the order they will be processed
* Checking for any missing journal file on the list ("a broken chain")
The basic assumption is that the files to be processed are all
currently accessible. If that is not the case, e.g., if you plan to
load journal files from tapes on demand, you should answer NO below.
Check for missing journal files? Yes => no
You may disable journaling of updates for faster restore for all
databases other than mirrored databases. You may not want to do this
if a database to restore is being shadowed as the shadow will not
receive the updates.
Do you want to disable journaling the updates? Yes => yes
Updates will NOT be journaled
Before we job off restore daemons, you may tailor the behavior of a
restore daemon in certain events by choosing from the options below:
DEFAULT: Continue despite database-related problems (e.g., a target
database is not journaled, cannot be mounted, etc.), skipping affected
updates
ALTERNATE: Abort if an update would have to be skipped due to a
database-related problem (e.g., a target database is not journaled,
cannot be mounted, etc.)
DEFAULT: Abort if an update would have to be skipped due to a
journal-related problem (e.g., journal corruption, some cases of missing
journal files, etc.)
ALTERNATE: Continue despite journal-related problems (e.g., journal
corruption, some missing journal files, etc.), skipping affected updates
Would you like to change the default actions? No => no
Start the restore? Yes => yes
c:\intersystems\hscv\mgr\journal\20201015.001
100.00%
***Journal file finished at 15:43:05
[journal operation completed]
Do you want to delete your journal filter? yes
Journal filter ZJRNFILT deleted
%SYS>
Ao fazer a restauração de uma global o journal , **por segurnaça** nós recomendamos que seja feita uma replicação da base de dados e dos arquivos de journal em ou outro ambiente que não seja o de produção. Para então, exportar a global restaurada e transferir (copiar) no ambiente de produção.
Para detalhes das mensagens exibidas durante a restauração do arquivo de journal, consulte a documentação
Anúncio
Angelo Bruno Braga · Mar. 3, 2022
Esta postagem é parte do processo de comunicação de alertas do HealthShare HS2022-01. Esta mesma informação também é distribuída:
Por Email
Na página de Alertas e avisos de Produtos
Na página de Distribuição do WRC da InterSystems de Documentos
Existem 22 alertas na comunicação de alertas do HealthShare HS2022-01. O Resumo dos alertas está na tabela abaixo e os detalhes estão contidos no documento anexado: HS2022-01-Communication
Alerta
Produto & Versões Afetadas
Categoria de Risco
HS2022-01-01: Datas de Vacinação alteradas em algumas circunstâncias
Todas as versões do:
Information Exchange
Unified Care Record
Personal Community
HealthShare Health Connect
InterSystems IRIS for Health
OperacionalClínico Segurança
HS2022-01-02: Tratamento inválido de vários intervalos de referência nos documentos CDA e C-CDA
Todas as versões do:
Information Exchange
Unified Care Record (até 2021.1)
Clínico Segurança
HS2022-01-03: Verificação de Segurança para Acesso de Emergência aos Registros do Paciente falha em algumas situações
Todas as versões do:
Information Exchange
Unified Care Record (até 2020.2)
Privacidade
HS2022-01-04: Vulnerabilidade de Segurança no Unified Care Record 2020.2.0
Unified Care Record:
2020.2.0 (Build 8620)
Privacidade
HS2022-01-05: Clientes com Unified Care Record 2020.2 e 2021.1 devem instalar um Patch antes de atualizar para uma versão posterior
Versões 2020.2, 2021.1 do:
Unified Care Record
Clinical Viewer
Health Insight
Patient Index
Personal Community
Care Community
Versões 2020.2, 2021.1, 2021.2, 2021.3 do:
Provider Directory
Operacional
HS2022-01-06: A configuração do Clinical Viewer Clássico demanda Requires solução desatualizada de terceiros
Todas as versões do:
Unified Care Record (Clinical Viewer Clássico apenas)
Segurança
HS2022-01-07: Usuários podem não conseguir sair do Clinical Viewer
Todas as versões do:
Information Exchange
Unified Care Record (até 2020.2)
Privacidade
HS2022-01-08: O cache de agregação do Gateway de Acesso cresce ao longo do tempo
Unified Care Record:
2020.1, 2020.2, 2021.1, 2021.2
Operacional
HS2022-01-09: Incompatibilidade nas customizações do HL7toSDA3 durante a atualização para o HealthShare 15.03 ou mais recente
Information Exchange:
15.03 ou mais recente (durante a atualização para o Unified Care Record)
Não avaliado
HS2022-01-10: Endpoints IHE devem utilizar credenciais apropriadas
All versions of:
Information Exchange
Unified Care Record
Segurança
HS2022-01-11: Reativação do namespace ODS pode resultar em tempo de indisponibilidade prolongado
Unified Care Record:
2019.1, 2019.2
Operacional
HS2022-01-12: Atualização do ODS pode necessitar de intervenção manual para completar
Unified Care Record:
2020.1 (quando atualizando para 2020.2)
Operacional
HS2022-01-13: Dados de auditoria do ODS inacessível depois de atualização para a versão 2020.1
Unified Care Record:
2019.1 ou 2019.2 (quando atualizando para 2020.1)
Privacidade
HS2022-01-14: Políticas de Consentimento no âmbito do sistema e a nível de instalação ignora as datas de eventos
Todas as versões do:
Information Exchange
Unified Care Record (até 2021.1)
Privacidade
HS2022-01-15: Requisições FHIR não estão tendo o consentimento avaliado de forma própria
Unified Care Record:
2020.1
Privacidade
HS2022-01-16: Operações FHIR “$everything” podem estar retornando dados demográficos não consentidos
All versions of:
Information Exchange
Unified Care Record (até 2021.1)
Privacidade
HS2022-01-17: Problema de performance de índice FHIR pode estar causando instabilidade no ODS
Information Exchange:
2018.1
Unified Care Record:
2019.1, 2019.2
Operacional
HS2022-01-18: Vulnerabilidade de Segurança no FHIR Gateway/FHIR Server
Unified Care Record:
2021.1
InterSystems IRIS for Health:
2021.1
Segurança
HS2022-01-19: Servidor FHIR não verifica revogação de token
Unified Care Record:
2020.1, 2020.2, 2021.1
InterSystems IRIS for Health:
2020.4, 2021.1
HealthShare Health Connect:
2020.4, 2021.1
Segurança
HS2022-01-20: Escopo do Token OAuth não é aplicado em Bundles FHIR Batch e Transaction
InterSystems IRIS for Health:
2021.1
PrivacidadeSegurançaOperacional
HS2022-01-21: Cliente REST de interoperabilidade do FHIR Server não realiza a limpeza de dados de forma correta
InterSystems IRIS for Health:
2020.2, 2020.3
HealthShare Health Connect:
2020.2, 2020.3
Operacional
HS2022-01-22: Problema de Segurança no Patient Index
Todas as versões do:
Patient Index (até 2021.2)
Segurança
Se você tiver dúvidas referente a este aviso, por favor entre em contato com support@intersystems.com e referencie o “HealthShare Alert HS2022-01”.
Artigo
Yuri Marx Pereira Gomes · Mar. 3, 2022
Às vezes é necessário transferir ou migrar dados e esquemas de dados do Postgres para o IRIS. Atualmente, existem algumas opções para fazer isso, mas as duas opções mais populares são usando DBeaver (https://openexchange.intersystems.com/package/DBeaver) ou SQLGateway. A primeira será demonstrada neste artigo e a segunda é apresentada em um excelente artigo de Robert Cemper, DB Migration using SQLgateway (https://community.intersystems.com/post/db-migration-using-sqlgateway), veja neste artigo como realizar essa migração usando o DBeaver:
Amostra de dados para demonstrar a migração
No Github é possível baixar o projeto docker compose para construir e rodar os 2 bancos de dados:
Banco de origem: Banco de dados de Exemplo em uma instância Docker com PostgreSQL.
Banco de destino: Instância Docker com o InterSystems IRIS data platform pronto para receber os dados da migração.
Para obter a amostra e executá-la, siga estas etapas:
1. Acesse https://github.com/yurimarx/migration-pg-iris e clique em Download para acessar o repositório git.2. Clone o projeto: git clone https://github.com/yurimarx/migration-pg-iris.git.3. Vá para a pasta do projeto migration-pg-iris.4. Faça o build: docker-compose build.5. Execute os contêineres: docker-compose up -d.6. Veja em sua área de trabalho docker com as instâncias estão ok:
Sobre os dados a serem migrados
O processo de migração do PostgreSQL para o IRIS vai migrar:
08 tabelas.
1000000 registros de venda (sale).
250000 resgistros de usuário (users).
300 registros de produto (product).
500 registros de loja (store).
100 registros de país (country).
30 registros de cidade (city).
5 registros de status_name.
A migração irá para o schema dc_test dentro do namespace USER no InterSystems IRIS database.
Ferramenta aberta para migrar do PostgreSQL para o IRIS: DBeaver
DBeaver é uma ferramenta de banco de dados para conectar, criar, descartar, selecionar, atualizar e excluir objetos de dados aos principais produtos de banco de dados do mercado. Faça o download em: https://openexchange.intersystems.com/package/DBeaver. Agora siga as instruções de instalação para obter este produto fantástico em seu laptop ou desktop.DBeaver pode ser usado para migrar dados entre conexões de banco de dados, mesmo que sejam de fabricantes e versões diferentes.
Conectando nos bancos de dados com o DBeaver
Para configurar a conexão com o PostgreSQL no DBeaver:
1. No DBeaver vá para File > New.
2. Selecione Database Connection e clique Next:
3. Escolha a aba SQL > PostgreSQL e clique next:
4. Preencha a conexão com o PostgreSQL como nesta figura:
Host: localhost
Port: 5438
Database: postgres
Username: postgres
Password: postgres
Click Finish.
Configuração da conexão com o InterSystems IRIS no DBeaver:
1. No DBeaver vá para File > New.2. Selecione Database Connection e clique Next:
3. Escolha a aba SQL > InterSystems IRIS e clique next:
4. Se o DBeaver requisitar o download do driver do InterSystems IRIS, pressione Yes ou Ok.5. Configure a conexão com o InterSystems IRIS como nesta figura:
Host: localhost
Database/Schema: user
Username: _SYSTEM
Password: SYS
Click Text Connection and Finish.
6. As conexões (postgres and user) agora estão disponíveis no Database Navigator:
Faça a Migração
Siga estes passos:1. Expanda a conexão postgres > public e selecione todas as tabelas. Clique com o botão direito do mouse com as tabelas selecionadas e escolha Export Data, como na figura abaixo:
2. Selecione Database, como na figura a seguir e clique Next
3. Clique em Choose button:
4. Selecione dc_test e clique Ok.
5. Agora é necessário realizar algumas mudanças de tipo de dados para o banco de dados de destino, pois o IRIS e PostgreSQL usando tipos de dados diferentes para integer e decimal.6. Expanda a tabela public.country, selecione o primeiro campo (country_id) e clique Columns…
7. Altere o Target Type de int4 para integer e clique Ok.
8. Repita o processo para as tabelas:
a. public.product.b. public.status_name.c. public.users.d. public.city (altere o tipo para integer nos campos city_id e country_id).e. public.store (altere o tipo para integer nos campos store_id e city_id).f. public.sale (altere o tipo para double no amount e integer para product_id, user_id e store_id)
g. public.order_status (altere status_name_id para integer).
9. Agora com os tipos alterados no Target Data Types, clique Next.
10. Configure Fetch size para 1000000 e clique Next.
11. Aceite os valores default para o Data load settings e clique Next.
12. Em Confirm clique em Proceed.
13. Agora veja no Database Navigator todas as tabelas PostgreSQL dentro do InterSystems IRIS dc_test schema.
O processo de migração foi muito simples para tabelas, mas para visualizações, funções, gatilhos e procedimentos armazenados, você precisa reescrever o código-fonte SQL usando ObjectScript ou SQL.
O que você ganha ao migrar para o IRIS?
API Management.
Relatórios visuais (IRIS Reports).
AutoML (IntegratedML).
Desenvolvimento multi linguagens de programação (Python, Java, .NET, JavaScript).
ESB.
BI/Analytics.
NLP.
Desenvolvimento de microsserviços.
Multimodel database (SQL, JSON, Analytical Cubes, Object Oriented).
Sharding.
Em resumo, ao migrar para o IRIS você obtém uma plataforma de dados, quando antes você só tinha um banco de dados.
Anúncio
Angelo Bruno Braga · Dez. 13, 2022
Olá desenvolvedores,
Neste mês de outubro, vocês postaram 68 novas perguntas na Comunidade de Desenvolvedores:
Perguntas
InterSystems IRIS
Arquivo de banco de dados IRIS [IRIS.DAT] verificação do atributo de Mirrorpor Phillip Wu
Definir tempo limite da sessão por funçãopor Kevin Kindschuh
Obtenha o id primário da linha inserida no SQLpor Dmitry Maslennikov
ClassMethod recursivopor Patrik Spisak
Adicionando uma classe ao namespace 'USER' usando o terminalpor Phillip Wu
O Visual Studio Code não se conectará ao IRIS: WRONG_VERSION_NUMBERpor Phillip Wu
O índice exclusivo da classe base não funciona por Iryna Mykhailova
Instância não abre por índice chave do índice após a migração do Cache para o Iris.por Edmara Francisco
Verificação de restrição de chave estrangeira do SQL ao excluirpor Dmitry Maslennikov
"Cópia" de Roteador de mensagempor Andy Khemraj
Criação de DTL para Saída em lote mapeada por registropor Chip Gore
É possível desabilitar a validação do certificado em um HS.FHIRServer.RestClient.HTTP Enpointpor Martin Staudigel
Qual é a probabilidade de encontrar "mensagens perdidas" no banco de mensagens?por Oliver Wilms
Não consigo fazer login no registro de contêinerpor Shane M Elliott
O serviço WSDL SOAP está criando sessões da web que levam o servidor a ficar inativopor prashanth ponugoti
Existe uma maneira de modificar as classes %SYS para fins de depuração? por Norman W. Freeman
Usuários Delegados por Rob Schoenmakers
Limpar Campo SDApor Rob Schoenmakers
Caché
APIs para obter os dados no InterSystems Cachepor Naveenkumar M
tablePane com OnCreateResultSet não retorna resultados ao referenciar outro namespacepor Andy Stobirski
Enviando EMAIL - Alterando fonte e tamanhopor Steve Strunk
Como obter a lista de valores no menu suspenso da categoria de produções no códigopor William Glover
Adicionando permissão de tabela programaticamente a uma funçãopor David Hockenbroch
Arquivo 834 X12 com bloco ST SE único com vários membrospor Sheetal Kairawala
Diferença de $SYSTEM.Encryption.AESCBCEncrypt com implementação C#por Menno Voerman
Projeção de Esquema XML - honrando todos os esquemas Locationspor Ruiyan Yu
Como o Cache da InterSystems calcula a contagem de licenças por Rathinakumar S
500-Internal Server Errorpor Muhammad Shahid
Ens.Alertpor Smythe Smythee
Exibindo ícones personalizados no Zen TablePanepor Andy Stobirski
Compressão de Streamspor Paul Riker
Vendo se um adaptador está habilitado no códigopor William Glover
Existe alguma documentação abrangente sobre $$$ Macrospor William Glover
do HttpRequest.SetHeader("organization-identifier","myName") nunca definirá um cabeçalhopor Edoeard Kroetkov
baixar InterSystems Caché ODBC Data Sourcepor Tyffany Coimbra
Download de imagem por URLpor Fabio Care
Configuração SSL para Gmailpor Smythe Smythee
Como obter valores de uma classe serialobjectpor Smythe Smythee
Atualizar a versão do Cachepor Tiago Pereira
Gatilho, Inserir depoispor Oleksandr Demchenko
Inserção em lote com multiconexões no Cachepor xu zong
Existe uma maneira de mascarar o código no estúdio, como proteção por senha ou com direitos de usuário?por William Glover
Como ativar %Service_Terminal com linha de comando?por Thiago Andrade
Erro de Resposta Adiadapor William Glover
Left outer join nas tabelas não retorna correspondênciaspor Andy Stobirski
HealthShare
Retornando todos os business hosts associados a uma categoria de produçãopor William Glover
Qual tabela contém as informações sobre as mensagens descartadas, existem métodos que sejam usados para recuperá-las?por William Glover
De um Ambiente de INTEGRAÇÃO, conecte-se a um Ambiente de PRÉ-PRODUÇÃO para acessar o Servidor de Recursos de Validação de Token JWT.por Yone Moreno
Iterando o contêiner HS.SDA3.Container duas vezespor Eduard Lebedyuk
Ensemble
Quais adaptadores estão presentes nos Business Services, mas não estão nos Business Operations?por Maciej Bogdanski
Forçar a parada de uma tarefa por Rochdi Badis
Conexões do gateway SQLpor Rochdi Badis
Business Service Pool Size com Ens.Director.CreatBusinessService()por Michael Davidovich
Conversão de tipos de dados no Cachepor Rochdi Badis
Apache com certificados SSLpor Rochdi Badis
Não é possível imprimir a partir do Edgepor Rochdi Badis
InterSystems IRIS for Health
A instalação do IRIS for Health trava no AMDpor Dmitrii Baranov
Imagem/contêiner do Docker - como usarpor Dmitrii Baranov
Como executar a tabela de ajuste em um banco de dados somente leitura (Message Bank)por Stefan Schick
Transforme JSON em VDOC por Ori Tsarfati
para realizar loops no conteúdo repetitivo de tagpor prashanth ponugoti
Resposta Nula da Solicitação para o Business Operation Integradopor Michael Davidovich
Conexões SFTP e espelhamento/endereços IP virtuaispor Warren Baldock
HL7 para FHIRpor Smythe Smythee
O banco de dados IRISTMP na instância IRIS desativa a instância de produçãopor Sudhir Sinha
VSCode
Erros de Parsisng da Extensão da linguagem VSCode ObjectScriptpor Victor Gordillo
InterSystems IRIS BI (DeepSee)
DeepSee - Modificando filtro avançado em pivô com base no filtro do painelpor Julie Bolinsky
Outras
Não consigo me registrar através do Global Masterpor James Woo
Aqui estão as perguntas-chave de outubro escolhidas pelos especialistas da InterSystems:
📌 Não abrir uma instância por chave de índice após a migração do Caché para a Iris por @Edmara.Francisco
📌 Obtenha o id primário da linha inserida no SQL por @Dmitry.Maslennikov
📌 O índice exclusivo da classe base não funciona por @Irene.Mikhaylova
Essas perguntas serão destacadas com a #Tag de pergunta chave, e seus autores receberão o selo Pergunta-chave no Global Masters.
Parabéns e obrigado a todos pelas perguntas. Continuem Enviando-las!
Vejo você no próximo mês ;)