A utilidade retorna os valores desejados do texto e exibe múltiplos valores, se existirem, com base na string de início e na string de término.
Class Test.Utility.FunctionSet Extends %RegisteredObject
{
/// W !,##class(Test.Utility.FunctionSet).
InterSystems IRIS é uma plataforma de dados completa
A InterSystems IRIS oferece tudo que você precisa para capturar, compartilhar, entender e agir com base no ativo mais valioso de sua organização - seus dados.
Como uma plataforma completa, a InterSystems IRIS elimina a necessidade de integração de múltiplas tecnologias de desenvolvimento. As aplicações requerem menos código, menos recursos do sistema e menos manutenção.
A utilidade retorna os valores desejados do texto e exibe múltiplos valores, se existirem, com base na string de início e na string de término.
Class Test.Utility.FunctionSet Extends %RegisteredObject
{
/// W !,##class(Test.Utility.FunctionSet).
Rubrica de FAQ da InterSystems
Se você tentar eliminar uma global que está mapeada no nível de subscrito a partir do nó raiz, você receberá um erro e ela não será excluída. Isso ocorre porque o comando kill para globais mapeadas no nível de subscrito não pode ser usado atravessando mapeamentos.
// Suppose subscript-mapped globals exist in different databases, as shown below:^TESTKPara excluir apenas a global no namespace (banco de dados) atual, use o seguinte:
NAMESPACE>Se você quiser gerar um JWT a partir de um certificado/chave x509, qualquer operação (inclusive leitura) em %SYS.X509Credentials exige permissão U no recurso %Admin_Secure. O %Admin_Secure é necessário porque é persistente e foi implementado dessa forma para impedir que todos os usuários tenham acesso às chaves privadas.
Se o recurso não estiver disponível em tempo de execução, você pode usar a seguinte alternativa.
Ao revisar o código de geração de JWT, descobri que o código de JWT utiliza
Olá a todos,
Como parte do desenvolvimento de uma API para saber a qual instância do IRIS está conectada, encontrei alguns métodos para obter informações sobre o servidor que podem ser úteis.
Obter o nome do servidor: $SYSTEM.INetInfo.LocalHostName()
Obter o IP do servidor: $SYSTEM.INetInfo.HostNameToAddr($SYSTEM.INetInfo.LocalHostName())
Obter o nome da instância: $PIECE($SYSTEM,":",2)
Assim, criei o seguinte código como uma classe BS:
ClassExtends%CSP.RESTChamando o método:
localhost:52773/common/api/check
{
"ServerName": "LAPTOP-KURRO-3",
"ServerIP": "11.52.197.99",
"Instance": "HEALTHCONNECT"
}Rubrica de FAQ do InterSystems
O utilitário ^%GCMP pode ser usado para comparar o conteúdo de dois globals.
Por exemplo, para comparar ^test e ^test nos namespaces USER e SAMPLES, ficaria assim:
No exemplo abaixo, 700 globais idênticas são criadas nos dois namespaces, e o conteúdo de uma delas é alterado para torná-lo o alvo de detecção.
Este código fornece os itens de produção configurados com status habilitado ou desabilitado.
Include (Ensemble, EnsUI, EnsUtil)
Class Test.ProductionConfig
{
ClassMethod GetConfigItems() As %Status
{
Set tStatement = ##class(%SQL.Statement).%New()
Set tSC = tStatement.%PrepareClassQuery("Ens.Config.Production","EnumerateConfigItems")
Write tSC,!
Write "ConfigItemName"," ","Enabled",!
#Dim exp As %Exception.SystemException
#Dim rset As %SQL.StatementResult
Set rset = tStatement.%Execute()
Write rset,!
Write rset.%SQLCODE,!
While rset.%Next() {
Try {
Set tConfigName = rset.%GetData(1)
Set tEnabled = rset.
Como parte das melhorias relacionadas ao uso e à usabilidade do CCR, certas transições agora são bloqueadas quando um Registro CCR possui ItemSets não implantados para Ambientes obrigatórios.
Para promover boas práticas, quando um CCR de Nível 1 ou Nível 2 se move entre Ambientes, é importante que os ItemSets sejam implantados nos Ambientes obrigatórios antes de confirmar que o CCR foi implementado com sucesso no próximo Ambiente.
gj :: configExplorer é uma nova extensão do VS Code que se integra ao Server Manager e utiliza o Structurizr para gerar diagramas de configuração dos seus servidores.
Aqui está um curto vídeo introdutório.
Ao usar a API Nativa do Intersystems IRIS para Node.js, não é necessário instalar nenhum código de suporte nos servidores. Essa escolha de tecnologia também permite que ele participe do atual concurso da Developer Community.
Olhando para o meu banco de dados, vejo que tenho um ^rINDEXSQL muito grande! Por que isso? 😬
Na página de SQL do Management Portal, em "SQL Statements", vejo um botão 'Clean stale' – o que ele faz? 🤔
Na lista de Statements, alguns têm um valor em 'Location' e outros não. Como isso acontece? 🤨
Olá a todos,
Primeiro quero reconhecer @Theo Stolker e @Rupert Young, porque eles me ajudaram com a solução.
Quando vocês usam EnsLib.SQL.Snapshot como uma propriedade na mensagem de resposta para retornar dados do Snapshot (por exemplo, de uma Business Operation para um Business Process), os dados do Snapshot não são limpos com a tarefa/serviço de depuração de mensagens.
Class ResponseMessage Extends Ens.Response
{
Property SnapshotProp As EnsLib.SQL.Snapshot;
}
Os dados ficarão presos no global: ^Ens.AppData. Vocês podem encontrá-los com esta consulta em System > Globals: ^Ens.AppData("EnsLib.
Já faz algum tempo que criei um pequeno exemplo para implantar rapidamente, usando Docker, instâncias do InterSystems IRIS conectadas via ECP. O tempo passou e, como tudo, precisava de uma revisão e atualização...
Tenho o prazer de anunciar a publicação do gj :: dataLoader, uma nova extensão do VS Code que simplifica a tarefa de carregar dados de arquivos CSV locais em tabelas SQL dos seus servidores InterSystems IRIS.
Aqui está um vídeo introdutório:
gj :: dataLoader já está disponível no Marketplace para instalação direta no VS Code. É a minha proposta para o concurso “Bringing Ideas to Reality” 2025 e coloca em prática esta ideia: https://ideas.intersystems.com/ideas/DPI-I-667
Seus comentários serão bem-vindos.
No dia a dia de qualquer organização, a informação flui entre aplicações, serviços e sistemas muito diferentes entre si. Integrá-los de forma eficiente pode ser um desafio… a menos que você use o InterSystems IRIS.
Neste novo vídeo, eu mostro como construir um fluxo completo de integração combinando múltiplas tecnologias — APIs REST, arquivos CSV, bancos de dados e serviços SOAP — tudo dentro do ambiente visual oferecido pelo motor de interoperabilidade do IRIS.
👉 Você pode assistir ao vídeo aqui:
Visão geral
Embedded Python é um divisor de águas para o InterSystems IRIS, oferecendo acesso ao vasto ecossistema Python diretamente dentro do banco de dados. No entanto, fazer a ponte entre ObjectScript e Python às vezes pode parecer como traduzir entre dois mundos diferentes.
Para tornar essa transição perfeitamente utilizável, embeddedpy-bridge.
Ao trabalhar com a Interoperabilidade da InterSystems (Iris / Health Connect / Ensemble), os dados de configuração costumam estar distribuídos entre vários itens de produção: serviços, processos, operações, adaptadores e suas configurações.
Uma necessidade operacional ou de segurança comum é responder a perguntas como:
A demo é baseada nas descrições brutas das classes.
As classes de dados utilizadas são Address, Person, Employee e Company.
Para uma demonstração mais atraente, foi adicionado um método JSONtoString por ID.
Você provavelmente conhece essa situação:
Algum tempo atrás, você encontrou uma função $ZU muito especial para um tipo de problema bem específico. Uma espécie de fórmula mística. Ela se tornou popular e foi usada por muitos desenvolvedores em todo o seu código e em todas as suas instalações.
Depois de várias versões e atualizações, você é informado pela ISC de que seu $ZU místico está obsoleto (deprecated) e não é mais suportado. Você é aconselhado a substituí-lo por um novo $something().
Então, como encontrar e documentar o uso desse código misterioso?
SET atribui um valor à variável em tempo de execução.
#DIM declara a variável e o seu tipo de dado em tempo de compilação.
SET |
#DIM |
| Torna a variável dinâmica. | Melhora a legibilidade. |
| Sem tipagem. | Habilita IDE auto-completion. |
| Tempo de execução | Util para referência a objetos. |
#DIMAs%StringSET ou #DIM? Seu design, suas regras.Há um padrão com o qual já me deparei várias vezes em que preciso usar um arquivo ou pasta temporária e que ela seja limpa em algum momento mais tarde.
O natural aqui é seguir os padrões de "Robust Error Handling and Cleanup in ObjectScript" , usando um try/catch/pseudo-finally ou um objeto registrado para gerenciar a limpeza no destrutor. %Stream.File* também tem a propriedade RemoveOnClose, que vocês podem ativar… mas usem com cuidado, pois podem acabar excluindo acidentalmente um arquivo importante. Além disso, esse indicador é redefinido ao chamar %Save(), então será necessário configurá-lo novamente como 1 depois disso.
Mas existe um caso complicado: imaginem que vocês precisam que o arquivo temporário sobreviva em um nível superior da pilha. Por exemplo:
Foi encorajador ver mais pessoas criando extensões do VS Code para o concurso recente. No entanto, notei que, das três extensões que exigem credenciais para realizar suas conexões, apenas a de @John Murray, gj :: dataLoader, aproveita a extensão InterSystems Server Manager
, amplamente estabelecida e oficialmente suportada, para obter as definições de conexão e gerenciar as credenciais de forma segura.
Se você olhar o arquivo values.yaml do Helm chart do IKO, você encontrará:
useIrisFsGroup:falseVamos detalhar o que isso é e em quais situações você pode querer configurá-lo como true.
FsGroup se refere ao grupo do sistema de arquivos.
Por padrão, os volumes do Kubernetes pertencem ao usuário root, mas precisamos que o IRIS seja o dono de seus arquivos (o IRIS em containers é instalado sob o usuário irisowner). Para contornar isso, utilizamos um de dois métodos:
Os initContainers são executados antes dos containers da aplicação (como o IRIS) em um pod.
Você envia uma requisição HTTP e recebe de volta um erro HTTP, mas com uma página de erro HTML que você não esperava... o que está acontecendo? 🤔
Especificamente, por exemplo: talvez você tenha tentado ler um recurso FHIR (ex: /Patient/123) e recebeu uma página de erro 404, embora com outros IDs de pacientes você receba o payload do recurso normalmente — então "a página" definitivamente existe... por que você estaria recebendo uma página de erro 404? 🙄
As capacidades integradas de busca vetorial do InterSystems IRIS nos permitem pesquisar dados não estruturados e semiestruturados. Os dados são convertidos em vetores (também chamados de ‘embeddings’) e, em seguida, armazenados e indexados no InterSystems IRIS para busca semântica, geração aumentada de recuperação (RAG), análise de texto, motores de recomendação e outros casos de uso.
Esta é uma demonstração simples do IRIS sendo usado como um banco de dados vetorial e de busca por similaridade no IRIS.
Olá amigo! 😊 Como você está hoje?
Gostaria de compartilhar uma pequena parte dos meus aprendizados no meu primeiro projeto oficial: a integração de máquinas de POS/EDC com nosso sistema de faturamento. Foi um desafio empolgante onde tive experiência prática trabalhando com APIs e fornecedores.
Como uma máquina de pagamento realmente funciona?
É simples: comece iniciando/criando uma transação e, depois, recupere o status do pagamento dela.
Aqui, iniciar/criar refere-se ao método POST, e recuperar refere-se ao GET.
Se você quiser saber se já existe uma classe sobre um determinado tópico fazendo uma simples pergunta em linguagem natural, isso agora é possível. Baixe e execute a aplicação https://openexchange.intersystems.com/package/langchain-iris-tool para conhecer tudo sobre as classes do seu projeto em um chat.
O Poder da Indexação em Tabelas de Banco de Dados
Ao trabalhar com bancos de dados, a maioria dos desenvolvedores entende o conceito de um índice e por que ele é usado: para acelerar a recuperação de dados. Mas o real impacto da indexação muitas vezes só fica claro quando comparamos cenários com e sem ela.
Você sabe o que acontece sem um índice?
Imagine uma tabela com três colunas: Name, Age, e MobileNumber.
.png)
Considere esta consulta:
Se a coluna Idade (Age) não tiver um índice, o motor do banco de dados irá:
WHERE possui um índice.Neste artigo, vamos discutir todas as ferramentas de depuração incluídas noMicrosoft Visual Studio Code.
O que será abordado:
Vamos começar aprendendo sobre os requisitos para depuração!
Pré-requisitos
Existem dois plugins (extensões) para depuração de ObjectScript:
O primeiro faz parte doInterSystems ObjectScript Extension Pack. O segundo éSerenji, um plugin independente que fornece um editor, gerenciador de arquivos e funcionalidades de depuração. Ambos os plugins podem ser instalados a partir da loja de plugins. Para ativar funcionalidades principais, o Serenji requer uma licença. Para este artigo, usaremos o InterSystems ObjectScript Extension Pack para reduzir a curva de aprendizado. Depois de dominar o básico, você pode considerar a compra de uma licença paga para o Serenji.
Sumário
Introdução
Neste artigo, cobriremos um início rápido para o desenvolvimento com Git na Comunidade de Desenvolvedores InterSystems e as práticas de controle de versão ao trabalhar com IRIS InterSystems. Abordaremos cenários em que precisamos exportar classes de Interoperabilidade, globals e elementos de analytics, como cubos e dashboards. Esses cenários englobam as principais práticas de controle de versão com o IRIS.
Olá, Comunidade! Com o fim de mais um ano incrível, gostaria de avisar sobre uma mudança que está por vir na extensão vscode-objectscript. Para reduzir o tamanho da extensão, simplificar a manutenção e melhorar a usabilidade, a InterSystems planeja remover algumas configurações pouco utilizadas. Nossos dados indicam que menos de 2% dos usuários alteram essas configurações em relação aos valores padrão. No entanto, antes de finalizar a remoção, gostaria de dar aos usuários dessas configurações a oportunidade de explicar por que elas não deveriam ser removidas.
Olá Comunidade!👋
Bem-vindos à segunda parte da série Utilitário IRIS IO. Esta extensão representa minha inscrição para o Concurso "Trazendo Ideias à Realidade" 2025 da InterSystemse oferece uma interface intuitiva e poderosa para importar e exportar dados diretamente no VS Code.
Se você achar esta extensão útil, por favor, considere votar em mim no concurso!