Find

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
Digest
· Nov 11, 2024
Digest
· Nov 11, 2024

InterSystems Developers Publications, Week November 04 - 10, 2024, Digest

Articles
Announcements
Questions
#InterSystems IRIS
Operation Email sender error #6034 connection with SMTP not successfull
By Jacopo Magliani
Select query not returning all results
By Robert Stephens
Objectscript to list source of a class
By Phillip Wu
How to package a custom IPM resource processor?
By Jani Hurskainen
How to manipulate a business rule through SQL or APIs?
By Nicky Zhu
Stream Compression Not Applied to Some Text
By Ashok Kumar
VSCode auto complete and show class methods while typing
By Paul Hula
Histogram data being pushed to github
By Scott Roth
IRIS Docker template not copying files
By Nicki Vallentgoed
Existing protections against XSS attacks on CSP pages ?
By Norman W. Freeman
How to handle a XML without Schema in a Business Rule?
By Nicky Zhu
Debugging %Net.SMTP Requests
By David Hockenbroch
EnsLib.HL7.Message.getSegmentByIndex not documented?
By Anthony Master
#Caché
#InterSystems IRIS for Health
Discussions
#InterSystems IRIS
November 04 - 10, 2024Week at a GlanceInterSystems Developer Community
Article
· Nov 11, 2024 2m read

Les modèles LLM et les applications RAG étape par étape - Partie III - Recherche et injection de contexte

Bienvenue au troisième et dernier de nos articles consacrés au développement d'applications RAG basées sur des modèles LLM. Dans ce dernier article, nous examinerons comment, dans le cadre de notre petit projet d'exemple, on peut trouver le contexte le plus approprié pour la question que l'on veut envoyer à notre modèle LLM et, pour ce faire, nous utiliserons la fonctionnalité de recherche vectorielle incluse dans IRIS.

Meme Creator - Funny Context Meme Generator at MemeCreator.org!

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