查找

问题
· 17 hr 前

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?

7 条新评论
讨论 (7)2
登录或注册以继续
文章
· 18 hr 前 阅读大约需 1 分钟

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  
讨论 (0)1
登录或注册以继续
文章
· 18 hr 前 阅读大约需 2 分钟

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

讨论 (0)1
登录或注册以继续
文章
· 18 hr 前 阅读大约需 1 分钟

Exemplo ECP "Reloaded" – Implantação de várias instâncias do IRIS em arquitetura ECP

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...

Então, adaptei-o para que funcione com a última versão do IRIS (atualmente 2025.3) que, entre outras coisas, não inicia mais um servidor web por padrão, o que não é um problema grave, mas deve ser levado em conta.

Simplifiquei os arquivos Docker, atualizei os docker-compose.yml e adicionei ao deploy servidores web específicos para administrar as instâncias que quisermos. O restante da funcionalidade, aplicações de exemplo etc., continua igual. Você encontrará todas as informações no Open Exchange e no repositório do GitHub.

Happy coding!

讨论 (0)1
登录或注册以继续
文章
· 18 hr 前 阅读大约需 1 分钟

Carregando dados em servidores (locais ou remotos) diretamente pelo VS Code.

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.

讨论 (0)1
登录或注册以继续