Rechercher

記事
· 27分 前 4m read

La puissance graphique d'IRIS

La situation de départ

Une "Class Query" dans l'espace de noms %SYS fournissant des valeurs système réelles.

L' objectif à atteindre

Présentation des données dans le navigateur, accompagnée de
quelques visualisations graphiques, par exemple un graphique à barres.
L’ objectif est d’obtenir les valeurs réelles en un seul clic ou en actualisant.
La solution doit être indépendante de Windows, Linux, OSX, AIX, ...

Il existe suffisamment de collections de bibliothèques graphiques
dans différents langages, comme JavaScript, Python, ... 
Mais ils ont tous besoin d'un code à ajouter en dehors d'IRIS. 
Cela peut entraîner une dépendance au système d'exploitation du serveur.

À ce moment-là, je me suis retourné vers IRIS. Je me suis rappelé que DeepSee
possède toutes les options requises et s'adapte toujours à l'environnement.
Et comme il s'agit d'une approche interne d'IRIS, je pourrais tout faire en utilisant
InterSystems ObjectScript et appliquer toutes les astuces que j'ai utilisées et
développées moi-même dans le passé.

Maintenant le développement étape par étape

Les valeurs système ne peuvent être collectées que dans l'espace de noms %SYS
Le transport de valeurs vers un autre espace de noms est réalisé par une table temporaire
Class Parameter DEFAULTGLOBAL = "^mtemp.ZX";  est l'approche la plus simple.
Il est situé dans la database IRISTEMP et évite la journalisation. C'est vite.
Après un effacement total, le SystemClassQuery insère ses résultats et
ajoute la date et l'heure. La collection de valeurs est complète.

Dans mon espace de noms opérationnel, j'ai la même définition de classe.
Class Parameter DEFAULTGLOBAL = "^mtemp.ZX";  pointe vers le même stockage.
Et  Class Parameter MANAGEDEXTENT As INTEGER = 0; permet cela.
À ce stade, nous pouvons déjà voir le résultat numérique avec n'importe quelle
vue de table dans SystemManagementPortal. Il n'y a simplement aucun graphique.

Prochaine étape :

DeepSee crée des cubes basés sur des classes persistantes (des tables)
Utiliser DeepSee Architect n'est qu'une question de minutes pour construire un cube adapté
Et il dispose également de l'outil pour remplir le cube avec du contenu.

Prochaine étape :

DeepSeeAnalyzer nous permet de composer une belle vue de tableau et propose
une collection de présentations graphiques. Formidable !
Mais les valeurs de 2000 et d'autres de 33 ne semblent pas si bien dans un
graphique commun. Je n'ai pas trouvé d'option pour un axe logarithmique.
Alors, j'ai ajouté des propriétés calculées à ma table pour renvoyer $ZLOG(val).

Et un deuxième cube est alimenté avec des valeurs logarithmiques.
Le graphique est désormais plus pratique. Le tableau est moins impressionnant.

Prochaine étape :

Dans DeepSeeUserPortal, vous pouvez composer un Dashboard qui est une
page Web indépendante. Ici, vous organisez les vues de tableau et les graphiques
comme vous le souhaitez. 
Et voici ma seule exception à l'utilisation exclusive d'InterSystems ObjectScript:
Un Portlet est un petit morceau de code HTML que j'ai utilisé pour afficher
la date et l'heure des valeurs collectées.

Dernière étape furieuse :

Comment cela marche-t-il?
Notre joli Dashboard est démarré par une page CSP. La page elle-même est vide.
Mais chaque page CSP possède une
ClassMethod OnPreHTTP(). It triggers

  • Premiere étape - Collecter les valeurs de %SYS
  • Prochaine étape - Reconstruiser les deux cubes
  • Redirection vers l'URL de notre joli Dashboard.

Alors on danse !

Quelques morceaux de code :

Class ZX.timestamp Extends %DeepSee.Component.Portlet.abstractPortlet
{
Method %DrawHTML()
{
	&html<<div style="font-size: 25px;" height=50 class="portletDiv">#(^mtemp.ZXD)#</div>>
}
}
Class ZX.dbdash Extends %CSP.Page [ Not ProcedureBlock ]
{
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
    do ##class(%ZX.dbfree).Load()
    set sc=##class(%DeepSee.Utils).%BuildCube("ZX.DBdata",,0)
    set sc=##class(%DeepSee.Utils).%BuildCube("ZX.DBlog",,0)
    Set %response.ServerSideRedirect="/csp/user/_DeepSee.UserPortal.DashboardViewer.zen?DASHBOARD=ZXfree.dashboard"
    quit $$$OK
}
ClassMethod OnPage() As %Status
{
    quit $$$OK
}
}
Class ZX.dbfree Extends %Persistent [ Final, SqlRowIdPrivate ]
{
Parameter MANAGEDEXTENT As INTEGER [ Constraint = "0,1", Flags = ENUM ] = 0;
Parameter DEFAULTGLOBAL = "^mtemp.ZX";
Property DatabaseName As %String;
Property mbSize As %Integer;
Property logSize As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({mbSize}<1:0,1:$ZLOG({mbSize}))}, SqlComputed ];
Property mbAvail As %Decimal(SCALE = 1);
Property logAvail As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({mbAvail}<1:0,1:$ZLOG({mbAvail}))}, SqlComputed ];
Property FreePrz As %Decimal(SCALE = 2);
Property logFreePrz As %Decimal(SCALE = 2) [ Calculated, SqlComputeCode = {set {*}=$s({FreePrz}<1:0,1:$ZLOG({FreePrz}))}, SqlComputed ];
Property Timestamp As %String [ Calculated, SqlComputeCode = {set {*}=^mtemp.ZXD}, SqlComputed ];
Index idx On DatabaseName [ IdKey ];

Il y a aussi :
GitHub     Open Exchange Package
 

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
質問
· 42分 前

Is there any kind of garbage collector?

Some languages ​​have the concept of a garbage collector for automatic memory management. I'd like to know if something like this exists in InterSystems Caché in the context of routines, %CSP.REST, or %CSP.Page.

The question arises from the %Close() method of the %RegisteredObject class. This indicates that I need to manually clear the object from memory if it's no longer in use, or in the web context, if the request has completed. Is this correct? Or am I completely wrong?

Thank you!

1件の新着コメント
ディスカッション (1)2
続けるにはログインするか新規登録を行ってください
お知らせ
· 1 hr 前

Technology Bonuses for InterSystems External Languages Contest

Hi Developers!

Here are the technology bonuses for the InterSystems External Languages Contest: Java, .NET, node.js, Python that will give you extra points in the voting:

  • XEP API for Java, .NET - 2
  • Native SDK for Java, .NET, Python, node.js  - 2
  • PEX Interoperability for Java, .NET, Python - 3
  • Java persister - 2
  • ADONET and .NET Entity Framework -2 
  • Docker container usage - 2 
  • Online Demo - 2
  • Implement InterSystems Community Idea - 4
  • Find a bug in InterSystems IRIS External Language Development Offerings - 2
  • New First Article on Developer Community - 2
  • New Second Article on Developer Community - 1
  • First Time Contribution - 3
  • Video on YouTube - 3

See the details below.<--break-><--break->

XEP API for Java, .NET - 2

XEP is an InterSystems library that introduces high-performance persistence technology for Java or .NET object hierarchies. Use it and collect 2 more bonus points for Java or/and .NET (4 points max). Learn more on JAVA XEP.,  and .NET XEP.

Native SDK for Java, .NET, Python, node.js - 2 points

The InterSystems IRIS Native SDKs are lightweight interfaces that allow PythonJava.NET, and Node.js applications to access powerful InterSystems IRIS resources. Use it and collect 2 extra bonus points for every language(Python, Java, .Net, Node.js) implemented (8 at max). Documentation.

Pex Interoperability for Java, .NET, Python - 3 points

The Production EXtension (PEX) framework provides a choice of external languages Java, .NET and Python that you can use to develop interoperability productions. Use it and collect 3 extra points for for every language(Python, Java, .Net) implemented (9 max). Documentation. Here is a pex-demo application.

Java Persister -2 points

The InterSystems IRIS Persister for Java is designed to ingest data streams and persist them to a database at extremely high speed. Get 2 bonus points for implementing it in your solution. Documentation

ADONET and .NET Entity Framework - 2 points

InterSystems provides to access persistent classes data via ADONET. Implement it in your app to collect 2 bonus points. Documentation

Same you can get 2 bonus points for leveraging .NET Entity Framework with IRIS. Here is the Documentation.

Docker container usage - 2 points

The application gets a 'Docker container' bonus if it uses InterSystems IRIS  running in a docker container. Here is the simplest template to start from.

Online Demo of your project - 2 points
Collect 2 more bonus points if you provision your project to the cloud as an online demo at any public hosting.  

Implement Community Opportunity Idea - 4 points

Implement any idea from the InterSystems Community Ideas portal which has the "Community Opportunity" status. This will give you 4 additional bonus points.

Find a bug in InterSystems IRIS External Languages Offerings - 2 points
We want the broader adoption of InterSystems Java, .NET, Python API and node.js offerings so we encourage you to report the bugs you will face during the development of your external languages applications with IRIS in order to fix it. Please submit java, python, .NET and node.js bugs and how to reproduce it. You can collect 2 bonus points for the first reproducible bug one per language (java, .NET, node.js, Python) - so you can collect 8 points max.

New First Article on Developer Community - 2 points

Write a brand new article on Developer Community that describes the features of your project and how to work with it. Collect 2 points for the article.

New Second Article on Developer Community - 1 point

You can collect one more bonus point for the second new article or the translation regarding the application. The 3rd and more will not bring more points but the attention will all be yours.

First-Time Contribution - 3 points

Collect 3 bonus points if you participate in InterSystems Open Exchange contests for the first time!

Video on YouTube - 3 points

Make new YouTube videos that demonstrate your product in action and collect 3 bonus points per each.

The list of bonuses is subject to change. Stay tuned!

Good luck in the competition!

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
記事
· 6 hr 前 4m read

Securing IRIS Integrations with Mutual TLS (mTLS): A Practical Guide

Securing IRIS Integrations with Mutual TLS (mTLS): A Practical Guide

In today’s enterprise environments, secure communication between systems is not optional—it’s essential. Whether you're integrating InterSystems IRIS with cloud APIs, internal microservices, or third-party platforms, Mutual TLS (mTLS) offers a powerful way to ensure both ends of the connection are authenticated and encrypted.

This post walks through how to configure IRIS for mTLS and how to validate your certificates to avoid common pitfalls.

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください
お知らせ
· 6 hr 前

Building and Managing HL7 Integrations – IN PERSON October 20-24, 2025 / Registration space available

  • Building and Managing HL7 Integrations – In Person October 20-24, 2025 9:00am-5:00pm EDT
    • Build, configure, and manage HL7® V2 interfaces using InterSystems integration technologies.
    • This healthcare-focused 5-day course teaches implementation partners, integrators and analysts how to rapidly build HL7 integration solutions.
    • Students build a production that processes and routes HL7 messages.
    • Students learn how to work with the pre-built HL7 business services, business processes and business operations to receive and send HL7 messages.
    • Students also learn how to transform HL7 messages using graphical tools in the Management Portal.
    • This course teaches students how to monitor, manage, and troubleshoot Productions.
    • Students also learn how to use the Management Portal for viewing, searching, and resending messages.
    • This course is applicable for users of InterSystems IRIS® for Health, HealthShare® Health Connect, and HealthShare®.
    • This course is also applicable for users of the legacy product InterSystems Ensemble®.
  • Self-Register Here
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください