Salut la communauté!
Souvent, lorsque nous développons des solutions commerciales, il est nécessaire de déployer des solutions sans code source, par exemple afin de préserver la propriété intellectuelle.
L'une des manières d'y parvenir est d'utiliser InterSystems Package Manager.
Ici, j'ai demandé à Midjourney de peindre la propriété intellectuelle d'un logiciel :
Illustration numérique de l'espace de travail d'un développeur de logiciels axé sur la protection de la propriété intellectuelle.
La scène montre un développeur de logiciels à son bureau, avec un écran d'ordinateur affichant un code complexe recouvert de verrous et de boucliers lumineux.
Sur le bureau se trouve un document de brevet avec un sceau et un ruban, symbolisant la protection d'innovations logicielles uniques.
A proximité, se trouvent des boîtes de produits logiciels avec des symboles de marque (™ ou ®) et des papiers avec des symboles de droit d'auteur (©), représentant la protection de l'identité de la marque et des œuvres originales.
Le cadre est moderne et bien éclairé, générant un sentiment de sécurité et d'innovation.
Comment y parvenir avec IPM ?
En fait, c'est très simple ; ajoutez simplement la clause Deploy="true" dans l'élément Resource de votre manifeste module.xml. Documentation.
J'ai décidé de fournir l'exemple le plus simple possible pour illustrer son fonctionnement et également de vous donner un modèle d'environnement de développement pour vous permettre de commencer à créer et à déployer vos propres modules sans code source. On y va !
Voici le modèle d'application sur Open Exchange qui contient deux classes:
dc.deployed.ObjectScript et dc.withsource.ObjectScript
Comme son nom l'indique, il s'agit d'un exemple de mode déployé sans code source. Une autre classe est installée avec le code source pour illustrer la différence et la possibilité de combiner les modes de déploiement et de code source.
Voici comment vous pouvez l'essayer :
Démarrez IRIS via :
docker run --rm --name iris-demo -d -p 29091:1972 -p 29092:52773 intersystemsdc/iris-community
puis ouvrez le terminal IRIS :
docker exec -it iris-demo iris session iris
Après cela, installez le module :
zpm "install deployed-oscript-template"
Deux classes doivent être installées dans l'espace de noms. Vérifions le code source. Exécutez la commande suivante :
Do ##class(dc.deployed.ObjectScript).Test()
ObjectScriptObjectScript
Vous devriez voir:
USER>Do ##class(dc.deployed.ObjectScript).Test() It is a deployed class without source code!
Et si vous appelez une autre méthode pour afficher le code source de la classe :
k text do ##class(%Compiler.UDL.TextServices).GetTextAsString($namespace, "dc.deployed.ObjectScript", .text) w text
ObjectScriptObjectScript
Vous ne verrez que le nom de classe et les signatures de méthode :
Class dc.deployed.ObjectScript
{
ClassMethod Test() As %Status
{
}
}
ObjectScriptObjectScript
Et si nous appelons une autre classe avec le code source, nous verrons :
USER>Do ##class(dc.withsource.ObjectScript).Test() This class installed with a source code!
USER>k text do ##class(%Compiler.UDL.TextServices).GetTextAsString($namespace, "dc.withsource.ObjectScript", .text) w text
ObjectScriptObjectScript
Class dc.withsource.ObjectScript
{
ClassMethod Test() As %Status
{
set a=42
write "This class installed with a source code!",!
return a
}
}
ObjectScriptObjectScript
Vous pouvez profiter de ce référentiel pour tester la fonctionnalité du mode déploiement. Vous trouverez ci-dessous des exemples d'étapes pour le gérer.
Cloner le référentiel du modèle :
$ git clone https://github.com/intersystems-community/objectscript-docker-template.git
Ouvrez le dossier dans VSCode
, et démarrez Docker dans le terminal de VSCode :
$ docker-compose up -d
Actualisez la connexion depuis VSCode pour vous connecter au conteneur IRIS. Apportez des modifications aux classes IRIS ObjectScript et au module.xml (ou non), puis chargez le code source dans le terminal IRIS :
USER>zpm "load /home/irisowner/dev"
Remplacez le client IPM de la communauté par défaut par le registre de test (il est disponible à tout moment à des fins de test IPM) :
USER>zpm zpm:USER>repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42
et publiez le module dans le registre de test :
zpm:USER>publish deployed-oscript-template
Vous pouvez bien sûr changer le nom du module dans un module.xml (ainsi que les ressources de code que vous publiez).
Vérifiez si le module est publié :
zpm:USER>find
Comme vous pouvez le constater, le module a été publié avec succès.
Si vous souhaitez tester que le module nouvellement publié est installé sans code source, il est facile de le faire avec une autre instance IRIS démarrée dans le conteneur Docker. Cela peut être effectué comme suit. Démarrez IRIS dans le terminal du système d'exploitation :
docker run --rm --name iris-demo -d -p 29091:1972 -p 29092:52773 intersystemsdc/iris-community
Ouvrez le terminal IRIS :
docker exec -it iris-demo iris session iris
Lancez la console IPM :
USER>zpm
Passer au registre TEST :
repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42
Installez votre module (modifiez-le si vous avez publié sous un nom différent) :
zpm:USER>install deployed-oscript-template
Testez le fonctionnement du module et du code source comme nous l'avons fait ci-dessus.
Voilà !
Bonnes innovations et déploiements avec IPM et InterSystems IRIS !