Find

Article
· 7 hr ago 1m read

Visualize as configurações do seu servidor InterSystems usando o Structurizr

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.

O lançamento inicial foca em dois aspectos da configuração do servidor:

  • Namespaces e bancos de dados
  • Conectividade ECP

Sugestões sobre o que adicionar a seguir são bem-vindas, assim como feedback em geral.

Discussion (0)1
Log in or sign up to continue
Article
· 7 hr ago 1m read

Declarações/Estatísticas SQL desatualizadas (Ou: Por que eu tenho um enorme ^rINDEXSQL global?)

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? 🤨

Bem, de fato, tudo isso está relacionado.

De modo geral, mantemos estatísticas básicas das consultas SQL que foram executadas. Quando você purga as consultas SQL em cache, não deletamos a entrada da declaração na lista de statements e mantemos as estatísticas (pois isso pode ser útil para comparações futuras).
Nós “limpamos” a coluna Location (já que ela não aponta mais para uma consulta em cache existente).

Se você quiser limpar essas declarações “obsoletas” (aquelas que não apontam mais para lugar nenhum), você pode pressionar o botão “Clean stale”.

Isso é como poderia aparecer (System Explorer -> SQL -> SQL Statements):

 

[Observação: em versões mais antigas, por exemplo, v2020.1, havia uma tarefa em segundo plano que limpava essas declarações – “Clean SQL Index  – Clean up stale SQL Statement Index entries”, veja também aqui –, mas isso foi removido em versões mais novas, veja MAK5205]

Discussion (0)1
Log in or sign up to continue
Question
· 9 hr ago

What is the proper way to get a new ID for a new record for a self-maintained primary key aka idkey?

Hi Developers!

Sometimes we need to deal with classes/tables where the primary key and the IdKey are something that is maintained by yourself.

What is the proper way to generate a new ID in case where ID is a %BigInt?

Property id As %Library.BigInt

Are there any system methods to provide it?

There is data already imported via SQL, so there is no last ID stored in ^myclassD, so I cannot do $I(^myclassD).

Thinking of:

set newid=$O(^myclassD(""),-1),newid=$I(newid)

What do you think?

5 new Comments
Discussion (5)2
Log in or sign up to continue
Article
· 10 hr ago 1m read

Avaliações no Open Exchange - #61

Se um dos seus pacotes no OEX receber uma avaliação, você será notificado pelo OEX apenas sobre o SEU próprio pacote.
A nota reflete a experiência do avaliador com o status encontrado no momento da avaliação.
É meio que um instantâneo e pode ter mudado desde então.
Avaliações de outros membros da comunidade são marcadas com * na última coluna.

Também enviei vários Pull Requests no GitHub quando encontrei um problema que podia corrigir.
Alguns foram aceitos e mesclados, e outros simplesmente ignorados.
Então, se você fez uma mudança importante e espera uma avaliação alterada, é só me avisar.

# Package Review Stars IPM Docker *
1 UNICAS Implementation OLÉ ! 5.5 y y  
2 UDP very handy and easy to follow 5.0   y *
3 Testify clear improvement 4.9 y y  
4 integratedml-demo-template expired license fixed 4.7   y  
5 ConfigSettingsExtract works OK 4.4   y  
6 InterSystems IRIS GraphRAG A huge piece 4.4   y  
7 dc-toon Useful tool 4.0     *
8 iris-localization-lab container is ok 4.0 y y  
Discussion (0)1
Log in or sign up to continue
Article
· 10 hr ago 2m read

EnsLib.SQL.Snapshot não é limpo durante a depuração de mensagens quando é usado na mensagem de resposta.

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.SQL.Snapshot",

A referência é registrada na classe: EnsLib.SQL.Snapshot. Vocês podem consultá-la com SQL: SELECT * FROM EnsLib_SQL.Snapshot ORDER BY ID asc

Esses dados não serão eliminados durante a tarefa de depuração. Portanto, os dados irão crescendo com o tempo. Quando vocês tiverem esse problema, podem limpar todos os dados manualmente com o seguinte método:

  • Limpar a Global: ^Ens.AppData:
    • Pare a produção
    • Executem= no terminal (certifique-se de estar no NameSpace correto): do ##class(Ens.Adapter).ClearStaticAppData("EnsLib.SQL.Snapshot"
    • Reinicie a produção
  • Limpar EnsLib_SQL.Snapshot:
    • Elimine os dados com o SQL: TRUNCATE TABLE EnsLib_SQL.Snapshot

Mas isso não é o ideal, especialmente em ambiente de produção (PRD).

Solução:

Esse problema só ocorre quando os dados são retornados de uma BO para uma BP, ou talvez de uma BP para uma BS, já que a ideia é a mesma.

Uma solução é não usar EnsLib_SQL.Snapshot como propriedade na mensagem de retorno, mas mapear os dados para outro tipo de objeto (por exemplo: JSON como string, ou outros tipos de classe).

Outra solução é fazer com que a tarefa de depuração elimine os dados do Snapshot usando o método %OnDelete:

https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GOBJ_callbacks#GOBJ_cb_ondelete

Assim:

Class ResponseMessage Extends Ens.Response
{

    Property SnapshotProp As EnsLib.SQL.Snapshot;

   ClassMethod %OnDelete(oid As %ObjectIdentity) As %Status [ Private, ServerOnly = 1 ]
   {
      set id = $$$oidPrimary(oid)
      set obj = ..%OpenId(id)
    
      return ##class(EnsLib.SQL.Snapshot).%DeleteId(obj.SnapshotProp.%Id())
   }

}

Espero que isso ajude vocês tanto quanto me ajudou!

PS: Publicação relacionada: https://community.intersystems.com/post/setting-enslibsqlsnapshot-vs-enslibsqlsnapshotclean

Discussion (0)1
Log in or sign up to continue