0 Abonnés · 78 Publications

Des éléments d'expérience dans la technologie InterSystems qui résolvent un problème particulier de manière efficace ou inhabituelle.

Article Lorenzo Scalese · Mai 17, 2023 16m read

Nos clients ont souvent besoin de configurer HealthShare HealthConnect et IRIS en mode haute disponibilité.

D'autres moteurs d'intégration sur le marché sont souvent présentés comme ayant des configurations de "haute disponibilité", mais ce n'est pas vraiment le cas. En général, ces solutions fonctionnent avec des bases de données externes et donc, si celles-ci ne sont pas configurées en haute disponibilité, lorsqu'un crash de la base de données se produit ou que la connexion à celle-ci est perdue, l'ensemble de l'outil d'intégration devient inutilisable.

0
0 183
Article Iryna Mykhailova · Déc 28, 2022 1m read

Salut les Devs !

Pour moi, l'une des choses les plus pénibles à propos d'ObjectScript est de taper ##class(Class).Method() pour appeler une méthode de classe dans le code ou dans un terminal. J'ai même soumis une idée pour le simplifier en ObjectScript.

Mais! Il y a une nouvelle fonctionnalité dans VSCode ObjectScript qui vient d'être introduite dans le plugin - Copy Invocation !

Passez simplement le curseur sur le lien Copy Invocation au-dessus de chaque méthode de classe dans un code, cliquez dessus et l'invocation est copiée dans le buffer:

Collez-le où vous voulez qu'il s'exécute !

0
0 114
Article Irène Mykhailova · Déc 19, 2022 1m read

EnsLib.HL7.Message.cls fournit de nombreuses méthodes API pour manipuler un message HL7.  RemoveSegmentAt(), par exemple, peut être utilisé pour supprimer un segment par chemin ou par index, mais pas plus d'un segment à la fois. Il peut arriver que vous ayez besoin de supprimer tous les segments d'un groupe ou même de nombreux groupes de segments du message HL7.  Bien sûr, vous pouvez itérer à travers chaque segment dans chaque groupe et les supprimer un par un, mais il y a un moyen beaucoup plus facile.

0
0 111
Article Kevin Koloska · Déc 8, 2022 1m read

Lors de la création d’un PRA (Privileged Routine Application ; qui d’ailleurs n’est pas pertinent uniquement pour les routines mais aussi pour les classes/méthodes), il est important de s’assurer d’inclure un new $ROLES, avant d’appeler AddRoles(). Par exemple:

 New $ROLES

set status=$System. Security.AddRoles(« MyPrivilegedRoutineApplication »)

De cette façon, vous vous assurez que les rôles ajoutés (élevés) « s’évaporent » pour l’utilisateur exécutant ce code, une fois que l’utilisateur est hors du champ d’application de cette routine / méthode.

[Merci @Andreas Dieckow d’avoir validé cela]

0
0 63
Article Irène Mykhailova · Oct 5, 2022 5m read

Salut la communauté,

Souhaitez-vous bénéficier de soutien, discuter d'une fonctionnalité intéressante, faire une annonce ou partager vos connaissances ? Dans cet article, nous allons vous expliquer comment faire tout cela.

Pour faciliter la navigation dans ce "mode d'emploi", suivez simplement le contenu :

Instructions générales

Pour commencer, il faut cliquer sur le bouton "Nouveau message" dans le menu principal du site de la Communauté des développeurs :

Ensuite, vous verrez apparaître l'éditeur qui vous donnera le choix de créer une Question, une Annonce, un Article, ou une Discussion. Les différents types de messages ont leurs propres ensembles de champs obligatoires et facultatifs. 

0
0 94
Annonce Irène Mykhailova · Sept 24, 2022

Si vous êtes sur le point d'apprendre InterSystems ObjectScript, nous rendons la décision beaucoup plus facile.

Nous venons de mettre à jour le parcours d'apprentissage " Premiers pas avec InterSystems ObjectScript " avec 3 nouvelles vidéos de 5 minutes - et un exercice de synthèse pour vous aider à rassembler tout ce que vous apprendrez.

🤝 Obtenez une introduction à InterSystems ObjectScript

🤿 Plongez plus profondément dans les commandes et les fonctions

🤔 Comprendre les types de données et les variables

👨‍💻 Créer une définition de classe

Faites tout cela dans notre parcours d'apprentissage mis à jour, Premiers pas avec InterSystems ObjectScript.

0
0 77
Article Irène Mykhailova · Juil 1, 2022 1m read

Vous connaissez plusieurs langues et souhaitez partager vos connaissances avec des utilisateurs de différentes régions du monde qui ne parlent pas français ?

C'est maintenant à vous de briller ! 🤩

Avec notre communauté de développeurs, c'est facile de lier votre article original et sa traduction dans une autre langue (ou même de demander une traduction).

Parlons donc de la création de votre propre traduction :

0
0 93
Article Guillaume Rongier · Juin 10, 2022 8m read

Cette publication est le résultat direct d'une collaboration avec un client d'InterSystems qui est venu me consulter pour le problème suivant :

SELECT COUNT(*) FROM MyCustomTable

Cela prend 0,005 secondes, pour un total de 2300 lignes.  Cependant :

SELECT * FROM MyCustomTable

Prenait des minutes.  La raison en est subtile et suffisamment intéressante pour que j'écrive un article à ce sujet.  Cet article est long, mais si vous faites défiler la page jusqu'en bas, je vous donnerai un résumé rapide.

0
1 107
Article Irène Mykhailova · Juin 9, 2022 1m read

Les champs peuvent être obtenu à l'aide du schéma INFORMATION_SCHEMA.

INFORMATION_SCHEMA est un schéma système et n'apparaît pas dans le menu SQL du Management Portal par défaut.

La méthode d'affichage est la suivante.

  1. Ouvrez le Management Portal → System Explorer → SQL
  2. Cochez "System" sur le côté gauche du menu déroulant du schéma.
  3. Sélectionnez INFORMATION_SCHEMA dans le menu déroulant du schéma.

Le SQL pour obtenir l'ID, le nom du champ (COLUMN_NAME), le type de données (DATA_TYPE) et la description (DESCRIPTION) pour la table spécifiée (Test.Person) est le suivant.

0
0 1681
Article Irène Mykhailova · Juin 2, 2022 1m read

Étant donné que SELECT ... FOR UPDATE est implémenté dans de nombreux RDBMS en tant que méthode d'acquisition de lock de ligne explicite, vous utilisez probablement cette fonctionnalité dans de nombreux cas.

Cette syntaxe n'entraîne pas d'erreur dans les produits InterSystems, mais elle n'acquiert pas les locks de ligne attendus.

Cet article vous montrera comment obtenir la même fonctionnalité.

DECLARE CURSOR C1 IS
SELECT Name FROM Person WHERE Name LIKE 'A%' FOR UPDATE
OPEN C1
LOOP FETCH C1 INTO name 
.afficher le nom.
.
0
0 225
Article Lorenzo Scalese · Juin 1, 2022 9m read

Un système de stockage global d'aspect plus industriel

Dans le premier article de cette série, nous avons étudié le modèle entité-attribut-valeur (EAV) dans les bases de données relationnelles, et nous avons examiné les avantages et les inconvénients du stockage de ces entités, attributs et valeurs dans des tables. Nous avons appris que, malgré les avantages de cette approche en termes de flexibilité, elle présente de réels inconvénients, notamment une inadéquation fondamentale entre la structure logique des données et leur stockage physique, qui entraîne diverses difficultés.

Pour résoudre ces problèmes, nous avons décidé de voir si l'utilisation de globales - qui sont optimisées pour le stockage d'informations hiérarchiques - serait efficace pour les tâches que l'approche EAV traite habituellement.

Dans la Partie 1, nous avons créé un catalogue pour une boutique en ligne, d'abord en utilisant des tables, puis en utilisant une seule globale. Maintenant, essayons d'implémenter la même structure pour quelques globales.

Dans la première globale, ^catalog, nous allons stocker la structure du répertoire. Dans la deuxième globale, ^good, nous allons stocker les marchandises. Et dans la globale ^index, nous allons stocker les index. Puisque nos propriétés sont liées à un catalogue hiérarchique, nous ne créerons pas de globale séparée pour elles.

Avec cette approche, pour chaque entité (à l'exception des propriétés), nous avons une globale séparée, ce qui est bon du point de vue de la logique. Voici la structure du catalogue global :

0
0 448
Article Irène Mykhailova · Mai 31, 2022 1m read

La cause de cette erreur est que la ressource locked est déjà locked par un autre processus dans l'application et que le lock n'est pas libéré pour une raison quelconque.

S'il n'y a aucun signe que d'autres processus avec le lock, il est possible que la table de locks manque d'espace libre. Dans ce cas, le message LOCK TABLE FULL est envoyé au Message Log

Si vous effectuez un traitement transactionnel, il est possible que le report du lock ait un effet.
Veuillez vous référer aux documents suivants pour la transaction et le report de lock.

0
0 178
Article Lorenzo Scalese · Mai 30, 2022 9m read

Introduction

Dans le premier article de cette série, nous examinerons le modèle entité-attribut-valeur (EAV) dans les bases de données relationnelles pour voir comment il est utilisé et à quoi il sert. Ensuite, nous comparerons les concepts du modèle EAV aux globales.

Parfois, on dispose d'objets comportant un nombre inconnu de champs, ou peut-être des champs hiérarchiquement imbriqués, pour lesquels, en règle générale, il faut effectuer une recherche.

Par exemple, voici une boutique en ligne avec divers groupes de produits.

0
0 1168
Article Iryna Mykhailova · Mai 5, 2022 13m read

 

Quand on travaille avec les globales, on voit qu’il n’y a pas mantes fonction en ObjectScript (COS) à utiliser. C’est aussi le cas avec Python et Java. Toutefois, toutes ses fonctions sont indispensables quand on travaille directement avec les données sans utilisation des objets, des documents ou des tables.

Dans cet article je voudrais parler de différentes fonctions et commandes qui se servent à travailler avec les globales dans trois langues : ObjectScript, Python et Java (les deux derniers en utilisant Native API).

0
0 232
Article Irène Mykhailova · Avr 22, 2022 2m read

Comment rechercher une globale contenant un string spécifique ?

Vous pouvez afficher les globales dans le Management Portal et effectuer une recherche avec Ctrl + F, mais les grandes globales peuvent prendre du temps et être difficiles à afficher.

Bien sûr, vous pouvez effectuer une boucle en utilisant les fonctions $ORDER et $QUERY pour trouver la chaîne.

Mais il existe un moyen plus simple et plus pratique.

Il s'agit d'une méthode qui utilise la fonction de recherche globale de chaîne de caractères qui peut être effectuée dans le Management Portal.

0
0 110
Article Sylvain Guilbaud · Avr 19, 2022 2m read

Kong fournit en open source un outil de gestion de ses configurations (écrit en Go), appelé decK (pour declarative Kong)

  • Vérifiez que decK reconnaît votre installation Kong Gateway via deck ping
deck ping   
Successfully connected to Kong!
Kong version:  2.3.3.2-enterprise-edition
  • Exporter la configuration de Kong Gateway dans un fichier "kong.yaml" via deck dump
deck dump
  • Après avoir modifié le kong.yaml, afficher les différences via deck diff
deck diff
updating service alerts  {
   "connect_timeout": 60000,
-  "host": "172.24.156.176",
+  "host": "192.10.10.
0
0 215
Article Irène Mykhailova · Mars 9, 2022 4m read

Bonjour chers développeurs,

Dans cette publication, nous aimerions vous dire comment tirer le meilleur parti de la communauté des développeurs, pour apprendre le plus possible des experts d'InterSystems sur la technologie !

Prêtez attention à ces étapes pour devenir un utilisateur avancé de notre communauté !

0
0 93