Initial Release
I have described the inspiration for this project here - Article
You can find online demo here - Create a new user definition or
User Export or Management Portal
Create a new user definition using the Online Demo. Enter a username. Copy from _SYSTEM which has %All role. Enter the full user name. Click the radio button to enter a new password. Click the Save button to save your new user.
Go to User Export webpage. Check the box for users you want to export and click the Submit button. Copy / paste the xml into a file.
Make sure you have git and Docker desktop installed.
Clone/git pull the repo into any local directory
$ git clone https://github.com/oliverwilms/iris-user-manager.git
Open the terminal in this directory and call the command to build and run InterSystems IRIS in container:
Note: Users running containers on a Linux CLI, should use “docker compose” instead of “docker-compose”
See Install the Compose plugin
$ docker-compose up -d
To open IRIS Terminal do:
$ docker-compose exec iris iris session iris -U IRISAPP
IRISAPP>
To exit the terminal, do any of the following:
Enter HALT or H (not case-sensitive)
THe sample repository contains two simplest examples of ObjectScript classes: ObjectScript method that returns value and method that creates a persistent record.
$ docker-compose exec iris iris session iris -U IRISAPP
IRISAPP>write ##class(dc.sample.ObjectScript).Test()
It works!
42
dc.sample.PersistentClass
contains a method CreateRecord
that creates an object with one property, Test
, and returns its id.Open IRIS terminal and run:
IRISAPP>write ##class(dc.sample.PersistentClass).CreateRecord(.id)
1
IRISAPP>write id
1
In your case the value of id could be different. And it will be different with every call of the method.
You can check whether the record exists and try to right the property of the object by its id.
IRISAPP>write ##class(dc.sample.PersistentClass).ReadProperty(id)
Test string
Add or update %ZSTART routine to import User data. I have implemented the User import as a task previously. More details to come.
This repository is ready to code in VSCode with the ObjectScript plugin.
Install VSCode, Docker and the InterSystems ObjectScript Extension Pack plugin and open the folder in VSCode.
Open the /src/cls/PackageSample/ObjectScript.cls
class and make changes - it will be compiled in the running IRIS docker container.
Feel free to delete the PackageSample folder and place your ObjectScript classes in the form
/src/organisation/package/Classname.cls
Read more about folder setup for InterSystems ObjectScript and here on the naming convention
The template contains two test classes: TestObjectScript.cls
and TestPersistentClass.cls
To run the unit tests we can use the Package Manager environment.
IRISAPP>zpm
=============================================================================
|| Welcome to the Package Manager Shell (ZPM). ||
|| Enter q/quit to exit the shell. Enter ?/help to view available commands ||zpm:IRISAPP>load /irisrun/repo
[dc-sample-template] Reload START (/irisrun/repo/)
[dc-sample-template] Reload SUCCESS
[dc-sample-template] Module object refreshed.
[dc-sample-template] Validate START
[dc-sample-template] Validate SUCCESS
[dc-sample-template] Compile START
[dc-sample-template] Compile SUCCESS
[dc-sample-template] Activate START
[dc-sample-template] Configure START
[dc-sample-template] Configure SUCCESS
[dc-sample-template] MakeDeployed START
[dc-sample-template] MakeDeployed SUCCESS
[dc-sample-template] Activate SUCCESS
zpm:IRISAPP>test dc-sample-template[dc-sample-template] Reload START (/irisrun/repo/)
[dc-sample-template] Reload SUCCESS
[dc-sample-template] Module object refreshed.
[dc-sample-template] Validate START
[dc-sample-template] Validate SUCCESS
[dc-sample-template] Compile START
[dc-sample-template] Compile SUCCESS
[dc-sample-template] Activate START
[dc-sample-template] Configure START
[dc-sample-template] Configure SUCCESS
[dc-sample-template] MakeDeployed START
[dc-sample-template] MakeDeployed SUCCESS
[dc-sample-template] Activate SUCCESS
[dc-sample-template] Test STARTIt works!Use the following URL to view the result:
http://172.28.0.2:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=1&$NAMESPACE=IRISAPP
All PASSED
[dc-sample-template] Test SUCCESS
zpm:IRISAPP>
In case of test errors, you can find more details back in the UnitTest portal, which can be easily opened via ObjectScript menu in VSCode:
Contains two GitHub actions workflows:
github-registry.yml
objectscript-qaulity.yml
Both workflows are repo agnostic: so they work with any repository where they exist.
Contains two files to setup vscode environment:
Settings file to let you immediately code in VSCode with VSCode ObjectScript plugin)
Config file if you want to debug with VSCode ObjectScript
Contains source files.
src/iris contains InterSystems IRIS Objectscript code
Contains unit tests for the ObjectScript classes
Contains a set of useful commands that will help during the development
A docker engine helper file to manage images building and rule ports mapping an the host to container folders(volumes) mapping
The simplest dockerfile which starts IRIS and imports code from /src folder into it.
Use the related docker-compose.yml to easily setup additional parametes like port number and where you map keys and host folders.
Contains objectscript commands that are feeded to iris during the image building
IPM Module’s description of the code in the repository.
It describes what is loaded with the method, how it is being tested and what apps neeed to be created, what files need to be copied.
Read about all the files in this artilce
If you have issues with docker image building here are some recipes that could help.
docker system prune -f