Pesquisar

Limpar filtro
Anúncio
Angelo Bruno Braga · Out. 6, 2022

Visite a InterSystems no TechCrunch Disrupt 2022

Visite a InterSystems no TechCrunch Disrupt 2022 - o maior evento para startups! Este ano vamos receber 4 mesas redondas no TechCrunch bem como um encontro de desenvolvedores em São Francisco em 19 de Outubro! No TechCrunch, convidamos você a participar de nossas mesas redondas para discutir os seguintes tópicos: Mesa Redonda: Entrando no Monolito da Saúde: Estratégias para trabalhar com Pagadores e Provedores Como você constrói uma startup de tecnologia de saúde que pode alcançar alto crescimento? O que as startups podem fazer para tornar suas tecnologias mais atraentes para os maiores players da área da saúde: pagadores e sistemas de saúde? Nesta sessão, discutiremos os pontos problemáticos de entrar na área da saúde, bem como estratégias para abrir as portas dessas organizações para pilotos e receita sustentável. Você sairá desta mesa redonda com uma lista de práticas recomendadas dos mais de 40 anos da InterSystems no setor de saúde.A sessão será realizada duas vezes: terça-feira 18/10 e quarta-feira às 10h30 - 11h00 Mesa Redonda: O que diabos é interoperabilidade, afinal? Em um mundo onde os dados geralmente estão disponíveis na ponta dos dedos de um codificador, por que é tão difícil se conectar a alguns clientes? Todo mundo não tem APIs que podemos usar para obter dados? O que é interoperabilidade, afinal? As tecnologias de nuvem e as malhas de dados podem resolver nossos problemas? Como nossas startups podem estar melhor preparadas para entrar nos ecossistemas de dados em setores como saúde, serviços financeiros ou cadeia de suprimentos? Esta mesa redonda fornecerá uma visão geral do que é interoperabilidade, por que essas indústrias estabelecidas interagem da maneira que fazem e estratégias para tornar esse processo menos doloroso à medida que você desenvolve seus produtos. A sessão será realizada duas vezes: terça-feira 18/10 e quarta-feira às 10h30 - 11h00 Palestrante: Neal Moawed, Head Global de Pesquisa Industrial, InterSystems Quem estará lá? Nos informe!
Artigo
Danusa Calixto · Out. 18, 2022

Machine Learning Sustentável para o Concurso de Interoperabilidade da InterSystems

Olá a todos, sou um estudante francês que acabou de chegar em Praga para um intercâmbio acadêmico no meu quinto ano da faculdade de engenharia e aqui está minha participação no concurso de interoperabilidade. Não tive muito tempo para programar desde a mudança da França para Praga e estou participando sozinho, então decidi criar um projeto que é mais um modelo do que um aplicativo. Queria participar já que minha área (Ciência de Dados e IA) não é geralmente associada à sustentabilidade, e o concurso era uma maneira de me expressar nesse tema importante que é a sustentabilidade e o meio ambiente. Como você sabe, a Inteligência Artificial está cada vez mais popular, com várias firmas conhecidas tentando seguir o movimento e vender ferramentas para criar, treinar e usar modelos de machine learning com facilidade. Tudo isso é prático e fácil, mas tem um custo, financeiro e também ambiental. Treinar modelos enormes repetidamente pode exigir muitos recursos e produzir uma grande quantidade de CO2. Os supercomputadores são executados durante vários dias, e o período e o tamanho dos modelos estão aumentando exponencialmente, tomando mais espaço do que nunca. Todo esse esforço para ter alguma melhoria no desempenho, que em alguns casos não é nem garantida. É claro que várias firmas precisam desse processo, em que até mesmo 0,1% de melhoria na precisão de um modelo pode salvar milhares de vidas. Por isso, esse modelo foi criado para usos mais comuns. No entanto, como tive a oportunidade de trabalhar com Processamento de Linguagem Natural (PLN) ou Classificação de Imagens, percebi que alguns modelos e ferramentas já são quase utilizáveis no estado em que se encontram e podem nos ajudar a economizar centenas de horas de treinamento e, consequentemente, emissões de CO2 e consumo de eletricidade. Por isso, decidi criar um modelo usando as tecnologias da InterSystems para desenvolver uma solução interoperável que resolvesse alguns problemas de sustentabilidade ao permitir facilmente que você, em alguns cliques, faça o download único de modelos pré-treinados da Internet, use de acordo com sua própria necessidade e, claro, ajuste esses modelos pré-treinados com novo conteúdo disponível na base de dados IRIS e adicione conteúdo ao modelo existente. Dessa forma, no modelo, estamos pegando um modelo PLN, testando e treinando com dados para criar cinco novos rótulos no modelo para classificar a avaliação da internet. Portanto, ao fazer isso, o resultado (se você tiver tempo e algum poder computacional) é um ótimo modelo que pode ser usado para prever a nota de avaliação da internet, que não tem custo e emite uma quantidade pequena de CO2. Consulte [o GitHub](https://github.com/LucasEnard/Contest-Sustainability) e a postagem do Open Exchange vinculada a este artigo. Ou veja o ReadMe aqui: # 1. Contest-Sustainability Este modelo usa as tecnologias da InterSystems para desenvolver uma solução interoperável e resolver alguns problemas de sustentabilidade ao permitir facilmente que você, em alguns cliques, faça o download único de modelos pré-treinados da Internet, use de acordo com sua própria necessidade e, claro, ajuste esses modelos pré-treinados com novo conteúdo disponível na base de dados IRIS e adicione conteúdo ao modelo existente. Neste exemplo, estamos pegando um modelo PLN, testando e treinando com dados para criar cinco novos rótulos no modelo para classificar a avaliação da internet. No processo, poupamos uma grande quantidade de recursos e emissões de CO2. Veja alguns modelos de exemplo que você pode testar: https://huggingface.co/gpt2 https://huggingface.co/Jean-Baptiste/camembert-ner https://huggingface.co/bert-base-uncased https://huggingface.co/facebook/detr-resnet-50 https://huggingface.co/facebook/detr-resnet-50-panoptic ÍNDICE: - [1. Contest-Sustainability](#1-contest-sustainability) - [2. Instalação](#2-installation) - [2.1. Início da produção](#21-starting-the-production) - [2.2. Acesso à produção](#22-access-the-production) - [2.3. Encerramento da produção](#23-closing-the-production) - [3. Como funciona](#3-how-it-works) - [4. API HuggingFace](#4-huggingface-api) - [5. Use qualquer modelo da Web](#5-use-any-model-from-the-web) - [5.1. PRIMEIRO EXEMPLO: VOCÊ TEM SEU PRÓPRIO MODELO](#51-first-case--you-have-your-own-model) - [5.2. SEGUNDO EXEMPLO: VOCÊ QUER FAZER O DOWNLOAD DE UM MODELO DO HUGGINGFACE](#52-second-case--you-want-to-download-a-model-from-huggingface) - [5.2.1. Configurações](#521-settings) - [5.2.2. Teste](#522-testing) - [6. Ajuste dos modelos](#6-fine-tune-the-models) - [6.1. Personalização do modelo](#61-tunning-the-model) - [6.1.1. Download do modelo](#611-download-the-model) - [6.1.2. Configurações](#612-settings) - [6.1.3. Treinamento do modelo](#613-train-the-model) - [6.1.4. Substituição do modelo](#614-replace-the-model) - [6.2. Uso do modelo](#62-use-the-model) - [6.2.1. Configurações](#621-settings) - [6.2.2. Teste do modelo](#622-test-the-model) - [7. Observação importante](#7-important-note) - [8. Solução de problemas](#8-troubleshooting) - [9. Conclusão](#9-conclusion) # 2. Instalação ## 2.1. Início da produção Na pasta "contest-sustainability", abra um terminal e insira: ``` docker-compose up ``` Na primeira vez, talvez leve alguns minutos para o build correto da imagem e a instalação de todos os módulos necessários para o Python. ## 2.2. Acesso à produção Seguindo este link, acesse a produção: [Acessar a produção](http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?RODUCTION=INFORMATION.QuickFixProduction) ## 2.3. Encerramento da produção ``` docker-compose down ``` # 3. Como funciona Por enquanto, alguns modelos talvez não funcionem com essa implementação, já que tudo é feito automaticamente, ou seja, não importa o modelo de entrada, tentaremos fazer com que funcione usando a biblioteca `transformers` `pipeline`. Pipeline é uma ferramenta poderosa da equipe HuggingFace que analisa a pasta em que o modelo foi transferido e entende qual biblioteca deve usar entre PyTorch, Keras, Tensorflow ou JAX. Em seguida, ela carrega esse modelo usando `AutoModel`. Então, ao inserir a tarefa, o pipeline sabe o que fazer com o modelo, tokenizer ou até extrator de características nessa pasta e gerencia a entrada automaticamente, tokeniza, processa, transfere para o modelo e retorna um resultado decodificado que podemos usar diretamente. # 4. API HuggingFace Algumas pessoas ou sistemas não conseguem fazer o download de modelos ou usá-los devido a restrições. Por isso, é possível usar a API HuggingFace e chamar alguns modelos diretamente através desse serviço. Veja uma explicação mais simples: Primeiro, você precisa iniciar a demonstração, usando o botão verde `Start`, ou use `Stop` e `Start` novamente para aplicar as mudanças nas configurações. Em seguida, ao clicar na operação `Python.HFOperation` escolhida e selecionar na guia à direita `action`, você pode aplicar `test` à demonstração. Na janela `test`, selecione: Tipo de solicitação: `Grongier.PEX.Message` Em `classname`, insira: ``` msg.HFRequest ``` Para `json`, veja um exemplo de uma chamada para GPT2: ``` { "api_url":"https://api-inference.huggingface.co/models/gpt2", "payload":"Can you please let us know more details about your ", "api_key":"----------------------" } ``` Agora, você pode clicar em `Visual Trace` para ver nos detalhes o que aconteceu e visualizar os registros. **OBSERVE** que você precisa ter uma chave de API do HuggingFace antes de usar esta Operação (as chaves de API são gratuitas, basta fazer a inscrição no HF) **OBSERVE** que você pode mudar o URL para testar outros modelos do HuggingFace. Talvez seja necessário mudar o payload. Veja este exemplo: ![envio de hf req](https://user-images.githubusercontent.com/77791586/182403526-0f6e97a0-2019-4d86-b1ae-38c56dfc8746.png) ![hf req](https://user-images.githubusercontent.com/77791586/182404662-b37b9489-c12c-47f8-98bd-18008c9a615e.jpg) ![hf resp](https://user-images.githubusercontent.com/77791586/182403515-7c6c2075-bdb6-46cd-9258-ac251844d591.png) # 5. Use qualquer modelo da Web Nesta seção, vamos ensinar você a usar praticamente qualquer modelo pré-treinado da internet, HuggingFace ou não, para poupar recursos ou simplesmente usar esses modelos dentro do IRIS. ## 5.1. PRIMEIRO EXEMPLO: VOCÊ TEM SEU PRÓPRIO MODELO Nesse caso, você precisa copiar e colar seu modelo, com config, tokenizer.json etc. dentro de uma pasta na pasta do modelo. Caminho: `src/model/yourmodelname/` Em seguida, você precisa criar uma nova operação, chame-a como quiser e acesse os parâmetros dessa operação. Então, acesse `settings` na guia à direita, na parte `Python` e na parte `%settings`. Aqui, você pode inserir ou modificar quaisquer parâmetros (não se esqueça de pressionar `apply` depois de terminar). Veja a configuração padrão para esse caso: %settings ``` name=yourmodelname task=text-generation ``` **OBSERVE** que qualquer configuração que não for `name` ou `model_url` entrará nas configurações PIPELINE. Agora você pode clicar duas vezes na operação e executar o `start`. Você precisa ver na parte `Log` a inicialização do modelo. Em seguida, criamos um `PIPELINE` utilizando transformers que usam o arquivo config na pasta como vimos antes. Para chamar esse pipeline, clique na operação e selecione na guia à direita `action`. Você pode aplicar `test` à demonstração. Na janela `test`, selecione: Tipo de solicitação: `Grongier.PEX.Message` Em `classname`, insira: ``` msg.MLRequest ``` Para `json`, você precisa inserir todos os argumentos necessários para o modelo. Veja um exemplo de uma chamada para GPT2: ``` { "text_inputs":"Unfortunately, the outcome", "max_length":100, "num_return_sequences":3 } ``` Clique em `Invoke Testing Service` e aguarde a operação do modelo. Veja este exemplo: ![envio de ml req](https://user-images.githubusercontent.com/77791586/182402707-13ca90d0-ad5a-4934-8923-a58fe821e00e.png) Agora, você pode clicar em `Visual Trace` para ver nos detalhes o que aconteceu e visualizar os registros. Veja este exemplo : ![ml req](https://user-images.githubusercontent.com/77791586/182402878-e34b64de-351c-49c3-affe-023cd885e04b.png) ![ml resp](https://user-images.githubusercontent.com/77791586/182402932-4afd14fe-5f57-4b03-b0a6-1c6b74474015.png) ## 5.2. SEGUNDO EXEMPLO: VOCÊ QUER FAZER O DOWNLOAD DE UM MODELO DO HUGGINGFACE Nesse caso, você precisa encontrar o URL do modelo no HuggingFace. Encontre um modelo que faça o que você busca e use-o sem gastar recursos utilizando as tecnologias da InterSystems. ### 5.2.1. Configurações Vá até os parâmetros do `Hugging`. Clique na operação `HuggingFace` escolhida e acesse `settings` na guia à direita, na parte `Python` e na parte `%settings`. Aqui, você pode inserir ou modificar quaisquer parâmetros (não se esqueça de pressionar `apply` depois de terminar). Veja um exemplo de configuração para alguns modelos que encontramos no HuggingFace: %settings para gpt2 ``` model_url=https://huggingface.co/gpt2 name=gpt2 task=text-generation ``` %settings para camembert-ner ``` name=camembert-ner model_url=https://huggingface.co/Jean-Baptiste/camembert-ner task=ner aggregation_strategy=simple ``` %settings para bert-base-uncased ``` name=bert-base-uncased model_url=https://huggingface.co/bert-base-uncased task=fill-mask ``` %settings para detr-resnet-50 ``` name=detr-resnet-50 model_url=https://huggingface.co/facebook/detr-resnet-50 task=object-detection ``` %settings para detr-resnet-50-protnic ``` name=detr-resnet-50-panoptic model_url=https://huggingface.co/facebook/detr-resnet-50-panoptic task=image-segmentation ``` **OBSERVE** que qualquer configuração que não for `name` ou `model_url` entrará nas configurações PIPELINE. Então, no segundo exemplo, o pipeline camembert-ner requer a especificação de `aggregation_strategy` e `task`, enquanto gpt2 requer apenas uma `task`. Veja este exemplo: ![configurações ml ope2](https://user-images.githubusercontent.com/77791586/182403258-c24efb77-2696-4462-ae71-9184667ac9e4.png) Agora você pode clicar duas vezes na operação e executar o `start`. **Você precisa ver na parte `Log` a inicialização e o download do modelo.** **OBSERVAÇÃO**: Você pode atualizar os registros a cada x segundos para ver o avanço dos downloads. ![dl em tempo real](https://user-images.githubusercontent.com/77791586/182403064-856724b5-876e-460e-a2b4-34eb63f44673.png) Em seguida, criamos um `PIPELINE` utilizando transformers que usam o arquivo config na pasta como vimos antes. ### 5.2.2. Teste Para chamar esse pipeline, clique na operação e selecione na guia à direita `action`. Você pode aplicar `test` à demonstração. Na janela `test`, selecione: Tipo de solicitação: `Grongier.PEX.Message` Em `classname`, insira: ``` msg.MLRequest ``` Para `json`, você precisa inserir todos os argumentos necessários para o modelo. Veja um exemplo de uma chamada para GPT2: ``` { "text_inputs":"George Washington lived", "max_length":30, "num_return_sequences":3 } ``` Aqui está um exemplo de uma chamada para Camembert-ner: ``` { "inputs":"George Washington lived in washington" } ``` Aqui está um exemplo de uma chamada para bert-base-uncased: ``` { "inputs":"George Washington lived in [MASK]." } ``` Aqui está um exemplo de uma chamada para detr-resnet-50 usando um URL online: ``` { "url":"http://images.cocodataset.org/val2017/000000039769.jpg" } ``` Aqui está um exemplo de uma chamada para detr-resnet-50-panoptic usando um URL como caminho: ``` { "url":"/irisdev/app/misc/000000039769.jpg" } ``` Clique em `Invoke Testing Service` e aguarde a operação do modelo. Agora, você pode clicar em `Visual Trace` para ver nos detalhes o que aconteceu e visualizar os registros. **OBSERVE** que, após fazer pela primeira vez o download de um modelo, a produção não fará o download novamente, mas usará os arquivos em cache encontrados em `src/model/TheModelName/`. Se alguns arquivos estiverem ausentes, a Produção fará o download novamente. Veja este exemplo: ![envio de ml req](https://user-images.githubusercontent.com/77791586/182402707-13ca90d0-ad5a-4934-8923-a58fe821e00e.png) ![ml req](https://user-images.githubusercontent.com/77791586/182402878-e34b64de-351c-49c3-affe-023cd885e04b.png) ![ml resp](https://user-images.githubusercontent.com/77791586/182402932-4afd14fe-5f57-4b03-b0a6-1c6b74474015.png) Veja este exemplo: ![envio de ml req](https://user-images.githubusercontent.com/77791586/183036076-f0cb9512-573b-4723-aa70-64f575c8f563.png) ![ml resp](https://user-images.githubusercontent.com/77791586/183036060-2a2328f7-535e-4046-9d2c-02d6fa666362.png) # 6. Ajuste dos modelos Nesta parte, tentamos ajustar um modelo para reaproveitá-lo e torná-lo ainda melhor sem usar muitos recursos. ## 6.1. Personalização do modelo ### 6.1.1. Download do modelo Para utilizar esse GitHub, você precisa ter um modelo do HuggingFace compatível com pipeline para usar e treinar, além de um conjunto de dados para treinar seu modelo. Para ajudar, oferecemos a possibilidade de usar script Python em `src/utils/download_bert.py`. Ele fará o download para você do modelo `"https://huggingface.co/bert-base-cased"` e colocará dentro da pasta `src/model/bert-base-cased` se já não estiver lá. Além disso, também disponibilizamos um conjunto de dados para treinar o modelo bert. Esse conjunto de dados já estava carregado dentro da base de dados IRIS e nenhuma ação adicional é necessária se você quiser usá-lo. (Para acessá-lo, vá até a parte SQL do portal, o namespace da base de dados iris e depois a tabela de revisão) Para usar o script, se você estiver no contêiner, pode executá-lo sem se preocupar. Se você estiver no local, talvez seja necessário aplicar `pip3 install requests` e `pip3 install beautifulsoup4` Veja o resultado: ![Download do resultado](https://user-images.githubusercontent.com/77791586/185119729-defa55d2-7d11-408e-b57e-2c00eb7823d8.png) ### 6.1.2. Configurações Se você quiser usar o modelo bert-base-cased e já fez o download usando o script, não é necessário adicionar mais nada às configurações, e você pode avançar para o [treinamento do modelo](#43-train-the-model). Se você quiser treinar seu próprio modelo, clique em `Python.TuningOperation` e selecione `Settings` na guia à direita, depois `Python` e, na parte `%settings`, insira o caminho do modelo, o nome da pasta e o número do rótulo que você quer para o treinamento. Exemplo: ``` path=/irisdev/app/src/model/ model_name=bert-base-cased num_labels=5 ``` ### 6.1.3. Treinamento do modelo Para treinar o modelo, você precisa acessar `Production` neste link: ``` http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?PRODUCTION=iris.Production ``` E conectar usando: `SuperUser` como nome de usuário e `SYS` como senha. Para chamar o treinamento, clique em `Python.TuningOperation` e selecione na guia à direita `Actions`. Você pode aplicar `Test` à demonstração. Na janela de teste, selecione: Tipo de solicitação: Grongier.PEX.Message Em classname, insira: ``` msg.TrainRequest ``` Para json, você precisa inserir todos os argumentos necessários para o treinamento. Aqui está um exemplo que treina com as primeiras 20 linhas (não é um treinamento adequado, mas é rápido): ``` { "columns":"ReviewLabel,ReviewText", "table":"iris.Review", "limit":20, "p_of_train":0.8, "output_dir":"/irisdev/app/src/model/checkpoints", "evaluation_strategy":"steps", "learning_rate":0.01, "num_train_epochs":1 } ``` Veja este exemplo: ![Pedido de treinamento](https://user-images.githubusercontent.com/77791586/185121527-696becaa-8b3e-4535-8156-1d40423e622b.png) Como pode ver, é preciso inserir - a `table` usada. - as `columns` usadas (primeiro é `label` e segundo é `input` para a tokenização) - o `limit` de linhas compreendidas (se você não especificar um número de linhas, todos os dados serão usados) - `p_of_train`, a porcentagem de dados de treinamento usados do conjunto de dados, e `1 - p_of_train`, a porcentagem de dados de teste usados do conjunto de dados. Depois disso, os outros parâmetros cabem a você e podem variar de acordo com os parâmetros `https://huggingface.co/docs/transformers/main_classes/trainer`. **OBSERVE** que o tamanho do lote para treinamento e teste será calculado automaticamente se não for inserido na solicitação. (É o maior divisor do número de linhas que é menor do que a raiz quadrada do número de linhas e do que 32) Clique em "Invoke Testing Service" e feche a janela de teste sem esperar. Agora acesse `Python.TuningOperation` e selecione na guia à direita `log`. Aqui você pode ver o avanço do treinamento e das avaliações. Após a conclusão, você verá um log dizendo que o novo modelo foi salvo em uma pasta temporária. Agora acesse `Python.TuningOperation`, selecione na guia à direita `message` e clique no cabeçalho do último item para selecioná-lo. Aqui você pode ver o avanço do treinamento e das avaliações e, ao final, é possível acessar as Métricas do modelo novo e antigo para comparação. ### 6.1.4. Substituição do modelo **Se você quiser manter o modelo antigo**, nenhuma ação é necessária: o antigo permanecerá na pasta não temporária e ainda será carregado para treinamento adicional. **Se você quiser manter o modelo novo**, clique em `Python.TuningOperation`, selecione na guia à direita `Actions` e teste. Na janela de teste, selecione: Tipo de solicitação: Grongier.PEX.Message Em classname, insira: ``` msg.OverrideRequest ``` Para json, chaves vazias: ``` {} ``` Clique em Invoke Testing Service e veja a mensagem de resposta. O novo modelo foi movido da pasta temporária para a não temporária. ## 6.2. Uso do modelo Treinar um modelo é interessante, mas você também pode testá-lo. ### 6.2.1. Configurações Se você quiser usar o modelo bert-base-cased e já fez o download usando o script, não é necessário adicionar mais nada às configurações, e você pode avançar para o [teste do modelo](#52-test-the-model). Se você quiser treinar seu próprio modelo, clique em `Python.TuningOperation` e selecione `Settings` na guia à direita, depois `Python` e, na parte `%settings`, insira o parâmetro para adicionar ao pipeline. ### 6.2.2. Teste do modelo Para testar o modelo, você precisa acessar `Production` neste link: ``` http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?PRODUCTION=iris.Production ``` E conectar usando: `SuperUser` como nome de usuário e `SYS` como senha. Para chamar o teste, clique em `Python.MLOperation` e selecione na guia à direita `Actions`. Você pode aplicar `Test` à demonstração. Na janela de teste, selecione: Tipo de solicitação: Grongier.PEX.Message Em classname, insira: ``` msg.MLRequest ``` Para json, você precisa inserir todos os argumentos necessários para o modelo funcionar ``` { "inputs":"This was a really bad experience" } ``` Pressione `Call test services` e veja o resultado. # 7. Observação importante O ajuste fino de modelos pode exigir MUITO tempo e recursos, mas sempre consumirá menos recursos do que o treinamento de um modelo do zero. Você pode ver que já está levando muito tempo e poder computacional para o ajuste fino do modelo, então imagine o custo se tivesse que treiná-lo do zero e começar de novo várias vezes para obter resultados ideais. # 8. Solução de problemas Se você tiver problemas, a leitura é o primeiro conselho que podemos dar a você. A maioria dos erros são facilmente compreendidos apenas ao ler os logs, pois quase todos os erros são capturados por um try/catch e registrados. Se você precisar instalar um novo módulo ou dependência do Python, abra um terminal dentro do contêiner e digite, por exemplo: "pip install new-module" Há várias formas de abrir um terminal, - Se você usa os plugins da InterSystems, pode clicar na barra abaixo no VSCode, que se parece com `docker:iris:52795[IRISAPP]`, e selecionar `Open Shell in Docker`. - Em qualquer terminal local, digite: `docker-compose exec -it iris bash` - No Docker-Desktop, encontre o contêiner IRIS e clique em `Open in terminal` Alguns modelos talvez exijam algumas alterações no pipeline ou nas configurações, por exemplo. É sua responsabilidade adicionar as informações corretas nas configurações e na solicitação. # 9. Conclusão Daqui em diante, você poderá usar modelos de que talvez precise no IRIS e ajustá-los como desejar. Esse modelo precisa ser modificado para atender às suas necessidades e foi criado como base para qualquer projeto de IA e IRIS que considere a sustentabilidade e interoperabilidade. Por falta de tempo, não consegui adicionar uma API que usasse um Diretor para se comunicar diretamente com a produção e permitir que os usuários fizessem solicitações aos modelos. No entanto, se você ainda tiver interesse em uma API IRIS usando esse módulo do Python, confira [meu GitHub](https://github.com/LucasEnard/) ou acesse [meu exemplo de API no Python para IRIS](https://github.com/LucasEnard/iris-python-flask-api-template). Link para meu perfil do DC: https://community.intersystems.com/user/lucas-enard-0
Anúncio
Danusa Calixto · Nov. 11, 2022

InterSystems <> Encontro de desenvolvedores Mirantis em Kubernetes - Boston, USA

Olá Desenvolvedores! A InterSystems continua a série de eventos do Developer Meetup. A próxima acontecerá no dia 17 de novembro, das 19h30 às 22h (horário de São Paulo), em Boston, MA, EUA.Neste encontro, você aprenderá mais sobre o Kubernetes, a ferramenta Mirantis Lens e como executar o Lens com o InterSystems IRIS IKO (InterSystems Kubernetes Operator). Serão fornecidos alimentos e bebidas. > Register here < Agenda:👉 "InterSystems Overview and Developer Resources" por @Dean.Andrews2971, Chefe de Relações com Desenvolvedores, InterSystems👉 "Mirantis Overview and Developer Resources" por Tommy Decker, Executivo de Contas, Mirantis👉 "Scaling Stateful Workloads in Kubernetes" por @Robert.Kuszewski, Gerente de Produto - Experiência do Desenvolvedor, InterSystems👉 "Demo of Lens with InterSystems IRIS IKO (InterSystems Kubernetes Operator)" por Toby Goodlock, Arquiteto de Soluções, Mirantis ⏱ Data and Hora: 17 de Novembro, de 19:30 hrs - 22 hrs (São Paulo)📍 Local: Democracy Brewing, Boston
Anúncio
Angelo Bruno Braga · Dez. 13, 2022

[Vídeo] Usando Variáveis ​​no InterSystems ObjectScript

Olá Desenvolvedores, Divirtam-se assistindo o novo vídeo no YouTube dos Desenvolvedores InterSystems: ⏯ Usando Variáveis ​​no InterSystems ObjectScript Aprenda sobre os diferentes tipos de variáveis ​​no InterSystems ObjectScript e para que são usados, e como atribuir valores aos tipos de variáveis ​​mais comuns. Você também verá como a precedência do operador funciona. Aproveite e fiquem ligados! 👍
Anúncio
Danusa Calixto · Abr. 5, 2023

Top Videos para Desenvolvedores InterSystems em Março 2023

Olá Comunidade, Aqui está um resumo dos vídeos da Comunidade de Desenvolvedores no canal de Desenvolvedores InterSystems no YouTube em Março de 2023. Videos Novos № Video Visualizações 1 Passwordless mode for development with InterSystems IRIS 1168 2 HL7 FHIR What is it, Really 292 3 #5 Community Roundtable: AI / ML 107 4 InterSystems Deployment Options 97 5 Git Source Control for InterSystems IRIS Interoperability with Docker and VSCode 92 6 Querying 6 Terabytes of Protected Health Information at Northwell 65 7 The OWASP Top 10 & InterSystems IRIS Application Development 63 8 Working with %QUERY 60 9 Achieving Single Sign-On: External Providers, HealthShare Unified Care Record, Clinical Viewer 59 10 What is PEX 50 11 Query as %Query or Query based on ObjectScript 23 Top 10 Videos por Visualizações № Video Visualizações 1 The Future of Care Begins with InterSystems and FHIR 12587 2 Message Flow in an Integration Solution 9076 3 Welcome to the InterSystems Ideas! 8086 4 Using the Business Process Designer in InterSystems IRIS 5682 5 Integration Features of InterSystems IRIS 2788 6 Building Health IT Apps with Artificial Intelligence 2408 7 Passwordless mode for development with InterSystems IRIS 1168 8 What is Embedded Python 540 9 Using Python to Connect to InterSystems IRIS 527 10 Active Directory Integration with LDAP 520 Fique ligado com o YouTube de Desenvolvedores InterSystems!
Artigo
Danusa Calixto · Maio 2, 2023

Configurando o VS Code para trabalhar com as tecnologias da InterSystems

Oi, pessoal!   Neste artigo, quero revisar as extensões do VS Code que uso para trabalhar com a InterSystems e que facilitam muito meu trabalho. Tenho certeza de que este artigo será útil para quem está apenas começando a jornada de aprendizado das tecnologias da InterSystems. No entanto, também espero que este artigo seja útil para desenvolvedores com vários anos de experiências e abra novas possibilidades de uso do VS Code para desenvolvimento. Recomendo que todo mundo que trabalhe com a InterSystems tenha essas extensões instaladas e, neste artigo, quero mostrar como usar algumas delas. Você pode ler mais sobre a funcionalidade e o uso de cada extensão na seção "Extensions" do VS Code, onde também é possível baixar, atualizar e desinstalar extensões:  Após a instalação, os ícones da extensão aparecem na lateral ou na parte inferior do editor de código. **_Extensões obrigatórias_** Acho que faz sentido começar nossa jornada com estas extensões básicas, necessárias para trabalhar com a InterSystems no VS Code. A Extensão InterSystems Server Manager para o VS Code ajuda a especificar conexões do servidor. A Extensão InterSystems ObjectScript para o VS Code ajuda a escrever e compilar arquivos de código. A Extensão InterSystems Language Server Extension para o VS Code oferece uma implementação de servidor de idioma para o ObjectScript, permitindo coloração, preenchimento de código, linting e muito mais. Juntas, essas extensões oferecem aos desenvolvedores uma maneira simplificada de criar, testar e implantar aplicativos de pilha completa criados na InterSystems. **Extensões adicionais** Além das extensões necessárias básicas, o VS Code oferece várias outras extensões. Você pode escrever código sem elas, mas o desenvolvimento fica mais eficiente ao usar qualquer outra pilha de tecnologia, incluindo as tecnologias da InterSystems. Vou descrever algumas que parecem ser essenciais. A expansão Docker torna o gerenciamento de projetos dockerizados um pouco mais fácil. Você pode gerar automaticamente um Dockerfile para projetos, gerar imagens e gerenciar os contêineres em execução.   SQLTools Driver para o InterSystems IRIS e SqlTools - são duas extensões muito úteis que trabalham em conjunto. Com elas, você pode criar e executar as consultas SQL de banco de dados no VS Code sem acessar o portal de gerenciamento e realizar consultas SQL para interagir com os índices de conteúdo lá.   Atualmente, é difícil imaginar o desenvolvimento de um projeto sem o controle de versões. Geralmente, é o Git que faz isso, e o Visual Studio Code oferece suporte mínimo para ele. Se isso não for suficiente para você, confira as duas extensões a seguir:  Git Graph - mostra branches e os status deles de maneira esquemática. Isso é útil quando você precisa entender rapidamente os status dos branches, por exemplo, quando eles são mesclados. Git Lens - permite ver o histórico das alterações na linha destacada e a autoria.  É indispensável para o trabalho em equipe! EditorConfig - uma extensão para melhorar a aparência do código, exige a escrita no arquivo .editorconfig, em que você pode especificar qualquer configuração de formatação do código. É importante ressaltar que, por padrão, essa funcionalidade pode ser implementada pela extensão InterSystems Language Server para o VS Code. Para aplicar a formatação de código ObjectScript padrão no VS Code, você precisa usar a combinação de teclas: Windows - [Shift + Alt + F], Mac - [Shift + Option + F], Ubuntu - [Ctrl + Shift + I]. No entanto, ao usar o arquivo .editorconfig, você pode especificar a própria formatação de código para arquivos diferentes dentro do projeto. Neste artigo, analisei apenas as extensões que já usei. Agradeceria se você reservasse um tempo para escrever nos comentários o que mais pode ser usado para facilitar o desenvolvimento. Então, este artigo será ainda mais útil!
Artigo
Fabiano Sanches · Abr. 26, 2023

Receba Alertas, Avisos e Novidades sobre Produtos diretamente da InterSystems

Mantenha contato com a InterSystems e receba alertas, avisos e outras novidades sobre os produtos rapidamente. O processo é realmente simples: Clique neste link: https://www.intersystems.com/support/product-alerts-advisories/ Preencha o formulário com suas informações de contato e Está tudo pronto! Como você pode ver, leva menos de um minuto pra ficar informado sobre as novidades!
Artigo
Marcelo Jerônimo Antônio · Maio 13, 2023

Como a InterSystems revolucionou a estratégia de negocio da empresa Fresh Market

A plataforma InterSystems IRIS solucionou um problema importante em um plano de negócio da empresa de distribuição de alimentos Fresh Market. A empresa estava enfrentando um problema de estoque, que muitas vezes levava à perda de vendas e insatisfação do cliente. A empresa estava sofrendo com a falta de informações precisas e atualizadas em seu sistema de gerenciamento de estoque, o que levava a erros na previsão de demanda. Para resolver este problema, a Fresh Market implementou a plataforma InterSystems IRIS como sua solução de gerenciamento de dados. A plataforma ofereceu suporte a uma ampla variedade de fontes de dados, incluindo dados de vendas, popularidade de produtos, cotações de preços, entre outros. O sistema também forneceu insights em tempo real e análises preditivas de alta qualidade por meio do uso de machine learning. Graças a esta nova plataforma, a Fresh Market foi capaz de desenvolver previsões de demanda muito mais precisas. As equipes de gerenciamento de estoque agora têm acesso a informações atualizadas em tempo real sobre seus estoques e vendas, permitindo-lhes fazer pedidos precisos e oportunamente para evitar a falta de estoque e as perdas em vendas. As análises de dados em tempo real e as previsões preditivas também permitem que a empresa tome decisões mais inteligentes e informadas e ajuste sua estratégia de vendas para atender às necessidades do mercado.
Anúncio
Danusa Calixto · Jun. 26, 2023

Vencedores do 2º Concurso de Artigos Técnicos em Português da InterSystems

Olá Comunidade! É com imensa satisfação que anunciamos os vencedores do 🏆 2º Concurso de Artigos Técnicos em Português da InterSystems 🏆 Agradecemos a todos os participantes por seu empenho e contribuição à nossa comunidade. Temos ótimos novos artigos para ler e enriquecer nosso conhecimento. Vencedores da Premiação de Especialista 🥇 1º lugar: Manutenção preditiva notificada de equipamentos médicos utilizando as tecnologias InterSystems IRIS Data Platform, interoperabilidade e SAM de @Ana.Dascenzio e @Luana.Machado 🥈 2º lugar: Veremos a seguir como o InterSystems IRIS aliado com Machine Learning pode transformar para melhor a educação do Brasil e do mundo de @Miqueias.Santos 🥉 3º lugar: TECNOLOGIAS INTERSYSTEMS E IOT COMO APOIO A MÉTRICAS E MONITORAMENTO DE TEMPERATURA EM REFRIGERADORES DE LABORATÓRIOS DE SAÚDE de @Thais.Pinheiro Vencedor da Premiação da Comunidade de Desenvolvedores O artigo com o maior número de likes foi: TECNOLOGIAS INTERSYSTEMS E IOT COMO APOIO A MÉTRICAS E MONITORAMENTO DE TEMPERATURA EM REFRIGERADORES DE LABORATÓRIOS DE SAÚDE de @Thais.Pinheiro, que conquistou 2 premiações neste concurso. Parabéns @Thais.Pinheiro 👏🏽 🚨 Premiação Extra!!!! Temos o prazer de anunciar que a Comunidade de Desenvolvedores também está premiando por 2 novas categorias, de forma extraordinária: 📌 Publicação de mais de um artigo concorrente 📌 Artigo concorrente publicado também em outra comunidade/idioma Os prêmios são: 🎁 Uma caixa de som Xiami – para cada vencedor 🎁 Um estojo organizador de cabos – prêmio adicional para o participante que alcançou as 2 categorias. A comunidade de desenvolvedores reconhece a contribuição de vocês e os parabeniza pela iniciativa e criatividade em fazer algo além do que estava descrito nos requisitos do concurso. E os vencedores das novas categorias são: por Publicação de mais de um artigo concorrente: @Cristiano.Silva e @Marcelo.JerônimoAntônio por Artigo concorrente publicado também em outra comunidade/idioma: @Cristiano.Silva, @Heloisa.Paiva e @Robert.Cemper1003 Continuem ligados na comunidade e participando. A contribuição de cada um de vocês é importante para manter a nossa comunidade ativa e auxiliando no conhecimento e no dia a dia de vocês. Parabéns a todos, e até breve! 😉 Parabéns aos vencedores!!! Oba!!! Obrigado!!! Segunda vez que fico em segundo lugar este mês, outro concurso que participei numa plataforma de cursos de TI, para escrever artigo também, fiquei em segundo lugar também, kkkkkk. Pena que não da pra receber o prêmio em dinheiro, pois queria muito ter um computador melhor, meu atual é um pentium 4 RAM DDR1 onde instalei uma distribuição linux baseada no debian chamada antiX, instalei o core e fui adicionando só o necessário, bem limitado. Muito Obrigada @Danusa.Ferreira! Muito obrigada!! Estamos muito felizes com a conquista 😍 Parabéns meninas. Vocês arrasaram! 👏 Nossa! Que legal 👍 Parabéns! 🥳 queria agradecer muito a todos que participaram do evento!!!!! foi 10 !!!!! Artigo concorrente publicado também em outra comunidade/idioma You may have missed my translation ofhttps://pt.community.intersystems.com/post/um-jupyter-notebook-vergine https://community.intersystems.com/post/virgin-jupyter-notebook>>>> Go to the original post written by @Robert Cemper Muito obrigada! Olá Robert, Lamento o ocorrido. A sua tradução será considerada. Obrigada por nos alertar. Parabéns a todos participantes!! 👍 @Danusa.Ferreira Você consegue ver a resposta que te mandei la no privado? Porque aqui sempre fica como não visto! Obigado à todos. Foi um grande prazer em participar do concurso. Vamos continuar publicando e fazer a comunidade em Português crescer cada vez mais. Isso aí Cristiano! Parabéns! 👏🏽 e Obrigada pela contribuição. 😉
Anúncio
Danusa Calixto · Abr. 17

[Vídeo] Integrando DBT e Apache Airflow com o InterSystems IRIS

Olá Comunidade, Aproveite o novo vídeo no canal InterSystems Developers YouTube: ⏯ Integrando DBT e Apache Airflow com o InterSystems IRIS@ Global Summit 2024 Esta sessão é o seu guia para configurar pipelines de dados eficientes e gerenciáveis ​​que economizam tempo e aumentam a confiabilidade. Mostraremos como unir o poder de processamento do DBT, a capacidade de agendamento do Apache Airflow e os robustos recursos de gerenciamento de dados do InterSystems IRIS. Ao final desta sessão, você terá uma compreensão clara de como implementar essas ferramentas em harmonia, tornando seus fluxos de trabalho de dados mais fluidos e eficazes. Isso é perfeito para quem busca aprimorar suas operações de dados com soluções simples e eficazes. Apresentadores:🗣 @Reven.Singh, Sales Engineer, InterSystems 🗣 @Hermanus.Bruwer, Sales Engineer, InterSystems Quer aprender algo novo? Assista ao vídeo e inscreva-se para mais!
Anúncio
Danusa Calixto · Maio 11, 2023

Documentação para InterSystems Caché e InterSystems Ensemble versões anteriores a 2017.1 estarão disponíveis somente em formato PDF

A partir de 16 de Maio, a documentação para as versões do InterSystems Caché® e InterSystems Ensemble® anteriores a 2017.1 estarão disponíveis somente em formato PDF no site da documentação da InterSystems. Instancias locais destas versões continuarão apresentando o conteúdo dinamicamente.
Artigo
Nikolay Solovyev · Nov. 9, 2020

Lançamento do Gerenciador de Pacotes ZPM InterSystems 0.2.8

Nós lançamos uma nova versão do ZPM (Gerenciador de Pacotes) Novidades desta nova versão: 1) Suporte de Interoperabilidade - Suporte a dtl, bpl, lut, esd, x12 no module.xml Agora é permitido se referir a arquivos DTL e BPL. O ZPM armazena e os utiliza como CLS. <Resource Name="ResourceTest.TestDTL.dtl"/> <Resource Name="ResourceTest.TestBPL.bpl"/> Outros componentes de interoperabilidade como LUT, ESD, X12 devem estar em formato XML com extensão .xml e são esperados na pasta com nome i14y (forma reduzida para interoperabilidade) <Resource Name="Test_HIPAA_5010.X12"/> <Resource Name="hl7_2.5.LUT"/> 2) Suporte a arquivos DFI: Permite múltiplas formas de definição para recursos DFI:Pelo Nome Completo: <Resource Name="Sample Operational Reports-Auditing Overview.dashboard.DFI"/> Caracteres-coringa com o nome da pasta: <Resource Name="Sample Operational Reports-*.DFI"/> Apenas pela extensão: <Resource Name="*.DFI"/> Limitado por palavras-chave, usado apenas durante a exportação: <Resource Name="*.DFI" Keywords="myapp"/>
Artigo
Yuri Marx Pereira Gomes · Mar. 8, 2021

Dia 1: Desenvolvimento com Intersystems Objects e SQL

Eu estou participando no Desenvolvendo com Objetos InterSystems e SQL com Joel Solon, o curso é muito legal e eu vou compartilhar algumas dicas com vocês que eu peguei durante o treinamento. Dicas apresentadas no dia 1: 1. InterSystems IRIS unifica: banco de dados InterSystems IRIS (Caché), Interoperabilidade IRIS (Ensemble), inteligência de negócios IRIS (DeepSee) e Análise de texto IRIS (iKnow). 2. IRIS é multimodelo: objeto, relacional, documento e multidimensional 3. Interoperável: acesso nativo de Java, .NET, outras linguagens, como ObjectScript; Acesso a dados ODBC e JDBC, acesso ao serviço SOAP / REST; mensagem dirigida com roteamento de dados, transformações e fluxos de trabalho; Arquitetura SOA com ESB. 4. IRIS é transacional e analítico. 5. O IRIS escala horizontalmente com ECP (distribuído para volume do usuário) e fragmentação para volume de dados. 6. Instalação em containers públicos ou privados com Gerenciamento Cloud. 7. Opções de IDE para desenvolver: VSCode (mais popular), Studio (somente Windows) Atelier (descontinuado). 8. Ferramenta Terminal para comandos CLI. 9. Portal de Administração para comandos via browser. 10. IRIS é multiplataforma (UNIX, Linux, Windows) com a opção de docker para Linux. 11. Possui lançamentos anuais 20 ##. 1 (EM - Manutenção Estendida) e lançamentos Trimestrais (CD - entrega contínua). 12. IRIS é sensível a maiúsculas e minúsculas e a CamelCase é uma boa prática. 13. As classes são recipientes para métodos e propriedades. 14. Métodos realizam tarefas específicas e não são permitidas sobrecarga de método (dois métodos com o mesmo nome em uma classe). 15. Existem 2 tipos de métodos: ClassMethod (ação não associada à instância do objeto) e Method (ação associada à instância do objeto). 16. Use ##class() para executar métodos de classe e criar uma instância (com%New ou %OpenId) para executar métodos. 17. O tipo padrão para os argumentos do método é %String. 18. A notação "..." indica argumentos variáveis. Exemplo do método (a As %String, b ... as %String) como %Status. 19. Quando você passa argumentos como chamador de método: 1. Se você usar . você passa como referência; 2. Os argumentos são opcionais e você pode usar $data() para testar como o método que chama passou o argumento; 20. String é o tipo padrão para as variáveis. 21. ObjectScript suporta tipos dinâmicos. 22. no ObjectScript 0 é para falso e outros valores são verdadeiros. 23. Pacotes permitem que você organize classes em pastas. 24. Se você usar import em uma classe ou método, não precisa fazer referência ao nome de uma classe. 25. Classes persistentes (armazenadas no disco) estendem %Persistente. 26. As classes persistentes têm propriedades para persistir os atributos/valores da classe. 27. Cada classe persistente possui um número de ID único imutável. PS 1. Eu resgatei este curso de 5 dias (se você pagar $2.800) ou 40.000 pontos.(https://globalmasters.intersystems.com/rewards/34/reward_redemptions/new) PS 2: Joel Solon é um excelente instrutor (grandes dicas para certificação IRIS). PS 3: O material do curso é excelente e os recursos, ferramentas e suporte são fantásticos. Amanhã irei postar o resumo do dia 2.
Artigo
Nikolay Solovyev · Nov. 23, 2021

Lançamento do Gerenciador de Pacotes InterSystems ZPM 0.3.2

Um novo lançamento do ZPM foi publicado - ZPM 0.3.2. O que há de novo nesta versão: Várias alterações no comando output da ajuda Alterações em cores nas saídas Adicionada a habilidade de adicionar mais tipos de repositórios Adicionada a habilidade de especificar uma mensagem pós instalação, com a tag AfterInstallMessage no module.xml Adicionada a variável ${webroot}, que se refere à url com host e porta onde o servidor web interno está disponível. Corrigido o problema que ocorria durante a instalação no caso de não serem especificados nenhum módulo (problema #243) Corrigido o problema com o recurso FileCopy em maiúsculas Algumas outras pequenas correções
Anúncio
Angelo Bruno Braga · Out. 4, 2022

Lançamento do Gerenciador de Pacotes InterSystems ZPM 0.4.0

Uma nova versão do ZPM foi publicada, a 0.4.0 Novidades da nova versão Adicionado o suporte a pacotes Implantados, publicação e instalação Suporte a múltiplos servidores de registro, ex. servidores de registro públicos de comunidades, privados corporativos e outros, incluindo código embutido Python Habilidade de exibição de todas as versões e pacotes de origem na busca Corrigido o problema de pacotes com código pré carregado Expandido o limite de tamanho de argumentos na chamada Múltiplos registros Agora é possível definir mais de um registro em sua instância e assim, você poderá utilizar registros públicos de comunidades, de teste ou privados corporativos ao mesmo tempo. Basta utilizar outro nome para o registro Por exemplo, podemos adicionar um registro de teste: zpm:USER>repo -n test -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> zpm:USER>repo -list test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> registry Source: https://pm.community.intersystems.com Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No E além desta alteração, agora é possível redefinir propriedades para registros apenas enviando o nome de um registro existente. Por exemplo, atualizando apenas a senha: zpm:USER>repo -n test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> Pacotes Implantados A partir da versão 0.4.0, o ZPM passou a suportar pacotes implantados. O reduzido module.xml pode parecer como o exibido abaixo, o importante aqui é a flag Deploy="true" <?xml version="1.0" encoding="UTF-8"?> <Export generator="Cache" version="25"> <Document name="demo.ZPM"> <Module> <Name>demo</Name> <Version>1.0.0</Version> <Description>DEMO.</Description> <Keywords>demo</Keywords> <SourcesRoot>src</SourcesRoot> <Resource Name="Sample.Demo.PKG" Deploy="true"/> </Module> </Document> </Export> O processo de implantação é o mesmo que o anterior, você deve utilizar o comando load para carregar o módulo em modo desenvolvimento (por padrão) zpm "load /home/irisowner/myproject" Neste caso, o zpm irá carregar o código fonte e ignorar a flag Deploy devido ao Modo Desenvolvimento e assim, você poderá alterar o código. Publicando Para publicar um módulo Implantado você deverá utilizar seu próprio registro ou poderá utilizar registros de teste de comunidades para testes. zpm:USER>publish demo -DPublishTo=test [USER|demo] PrepareDeploy START [USER-PACKAGE-429287|demo] PrepareDeploy SUCCESS [USER-PACKAGE-429287|demo] Reload START (/home/irisowner/zpm/packages/demo/) [USER-PACKAGE-429287|demo] Reload SUCCESS [demo] Module object refreshed. [USER-PACKAGE-429287|demo] Validate START [USER-PACKAGE-429287|demo] Validate SUCCESS [USER-PACKAGE-429287|demo] Compile START [USER-PACKAGE-429287|demo] Compile SUCCESS [USER-PACKAGE-429287|demo] Activate START [USER-PACKAGE-429287|demo] Configure START [USER-PACKAGE-429287|demo] Configure SUCCESS [USER-PACKAGE-429287|demo] Activate SUCCESS [USER-PACKAGE-429287|demo] Package START [USER-PACKAGE-429287|demo] MakeDeployed START [USER-PACKAGE-429287|demo] MakeDeployed SUCCESS [USER|demo] Package SUCCESS [USER|demo] Register START [USER|demo] Register SUCCESS [USER|demo] Publish START [USER|demo] Publish SUCCESS Quando o ZPM verifica que o pacote utiliza a flag Deploy=true para alguns recursos, para propósitos de empacotamento e publicação, ele cria um novo namespace temporário, carrega o pacote lá, implanta o código e empacota o que resta sem o código-fonte original, onde não deveria estar. O log exibe cada passo e o namespace onde ele foi executado. Um parâmetro adicional -DPublishTo=test, define o nome do registro onde se publicar o pacote. E se você desejar, você poderá alterar o número da versão também -DNewVersion=1.0.0 Instalação de pacotes Implantados A instalação é feita como usualmente , mas você não poderá instalar o pacote implantado, ou qualquer pacote no modo de produção, se já tiver o pacote instalado no modo de desenvolvimento. zpm:USER>install demo ERROR! Cannot install 'demo' over previously installed in developer mode Você precisaria desinstalar o pacote instalado no modo de desenvolvimento ou usar um namespace ou instância limpa para ele. É importante lembrar que os pacotes implantados não possuem código-fonte, portanto, o empacotamento deve ser concluído em uma versão específica do IRIS que suporte o desenvolvedor. O registro suporta várias versões de plataforma para uma versão específica do pacote, portanto, durante a instalação, o zpm solicitará a versão para a plataforma. Para comparar a versão, ele usa apenas a maior e a menor parte da versão IRIS, por exemplo. 2022.2, 2021.1. Quando você tentar instalar o pacote em uma versão não suportada do IRIS, receberá o erro zpm:USER>install test/demo ERROR! Deployed package 'demo' 1.0.0 not supported on this platform 2022.1. Instalação com sucesso zpm:USER>install test/demo [USER|demo] Reload START (/usr/irissys/mgr/.modules/USER/demo/1.0.0/) [USER|demo] Reload SUCCESS [demo] Module object refreshed. [USER|demo] Validate START [USER|demo] Validate SUCCESS [USER|demo] Compile START [USER|demo] Compile SUCCESS [USER|demo] Activate START [USER|demo] Configure START [USER|demo] Configure SUCCESS [USER|demo] Activate SUCCESS Imagens Docker com ZPM O ZPM mais recente já está disponível com a Comunidade IRIS e o ZPM pré-instalado Nomes das imagens intersystemsdc/iris-community intersystemsdc/irishealth-community intersystemsdc/iris-ml-community intersystemsdc/irishealth-ml-community E tags disponíveis tag de versão mais recente e completa 2022.1.0.209.0-zpm prévia e tag de versão completa 2022.2.0.345.0-zpm 2021.2.0.651.0-zpm Todas as imagens estão disponíveis para x86-64 e ARM64 pelo mesmo nome.