New post

Find

Announcement
· Nov 11, 2024

Recapitulação do InterSystems Developer Community, Outubro 2024

Olá e bem-vindo ao Recapitulação da comunidade de desenvolvedores Outubro 2024.
Estatísticas gerais
28 novas postages publicadas em Outubro:
 22 novos artigos
 6 novos anúncios
3 novos membros ingressaram em Outubro
1,199 postagens publicadas ao todo
595 membros ingressaram ao todo
Principais publicações
Principais autores do mês
Artigos
#InterSystems IRIS
eBPF: Rastreando eventos de Kernel para IRIS Workloads
Por Heloisa Paiva
eBPF: Parca - Criação de perfil contínua para IRIS Workloads
Por Heloisa Paiva
Desenvolvendo Intergrações com o InterSystems IRIS - SOAP Inbound Adapter
Por Julio Esquerdo
Script de Freeze em servidores espelhados
Por Heloisa Paiva
Desenvolvendo Integrações com o InterSystems IRIS - File Inbound Adapter
Por Julio Esquerdo
eBPF: Segurança Tetragon para cargas de trabalho IRIS
Por Heloisa Paiva
Funções do lado esquerdo em ObjectScript
Por Heloisa Paiva
Desenvolvendo Integrações com o InterSystems IRIS - Aplicação REST
Por Julio Esquerdo
Desenvolvendo Integrações com o InterSystems IRIS - SQL Inbound Adapter
Por Julio Esquerdo
Desenvolvendo Integrações com InterSystems IRIS - SOAP OutboundAdapter
Por Julio Esquerdo
Introdução ao suporte WSGI
Por Heloisa Paiva
A minha abordagem pessoal aos Vectores
Por Robert Cemper
Rodando aplicações Flask no IRIS
Por Heloisa Paiva
Rodando aplicações Django no IRIS
Por Heloisa Paiva
Desenvolvendo Integrações com InterSystems IRIS - Chamada Assíncrona no BP
Por Julio Esquerdo
Desenvolvendo Integrações com InterSystems IRIS - CALL no Business Process
Por Julio Esquerdo
Rodando aplicações FastAPI no IRIS
Por Heloisa Paiva
Desenvolvendo Integrações com InterSystems IRIS - SQL Outbound Adapter
Por Julio Esquerdo
Modelos LLM e Aplicações RAG Passo a Passo - Parte I
Por Heloisa Paiva
 
#InterSystems IRIS for Health
 
Anúncios
Outubro, 2024Month at a GlanceInterSystems Developer Community
Discussion (0)1
Log in or sign up to continue
Question
· Nov 11, 2024

Help navigate and extract data in Cache 2017

Hi,

I have a archive backup of a Cache database. I was able to restore the database but having trouble navigating through the globals, classes, namespaces .??? I am not a Cache user and/or developer so I am a bit lost. I am used to relational database such Microsoft SQL but not Cache which to my understand is a different breed of database. If you are looking for some extra money to help me extract some of the data I need i would be greatly appreciated.

Please email me at tamthnguyen@gmail.com or what's app phone +14168985565 I am in Toronto, Canada Eastern Standard Time Zone.

Thanks very much in advance..

Regards,

Tam,

1 Comment
Discussion (1)1
Log in or sign up to continue
Question
· Nov 11, 2024

LOCK on Global vars, is it necessary in this case?

I have a business process that adds data to a global variable on receipt of an HL7 message, and a scheduled task that executes a class method defined within the same business process that removes data from the same global variable. With this in mind it makes sense to consider concurrency and therefore make use of the LOCK command.

My first question is whether this is actually necessary?

My second question is what happens to locks when an error/exception is encountered after a lock but before the code to release the lock, is this managed automatically or should try-catch be used to release the lock given an error?

1 Comment
Discussion (1)1
Log in or sign up to continue
Article
· Nov 11, 2024 3m read

Passerelle externe vers le langage Java

Si vous aimez Java et que vous avez un écosystème Java florissant au travail dans lequel vous devez incorporer IRIS, ce n'est pas un problème. La passerelle Java External Language Gateway le fera de manière transparente, ou presque. Cette passerelle sert de pont entre Java et Object Script dans IRIS. Vous pouvez créer des objets de classes Java dans IRIS et appeler leurs méthodes. Pour ce faire, il vous suffit de disposer d'un fichier jar.

Connection diagram: proxy object <-> Gateway object <-> TCP/IP <-> External server <-> target object

La première chose à faire est de configurer l'environnement. Pour commencer à utiliser la passerelle Java, assurez-vous que vous disposez des éléments suivants :

  1. InterSystems IRIS: Installé et lancé
  2. Java Development Kit (JDK): Installé et configuré.

La deuxième exigence peut sembler simple, puisque vous utilisez déjà Java dans votre travail, mais ce n'est pas le cas. Merci à cette question, il s'est avéré que vous devez utiliser la version 11 du JDK au maximum. Cela signifie que vous devez changer la version dans votre IDE, ce qui peut poser quelques problèmes.

L'étape suivante consiste à vérifier que tout fonctionne et à essayer d'instancier l'objet d'une classe système Java. Pour ce faire, il faut démarrer une connexion, créer un objet proxy et appeler une méthode. Cela semble être beaucoup de code, mais en réalité, il s'agit juste d'une déclaration :

write $system.external.getJavaGateway().new("java.util.Date").toString()

Cela permet d'imprimer la date et l'heure actuelles à l'écran.

Pour aller plus loin, nous pouvons créer notre propre classe Java :


public class Dish {
	private String name;
	private String description;
	private String category;
	private Float price;
	private String currency;
	private Integer calories;
	
	public void setName(String name) {
		this.name = name;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public void setCategory(String category) {
		this.category = category;
	}

	public void setPrice(Float price) {
		this.price = price;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}

	public void setCalories(Integer calories) {
		this.calories = calories;
	}
	
	public String describe() {
		return "The dish "+this.name+" costs "+this.price.toString()+
				this.currency+" and contains "+this.calories+" calories!";
	}
}

et appeler ses méthodes à partir d'Object Script :

 set javaGate = $SYSTEM.external.getJavaGateway()
 do javaGate.addToPath("D:\Temp\GatewayTest.jar")
 set dish = javaGate.new("Dish")
 do dish.setCalories(1000)
 do dish.setCategory("salad")
 do dish.setCurrency("GBP")
 do dish.setDescription("Very tasty greek salad")
 do dish.setName("Greek salad")
 do dish.setPrice(15.2)
 write dish.describe()

En conséquence, nous obtiendrons une chaîne de caractères contenant la description du plat créé :

The dish Greek salad costs 15.2GBP and contains 1000 calories!

Quite neat, don't you think?

Quoi qu'il en soit, pour en savoir plus sur l'utilisation des passerelles, consultez la Documentation et bonne chance pour mettre en œuvre ces connaissances dans vos projets !

1 Comment
Discussion (1)2
Log in or sign up to continue
Article
· Nov 11, 2024 3m read

IKO et IAM - n'oubliez pas d'inclure un side-car

IAM - InterSystems API Manager est un excellent outil pour surveiller votre trafic. Si vous essayez de l'utiliser dans votre cluster Kubernetes, vous avez peut-être essayé de faire un déploiement similaire à celui-ci :

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: iris
spec:
  licenseKeySecret:
    name: iris-key-secret
  configSource:
    name: iris-cpf
  imagePullSecrets:
    - name: intersystems-pull-secret
  topology:
    data:
      image: containers.intersystems.com/intersystems/iris-arm64:2024.1
      compatibilityVersion: "2024.1.2"
      mirrored: false

    webgateway:
      replicas: 1
      image: containers.intersystems.com/intersystems/webgateway-nginx-arm64:2024.1
      type: nginx
      applicationPaths:
        - /csp/sys
        - /csp/broker
        - /api
        - /isc
        - /oauth2
        - /ui
        - /csp/healthshare
      alternativeServers: LoadBalancing
      loginSecret:
        name: iris-webgateway-secret

    iam: 
      image: containers.intersystems.com/intersystems/iam-arm64:3.4
      replicas: 1
  serviceTemplate:
    spec:
      type: LoadBalancer

Cependant, en allant sur le tableau de bord IAM, vous verrez :

 

Vous êtes en mode libre. La licence IRIS n'a pas été transmise à Kong. Pour ce faire, vous devez vous assurer que vous avez un sidecar en place. Vous pouvez ajouter un sidecar :

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: iris
spec:
  licenseKeySecret:
    name: iris-key-secret
  configSource:
    name: iris-cpf
  imagePullSecrets:
    - name: intersystems-pull-secret
  topology:
    data:
      image: containers.intersystems.com/intersystems/iris-arm64:2024.1
      compatibilityVersion: "2024.1.2"
      mirrored: false

      webgateway:
        image: containers.intersystems.com/intersystems/webgateway-nginx-arm64:2024.1
        type: nginx
        applicationPaths:
          - /csp/sys
          - /csp/broker
          - /api
          - /isc
          - /oauth2
          - /ui
          - /csp/healthshare
        loginSecret:
          name: iris-webgateway-secret

    webgateway:
      replicas: 1
      image: irepo.intersystems.com/intersystems/webgateway-nginx-arm64:2024.1
      type: nginx
      applicationPaths:
        - /csp/sys
        - /csp/broker
        - /api
        - /isc
        - /oauth2
        - /ui
        - /csp/healthshare
      alternativeServers: LoadBalancing
      loginSecret:
        name: iris-webgateway-secret
        
    iam: 
      image: irepo.intersystems.com/intersystems/iam-arm64:3.4
      replicas: 1
  serviceTemplate:
    spec:
      type: LoadBalancer

ou vous pouvez même décider que votre passerelle Web autonome n'est pas nécessaire et que tout le travail peut être effectué par le sidecar :

apiVersion: intersystems.com/v1alpha1
kind: IrisCluster
metadata:
  name: iris
spec:
  licenseKeySecret:
    name: iris-key-secret
  configSource:
    name: iris-cpf
  imagePullSecrets:
    - name: intersystems-pull-secret
  topology:
    data:
      image: containers.intersystems.com/intersystems/iris-arm64:2024.1
      compatibilityVersion: "2024.1.2"
      mirrored: false

      webgateway:
        image: containers.intersystems.com/intersystems/webgateway-nginx-arm64:2024.1
        type: nginx
        applicationPaths:
          - /csp/sys
          - /csp/broker
          - /api
          - /isc
          - /oauth2
          - /ui
          - /csp/healthshare
        loginSecret:
          name: iris-webgateway-secret
        
    iam: 
      image: irepo.intersystems.com/intersystems/iam-arm64:3.4
      replicas: 1
  serviceTemplate:
    spec:
      type: LoadBalancer

Le résultat en termes d'IAM est le même, bien qu'il y ait des avantages et des inconvénients à chaque approche. Quelle que soit l'approche choisie, vous devriez maintenant voir une licence fonctionnelle dans IAM :

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