Limpar filtro
Anúncio
Rochael Ribeiro · Dez. 14, 2021
As versões de Prévia estão agora disponíveis para a versão 2021.2 do IntterSystems IRIS, IRIS for Health e IRIS Studio.
Por se tratar de uma versão prévia, estamos ansiosos para aprender mais a partir de suas experiências com esta nova versão antes da disponibilização da versão Geral (General Availability) que acontecerá no próximo mês. Por favor nos dê seu feedback através da Comunidade de Desenvolvedores para que possamos construir um produto melhor juntos.
InterSystems IRIS Data Platform 2021.2 torna ainda mais fácil desenvolver, implantar e gerenciar aplicações e processos de negócio que conectam dados e aplicações isoladas. A plataforma possui várias novas funcionalidades, incluindo:
Melhorias para desenvolvedores de aplicações e interfaces, incluindo:
Python Incorporado
Produções de Interoperabilidade em Python
Atualizações no Pacote de Extensão ObjectScript para o Visual Studio Code
Novos Business Services e Operations foram adicionados para permitir que usuários definam e executem queries SQL com o mínimo de código customizado.
Melhorias para Analytics, incluindo:
Novo comando SQL LOAD que carrega eficientemente arquivos CSV e dados via JDBC para tabelas
Melhorias no Adaptive Analytics
Melhorias para Nuvem e tarefas Operacionais, incluindo:
Novos Conectores Cloud tornam ainda mais fácil o acesso e utilização de serviços na nuvem a partir das aplicações construídas na plataforma de dados InterSystems IRIS
Melhorias no IKO que aprimoram o gerenciamento dos recursos do Kubernetes
Melhorias para Administradores de Sistemas e de Bases de Dados, incluindo:
Rebalanceamento Online de Shards para automatizar a distribuição de dados através dos nós sem que haja a necessidade de interrupção das operações
O Adaptive SQL utiliza amostragem de blocos ágil e automação para coletar estatísticas avançadas de tabelas e utiliza informações de tempo de execução para melhor planejamento de consultas
As necessidades de armazenamento do InterSystems IRIS foram reduzidas com as novas configurações de compressão de streams e journal
Suporte a TLS 1.3 e OpenSSL 1.1.1, utilizando bibliotecas do sistema
Novo utilitário ^TRACE reporta estatísticas detalhadas de processos como as leituras e hits no cache.
Maiores detalhes sobre todas estas funcionalidades podem ser encontradas na documentação do produto:
InterSystems IRIS 2021.2 documentação e notas do lançamento
InterSystems IRIS for Health 2021.2 documentação e notas do lançamento
HealthShare Health Connect 2021.2 documentação e notas do lançamento
InterSystems IRIS 2021.2 é um lançamento de Entrega Contínua (CD), que agora é disponibilizada com pacotes de instalação clássicos para todas as plataformas suportadas bem como imagens de contêineres em OCI (Open Container Initiative) também conhecidos por formato Docker contêiner. As imagens de contêineres são disponibilizadas para os mecanismos de tempo de execução compatíveis com o OCI para Linux x86-64 e Linux ARM64, como detalhado no Documento de Plataformas Suportadas.
Os pacotes de instalação completos para estão disponíveis no site de download de produto no WRC. A utilização da opção "Custom" de instalação permite que os usuários escolham as opções que eles precisam, como o InterSystems Studio e o IntegratedML para ajustar a instalação a sua necessidade.
As imagens de contêineres para a Enterprise Edition, a Community Edition e todos os componentes correspondentes estão disponíveis através do InterSystems Container Registry utilizando os seguintes comandos:
docker pull containers.intersystems.com/intersystems/iris:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.617.0
docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.617.0
Para uma lista completa das imagens disponíveis favor verificar a documentação ICR.
De forma alternativa, as versões tarball de todas as imagens de contêiner são disponibilizadas através do site de download de prévias do WRC.
O número de referência deste lençamento é 2021.2.0.617.0.
Anúncio
Angelo Bruno Braga · Mar. 7, 2022
Olá Desenvolvedores,
Estamos preparando com muito carinho nosso primeiro 🏆Concurso de Artigos Técnicos em Português da InterSystems 🏆.
Como o concurso será lançado oficialmente na semana que vem, aproveitem esta semana para escolher seu tópico ou, se você é novo na tecnologia InterSystems, aproveite para conhecer um pouco mais sobre a tecnologia neste período para poder participar !
Sem querer dar spoilers ....
Além do concurso ser em nossa língua nativa, serão várias novidades tanto em relação às premiações quanto em relação ao funcionamento do concurso.
Então preparem-se e,
Fiquem ligados nas novidades !!!! Escolha o seu tema!!!!!!
Python pode ser uma ótima escolha!!!!
No lançamento do concurso vamos dar mais algumas opções de temas para ajudar!!!!
Fiquem ligados!!!!
Concordo! Um artigo falando do Python embutindo no InterSystems IRIS , seria muito interessante!
E ai comunidade, já estão pesquisando sobre os temas?
Para ajudar vocês escolherem os temas, sugiro que vocês vejam novidades lançadas na última release 2021.2 do InterSystems IRIS: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCRN
Uma novidade que gostei muito, além do Python embutido, é o novo adaptador para S3 da Amazon.
Boas escolhas!
Contagem regressiva para o lançamento !!!!
Nossa equipe de especialistas já se encontra ansiosa para ler os artigos que participarão do concurso.
Não perca tempo, escolha seu tópico e já anote as ideias para o artigo !
Boa sorte a todos O que acham de algo na linha de "IRIS Smart Factory"?
API para conexão ERP e PLC. ótima ideia Jefferson, o concurso inclusive abre as inscrições na segunda-feira, vide o anuncio https://pt.community.intersystems.com/post/1%C2%BA-concurso-de-artigos-t%C3%A9cnicos-em-portugu%C3%AAs-da-intersystems publicado hoje!!!!boa sorte!!!!!
Anúncio
Angelo Bruno Braga · Jun. 16, 2021
Olá Comunidade,
Nós queremos ouvir vocês ! Nos falem a respeito de nosso último Concurso de Programação Acelerador FHIR da InterSystems! Respondam por favor algumas perguntas para que possamos melhorar nossos concursos.
👉 Pesquisa rápida: Pesquisa do Concurso de Programação Acelerador FHIR da InterSystems
Ou se sentir mais a vontade, compartilhe suas impressões nos comentários desta postagem!
Anúncio
Angelo Bruno Braga · Jun. 16, 2021
Olá Desenvolvedores,
É um enorme prazer convidá-los para o nosso webinar em inglês "O que tem de novo na plataforma de dados InterSystems IRIS 2021.1"!
Data: Quinta-feira, 17 de Junho de 2021Horário: 12:00, horário de brasíliaT
Neste webinar iremos destacar algumas das novas funcionalidades das plataformas de dados InterSystems IRIS e InterSystems IRIS for Health, na versão 2021.1:
Analytics, introduzindo um novo componente add-on, o InterSystems IRIS® Adaptive Analytics, que habilita um modelo virtual de dados comum e permite que usuários de negócio explorem e analisem dados utilizando suas ferramentas de escolha de BI (inclusive o Microsoft Excel!)
Desenvolvimento, incluindo maior liberdade de escolha de linguagem tanto para os desenvolvimentos do lado do cliente quanto para as do lado do servidor
Implantação e operações, incluindo o InterSystems Kubernetes Operator
Interoperabilidade, incluindo o InterSystems API Manager 1.5
FHIR, incluindo o FHIRPath, Perfis FHIR e mais...
No final teremos um tempo para perguntas e respostas.
Palestrantes:🗣 @Benjamin.DeBoe, Gerente de Produtos, InterSystems🗣 @Joseph.Lichtenberg, Diretor de Marketing para Produto e Indústrias, InterSystems🗣 @Carmen.Logue, Gerente de Produtos, Analytics & Inteligência Artificial, InterSystems
➡️ Registre-se agora!
Anúncio
Angelo Bruno Braga · Out. 20, 2021
Olá Desenvolvedores,
Planejando participar das sessões temáticas do InterSystems Virtual Summit 2021? Não perca a sessão dedicada à Comunidade de Desenvolvedores InterSystems, Open Exchange & Global Masters!
⚡️ "Ganhe, Ganhe, Ganhe com a sessão sobre o Ecossistema para Desenvolvedores InterSystems" VSummit21 ⚡️
🎁 Nota: Todos os participantes da sessão ganharão um prêmio especial
Palestrantes: 🗣 @Anastasia.Dyubaylo, Community Manager, InterSystems 🗣 @Lena.Evsikova, Product Owner of InterSystems Open Exchange🗣 @Olga.Zavrazhnova2637, Customer Advocacy Manager, InterSystems
Aprenda como ter sucesso com a comunidade de desenvolvedores da InterSystems, o hub de gamificação Global Masters e a galeria de aplicativos do Open Exchange.
Interesses: Experiência do desenvolvedor, InterSystems IRIS e Comunidades de usuários
Nossas Sessões estarão disponíveis sob demanda a partir do dia 27 de Outubro, quarta-feira!
Então!
Junte-se a nossa sessão para aproveitar a experiência completa do uso da Tecnologia InterSystems e de nosso Ecossistema para Desenvolvedores!
Anúncio
Angelo Bruno Braga · Abr. 28, 2022
Olá Comunidade,
Recentemente anunciamos os Ganhadores do 1º Concurso de Artigos Técnicos em Português da InterSystems !
Estamos agora planejando a oportunidade para que vocês possam conhecer ao vivo nossos ganhadores e a inspiração, a experiência e os desafios que eles encontraram para escrever seus artigos incríveis !!!
Nossos Convidados:
@Renan Santos , CEO na isNew Tech
@Henry Pereira , Analista de Sistemas na BPlus Tecnologia
@Yuri Marx , Arquiteto de Software na YM Services
O evento irá ocorrer no dia 05 de Maio às 13:00.
Reserve já sua agenda !
Artigo
Danusa Calixto · Abr. 4, 2023
Bem-vindo ao capítulo seguinte da [minha série sobre CI/CD](https://pt.community.intersystems.com/post/entrega-contínua-de-sua-solução-intersystems-usando-gitlab-–-índice), onde discuto possíveis abordagens de desenvolvimento de software com tecnologias da InterSystems e GitLab.
Hoje, vamos falar sobre interoperabilidade.
# Problema
Em uma produção de interoperabilidade ativa, há dois fluxos de processo separados: uma produção em funcionamento que processa as mensagens e um fluxo de processo CI/CD que atualiza o código, a configuração da produção e as [configurações padrão do sistema](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ECONFIG_other_default_settings).
Claramente, os processos CI/CD afetam a interoperabilidade. No entanto, as perguntas são:
- O que acontece exatamente durante uma atualização?
- O que precisamos fazer para minimizar ou eliminar o tempo de inatividade da produção durante uma atualização?
# Terminologia
- Host de Negócio (Business Host - BH) - um elemento configurável da Produção da Interoperabilidade: Serviço de Negócio (Business Service - BS), Processo de Negócio ( Business Process - BP, BPL) ou Operação de Negócio (Business Operation, BO).
- Job do Host de Negócio (Business Host Job) - job do InterSystems IRIS que executa o código do Host de Negócio e é gerenciado pela produção de interoperabilidade.
- Produção - coleção interconectada de Hosts de Negócio.
- Configurações Padrão do Sistema (System Default Settings - SDS) - valores específicos do ambiente de instalação do InterSystems IRIS.
- Mensagem Ativa - uma solicitação que está sendo processada por um Job do Host de Negócio. Um Job do Host de Negócio só pode ter uma Mensagem Ativa. O Job do Host de Negócio que não tem uma Mensagem Ativa está inativo.
# O que está acontecendo?
Vamos começar com o ciclo de vida da produção.
## Início da Produção
Primeiro, a Produção pode ser iniciada. Só pode ser executada uma produção por namespace ao mesmo tempo, e em geral (a menos que você saiba o que e porque está fazendo isso), apenas uma produção deve ser executada por namespace. Alternar várias vezes em um namespace entre duas ou mais produções diferentes não é recomendado. Ao iniciar a produção, todos os Hosts de Negócio habilitados definidos nela são inicializados. Se alguns Hosts de Negócio não inicializarem, isso não afeta a inicialização da Produção.
Dicas:
- Comece a produção no Portal de Gerenciamento de Sistemas ou ao chamar: `##class(Ens.Director).StartProduction("ProductionName")`
- Execute código arbitrário na inicialização da Produção (antes que qualquer Job do Host de Negócio seja inicializado) ao implementar um método `OnStart`
- A inicialização da Produção é um evento auditável. Você sempre pode ver quem e quando fez o que no Log de Auditoria.
## Atualização da Produção
Após a inicialização da Produção, [Ens.Director](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Director) monitora continuamente a produção em execução. Há dois estados de produção: o _estado desejado_, definido na classe da produção e nas Configurações Padrão do Sistema, e o _estado em execução_, os jobs atualmente em execução com configurações aplicadas quando os jobs foram criados. Se os estados desejado e atual forem idênticos, está tudo bem, mas a produção pode (e deve) ser atualizada se houver uma diferença. Geramente, você vê isso como um botão vermelho `Update` na página de Configurações da Produção no Portal de Gerenciamento de Sistemas.
A atualização da produção significa uma tentativa de corresponder o estado atual da Produção ao estado visado.
A execução de `##class(Ens.Director).UpdateProduction(timeout=10, force=0)` para atualizar a produção faz o seguinte com cada Host de Negócio:
1. Compara as configurações ativas às configurações de produção/SDS/classe
2. Se, e apenas se, (1) apresentar uma discrepância, o Host de Negócio será marcado como desatualizado, exigindo uma atualização.
Depois de executar isso para cada Host de Negócio, `UpdateProduction` cria o conjunto de mudanças:
- Hosts de Negócio para interromper
- Hosts de Negócio para inicializar
- Configurações da produção para atualizar
E, depois disso, aplica essas mudanças.
Dessa forma, "atualizar" as configurações sem mudar nada resulta em nenhum tempo de inatividade da produção.
Dicas:
- Atualize a produção no Portal de Gerenciamento de Sistemas ou ao chamar: `##class(Ens.Director).UpdateProduction(timeout=10, force=0)`
- O tempo limite de atualização padrão do Portal de Gerenciamento de Sistemas é 10 segundos. Se você sabe que o processamento das mensagens leva mais do que isso, chame `Ens.Director:UpdateProduction` com um tempo limite maior.
- O tempo limite da atualização é uma configuração da produção, e você pode mudar para um valor maior. Essa configuração se aplica ao Portal de Gerenciamento de Sistemas.
## Atualização do código
`UpdateProduction` NÃO ATUALIZA BHs com código desatualizado. Esse é um comportamento voltado para a segurança, mas, se você quiser atualizar todos os BHs em execução automaticamente se o código subjacente mudar, siga estas etapas:
Primeiro, carregue e compile desta maneira:
```objectscript
do $system.OBJ.LoadDir(dir, "", .err, 1, .load)
do $system.OBJ.CompileList(load, "curk", .errCompile, .listCompiled)
```
Agora, `listCompiled` teria todos os itens que foram realmente compilados (use [git diffs](https://github.com/intersystems-ru/GitLab/blob/master/isc/git/Diff.cls) para minimizar o conjunto carregado) devido à flag `u`. Use `listCompiled` para obter um $lb de todas as classes que foram compiladas:
```objectscript
set classList = ""
set class = $o(listCompiled(""))
while class'="" {
set classList = classList _ $lb($p(class, ".", 1, *-1))
set class=$o(listCompiled(class))
}
```
Depois disso, calcule uma lista de BHs que precisam de uma reinicialização:
```sql
SELECT %DLIST(Name) bhList
FROM Ens_Config.Item
WHERE 1=1
AND Enabled = 1
AND Production = :production
AND ClassName %INLIST :classList
```
Por fim, após obter `bhList`, interrompa e inicie os hosts afetados:
```objectscript
for stop = 1, 0 {
for i=1:1:$ll(bhList) {
set host = $lg(bhList, i)
set sc = ##class(Ens.Director).TempStopConfigItem(host, stop, 0)
}
set sc = ##class(Ens.Director).UpdateProduction()
}
```
## Interrupção da produção
As produções podem ser interrompidas, ou seja, uma solicitação pode ser enviada para desativar todos os Jobs do Host de Negócio (com segurança, após lidarem com as mensagens ativas, se houver alguma).
Dicas:
- Interrompa a produção no Portal de Gerenciamento de Sistemas ou ao chamar: `##class(Ens.Director).StopProduction(timeout=10, force=0)`
- O tempo limite de interrupção padrão do Portal de Gerenciamento de Sistemas é 120 segundos. Se você sabe que o processamento das mensagens leva mais do que isso, chame `Ens.Director:StopProduction` com um tempo limite maior.
- O tempo limite de interrupção é uma configuração da produção. Você pode alterar isso para um valor maior. Essa configuração se aplica ao Portal de Gerenciamento de Sistemas.
- Execute código arbitrário na interrupção da produção ao implementar um método `OnStart`
- A interrupção da produção é um evento auditável. Você sempre pode ver quem e quando fez o que no Log de Auditoria.
O importante aqui é que a produção seja a soma total dos Hosts de Negócio:
- Ao iniciar a produção, todos os Hosts de Negócio habilitados são inicializados.
- A interrupção da produção também interrompe todos os Hosts de Negócio em execução.
- A atualização da produção significa calcular um subconjunto de Hosts de Negócio que estão desatualizados, para que sejam interrompidos e, imediatamente depois disso, inicializados novamente. Além disso, um Host de Negócio recém-adicionado é inicializado, e um Host de Negócio excluído da produção é interrompido.
Isso nos leva ao ciclo de vida dos Hosts de Negócio.
## Inicialização do Host de Negócio
Os Hosts de Negócio são compostos de Jobs de Hosts de Negócio idênticos (de acordo com um valor de configuração de tamanho do pool). Ao inicializar um Host de Negócio, todos os Jobs de Hosts de Negócio também são inicializados. Eles são inicializados em paralelo.
Jobs de Host de Negócio individuais são inicializados desta maneira:
1. A interoperabilidade define como job um novo processo que se tornaria um Job de Host de Negócio.
2. O novo processo é registrado como um job de interoperabilidade.
3. O código de Host de Negócio e o código do Adapter são carregados na memória do processo.
4. As configurações relacionadas a um Host de Negócio e Adapter são carregadas na memória. A ordem de precedência é: a. Configurações da Produção (substituem as Configurações de Classe e Padrão do Sistema). b. Configurações Padrão do Sistema (substituem as Configurações de Classe). c. Configurações de classe.
5. O job está pronto e começa a aceitar mensagens.
Após a conclusão de (4), o Job não pode alterar as configurações ou o código, então quando você importa código novo/igual e configurações padrão do sistema novas/iguais, isso não afeta os jobs de interoperabilidade atualmente em execução.
## Interrupção do Hosts de Negócio
Interromper um Job de Host de Negócio significa o seguinte:
1. A interoperabilidade pede que o Job pare de aceitar mensagens/entradas.
2. Se houver uma mensagem ativa, o Job de Host de Negócio tem segundos de tempo limite para processar (ao concluir, finalizando o método `OnMessage` para BO, `OnProcessInput` para BS, `S` para BPL BPs e `On*` para BPs).
3. Se uma mensagem ativa não for processada até o tempo limite e `force=0`, ocorrerá a falha da atualização da produção para esse Host de Negócio (voce verá um botão "Update" vermelho no Portal de Gerenciamento de Sistemas).
4. A interrupção é bem-sucedida se algo nesta lista for verdadeiro:
- Nenhuma mensagem ativa
- A mensagem ativa foi processada antes de `timeout`
- A mensagem ativa não foi processada antes do tempo limite, MAS `force=1`
5. O job é cancelado com interoperabilidade e é interrompido.
## Atualização do Host de Negócio
A atualização do Host de Negócio significa a interrupção de todos os Jobs em execução para o Host de Negócio e a inicialização de novos Jobs.
## Regras de negócios, de roteamento e DTLs
Todos os Hosts de Negócio são inicializados imediatamente usando as novas versões das Regras de negócios, de roteamento e DTLs assim que ficarem disponíveis. A reinicialização de um Host de Negócio não é necessária nesse caso.
# Atualizações offline
Às vezes, no entanto, as atualizações da produção exigem tempo de inatividade de Hosts de Negócio individuais.
## Regras dependem de novo código
Considere a situação. Você tem uma Regra de Roteamento X atual que encaminha as mensagens para o Processo de Negócio A ou B com base em critérios arbitrários. Em um novo commit, você adiciona, simultaneamente:
- Processo de Negócio C
- Uma nova versão da Regra de Roteamento X, que encaminha mensagens para A, B ou C.
Nesse caso, você não pode só carregar a regra primeiro e depois atualizar a produção. A regra recém-copilada imediatamente começaria a encaminhar as mensagens para o Processo de Negócio C, que o InterSystems IRIS talvez ainda não tenha compilado ou a interoperabilidade ainda não tenha atualizado para usar. Nesse caso, você precisa desativar o Host de Negócio com uma Regra de Roteamento, atualizar o código, atualizar a produção e ativar o Host de Negócio novamente.
Observações:
- Se você atualizar uma produção usando um [arquivo de implantação de produção](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGDV_deploying), todos os BHs afetados são desativados/ativados automaticamente.
- Para hosts invocados InProc, a compilação invalida o cache de um host específico mantido pelo autor da chamada.
## Dependências entre Hosts de Negócio
As dependências entre Hosts de Negócio são fundamentais. Suponha que você tenha os Processos de Negócio A e B, em que A envia mensagens a B. Em um novo commit, você adiciona, simultaneamente:
- Uma nova versão do Processo A, que define uma nova propriedade X em uma solicitação para B
- Uma nova versão do Processo B que pode processar uma nova propriedade X
Nesse caso, PRECISAMOS atualizar o Processo B primeiro e o A depois. Você pode fazer isso de uma das seguintes maneiras:
- Desativar Hosts de Negócio durante a atualização
- Divida a atualização em duas partes: primeiro, atualize apenas o Processo B e, depois, em uma atualização separada, comece a enviar mensagens para ele do Processo A.
Uma variação mais desafiadora desse tema, em que as novas versões dos Processos A e B são incompatíveis com as versões antigas, exige tempo de inatividade do Host de Negócio.
## Filas
Se você sabe que, após a atualização, um Host de Negócio não conseguirá processar mensagens antigas, você precisa garantir que a Fila do Host de Negócio esteja vazia antes da atualização. Para isso, desative todos os Hosts de Negócio que enviam mensagens para o Host de Negócios e espere até que a fila fique vazia.
## Mudança de estado nos Processos de Negócio BPL
Primeiro, uma pequena introdução sobre como funcionam os BPs do BPL. Depois de compilar um BP do BPL, duas classes são criadas no pacote com o mesmo nome que o da classe BPL completa:
- A classe `Thread1` contém os métodos S1, S2, ... SN, que corresponde às atividades no BPL
- A classe `Context` tem todas as variáveis de contexto, além do próximo estado que o BPL executaria (ou seja, `S5`)
Além disso, a classe BPL é persistente e armazena as solicitações que estão sendo processadas.
O BPL funciona ao executar os métodos `S` em uma classe `Thread` e atualizando de maneira correspondente a tabela da classe BPL, `Context` e `Thread1`, em que uma mensagem "em processamento" é uma linha em uma tabela BPL. Após o processamento da solicitação, o BPL exclui as entradas do BPL, `Context` e `Thread`. Como os BPs do BPL são assíncronos, um job BPL pode processar simultaneamente várias solicitações ao salvar as informações entre chamadas `S` e alternar entre diferentes solicitações. Por exemplo, o BPL processou uma solicitação até chegar a uma atividade `sync`, aguardando uma resposta da BO. Ele salvaria o contexto atual no disco, com a propriedade `%NextState` (na classe `Thread1`) definida para o método `S` de atividade de resposta e trabalharia em outras solicitações até a BO responder. Após a resposta da BO, o BPL carregaria "Context" na memória e executaria o método correspondente a um estado salvo na propriedade `%NextState`.
Agora, o que acontece quando atualizamos o BPL? Primeiro, precisamos conferir se pelo menos uma destas condições é atendida:
- Durante a atualização, a tabela Context está vazia, o que significa que nenhuma mensagem ativa está em trabalho.
- Os Novos Estados são os mesmos que os antigos ou os novos Estados são adicionados após os antigos.
Se pelo menos uma condição for atendida, podemos continuar. Não há solicitações de pré-atualização para processar o BPL pós-atualização ou os Estados são adicionados no final, o que significa que as solicitações antigas também podem ir para lá (supondo que as solicitações de pré-atualização sejam compatíveis com as atividades e o processamento do BPL pós-atualização).
Mas e se você tiver solicitações ativas em processamento e o BPL mudar a ordem dos estados? O ideal é, se você puder esperar, desativar os autores de chamada do BPL e esperar até que a fila esteja vazia. Valide se a tabela Context também está vazia. Lembre-se de que a Fila mostra apenas as solicitações não processadas e a tabela Context armazena as solicitações em trabalho, então um BPL muito ocupado pode mostrar o tamanho da Fila como zero e isso é normal. Depois disso, desative o BPL, realize a atualização e ative todos os Hosts de Negócio desativados anteriormente.
Se isso não for possível (geralmente quando o BPL é muito longo, lembro de atualizar um que demorou cerca de uma semana para processar uma solicitação, ou a janela de atualização é muito curta), use o [versionamento do BPL](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EBPLR_process).
Como alternativa, você pode escrever um script de atualização. No script de atualização, mapeie os próximos estados antigos para os próximos estados novos e execute na tabela `Thread1` para que o BPL atualizado possa processar solicitações antigas. O BPL precisa ser desativado durante a atualização. Dito isso, é uma situação extremamente rara e geralmente desnecessária, mas, se precisar fazer isso, é dessa maneira.
# Conclusão
A interoperabilidade implementa um algoritmo sofisticado para minimizar o número de ações necessárias para atualizar a produção após a alteração do código subjacente. Chame UpdateProduction com um tempo limite seguro em cada atualização de SDS. Para cada atualização de código, você precisa decidir uma estratégia.
Minimizar a quantidade de código compilado usando [git diffs](https://github.com/intersystems-ru/GitLab/blob/master/isc/git/Diff.cls) ajuda no tempo de compilação, mas "atualizar" o código com ele mesmo e compilá-lo novamente ou "atualizar" as configurações com os mesmos valores não aciona ou exige uma atualização da produção.
Atualizar e compilar Regras de Negócio, Regras de Roteamento e DTLs os torna imediatamente acessíveis sem a atualização da produção.
Por fim, a atualização da produção é uma operação segura e geralmente não requer tempo de inatividade.
# Links
- [Ens.Director](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Director)
- [Criando git diffs](https://github.com/intersystems-ru/GitLab/blob/master/isc/git/Diff.cls)
- [Configurações Padrão do Sistema](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ECONFIG_other_default_settings)
O autor gostaria de agradecer a @James.MacKeith, @Dmitry.Zasypkin e @Regilo.Souza pela ajuda inestimável com este artigo.
Artigo
Danusa Calixto · Abr. 4, 2023
Após uma pausa de quase quatro anos, [minha série sobre CI/CD](https://pt.community.intersystems.com/post/entrega-contínua-de-sua-solução-intersystems-usando-gitlab-–-índice) está de volta! Ao longo dos anos, trabalhei com vários clientes da InterSystems, desenvolvendo pipelines de CI/CD para diferentes casos de uso. Espero que as informações apresentadas neste artigo sejam úteis para alguém.
Esta [série de artigos](https:/pt.community.intersystems.com/post/entrega-contínua-de-sua-solução-intersystems-usando-gitlab-–-índice) discute várias abordagens possíveis para o desenvolvimento de software com tecnologias da InterSystems e do GitLab.
Temos uma variedade interessante de tópicos para abordar: hoje, vamos falar sobre elementos fora do código — ou seja, configurações e dados.
# Problema
Anteriormente, discutimos promoções de código e, de certa forma, sem estado — sempre passamos de uma instância (presumivelmente) vazia para uma codebase completa. No entanto, às vezes, precisamos fornecer dados ou estado. Há diferentes tipos de dados:
- Configuração: usuários, web apps, LUTs, esquemas personalizados, tarefas, parceiros de negócios e muito mais
- Configurações: pares de chaves-valor específicas ao ambiente
- Dados: com frequência, tabelas de referência precisam ser fornecidas para seu app funcionar
Vamos discutir todos esses tipos de dados e como eles podem ser adicionados primeiro ao controle de fonte e posteriormente implantados.
# Configuração
A configuração do sistema é dividida em muitas classes diferentes, mas o InterSystems IRIS pode exportar a maioria delas para XMLs. Primeiro, um [Pacote de segurança](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&PACKAGE=Security) contém informações sobre:
- Web Apps
- DocDBs
- Domínios
- Eventos de auditoria
- Servidores KMIP
- Configurações LDAP
- Recursos
- Funções
- Privilégios SQL
- Configurações SSL
- Serviços
- Usuários
Todas essas classes fornecem métodos Exists, Export e Import, permitindo movê-las entre ambientes.
Algumas ressalvas:
- Os usuários e as configurações de SSL podem conter informações confidenciais, como senhas. Geralmente, NÃO é recomendado armazená-los no controle de fonte por motivos de segurança. Use os métodos Export/Import para facilitar transferências únicas.
- Por padrão, os métodos Export/Import geram os resultados em um arquivo, o que talvez não seja compatível com o controle de fonte. Veja uma [classe de utilitário](https://gist.github.com/eduard93/3a9abdb2eb150a456191bf387c1fc0c3) que pode exportar e importar Tabelas Lookup, Esquemas Personalizados, Parceiros de Negócio, Tarefas, Credenciais e Configuração SSL. Ela exporta um item por arquivo, então você obtém um diretório com LUT, outro diretório com esquemas personalizados e assim por diante. Para configurações SSL, ela também exporta arquivos: certificados e chaves.
Também vale a pena notar que, em vez de importar/exportar, você pode usar [%Installer](https://community.intersystems.com/post/deploying-applications-intersystems-cache-installer) ou [Mesclagem CPF](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ACMF) para criar a maioria desses elementos. Ambas as ferramentas também são compatíveis com a criação de namespaces e bancos de dados. A Mesclagem CPF pode ajustar as configurações do sistema, como o tamanho do buffer global.
## Tarefas
A classe [%SYS.Task](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYS.Task) armazena tarefas e fornece métodos `ExportTasks` e `ImportTasks`. Você também pode verificar a classe de utilitário acima para importar e exportar tarefas uma a uma. Observe que, ao importar tarefas, você pode obter erros de importação (`ERROR #7432: Start Date and Time must be after the current date and time` - A data e o horário de início precisam ser posteriores à data e ao horário atual) se `StartDate` ou outras propriedades relacionadas à programação estiverem no passado. Como solução, defina `LastSchedule` como `0` para o InterSystems IRIS reprogramar uma tarefa recém-importada para ser executada em um futuro próximo.
## Interoperabilidade
As produções de interoperabilidade contêm:
- Parceiros de negócio
- Configurações Padrão do Sistema
- Credenciais
- Tabelas Lookup
Os dois primeiros estão disponíveis no pacote [Ens.Config](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&PACKAGE=Ens.Config) com métodos `%Export` e `%Import`. Exporte Credenciais e Tabelas Lookup usando a [classe de utilitário](https://gist.github.com/eduard93/3a9abdb2eb150a456191bf387c1fc0c3) acima. Em versões recentes, Tabelas Lookup podem ser exportadas/importadas pela classe [$system.OBJ](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.OBJ).
# Configurações
[Configurações Padrão de Sistema](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ECONFIG_other_default_settings#ECONFIG_other_default_settings_purpose) - é um mecanismo de interoperabilidade padrão para configurações específicas ao ambiente:
> A finalidade das configurações padrão do sistema é simplificar o processo de cópia de uma definição de produção de um ambiente para outro. Em qualquer produção, os valores de algumas configurações são determinados como parte do design de produção. Geralmente, essas configurações são as mesmas em todos os ambientes. Outras configurações, no entanto, precisam ser ajustadas ao ambiente. Essas configurações incluem caminhos de arquivo, números de portas e assim por diante.
>
> As configurações padrão do sistema precisam especificar apenas os valores do ambiente em que o InterSystems IRIS está instalado. Por outro lado, a definição da produção precisa especificar valores de configurações que devem ser iguais em todos os ambientes.
Recomendo usá-los em ambientes de produção. Use [%Export](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Config.DefaultSettings#%25Export) e [%Import](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Config.DefaultSettings#%25Import) para transferir as configurações padrão do sistema.
## Configurações do aplicativo
Seu aplicativo provavelmente também usa configurações. Nesse caso, recomendo usar as Configurações Padrão do Sistema. Embora seja um mecanismo de interoperabilidade, as configurações podem ser acessadas via: `%GetSetting(pProductionName, pItemName, pHostClassName, pTargetType, pSettingName, Output pValue)` ([documentos](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Config.DefaultSettings#%25GetSetting)). Você pode escrever um wrapper para definir os padrões com que você não se importa, por exemplo:
```objectscript
ClassMethod GetSetting(name, Output value) As %Boolean [Codemode=expression]
{
##class(Ens.Config.DefaultSettings).%GetSetting("myAppName", "default", "default", , name, .value)
}
```
Se você quiser mais categorias, você também pode expor argumentos `pItemName` e/ou `pHostClassName`. As configurações podem ser definidas inicialmente ao importar, usar o Portal de Gerenciamento de Sistema, criar objetos da classe `Ens.Config.DefaultSettings` ou definir `^Ens.Config.DefaultSettingsD` como global.
Meu principal conselho aqui seria manter as configurações em um só lugar (pode ser as Configurações Padrão do Sistema ou uma solução personalizada), e o aplicativo precisa obter as configurações usando apenas a API fornecida. Dessa forma, o próprio aplicativo não conhece o ambiente e o que resta é fornecer um armazenamento centralizado de configurações com valores específicos ao ambiente. Para isso, crie uma pasta de configurações no seu repositório contendo arquivos de configuração com nomes iguais aos das ramificações do ambiente. Em seguida, durante a fase do CI/CD, use a [variável de ambiente](https://docs.gitlab.com/ee/ci/variables/predefined_variables.html) `$CI_COMMIT_BRANCH` para carregar o arquivo correto.
```
DEV.xml
TEST.xml
PROD.xml
```
Se você tiver vários arquivos de configurações por ambiente, use pastas com nomes de ramificações de ambiente. Para obter o valor da variável de ambiente de dentro do InterSystems IRIS, [use](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.Util#GetEnviron) `$System.Util.GetEnviron("name")`.
# Dados
Se você quiser disponibilizar dados (tabelas de referência, catálogos, etc.), há várias formas de fazer isso:
- Exportação global. Use uma [exportação GOF](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GGBL_managing#GGBL_managing_export) binária ou uma nova exportação XML. Com a exportação GOF, lembre-se de que os locais nos sistemas de origem e destino precisam corresponder (ou pelo menos a ordenação global precisa estar disponível no sistema de destino). A [exportação XML](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.OBJ) ocupa mais espaço. Você pode melhorar isso ao exportar o global para um arquivo `xml.gz`, os métodos `$system.OBJ` automaticamente (des)arquivam os arquivos `xml.gz` conforme necessário. A principal desvantagem dessa abordagem é que os dados não são legíveis por humanos, nem mesmo o XML — a maioria é codificado em base64.
- CSV. Faça a [exportação CSV](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SQL.StatementResult#%25DisplayFormatted) e importe com [LOAD DATA](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_loaddata). Prefiro o CSV, pois é o formato legível por humanos com armazenamento mais eficiente, que pode ser importado por qualquer coisa.
- JSON. Crie uma classe [habilitada para JSON](https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=GJSON_adaptor).
- XML. Crie uma classe [habilitada para XML](https://docs.intersystems.com/iris20221/csp/docbook/DocBook.UI.Page.cls?KEY=GXMLPROJ_intro) para projetar objetos no XML. Use se os dados tiverem uma estrutura complexa.
O formato que você deve escolher depende do seu caso de uso. Listei aqui os formatos na ordem de eficiência de armazenamento, mas essa não é uma preocupação se você não tiver muitos dados.
# Conclusões
O estado adiciona complexidade aos seus pipelines de implantação de CI/CD, mas o InterSystems IRIS fornece uma vasta gama de ferramentas para gerenciá-lo.
# Links
- [Classe de utilitário](https://gist.github.com/eduard93/3a9abdb2eb150a456191bf387c1fc0c3)
- [%Installer](https://community.intersystems.com/post/deploying-applications-intersystems-cache-installer)
- [Mesclagem CPF](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ACMF)
- [$System.OBJ](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.OBJ)
- [Configurações Padrão do Sistema](https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?LIBRARY=ENSLIB&CLASSNAME=Ens.Config.DefaultSettings#%25GetSetting)
Artigo
Danusa Calixto · Dez. 22, 2022
Nesta série de artigos, quero apresentar e discutir várias abordagens possíveis para o desenvolvimento de software com tecnologias da InterSystems e do GitLab. Vou cobrir tópicos como:
* Git básico
* Fluxo Git (processo de desenvolvimento)
* Instalação do GitLab
* Fluxo de trabalho do GitLab
* Entrega contínua
* Instalação e configuração do GitLab
* CI/CD do GitLab
* **Por que contêineres?**
* CI/CD do GitLab usando contêineres
No [primeiro artigo](https://pt.community.intersystems.com/post/entrega-cont%C3%ADnua-de-sua-solu%C3%A7%C3%A3o-intersystems-usando-gitlab-%E2%80%93-parte-i-git), abordamos os fundamentos do Git, por que um entendimento de alto nível dos conceitos do Git é importante para o desenvolvimento de software moderno e como o Git pode ser usado para desenvolver software.
No [segundo artigo](https://pt.community.intersystems.com/post/entrega-cont%C3%ADnua-de-sua-solu%C3%A7%C3%A3o-intersystems-usando-gitlab-%E2%80%93-parte-ii-fluxo-de-trabalho-do), abordamos o fluxo de trabalho do GitLab: um processo inteiro do ciclo de vida do software e a entrega contínua.
No [terceiro artigo](https://pt.community.intersystems.com/post/entrega-cont%C3%ADnua-de-sua-solu%C3%A7%C3%A3o-intersystems-usando-gitlab-%E2%80%93-parte-iii-instala%C3%A7%C3%A3o-e), abordamos a instalação e configuração do GitLab e a conexão dos seus ambientes a ele
No [quarto artigo](https://pt.community.intersystems.com/post/entrega-cont%C3%ADnua-de-sua-solu%C3%A7%C3%A3o-intersystems-usando-gitlab-%E2%80%93-parte-iv-configura%C3%A7%C3%A3o-da-cd), escrevemos uma configuração de CD.
Neste artigo, falaremos sobre os contêineres e como (e por que) podem ser usados.
Este artigo presume a familiaridade com os conceitos de docker e contêiner. Confira estes artigos do @Luca.Ravazzolo se quiser ler sobre [contêineres](https://community.intersystems.com/post/container-what-container) e [imagens](https://community.intersystems.com/post/container-what-container-image).
## Vantagens
Há muitas vantagens em usar contêineres:
* Portabilidade
* Eficiência
* Isolamento
* Leveza
* Imutabilidade
Vamos falar sobre cada uma em detalhes.
### Portabilidade
Um contêiner embrulha um aplicativo com tudo o que ele precisa para ser executado, como arquivos de configuração e dependências. Isso permite que você execute aplicativos de maneira fácil e confiável em diferentes ambientes, como seu desktop local, servidores físicos, servidores virtuais, testes, staging, ambientes de produção e nuvens públicas ou privadas.
Outro ponto da portabilidade é que, depois de criar sua imagem do Docker e verificar que ela é executada corretamente, ela pode ser executada em qualquer outro lugar que execute o docker, que atualmente são os servidores Windows, Linux e MacOS.
### Eficiência
Você só precisa que o processo do aplicativo seja executado, e não todo o sistema, etc. E os contêineres oferecem exatamente isso: eles executam apenas os processos de que você precisa explicitamente e nada mais. Como os contêineres não exigem um sistema operacional separado, eles consomem menos recursos. Enquanto uma VM costuma ter vários gigabytes de tamanho, um contêiner geralmente tem apenas algumas centenas de megabytes, tornando possível executar muito mais contêineres do que VMs em um único servidor. Como os contêineres têm um nível de uso mais alto em relação ao hardware subjacente, você precisa de menos hardware, resultando em uma redução nos custos dos servidores bare metal, bem como dos centros de processamento de dados.
### Isolamento
Os contêineres isolam seu aplicativo de todo o resto e, embora vários contêineres possam ser executados no mesmo servidor, eles podem ser completamente independentes uns dos outros. Qualquer interação entre contêineres deve ser explicitamente declarada como tal. Se um contêiner falhar, ele não afetará os outros e poderá ser reiniciado rapidamente. A segurança também se beneficia desse isolamento. Por exemplo, explorar a vulnerabilidade do servidor web em um servidor bare metal pode dar a um invasor acesso a todo o servidor, mas, no caso dos contêineres, o invasor só teria acesso ao contêiner do servidor web.
### Leveza
Como os contêineres não exigem um sistema operacional separado, eles podem ser iniciados, interrompidos ou reinicializados em questão de segundos, o que acelera todos os pipelines de desenvolvimento relacionados e o tempo de produção. Você pode começar a trabalhar antes e não gastar nenhum tempo na configuração.
### Imutabilidade
A infraestrutura imutável é composta por componentes imutáveis que são substituídos a cada implantação, em vez de serem atualizados no local. Esses componentes são inicializados a partir de uma imagem comum que é criada uma vez por implantação e pode ser testada e validada. A imutabilidade reduz a inconsistência e permite a replicação e a movimentação entre diferentes estados do seu aplicativo com facilidade. Mais sobre a [imutabilidade](https://blog.codeship.com/immutable-infrastructure/).
## Novas possibilidades
Todas essas vantagens nos permitem gerenciar a infraestrutura e o fluxo de trabalho de maneiras totalmente novas.
### Orquestração
Há um problema com ambientes bare metal ou VM, eles ganham _individualidade_, o que traz várias surpresas depois, geralmente desagradáveis. A resposta para isso é a **infraestrutura como código**, o gerenciamento da infraestrutura em um modelo descritivo, usando as mesmas versões que a equipe de DevOps usa para o código-fonte.
Com a infraestrutura como código, um comando de implantação sempre coloca o ambiente de destino na mesma configuração, não importa o estado inicial do ambiente. Isso é alcançado ao configurar automaticamente um destino existente ou descartar o destino existente e recriar um novo ambiente.
Assim, com a infraestrutura como código, as equipes fazem alterações na descrição do ambiente e na versão do modelo de configuração, que normalmente está em formatos de código bem documentados, como JSON. O pipeline de lançamento executa o modelo para configurar ambientes de destino. Se a equipe precisar fazer alterações, ela editará a fonte, e não o destino.
Tudo isso é possível e muito mais fácil de fazer com contêineres. Leva poucos segundos para desativar um contêiner e iniciar outro, enquanto o provisionamento de uma nova VM leva alguns minutos. E nem estou falando em reverter um servidor para um estado limpo.
### Escalonamento
Do ponto anterior, você pode ter uma ideia de que a infraestrutura como código é estática por si só. Não é, pois as ferramentas de orquestração também podem fornecer escalonamento horizontal (provisionando mais do mesmo) com base na carga de trabalho atual. Você só deve executar o que é necessário no momento e escalonar seu aplicativo de acordo. Isso também pode reduzir custos.
## Conclusão
Os contêineres podem otimizar seu pipeline de desenvolvimento. A eliminação de inconsistências entre ambientes permite testes e depurações mais fáceis. A orquestração permite que você crie aplicativos escalonáveis. A implantação ou reversão para qualquer ponto do histórico imutável é possível e fácil.
As organizações querem trabalhar em um nível mais alto, onde todos os problemas listados acima já estejam resolvidos e onde encontramos agendadores e orquestradores lidando com mais coisas de maneira automatizada.
O que vem a seguir
No próximo artigo, vamos falar sobre o provisionamento com contêineres e a criação da configuração de CD que usa o contêiner Docker do InterSystems IRIS.
Anúncio
Angelo Bruno Braga · Nov. 16, 2022
Olá Desenvolvedores!
Aqui estão os bônus de tecnologia para o InterSystems Health FHIR Contest 2022 que darão a você pontos extras na votação:
Tópico sobre a saúde da mulher
Conjunto de dados de saúde da mulher
Uso do IRIS For Health FHIR ou FHIR Cloud Server
Interoperabilidade de Saúde
Uso do Python Nativo
Uso de contêiner Docker
Implantação em pacote ZPM
Demonstração on-line
Passagem de qualidade de código
Artigo na Comunidade de Desenvolvedores
O segundo artigo na Comunidade de Desenvolvedores
Vídeo no YouTube
Primeira Vez
Vejam os detalhes abaixo:
Tópico sobre a saúde da mulher - 5 pontos
Ganhe 5 pontos de bônus se sua solução estiver ajudando com qualquer tema relativo a problemas de saúde da mulher. Por exemplo, se seu aplicativo puder ajudar pacientes grávidas a descobrir tendências no rastreamento de sintomas de gravidez e/ou criar uma integração para compartilhar sintomas e anotações do diário de gravidez com um aplicativo de parceiro
Conjunto de dados de saúde da mulher - 3 pontos
Colete 3 pontos de bônus se você enviar um conjunto de dados de Saúde da Mulher para o Open Exchange e usá-lo em sua inscrição. Aqui estão exemplos de conjuntos de dados no Open Exchange: titanic, community posts, health datasets. O conjunto de dados deve ser um aplicativo Open Exchange separado.
Uso do IRIS For Health FHIR ou FHIR Cloud Server - 2 pontos
Colete 2 pontos de bônus se sua solução usar o servidor FHIR via IRIS for Health ou InterSystems FHIR Server na AWS. Obtenha o modelo IRIS For Health com o servidor FHIR em execução aqui. Você pode ativar sua instância de servidor FHIR.
Interoperabilidade de Saúde - 4 pontos
Ganhe 4 pontos de bônus se seu aplicativo for solução de interoperabilidade de saúde que usa a interoperabilidade InterSystems para transferir e/ou transformar dados de saúde por meio de mensagens ou usa transformação de dados em formatos de saúde. aqui está um exemplo de solução dfe interoperabilidade de saúde.
Python Nativo - 3 pontos
Use o Python Nativo em sua aplicação e acumule 3 pontos extras. Você precisará ao menos da versão do InterSystems IRIS 2021.2 para isso.
Uso de contêiner Docker - 2 pontos
O aplicativo recebe um bônus de 'contêiner Docker' se usar o InterSystems IRIS em execução em um contêiner docker. Aqui está o exemplo mais simples para se iniciar.
Implantação em pacote ZPM - 2 pontos
Você pode coletar o bônus se criar e publicar o pacote ZPM (ObjectScript Package Manager) para seu aplicativo Full-Stack para que ele possa ser implantado com o comando:
zpm "install your-multi-model-solution"
em um IRIS com o cliente ZPM instalado.
Cliente ZPM. Documentação.
Demonstração on-line de seu projeto - 2 pontosGanhe mais 3 pontos de bônus se publicar seu projeto em nuvem como uma demonstração online. Você pode fazer isso sozinho ou pode usar este modelo - Você encontra aqui um Exemplo. Aqui está o vídeo de como utilizá-lo.
Passagem de qualidade de código sem bugs - 1 ponto
Inclua a ação Github de qualidade de código para controle estático de código e mostre 0 bugs para seu código ObjectScript.
Artigo na Comunidade de Desenvolvedores - 2 pontos
Publique um artigo na Comunidade de Desenvolvedores que descreva os recursos do seu projeto. Colete 2 pontos para cada artigo. Traduções para diferentes idiomas também funcionam.
O segundo artigo na Comunidade de Desenvolvedores - 1 ponto
Você pode coletar mais um ponto de bônus para o segundo artigo ou a tradução do artigo. O 3º e próximos não trarão mais pontos, mas a atenção será toda sua.
Vídeo no YouTube - 3 pontos
Faça o vídeo do Youtube que demonstra seu produto em ação e ganhe 3 pontos de bônus por cada. Exemplos.
Primeira Vez - 3 pontos
Acumule 3 pontos de bônus se você participar de concursos InterSystems Open Exchange pela primeira vez!
A lista de bônus está sujeita a alterações. Fique ligado!
Boa sorte com a competição!
Anúncio
Angelo Bruno Braga · Dez. 8, 2022
Ei Comunidade,
Estamos muito animados para anunciar os vencedores do Concurso InterSystems IRIS for Health: FHIR para a Saúde da Mulher!
Obrigado a todos por participarem de nossa competição de codificação. Sem mais delongas, os vencedores são...
Nomeação de especialista
🥇 1º lugar e US$5.000 vão para o app FemTech Reminder de @KATSIARYNA.Shaustruk, @Maria.Gladkova, @Maria.Nesterenko
🥈 2º lugar e US3.000 vão para o app Pregnancy Symptoms Tracker de @José.Pereira, @Henrique.GonçalvesDias, @Henry.HamonPereira
🥉 3º lugar e US$1.500 vão para o app Contest-FHIR de @Lucas.Enard2487
🏅 4º lugar e US$750 vão para o app fhir-healthy-pregnancy de @Edmara.Francisco
🏅 5º lugar e US$500 vão para o app iris-fhir-app de @Oliver.Wilms
More winners:
🏅 US$100 vão para o app Dia-Bro-App de @Dzmitry.Rabotkin, Maria Muzychuk, Maxim Eliseykin
🏅 US$100 vão para o app NeuraHeart de @Grzegorz.Koperwas
🏅 US$100 vão para o app FHIR Questionnaires de @Yuri.Gomes
🏅 US$100 vão para o app Beat Savior de @Jan.Skála
🏅 US$100 vão para o app ehh2022-diabro de @Maksym.Shcherban
🏅 US$100 vão para o app Dexcom Board de @Daniel.Šulc, Matěj Žídek, Tomáš Dorda
Community Nomination
🥇 1º lugar e US$1.000 vão para o app Pregnancy Symptoms Tracker de @José.Pereira, @Henrique.GonçalvesDias, @Henry.HamonPereira
🥈 2º lugar e US$750 vão para o app FemTech Reminder de @KATSIARYNA.Shaustruk, @Maria.Gladkova, @Maria.Nesterenko
🥉 3º lugar e US$500 vão para o app fhir-healthy-pregnancy de @Edmara.Francisco
Os nossos mais sinceros parabéns a todos os participantes e vencedores!
Junte-se à diversão da próxima vez 😎
Artigo
Danusa Calixto · Maio 9, 2023
Neste artigo, vou tentar explicar a etapa de implantação do IAM no meu EC2(ubuntu).
## O que é o IAM?
IAM é o InterSystems API Manager
consulte o link abaixo para saber mais sobre o IAM

## Antes de implantar o IAM
### Confira a licença do host da API
.png)
.png)
####
### Ative o IAM do usuário
.png)
.png)
## Implante o IAM
### Referência
### Faça o download da imagem no link a seguir
Fiz o download da seguinte versão no meu PC
.png)
### Upload da imagem no EC2
Usei o comando scp para fazer upload da imagem na minha nuvem
.png)
###
### Confira se o docker e o docker compose estão instalados
Caso contrário, acesse o link a seguir
[ https://docs.docker.com/engine/install/ubuntu/](http://https://docs.docker.com/engine/install/ubuntu/)
### Descompacte o arquivo tar de imagem
tar zpxvf IAM-3.0.2.0-4.tar.gz
.png)
###
### Carregue a imagem no docker
sudo docker load -i iam_image.tar
.png)
### Execute o iam-setup.sh
source ./iam-setup.sh
.png)
.png)
### Edite o arquivo: docker-compose.yml
Para que seja possível acessar a IU do IAM pelo ambiente fora do EC2, substitua o localhost pelo endereço público do EC2 no parâmetro KONG\_PORTAL\_GUI\_HOST e KONG\_ADMIN\_GUI\_URL
vi docker-compose.yml
.png)
### Inicie o contêiner
sudo docker compose up -d
### .png)
###
### Confira a IU do IAM
Acesse a IU do IAM pelo link a seguir
http://yourEC2publicAddress:8002/overview
.png)
Artigo
Davi Massaru Teixeira Muta · Maio 14, 2023
#O problema
Temos o seguinte cenário, você trabalha em um laboratório, que até então atendia apenas exames realizados em uma região geográfica especifica, porém dentro de um curto espaço de tempo, percebe que seu negócio está expandindo para outras regiões, a demanda pela entrega dos resultados dos exames passa a não ser mais suportada pelo servidor principal, quedas e lentidões devido a alta repentina de solicitações, passam a ser mais frequentes e seus clientes passam a reclamar da indisponibilidade do sistema, como lidar com essa situação ?

Obviamente sua aplicação precisa ter a infraestrutura aprimorada, caso esteja utilizando a plataforma de dados InterSystems IRIS/Caché, a utilização de ECP’s pode ser uma saída para o problema.
#ECP
ECP - “Enterprise Cache Protocol” protocolo com arquitetura de cache de dados distribuídos, permite distribuir dados e lógica de aplicativos de forma eficiente em vários sistemas de servidores.
Ao contrário de outras arquiteturas multicamadas, o ECP é uma opção de configuração, que não requer usar código especial ou técnicas de desenvolvimento para criar aplicativos de banco de dados distribuídos, fazendo com que diversos servidores executem a aplicação usando a mesma base de código, permitindo que os desenvolvedores se concentrem na funcionalidade central centrada no cliente, tornando o aplicativo mais simples de manter.
#Configuração ECP’s?
Para compreender a configuração de um E.C.P, é importante entender como os artefatos de código e dados são organizados dentro da plataforma InterSystems IRIS.
#Mapeamento de namespaces.
Namespace é uma unidade lógica de organização em InterSystems IRIS que permite a separação de objetos e recursos do sistema em grupos distintos. Tornando mais fácil a administração e o gerenciamento do sistema.
Cada Namespace é configurado para utilizar banco de dados de globais e rotinas, que é utilizado para armazenar e gerenciar os dados globais e objetos de rotinas.

## - Banco de dados provedor de Globais:
O Banco de dados provedor de globais, é usado para armazenar e gerenciar os dados globais em um determinado namespace.
##- Banco de dados provedor de Rotinas:
Rotinas são artefatos do banco que executam tarefas específicas no sistema, plataformas de dados InterSystems utilizando o provedor de rotinas como um banco de dados especializado para armazenar e gerenciar as rotinas de código em um namespace.
#Realizar os mapeamentos
Para configurar o ECP (Enterprise Cache Protocol), é necessário seguir alguns passos simples. Primeiramente, é preciso instalar uma nova máquina com uma instância de InterSystems IRIS ou Cache. Em seguida, é necessário configurar os servidores de aplicação no servidor de dados e vice-versa, para que o ambas instâncias Intersystems possam se comunicar, podendo configurar e distinguir entre bancos de dados locais e remotos entre as instâncias.
• Banco de dados local: É o banco de dados que reside fisicamente na mesma máquina em que o banco IRIS/Caché está sendo executado, associado a uma instância InterSystmes, sendo acessado e gerenciado pela própria instância do IRIS no servidor local.
• Banco de dados remoto: Banco de dados que está localizado em um servidor separado, ou seja, em uma máquina diferente daquela onde o IRIS está sendo executado.
Em seguida, devemos configurar o E.C.P (novo servidor de aplicação) para utilizar os bancos de dados remotos, provenientes do servidor de dados principal (onde possui os seus apontamentos locais), com a possibilidade de organização do namespace apontar para os bancos de global (dados) e rotinas (código) remotos, seguindo a seguinte estrutura:

Ao configurar o Enterprise Cache Protocol (ECP) e o namespace no InterSystems IRIS com o uso de bancos de dados remotos, ocorre uma distribuição de tarefas e recursos entre o servidor de aplicação (onde está o ECP) e o servidor de dados (onde estão os bancos de dados locais).
#Rede de E.C.Ps:
No cenário de configuração de diversos E.C.P.s com bancos de dados remotos, os processos (JOBs), são executados no servidor de aplicação controlando o fluxo de trabalho e garantindo a escalabilidade e o balanceamento de carga.
No entanto, os dados e as rotinas são armazenados no servidor de dados, onde estão localizados os bancos de dados locais. Ele fornece o armazenamento centralizado para os dados e as rotinas utilizados pelos processos executados no servidor de aplicação.
Essa arquitetura distribuída permite que o processamento e o armazenamento sejam separados, essa configuração permite um ambiente distribuído eficiente, com recursos compartilhados.

Desta forma você pode escalar sua aplicação, para atender uma demanda que seu sistema necessita, sem a alteração de códigos de sua aplicação, a expansão do seu laboratório para outras regiões geográficas pode trazer desafios significativos em relação à capacidade e disponibilidade do sistema. No entanto, a utilização dos ECPs (Enterprise Cache Protocol) no InterSystems IRIS/Caché pode ser solução viável para lidar com essa situação. Ao implementar uma infraestrutura aprimorada e distribuída, é possível alcançar uma maior capacidade de processamento, melhorar o desempenho e garantir a disponibilidade dos resultados dos exames.
Os ECPs permitem uma distribuição eficiente da carga de trabalho, com processos sendo executados nos servidores de aplicação e os dados sendo armazenados nos servidores de dados.
Essa abordagem proporciona uma maior escalabilidade e balanceamento de carga, evitando quedas e lentidões causadas pelo aumento repentino na demanda. Além disso, a infraestrutura distribuída permite a centralização e o gerenciamento eficiente dos dados, facilitando a expansão para novas regiões sem comprometer a qualidade do serviço.
Ao adotar os ECPs no InterSystems IRIS/Caché, você estará preparando sua aplicação para suportar o crescimento e atender às demandas dos clientes em diferentes regiões geográficas. Essa solução proporciona maior escalabilidade e desempenho, permitindo que seu laboratório ofereça um serviço de qualidade, com resultados de exames entregues. Parabéns Davi! Genial, excelente seu artigo. Você vai longe. Parabéns pelo artigo!!! Great article and explanation Davi!! Congrats 🙂
Anúncio
Danusa Calixto · Maio 10, 2023
Olá Comunidade!
Se você não pode se juntar a nós no Encontro On-line sobre o 2º Concurso de Artigos Técnicos em Português da InterSystems poderá assistir à gravação que já está disponível no canal InterSystems Brasil Desenvolvedores do Youtube.
Neste encontro, os Engenheiros de Venda da InterSystems Brasil @Danusa.Ferreira e @Rochael.Ribeiro falaram sobre a InterSystems, a Comunidade de Desenvolvedores e o 2º Concurso de Artigos Técnicos em Português da InterSystems. Foi uma oportunidade de apresentar aos novos membros da comunidade um pouco da InterSystems e seus produtos, a Comunidade de Desenvolvedores e de esclarecer dúvidas sobre o concurso.
⏯ Encontro On-line sobre o 2º Concurso de Artigos Técnicos em Português da InterSystems
Junte-se a nós no canal InterSystems Brasil Desenvolvedores do Youtube também!
Artigo
Madu Gonçalves da Silva · Maio 27, 2023
O problema do grupo Pardini era mudar a plataforma de banco de dados "Nós construímos nosso negócio nele, então você pode imaginar como é arriscado mudar a plataforma de banco de dados abaixo dele. Ao escolhermos o InterSystems IRIS for Health conseguimos o crescimento das operações e de serviços com a velocidade que os negócios exigem", a companhia iniciou o desenvolvimento do sistema de informações laboratoriais (Lis) na plataforma de dados InterSystems Caché,
Enquanto eu estava pesquisando eu li em um site que eles poderiam ter optado por não fazer nenhuma alteração por que o site funcionava bem, mas o desenvolvimento do software Caché tinham sido baseados em uma alta demanda e cada vez mais difíceis de encontrar, Pardini reconheceu o risco para seu crescimento e o futuro do negocio, por isso mudou os dados da plataforma.
Por isso a empresa precisava de uma nova base tecnológica, eles disseram que o python seria melhor para facilitar a contatação dos talentos que precisavam.
O Sr.Marcos Simão, Sales Manager da InterSystems no Brasil, disse que "estamos diante de um grande caso de sucesso, já que esse foi um dos maiores desafios que tivemos em concorrer com outras tecnologias e sermos escolhidos para contribuir para o desenvolvimento de uma das maiores plantas de produção de resultados de exames do mundo".
Com isso vemos que a plataforma InterSystems IRIS ajudou a revolucionar a transformação digital no mercado laboratorial, eu escolhi essa informação por que achei interessante a InterSystems IRIS ter ajudado a revolucionar o mercado, pensando assim a InterSystems IRIS ajudou muito, e isso é tudo.