#ObjectScript

1 Seguidor · 128 Postagens

InterSystems ObjectScript é uma linguagem de script que opera com dados, usando qualquer modelo de dados da Plataforma de Dados InterSystems (Objetos, Relacionais, Chave-valor, Documentos, Globais) e, desenvolve a lógica de negócios para aplicações de servidor na Plataforma de Dados InterSystems.

Documentação.

Artigo Heloisa Paiva · Ago. 15, 2025 4m read

Este ótimo artigo despertou recentemente algumas discussões privadas, e eu gostaria de compartilhar algumas reflexões próprias a partir dele.
A preocupação central se resume a: Por que precisamos de regras ou convenções de codificação, afinal? O que aconteceu com a maravilhosa era do programador-artista renascentista, trilhando seu próprio caminho, antes de ser substituído pelo artesão e agora (ainda pior) pela IA?
Resumindo, há alguns motivos pelos quais padrões e diretrizes de codificação são úteis — e o programador-artista renascentista não desapareceu totalmente.

Motivo 1: Hoje em dia,

0
0 23
Artigo Heloisa Paiva · Ago. 11, 2025 4m read

O Guia do Mochileiro do Object Script

O Object Script é nossa linguagem de programação principal no ambiente InterSystems IRIS. Ele também oferece recursos modernos que o tornam poderoso para desenvolvedores.

Para iniciantes, adotar boas práticas de programação desde o início é fundamental para escrever um código de fácil manutenção, eficiente, escalável e claro, seguindo as melhores práticas

Este guia apresenta dicas essenciais para ajudar desenvolvedores “novatos” em ObjectScript a escreverem um código melhor e compreenderem alguns recursos da linguagem.

Antes de tudo: use Nomes Significativos

Es

0
0 57
Artigo Heloisa Paiva · Ago. 9, 2025 3m read

A ObjectScript pode parecer apenas mais uma linguagem de programação, mas aqui está a reviravolta:

Seu código pode viver para sempre (sim, mesmo depois que você tiver passado para outro projeto). É por isso que é importante mantê-lo organizado, fácil de ler e seguro contra bugs misteriosos.

(Um guia para iniciantes para manter seu código limpo, amigável e à prova de futuro)

Bem-vindo à selva do ObjectScript, onde seu código pode ter escopo global e natureza persistente. Vamos manter as coisas limpas, legíveis e resistentes a bugs.

 1️⃣Nomeie como se fosse sério

Variáveis e globais devem ser

0
0 43
Artigo Larissa Prussak · Ago. 5, 2025 1m read

Revisando meus pacotes publicados, identifiquei um bug sério na IRIS Native API.

Existe um método em %Net.DB.Iris chamado function().
Ele é equivalente ao comando ObjectScript $$label^routine(param).
Isso funcionava bem há 2 anos, quando publiquei meus pacotes de extensões para linha de comando.
Agora, está quebrado há pelo menos 1 ano e gera o erro <PROTECT>.

Identifiquei o problema em ObjectScript, Java, Python e Node.js.
Foi registrado como WRC# 1002589.

Para todos os 4 casos, também verifiquei uma solução alternativa:
Em vez de chamar uma Function do ObjectScript, você deve chamar um ClassMethod.
I

1
0 46
Artigo Heloisa Paiva · Ago. 2, 2025 3m read

Documentos Word são amplamente utilizados no mercado. Os usuários frequentemente criam contratos, memorandos, currículos, relatórios, análises e outros documentos que podem exigir dados de ou capturados pelo InterSystems IRIS. No entanto, o IRIS não possui uma API, SDK, biblioteca ou adaptador para isso. Essa limitação não existe mais. 

A nova biblioteca Open Exchange iris4wordd (https://openexchange.intersystems.com/package/iris4word)oferece um SDK ObjectScript onde o desenvolvedor passa qualquer %DynamicObject como parâmetro, um arquivo de template Word e, em seguida, recebe um documento pronto, com a estrutura e formatação definidas em seu template.


0
1 39
Artigo Heloisa Paiva · Jul. 24, 2025 5m read

img

Claro, aqui está a tradução:

Módulos, que tópico! Não temos essa noção no ObjectScript, mas é um conceito fundamental em Python. Vamos descobri-lo juntos.

O que é um Módulo?

Eu vejo módulos como uma camada intermediária entre classes e pacotes. Vamos ver por exemplo.

Um exemplo ruim:

# MyClass.py
class MyClass:
    def my_method(self):
        print("Hello from MyClass!")

Quando você tentar usar essa classe em outro script, você faz:

# class_usage.py
from MyClass import MyClass # estranho, né?

my_instance = MyClass()
my_instance.my_method()

Por que este é um exemplo ruim?

Primeiro porque os nomes

0
0 53
Artigo Larissa Prussak · Jul. 24, 2025 1m read

Você está curioso para saber como executar scripts Python diretamente no terminal do InterSystems IRIS ou Caché? 🤔
Boa notícia: é fácil! 😆
O IRIS oferece suporte ao Embedded Python, permitindo que você use Python de forma interativa dentro do terminal do IRIS.

Como acessar o Shell do Python?

Para iniciar o shell do Python a partir do terminal do IRIS, basta executar o seguinte comando:

do##class(%SYS.Python).Shell()

Esse comando abre um shell interativo do Python dentro do terminal do IRIS. A partir daí, você pode escrever e executar código Python como faria em um ambiente Python normal.

Como sair

0
0 43
Artigo Heloisa Paiva · Jul. 22, 2025 2m read

img

Este será um breve artigo sobre a PEP 8, o guia de estilo do Python.

O que é a PEP 8?

Em poucas palavras, a PEP 8 fornece diretrizes e boas práticas sobre como escrever código Python.

  • Nomes de variáveis devem ser em snake_case
  • Nomes de classes devem ser em CamelCase
  • Nomes de funções devem ser em snake_case
  • Constantes devem ser emUPPER_CASE
  • A indentação deve ser de 4 espaços (no tabs)
  • Variáveis/funções privadas devem começar com um sublinhado (_)
    • Isso porque no Python variáveis e funções privadas não existem de fato, é apenas uma convenção.
  • Seu script não deve ser executado quando importado.
0
0 27
Pergunta Guilherme Silva · Jun. 10, 2025

Estamos desenvolvendo uma aplicação em React e essa aplicação terá seus próprios usuários/senhas. Estamos fazendo alguns testes de autenticação, e estamos procurando conhecer melhor JWT do Iris. Entretanto, segundo a documentação, precisamos passar um body com um usuário do Iris para então receber o token JWT. A nossa preocupação é que essa primeira chamada não parece ser segura, já que precisamos enviar esse body aberto para então conseguir um token. Alguma sugestão de como enviar esse body de forma oculta? utilizamos como draft um post da comunidade:
 

https://community.intersystems.com/post/c

3
0 86
Artigo Larissa Prussak · Jun. 17, 2025 3m read

Se você está migrando do Oracle para o InterSystems IRIS — como muitos dos meus clientes — pode se deparar com padrões específicos de SQL do Oracle que precisam ser adaptados.

Veja esse examplo:

SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);

No Oracle:

  • LEVEL é uma pseudo-coluna usada em consultas hierárquicas (com CONNECT BY). Ela começa em 1 e incrementa de 1 em 1.
  • CONNECT BY LEVEL <= (...) define quantas linhas a consulta deve gerar.
  • A diferença entre as duas
0
0 57
Artigo Julio Esquerdo · Jun. 7, 2025 18m read

Olá,

Neste artigo vamos ver o uso do python como linguagem de programação no InterSystems Iris. Para tal vamos usar como referência a versão Community 2025.1 que está disponível para ser baixada em https://download.intersystems.com mediante o login no ambiente. Para maiores informações sobre o download e instalação do Iris veja o link da comunidade https://community.intersystems.com/post/how-download-and-install-intersystems-iris

Uma vez instalado o íris agora precisamos ter o python disponível no nosso ambiente.Temos vários tutoriais explicando a instalação e configuração do python no Iris.

0
0 61
Artigo Heloisa Paiva · Jun. 4, 2025 9m read

1. Um Exemplo Motivador

O Python embarcado já existe há algum tempo. Você provavelmente seguiu os tutoriais e aprendeu sobre ele. No entanto, se você tentou combinar Python e ObjectScript em um trabalho de desenvolvimento real, provavelmente se deparou com situações em que recebeu uma mensagem de erro como esta:

USER>Do##class(MyClass).SomeMethod()

ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'ZeroDivisionError'>: division by zero

É uma string longa para informações limitadas. Tudo o que sabemos por essa mensagem é que ocorreu um erro de Python onde:

(a) o tipo de erro é ZeroDiv

0
0 51
Artigo Heloisa Paiva · Abr. 28, 2025 9m read

Tenho um novo projeto para armazenar informações de respostas REST em um banco de dados IRIS. Precisarei sincronizar informações de pelo menos duas dúzias de endpoints REST separados, o que significa criar quase essa quantidade de classes ObjectScript para armazenar os resultados desses endpoints.

Poderia usar o ChatGPT para ter uma vantagem inicial na criação dessas classes? A resposta é "Sim", o que é ótimo, já que esta é minha primeira tentativa de usar IA generativa para algo útil. Gerar fotos de girafas tomando sopa estava ficando meio batido...

Aqui está o que eu fiz:

  • Obter alguma saída
0
0 59
Artigo Danusa Calixto · Mar. 21, 2025 1m read

Rubrica de FAQ da InterSystems
 

Pode ser feito com o TRY-CATCH:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

Se você usar o ^%ETN, chame-o a partir do bloco BACK (BACK^%ETN).

Por favor, dê uma olhada também no artigo relacionado: Como buscar erros de aplicação (^ERRORS) usando um comando

0
0 47
Artigo Heloisa Paiva · Mar. 7, 2025 7m read

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

0
0 64
Artigo Heloisa Paiva · Fev. 19, 2025 7m read


Olá!

Este artigo é uma pequena visão geral de uma ferramenta que ajuda a entender classes e sua estrutura dentro dos produtos InterSystems: do IRIS ao Caché, Ensemble e HealthShare.

Em resumo, ela visualiza uma classe ou um pacote inteiro, mostra as relações entre as classes e fornece todas as informações possíveis para desenvolvedores e líderes de equipe sem fazê-los ir ao Studio e examinar o código lá.

Se você está aprendendo os produtos InterSystems, revisando muitos projetos ou apenas interessado em algo novo nas soluções de tecnologia InterSystems - você é mais do que bem-vindo para ler a visão geral do ObjectScript Class Explorer!

0
0 90
InterSystems Oficial Danusa Calixto · Fev. 17, 2025

Primeiro, deixe-me desejar um Feliz Ano Novo à comunidade de desenvolvedores! Esperamos trazer muitas coisas boas para vocês este ano, e hoje eu gostaria de apresentar a versão mais recente da extensão Intersystems Language Server para o VS Code. A maioria das melhorias do Language Server são experimentadas por meio da interface do usuário da extensão ObjectScript, então você pode não estar ciente das muitas melhorias em áreas como Intellisense e hover overs que foram lançadas ao longo de 2024. Dê uma rápida lida no CHANGELOG do Language Server e descubra o que você perdeu.

0
0 52
InterSystems Oficial Danusa Calixto · jan 27, 2025

A InterSystems corrigiu um defeito que faz com que registros inválidos de banco de dados e diário sejam introduzidos ao usar uma sintaxe $LIST específica. A probabilidade de encontrar esse defeito é muito baixa, mas os impactos operacionais podem ser significativos.

Produtos Afetados

  • InterSystems IRIS® data platform: Versões 2023.3, 2024.1.0, 2024.1.1, 2024.1.2, 2024.2, 2024.3
  • InterSystems IRIS® for Health: Versões 2023.3, 2024.1.0, 2024.1.1, 2024.1.2, 2024.2, 2024.3
  • HealthShare® Health Connect: Versões 2023.3.0, 2024.1, 2024.1.1, 2024.1.2, 2024.2, 2024.3
  • HealthShare® Unified Care Record
0
0 46
Artigo Heloisa Paiva · jan 26, 2025 8m read

No artigo anterior. Práticas de membros de classe e sua execução dentro do Python embutido. Agora voltaremos nossa atenção para o processo de alternância de espaços de nomes, acesso a variáveis globais, travessia e execução de rotinas dentro do Python embutido.

Antes de prosseguir para as outras funções. vamos revisar brevemente a função executedentro do pacote iris. Esta função é excepcionalmente benéfica para executar funções ObjectScript arbitrárias e invocação de classe.

>>> b = iris.execute('return $Piece("test^aaaa","^",2)')
>>> b
'aaaa'
>>> b = iris.execute('return $Extract("123456",2,5)')
>>
0
0 41
Artigo Heloisa Paiva · jan 23, 2025 7m read

Olá comunidade,

Neste artigo, vou descrever e ilustrar o processo de implementação do ObjectScript dentro do Python embutido. Esta discussão também fará referência a outros artigos relacionados ao Python embutido, bem como abordará questões que foram benéficas para a minha jornada de aprendizado.

Como você sabe, a integração de recursos Python dentro do IRIS tem sido possível há algum tempo. Este artigo se concentrará em como incorporar perfeitamente o ObjectScript com o Python embutido.

Essencialmente, o Python embutido serve como uma extensão que permite a escrita e execução independentes.

0
0 45
Artigo Heloisa Paiva · Out. 14, 2024 2m read

Em ObjectScript, você tem uma ampla coleção de funções que retornam algum valor tipicamente:

set variable = $somefunction(param1,param2, ...)

Não há nada de especial nisso.
Mas há um conjunto de funções que classifico como Funções de Lado Esquerdo
A especialidade delas é que você também pode usá-las à esquerda do operador igual como um alvo no comando SET:

set $somefunction(param1,param2, ...) = value

O motivo para levantar esse assunto é que com o IRIS 2024.1 há depois de muitos anos um "novo garoto nessa vizinhança"

$VECTOR()

Atribui, retorna e exclui dados vetoriais em posições especificadas,

0
0 43
Anúncio Danusa Calixto · Out. 8, 2024

O Visual Studio Code lança novas atualizações todo mês com novos recursos e correções de bugs, e a versão de setembro de 2024 já está disponível.

A versão 1.94 agora inclui:

  • Localizar no Explorer - Encontre arquivos rapidamente na visualização do Explorer com o controle Localizar aprimorado. Como consequência disso, o widget Localizar do Explorer em pastas do lado do servidor requer a versão 2.12.9-beta.4 ou posterior com APIs propostas habilitadas. Leia mais nesta publicação da Comunidade de desenvolvedores.
  • Source Control Graph - Mais opções de filtragem e interatividade no Source Control
0
0 141
Artigo Heloisa Paiva · Set. 26, 2024 5m read

Na sessão anterior, exploramos o processo de instalação e começamos a escrever o IRIS em Python nativo. Agora procederemos a examinar a global percorrida e interatuar com os objetos da classe IRIS

get: esta função se utiliza para obter valores do nó percorrido

deftraversal_firstlevel_subscript():"""
    ^mygbl(235)="test66,62" and ^mygbl(912)="test118,78"
    """for  i in irispy.node('^mygbl'):
        print(i, gbl_node.get(i,''))

 

node e items: percorrido de um só nível com node  e obtenção dos valores da mesma maeira que $Order(^mygbl(subscript), direction, data).

#single level
0
0 40
Artigo Heloisa Paiva · Set. 22, 2024 1m read

Rubrica InterSystems FAQ

No SQL, dados NULL e a string vazia ('') são dados diferentes. O método para definir e checar cada uma é como se segue

(1) dado NULL

[SQL] 

insertintotest(a) values(NULL)
select * fromtestwhere a ISNULL

[InterSystems ObjectScript]

setx=##class(User.test).%New()
setx.a=""

(2) String Vazia ('')

[SQL]

insertintotest(a) values('')
select * fromtestwhere a = ''

[InterSystems ObjectScript]

setx=##class(User.test).%New()
setx.a=$C(0)

Para mais informações, por favor veja os seguintes documentos:

NULL e strings vazias [IRIS]
NULL e strings vazias

0
0 58
Artigo Edilson Eberle Carvalho · Set. 17, 2024 6m read

Como estou desenvolvendo uma aplicação para auditoria de arquivo fiscal digital, EFD ICMS IPI, optei por armazenar os dados diretamente em globais. Uma vez que os registros do arquivo EFD são formato txt e tem características semelhantes às linhas de registro de global.

Para poder analisar os itens de saída das Notas Fiscais Eletrônicas, fiz a importação também dos dados destes arquivos, e os armazenei em global. Segue exemplo:

1:  ^NFe = "Data|Chave|Arquivo
0
0 50
Artigo Heloisa Paiva · Set. 16, 2024 1m read

[FAQ] Preguntas frecuentes de InterSystems

O seguinte código baixa https://www.intersystems.com/assets/intersystems-logo.png e salva o arquivo como c:\temp\test.png.

É necessário definir uma configuração SSL chamada SSLTEST antes de executar esse código

ClassMethod download() As%Status
{
    Set sc = $$$OKSet httprequest=##class(%Net.HttpRequest).%New()
    set httprequest.Port = 443set httprequest.Https = 1set httprequest.SSLConfiguration = "SSLTEST"Set httprequest.Server="www.intersystems.com"Do httprequest.Get("/assets/intersystems-logo.png")
    Set httpresp
0
0 43
Artigo Heloisa Paiva · Set. 8, 2024 1m read

Rubrica InterSystems FAQ

Isso pode ser conseguido usando o procedimento CSV() da classe %SQL.Util.Procedures .
Abaixo está o exemplo de uso do código. (Assumindo que o arquivo test.csv está em c:\temp.)

 Set rowtype="Name VARCHAR(50),UID VARCHAR(50), PHONE VARCHAR(50)"
 Set filename="c:\temp\test.csv"
 Set result=##class(%SQL.Statement).%ExecDirect(,"call %SQL_Util.CSV(,?,?)",.rowtype,.filename)
 Set rset =result.%NextResult()
 
 // To display all results, use do rset.%Display()
 While rset.%Next() {
     Write "Name:",rset.%GetData(1)," UID:",rset.%GetData(2)," PHONE:",rset.%GetData(3),!
     }

 Set rset
0
0 69
Artigo Heloisa Paiva · Jul. 16, 2024 2m read

Olá!

Recentemente estive investigando uma situação incômoda enquanto editava classes ou rotinas ObjectScript no VSCode. O que acontecia era que, como estava escrevendo as linhas de código na minha classe (por exemplo: a adição de um novo método, mudança da assinatura de classe ou de um bloco de código) isso ocasionava uma rápida revisão da sintaxe, reformatação e compilação - e inevitavelmente (já que eu estava apenas na metade da escrita), isso gerava erros de compilação.

Sabendo que estava a meio caminho de adicionar código, podia simplesmente descartar essa mensagem, mas isso começou a ficar

0
0 206
Anúncio Danusa Calixto · Jul. 15, 2024

O Visual Studio Code lança novas atualizações todo mês com novos recursos e correções de bugs, e a versão de junho de 2024 já está disponível.

A Versão 1.91 inclui: 

0
0 84