#ObjectScript

1 Seguidor · 152 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 Danusa Calixto · Out. 27, 2022 15m read

Por que eu amo ObjectScript e por que eu acho que poderia amar Python ainda mais

 

Eu estava olhando o tópico de mensagens sobre o assunto "Desempenho ao construir uma string separada por vírgulas" e comecei a escrever uma resposta. No entanto, me distraí, a página foi atualizada e perdi meu texto. Não podia gastar tempo reescrevendo minha resposta, então comecei a escrever este documento em vez disso.

 

Comecei a escrever na linguagem MUMPS no início da minha carreira.

1
0 210
Artigo Danusa Calixto · Out. 10, 2022 1m read

Se estiver manipulando XML, muitas vezes ele pode ser não formatado para exibição humana.

Usando um pouco de magia XSLT você pode formatar o XML em apenas duas linhas de código...

ClassMethod Format(pXmlStream As %CharacterStream, Output pXmlStreamFormatted As %CharacterStream) As %Status
{
    set xslt=##class(%Dictionary.XDataDefinition).%OpenId(..%ClassName(1)_"||XSLT",-1,.sc)
    quit ##class(%XML.XSLT.Transformer).TransformStream(pXmlStream,xslt.Data,.pXmlStreamFormatted)
}
XData XSLT
{
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.
0
0 206
Artigo Danusa Calixto · Ago. 12, 2022 4m read

A combinação da sintaxe de objetos com SQL é um dos recursos legais no Object Script. No entanto, em um caso, forneceu resultados estranhos. Portanto, decidi isolar esse caso e descrevê-lo aqui.

Digamos que você precisa escrever um classmethod que atualiza uma única propriedade no disco. Geralmente, eu escreveria isso usando SQL, desta forma:

 

ClassMethod ActivateSQL(customerId) as %Status
{
   &sql(Update Test.Customer Set Active=1 Where ID=:customerId)
   If SQLCODE'=0 {
      Set exception = ##class(%Exception.SQL).CreateFromSQLCODE(SQLCODE, $Get(%msg))
      Quit exception.
0
0 134
Anúncio Angelo Bruno Braga · Mar. 31, 2022

 A InterSystems está feliz em anunciar a versão 2.0.0 do Servidor de Idiomas para VS Code. O Servidor de Idiomas aprimora a extensão VS Code para ObjectScript disponibilizando uma melhor coloração para sintaxes, documentação incorporada, conclusão de código e mais. Informações detalhadas estão disponíveis no arquivo README do repositório no GitHub. A versão 2.0.0 adiciona suporte para várias novas arquiteturas da plataforma incluindo Macs M1! Ela também reduz o tamanho do pacote, melhora a coloração no SQL e corrige uma série de problemas detalhados no CHANGELOG.

0
0 116
Anúncio Angelo Bruno Braga · Mar. 23, 2022

É um prazer anunciar o lançamento da versão 1.4.4 da extensão para VS Code, que contém as seguintes melhorias e correções. Os links irão levá-los para o problema  no GitHub que está sendo endereçado. Como sempre, se você já possuir a extensão instalada, o VS Code deverá atualizar automaticamente sua extensão. Se você é um novo usuário, utilize estas instruções para iniciar. 

Log de Mudanças

  • Melhorias
    • Compile assincronamente para evitar exceder o tempo limite (#890)
    • Adicione a configuração objectscript.explorer.alwaysShowServerCopy
0
1 139
Pergunta Arian Botine · Mar. 19, 2022

Antes de mais nada, o exemplo abaixo trata-se da manutenção de um código legado e em uma nova implementação não usaria a ^CacheTemp dessa forma.

Em determinado momento na codificação, realizamos um $GET em uma variavel do tipo global na CacheTemp da seguinte forma:

Set dataHora = $GET(^CacheTemp.ResAnteriores("DataColeta",pUsuario,pSessao,paciente,objOs.%Id(),pProcedimento),"")

Sendo que a global, nesses termos, está <UNDEFINED>, porém em tempo de execução o retorno é um dump de memoria, fazendo com que nos logs de console (cconsole.

1
0 205
Artigo Rochael Ribeiro · Fev. 22, 2022 2m read

Pessoal !

Recentemente encontrei vários comandos ObjectScript de apenas uma linha na Comunidade de Desenvolvedores e achei que seria uma ótima ideia colecioná-los para não perdê-los!

Decidi então juntar alguns poucos casos, colocá-los em um projeto OEX, e compartilhá-los com vocês!

E aqui está como vocês podem utilizá-los:

1. Criar uma configuração cliente SSL:

set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name)

Útil se você precisar ler conteúdo de uma URL.

0
0 124
Anúncio Angelo Bruno Braga · Dez. 28, 2021

Olá Desenvolvedores,

Obrigado a todos pela participação no Advento do Código 2021 e por codificar em InterSystems ObjectScript! Estamos felizes em apresentar os ganhadores e distribuir os prêmios para todos ! 

E nossos aplausos vão para esses desenvolvedores: 

   @Kevin An (w/ repo)

   @Yuval Golan(w/ repo)

   @Oliver Wilms(w/ repo)

Também gostaríamos de recompensar outro desenvolvedor que conquistou o domínio sobre o Python Incorporado e realizou 25 desafios nele. Deem as boas vindas para:

   @Robert Cemper (w/ repo)

0
0 97
Artigo Yuri Marx · Nov. 30, 2021 3m read

O XData (https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_XDATA) é um recurso poderoso para definir informações de documentação e metadados para classes e métodos. A classe% CSP.REST usa XDATA para mapear chamadas REST(https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GREST_csprest), portanto, neste artigo, você verá como usar XData em seus aplicativos como código, não apenas como documentação.

Quando você escreve comentários / definições XData, o IRIS os armazena em %Dictionary.ClassDefinition (para classes) e %Dictionary.

0
0 192
Artigo Larissa Prussak · Out. 26, 2021 2m read

As tecnologias da InterSystems são conhecidas por seus bancos de dados de alto desempenho, que suportam os sistemas e operações de muitas organizações. No entanto, um ingrediente chave para esse sucesso é a qualidade e a facilidade de manutenção de seu código.

A qualidade do código pode afetar tudo, desde a velocidade e facilidade de corrigir bugs e fazer melhorias, até o desempenho geral de sua organização e sua capacidade de chegar à frente no mercado.

Ao garantir que seu código seja sustentável, você pode reduzir aproximadamente 75% dos custos do ciclo de vida do sistema *. É por isso que, na George James Software, as soluções que construímos são sempre diretas e escritas em código de alta qualidade - porque sabemos que essa base sólida pode impactar positivamente o resto da sua organização.

Com um sistema que pode ser mantido, você pode reduzir a manutenção geral, pois qualquer problema que ocorra é significativamente mais rápido de identificar e corrigir. Isso significa que você está livre para alocar tempo e orçamento para melhorias, permitindo que você obtenha o máximo valor de suas aplicações e, em última análise, dê um melhor suporte à sua organização.

Fique atento às nossas próximas postagens sobre como é um sistema sustentável e as ferramentas que podem ajudá-lo a manter seu código sustentável, a fim de ajudá-lo a reduzir esses custos de manutenção.

0
0 89
Pergunta Davidson Espindola · Set. 15, 2021

Hello everyone
I use cache script, I would like to know from you if there is any function or class in the cache where I can get the start and end date of a given month:
Example: What is the first and last day of the month of February 2015.

Grateful.
Davidson

3
0 177
Artigo Andre Larsen Barbosa · Ago. 18, 2021 2m read

ObjectScript tem pelo menos três maneiras de lidar com erros (códigos de status, exceções, SQLCODE, etc.). A maior parte do código do sistema usa status, mas as exceções são mais fáceis de tratar por vários motivos. Trabalhando com código legado, você passa algum tempo traduzindo entre as diferentes técnicas. Eu uso muito esses trechos para referência. Esperançosamente, eles também são úteis para outras pessoas.

///Status from SQLCODE:set st $$$ERRORClass Extends 
0
0 190
Artigo Larissa Prussak · Ago. 9, 2021 1m read

Olá desenvolvedores!

Só quero compartilhar uma prática recomendada antiga, mas sempre relevante, sobre a alteração de namespaces @Dmitry Maslennikov compartilhada comigo (de novo).

Considere o método:

classmethod DoSomethingInSYS() as %Status

{

set sc=$$$OK

set ns=$namespace

zn "%SYS"

// try-catch in case there will be an error

try {

// do something, e.g. config change

}

catch {}

 zn ns    ; returning back to the namespace we came in the routine

return sc

}

E com o novo $namespace, o método pode ser reescrito como:

classmethod DoSomethingInSYS() as %Status

{

set sc=$$$OK

new $namespace

set $namespace="%SYS"

// do something

return sc

}

Então! A diferença é que não precisamos alterar o namespace manualmente, pois ele voltará automaticamente assim que retornarmos o método.

e não precisamos do try-catch (pelo menos para esse propósito) também.

0
0 192
Artigo Andre Larsen Barbosa · Ago. 9, 2021 11m read

Neste artigo, vamos comparar as funções $Increment e $Sequence.

Em primeiro lugar, uma nota para os leitores que nunca ouviram falar de $Increment $Increment é uma função Caché ObjectScript que realiza uma operação atômica para incrementar seu argumento em 1 e retornar o valor resultante. Você só pode passar um nó de variável global ou local como um parâmetro para $Increment, não uma expressão arbitrária. $Increment é muito usado ao atribuir IDs sequenciais. Em tais casos, o parâmetro de $Increment é geralmente um nó global.

0
0 247
Artigo ROBSON SERPA DA ROSA · Jun. 28, 2021 5m read

Uma VIEW em SQL é basicamente uma instrução SQL preparada.
Deve ser executado e montado como qualquer outra consulta SQL.
VIEW MATERIALIZADA significa que o conteúdo é coletado antes das mãos e pode ser recuperado com bastante rapidez.
Eu vi o conceito primeiro com meu concorrente favorito chamado O * e eles fizeram muito barulho sobre isso.

  { favorite: because I could win every benchmark against them devil }

0
0 134
Artigo Yuri Marx · jan 20, 2021 1m read

As vezes é necessário executar comandos do shell do sistema operacional host, onde se encontra seu programa ObjectScript, para acionar programas, serviços do sistema operacional, agendar crontasks, dentre outras atividades. Para isto, a linguagem possui um procedimento utilitário chamado $ZF(-100). Seu formato é:

$ZF(-100,flags,program,args)

Onde flags é o tipo de comando que você quer executar. No nosso caso, a flag é "/SHELL", para executar comandos shell no sistema operacional host.

Program é o nome do programa ou serviço a ser executado.

0
0 186
Pergunta Henrique Dias · jan 18, 2021

Boa noite pessoal, tudo bem?

Estou com uma dúvida, qual seria a melhor forma de ler todos os arquivos, por exemplo CSV, de um determinado diretório?

Para ler o arquivo CSV, utilizo o ClassMethod abaixo: 

ClassMethod readCSV() As %Status
{

   set file = ##class(%File).%New("/irisdev/dataImport/teste.csv")
   set sc = file.Open("R")
   if $$$ISERR(sc) quit
   
   set count = 0

   while 'file.AtEnd {
      set count = $INCREMENT(count)
      set line = file.ReadLine()
      quit:(line="")
      write line,!
   }
   do file.Close()
}

Agradeço qualquer sugestão de vocês. 

4
0 457
Artigo Yuri Marx · jan 16, 2021 3m read

Oi Comunidade InterSystems!

A linguagem ObjectScript do InterSystems IRIS possui a capacidade de estender classes utilizando um recurso muito interessante chamado XData.

Trata-se de uma seção em sua classe que pode ser utilizada para criar definições personalizadas a serem utilizadas dentro da própria classe e também externamente.

Para criar uma ou mais definições de XData para sua classe é muito fácil, veja o exemplo:

Classdc.Sample.PersonExtends(%Persistent,%JSON
0
0 206
Artigo Lily Taub · Dez. 21, 2020 9m read

Introdução

A maior parte da comunicação servidor-cliente na web é baseada em uma estrutura de solicitação e resposta. O cliente envia uma solicitação ao servidor e o servidor responde a esta solicitação. O protocolo WebSocket fornece um canal bidirecional de comunicação entre um servidor e um cliente, permitindo que os servidores enviem mensagens aos clientes sem primeiro receber uma solicitação. Para obter mais informações sobre o protocolo WebSocket e sua implementação no InterSystems IRIS, consulte os links abaixo.

0
0 1307
Anúncio Angelo Bruno Braga · Nov. 30, 2020

Olá Desenvolvedores,

Vocês estão preparados para participar de nossa competição anual de Dezembro ?

Junte-se ao concurso o Advento do Código 2020 da InterSystems, participe em nosso concurso de ObjectScript e ganhe prêmios !!!

 

🏆 Nosso Placar 🏆

Aqui você consegue ver os participantes do ano passado.

👉🏼 Junte-se ao placar privado de ObjectScript com o código 130669-ab1f69bf.

Nota: Você precisa se inscrever para o Advento de Código (ex.

0
0 119
Pergunta Arian Botine · Nov. 15, 2020

Caché: 2017.2.1.801.0

Fala pessoal, tenho uma dúvida relacionada um problema especifico que eu estou tentando entender, onde ainda não tenho muitas informações, porém estou tentando criar uma forma de levantar dados precisos para expor mais detalhes aqui na comunidade ou até mesmo consultar o suporte da IS, a questão é muito simples:

Precisava saber através de código/rotina a seletividade de uma propriedade de tabela, atualmente consigo realizar um SET utilizando o comando:

SYSTEM.SQL.SetFieldSelectivity("#PACOTE","#TABELA","#PROPRIEDADE","#SELETIVIDADE","")
3
0 235