Clear filter
Announcement
Anastasia Dyubaylo · Jul 25, 2019
Hey Developers,
We bring you good tidings!
You have a great opportunity to promote your business with InterSystems! This is exclusively for Global Masters Advocacy Hub Advocates.
Be first to redeem our new prizes! Please welcome:
➜ "$1,000 Google Adwords Voucher for your Open Exchange application promotion"
Redeem this prize to promote your OEX application on Google Adwords!
We'll spend $1,000 on Google Adwords for your Open Exchange application with your keywords, description, and will set up the audience for you.
Requirements: The application should work on InterSystems IRIS/IRIS for Health or be a tool to manage/develop with IRIS.
Redeem this reward for 3,000 GM points.
➜ "Advertise your services, events or vacancies on Developer Community"
Redeem this prize to promote your services, events or vacancies on Developer Community!
Recently, we launched a new block on DC Site called "NEWS" (you can see it through all website pages on the right). You can suggest your services, invite to your events and promote your vacancies on the "NEWS" block for a week.
Note: Our designer will help you to prepare graphics for the announcement (if needed).
Requirements: Development services, events or vacancies should be related to InterSystems technology.
Redeem this reward for 2,000 GM points.
➜ "Open Exchange project promotion on Developer Community"
Redeem this prize to promote your OEX project on the Developer Community!
A banner with a clickable link to your project will be shown for all DC visitors. More details please find in this post.
Redeem this reward for 1,000 GM points.
So!
InterSystems Developer Community has an audience of more than 30K people visiting every month. Let the world know about your applications, solutions, and services on InterSystems Data Platform!
Do not miss your chance! Earn more points and get all the prizes on Global Masters Advocacy Hub Hi Community,
Another prize on Global Masters that will help you promote your business!
➜ Your Company's Tag on InterSystems Developers
With this reward, you can get a tag for your Company on Developers Community and thus a description, a section with posts and your own subscribers.
Redeem this reward for 5,000 GM points.
Be first to redeem our new prize! In addition, we already have 2 companies that are part of the InterSystems Partner group.
Please welcome 2 new tags from InterSystems partner companies:
CaretDev
ITvisor
So! Who's next? Dear Developers,
Global Masters Advocate Hub gives you one more opportunity to promote your apps and solutions on InterSystems Data Platform!
➜ Publish Your Video on InterSystems Developers YouTube
Do you have the YouTube video which describes the tool, solution or experience related to InterSystems Data Platforms?
Increase the traffic to your YouTube videos ordering the Video Boost Pack for InterSystems Open Exchange Apps:
Promotion of the video on the InterSystems Developers YouTube Channel;
Listing in the monthly "InterSystems Developers Videos" digest. Here is an example;
Promotion on Global Masters and InterSystems Developers Social Media.
Redeem this reward for 1,500 GM points.
Let the world know about your solutions! 👍🏼 Hey developers,
One more Global Masters reward to promote your business:
⚡️ Your Webinar supported by InterSystems ⚡️
Would you like to hold a professional webinar for developers and tell about your solution/tool and your company services?
Redeem this prize for 3,000 points and we will help you to organize it!
➡️ What will you get? More details here.
Announcement
Stefan Wittmann · Aug 5, 2019
I am happy to announce that InterSystems API Manager is now generally available. InterSystems API Manager (IAM) is a new feature of the InterSystems IRIS Data Platform™, enabling you to monitor, control and govern traffic to and from web-based APIs within your IT infrastructure.
The number of API deployments is skyrocketing across industries as more companies build service-oriented application layers. As this number grows, software environments are becoming more distributed, making it critical for API traffic to be properly governed and monitored. InterSystems API Manager provides ease of use by enabling developers to route all traffic through a centralized gateway and forward requests to the appropriate target nodes. Developers using InterSystems API Manager will also be able to:
Monitor all API traffic in a central location allowing users to identify and solve issues;
Control API traffic by throttling throughput, configuring allowable payload sizes, whitelist or blacklist IP addresses, and take endpoints into maintenance mode;
Onboard internal and external developers by providing interactive API documentation through a dedicated and customizable developer portal; and
Secure APIs in one central place.
InterSystems API Manager works with InterSystems IRIS or IRIS for Health 2019.2 and up. (Customers using 2019.2 need a new build, 2019.2.0.109.0, now available from the WRC Software Distribution Site).
In order to take advantage of IAM, partners require an InterSystems IRIS license that includes API Management capabilities. This is available free of charge but InterSystems has to issue a new key to enable the functionality.
The IAM distribution is only available in container format. It can be downloaded from the WRC Software Distribution site.
Documentation is part of the regular InterSystems IRIS documentation: InterSystems API Manager Documentation
The IAM version corresponding to this release is 0.34-1-1.
Additional resources
The official Press Release can be found here: InterSystems IRIS Data Platform 2019.2 introduces API Management capabilities
A short animated overview video: What is InterSystems API Manager
An 8-minute video walking you through some of the key highlights: Introducing InterSystems API Manager
A technical introduction on the developer community is now available: Introducing InterSystems API Manager The IAM distribution is only available in container format.Are there plans for rollouting IAM distribution to other options than container and when they will rollout? Hi Juha! Thanks for the question! What are the issues do you face with API Management with container? Hi Juha,IAM is only available in container format and we have no plans to change that at this point in time. I would like to understand the background of your question. Would you prefer a regular installer and if so, why?Thanks,Stefan Stefan,Great to hear that is is now available. Just something I was waiting for to use in my projects. I updated the announcement adding a link to the technical introduction which I just published. Enjoy! :) Can containerized IAM work with non-containerized InterSystems IRIS? Yes. The first release of InterSystems IRIS that supports IAM and is available on all platforms is 2019.1.1.
Question
Vikram Annadurai · Sep 10, 2019
Hi All,I would like to install Intersystems IRIS studio, So I went this link https://login.intersystems.com/login/SSO.UI.Login.cls?referrer=https%253A//wrc.intersystems.com/wrc/Login.cspBut I am getting the below error. So what will be the next step for me!!! please guide me........ Support should indeed help you out. What exactly are you trying to do? Are you already running an InterSystems IRIS server at your organization and you just want to install Studio to connect to it? Or are you looking to install a local evaluation copy of the data platform as well as the IDE? Note - if you're trying to do the former, you can also download and install Atelier, which is the InterSystems IDE plug-in for Eclipse:https://download.intersystems.com/download/atelier.csp Well, if you installed Eclipse 2019-06, can you still get that plug in? It seems to give me problems getting to the store. Hi Benjamin,No, I am not running an Intersystems IRIS serverI am new to Intersystems IRIS platform, So I need to know Where I can run the IRIS code and Where is the IRIS DB. And how can I find those things.(like cache studio, management portal,and so on...)Your guidance would be helpful for me.Best Vikram No. You need to use Eclipse IDE Photon R with Atelier. Got it; thanks. Vikram ... for now, I suggest that you use the opportunity to try InterSystems IRIS for free hosted in a cloud container:https://www.intersystems.com/try-intersystems-iris-for-free/Keep your eyes open for an announcement during Global Summit about another way that you can get your hands on InterSystems IRIS for evaluation purposes.Thanks!Ben Contact InterSystems Support:
https://www.intersystems.com/support-learning/support/immediate-help/ Instead of Studio, you can try to use VSCode-ObjectScript, which is available without any registration and completely for free.
Article
Anton Umnikov · Oct 17, 2019
October 17, 2019
Anton UmnikovSr. Cloud Solutions Architect at InterSystemsAWS CSAA, GCP CACE
AWS Glue is a fully managed ETL (extract, transform, and load) service that makes it simple and cost-effective to categorize your data, clean it, enrich it, and move it reliably between various data stores.
In the case of InterSystems IRIS, AWS Glue allows moving large amounts of data from both Cloud and on-Prem data sources into IRIS. Potential data sources include, but not limited to on-Pem databases, CSV, JSON, Parquet and Avro files residing in S3 buckets, Cloud-native databases such as AWS Redshift and Aurora and many others.
This article assumes that you have the basic familiarity with AWS Glue, at least at the level of completing AWS Glue Getting Started tutorials. We will concentrate on the technical aspects of configuring AWS Glue Jobs to use InterSystems IRIS as a Data Target, or in other terms - "data sink".
Image from https://docs.aws.amazon.com/glue/latest/dg/components-key-concepts.html
AWS Glue Jobs are run in a "Serverless" manner. All the resources, required for performing the job are dynamically provisioned by AWS only for the time the job is actually running and immediately destroyed the moment the job is completed, so instead of provisioning, managing and incurring ongoing costs for the required infrastructure you are being billed only for the time job is actually running and spend you efforts only on writing the Job code. At the "idle" time - no resources are consumed, other than S3 buckets, storing the job code and configuration.
While multiple options are available, typically Glue Jobs are executed on dynamically provisioned Apache Spark and written in PySpark code. Glue Job contains the "Extract" portion, where data is being extracted from data sources, series of "Transformations", build using Glue API and finally the "Load" or "sink" part, where after final transformation data is being written to the target system.
In order to enable AWS Glue to interact with IRIS we need to ensure the following:
Glue has network access to the IRIS instances involved
IRIS JDBC driver JAR file is accessible to the Glue Job
Glue Job is using API, compatible with InterSystems IRIS JDBC
Let's examine each of the required steps.
Create IRIS Connection
In AWS Console select AWS Glue->Connections->Add Connection
Enter the name of your connection and select "JDBC" for Connection Type.
In JDBC URL enter JDBC connection string for your IRIS instance, username and password information.
The next step is crucial - you need to make sure that Glue places its endpoints into the same VPC as your IRIS instance. Select VPC and Subnet of your IRIS instance. Any security group with a self-referencing inbound rule for all TCP ports would do here. For instance - your IRIS Instance security group.
IAM Role with access to JDBC driver
If you haven't done it already - upload IRIS JDBC driver JAR file intersystems-jdbc-3.0.0.jar into S3 bucket. In this example, I'm using s3://irisdistr bucket. It would be different for your account.
You need to create IAM Role for your Glue Job, that can access that file, along with other S3 buckets that Glue would use to store scripts, logs etc.
Make sure it has the read access to the bucket of your JDBC driver. In this case, we granting this role (GlueJobRole) ReadOnly access to all buckets, along with predefined AWSGlueServiceRole. You might choose to further limit this role permissions.
Create and configure Glue Job
Create a new Glue Job. Select IAM Role, we created in the previous step. Leave everything else default.
Under "Security configuration, script libraries, and job parameters (optional)" set "Dependent jars path" to the location of the intersystems-jdbc-3.0.0.jar in the S3 bucket.
For Source - use one of your pre-existing data sources. If you followed tutorials, referenced above you'll have at least one already.
Use "Create tables in your data target" option and select IRIS connection you've created in the previos step. Leave everything else default.
If you followed us up until now you should arrive at the screen similar to this:
Almost there!!! We just need to make one simple change to the script in order to load data into IRIS.
Adjusting the script
The script that Glue generated for us uses AWS Glue Dynamic Frame - AWS proprietary extension to Spark. While it provides some benefits for ETL jobs it also ensures that you can't write data to any database that AWS don't have managed service offering for.
Good news - at the point of writing the data to the database all the benefits of Dynamic Dataframe such as no schema enforcement for "dirty" data are not required anymore (at the point of writing data is presumed to be "clean") and we can easily convert Dynamic Dataframe to Spark native Dataframe that is not limited to AWS managed targets and can work with IRIS.
So the line we need to change is line #40 on the picture above. One before last.
Here is the change we need to make:
#datasink4 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = dropnullfields3, catalog_connection = "IRIS1", connection_options = {"dbtable": "elb_logs", "database": "USER"}, transformation_ctx = "datasink4")
dropnullfields3.toDF().write \
.format("jdbc") \
.option("url", "jdbc:IRIS://172.30.0.196:51773/USER/") \
.option("dbtable", "orders") \
.option("user", irisUsername) \
.option("password", irisPassword) \
.option("isolationlevel","NONE") \
.save()
Where irisUsername and irisPassword are the username and passwords for your IRIS JDBC connection.
Note: storing passwords in the source code is a big No No! We'll encourage you to use tools like AWS Secrets Manager for that, but going into this level of the security details is beyond the scope of this article. Here is the good article on using AWS Secrets Manager with AWS Glue.
Now hit "Run Job" button, sit back and relax while AWS Glue is doing ETL for you.
Well... more than likely you'll hit some errors at first... We all know how it works. A typo here, a wrong port in security group there... AWS Glue uses CloudWhatch to store all the execution and error logs. Browse /aws-glue/jobs/error and /aws-glue/jobs/output log groups to identify what went wrong.
Happy ETLing in the cloud!
-Anton
💡 This article is considered as InterSystems Data Platform Best Practice.
Announcement
Paul Lilienfeld · Nov 18, 2019
Good Morning-
I am currently looking for a Cache ObjectScript Developer. Please see job description below. If you are interested please send an email to paul.lilienfeld@libertyits.com
Required Qualifications:Bachelor s degree in Computer Science, Business Administration, Management Information Systems, Computer Engineering or equivalent experience/trainingWorking knowledge of programming languages3+ years of experience developing and supporting mainframe applications in a collaborative environment that includes business experts and other software developersDemonstrated desire and ability to make meaningful contributions in a team environmentPreferred Qualifications:Experience with MUMPS/Cache Object Script, which is the primary coding language for our Cache database Experience with MySQL would also be a plusShadow server configuration knowledgeECP, DCP, Cache database configuration and troubleshooting
Announcement
Anastasia Dyubaylo · Nov 29, 2019
Hi Developers,
The new video from Global Summit 2019 is already on InterSystems Developers YouTube:
⏯ Showcase: InterSystems IRIS Directions
This video provides additional information about the new and future directions for InterSystems IRIS and InterSystems IRIS for Health.
Takeaway: InterSystems IRIS and IRIS for Health have a compelling roadmap, with real meat behind it.
Presenter: @Jeffrey.Fried, Director of Product Management, Data Platforms
Additional materials to this video you can find in this InterSystems Online Learning Course.
Enjoy watching this video! 👍🏼
Article
Evgeny Shvarov · Oct 27, 2019
Hi Developers!
Those who use Dockerfile to work with InterSystems IRIS often need to execute several lines of ObjectScript. For me, this was a game of "escaping this and that" every time just to shoot a few commands on ObjectScript to IRIS. Ideally, I'd prefer to code ObjectScript without any quotes and escaping.
Recently I found a nice "hack" on how this could be improved to exactly this state. I got this from @Dmitry.Maslennikov's repo and this lets you use Objectscript in a way as you would type it in IRIS terminal.
Here is what you have in dockerfile:
///
COPY irissession.sh /
SHELL ["/irissession.sh"]
RUN \
do $SYSTEM.OBJ.Load("Installer.cls", "ck") \
set sc = ##class(App.Installer).setup()
# bringing the standard shell back
SHELL ["/bin/bash", "-c"]
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]
///
The trick is that before executing ObjectScript we call irisession.sh which does the following:
1. starts IRIS
2. Calls some "standard" ObjectScript commands and brings control to Dockerfile to let you introduce lines in ObjectScript - "$@" instruction.
3. stops IRIS
Check the content of the irissession.sh:
#!/bin/bash
iris start $ISC_PACKAGE_INSTANCENAME quietly
cat << EOF | iris session $ISC_PACKAGE_INSTANCENAME -U %SYS
do ##class(%SYSTEM.Process).CurrentDirectory("$PWD")
$@
if '\$Get(sc) do ##class(%SYSTEM.Process).Process.Terminate(, 1)
do ##class(SYS.Container).QuiesceForBundling()
do ##class(SYS.Container).SetMonitorStateOK("irisowner")
Do ##class(Security.Users).UnExpireUserPasswords("*")
halt
EOF
exit=$?
iris stop $ISC_PACKAGE_INSTANCENAME quietly
exit $exit
This $@ expects one RUN command in Dockerfile which will contain only ObjectScript. If you need to use some more commands in Dockerfile bring the control back with standard shell:
# bringing the standard shell back
SHELL ["/bin/bash", "-c"]
CMD [ "-l", "/usr/irissys/mgr/messages.log" ]
This code is introduced into IRIS community template to let you start using ObjectScript in your IRIS solutions with accurate and readable code.
Learn how to use Github templates with IRIS in this video.
This looks like a convenient way to handle things. It would be good, though, if someone could explain what the various ObjectScript commands in irissession.sh are needed for. I also see no credentials being passed? Well, here are some comments:
do ##class(%SYSTEM.Process).CurrentDirectory("$PWD")
This is to make WORKDIR /opt/irisapp current for IRIS.
$@
Here we run the arbitrary ObjectScript in Dockerfile
if '\$Get(sc) do ##class(%SYSTEM.Process).Process.Terminate(, 1)
Here we check the status of the sc variable changed with status from ObjectScript in Dockerfile if it has an error and terminate IRIS in this case and fail the build.
do ##class(SYS.Container).QuiesceForBundling()
do ##class(SYS.Container).SetMonitorStateOK("irisowner")
Two methods to prepare IRIS operate in a container mode properly. I'm pinging @Luca.Ravazzolo to provide more details on it.
Do ##class(Security.Users).UnExpireUserPasswords("*")
This removes the password expiration because it's very annoying to change the password on every build. This line could be used for DEVELOPMENT MODE only. Please remove the line if you build the image for PRODUCTION. Thanks for that, Evgeny, that does clear up things a bit. I hope Luca responds as well about the Quiesce... and SetMonitorState calls. I get the impression that things relating to creating containers are still changing rapidly. I do find the backslash-escaped multiline commands annoyingly ugly; your post above made that a bit better, compared to what was there before. (I'm hoping some of the ugly boilerplate will be delt with by ISC "inside" the container eventually.) I'm going to play around with your template a bit when I get the time! Hi Evgeny,
As clever as this hack is, I strongly recommend against this approach. This is a fun tool to write but a dangerous tool to hand to someone who doesn't understand all the factors at play well enough that they could have written our own. There are a few problems lurking here just beneath the surface, and when taken together they mean that the SHELL directive in Dockerfiles is not our friend.
Error handling
irissession is a tool intended for human, interactive use. In containers we often make use of it to "bootstrap" some code into IRIS, but there are caveats here. The Docker build daemon interprets exit status 0 as success, and anything else as failure. irissession reports errors by printing them:
USER>write fooWRITE foo^<UNDEFINED> *foo
This error doesn't change irissession's exit status, so it isn't caught by an image build daemon. Nor are bad status values, though I see that @Dmitry.Maslennikov 's caught that by checking "sc". :) Additionally, while these errors end an ObjectScript routine or method when uncaught, they do not end execution in irissession, which increases the risk that these errors get silently swallowed.
No multi-line blocks
The tool here is similar to pasting your text into irissession, which takes line-oriented input. This means that if someone looks at the format and uses blocks, they can get caught off-guard, when blocks like this get read as their component lines:
for i=1:1:10 { w !, "i: ", i}
That gets executed like so:
USER>for i=1:1:10 {
FOR i=1:1:10 { ^<SYNTAX>USER> w !, "i: ", i
i: 1USER>}
}^<SYNTAX>USER>
In simple cases, this is no problem to cram onto one line: "for i=1:1:10 w !, "i: ", i" In complex real-world cases, this paradigm breaks down quickly.
Backslashes
All this and we don't quite get the ability to paste in ObjectScript code from elsewhere. Because of the Dockerfile's syntax re: line endings, each line of ObjectScript that we'd put in still needs an extra backslash, except for the last one.
It's okay, though, because there's a better way.
A better way
Every time you cross the ObjectScript/shell boundary, you have to be careful. Since you have to be careful there, why not cross it as few times as possible? Your existing payload is good:
do $SYSTEM.OBJ.Load("Installer.cls", "ck")
set sc = ##class(App.Installer).setup()
But it could be better. If you're writing Installer.cls, why not add all the other calls there? All of these:
if '$Get(sc) do ##class(%SYSTEM.Process).Process.Terminate(, 1)
do ##class(SYS.Container).QuiesceForBundling()
do ##class(SYS.Container).SetMonitorStateOK("irisowner")
Do ##class(Security.Users).UnExpireUserPasswords("*")
Can be added into your installer.cls. There, you can engage in as-sophisticated-as-you-want error handling, with no need for backslashes and no need to keep a tight leash on your use of whitespace.
You'll still need to have a minimum of one pipe into irissession, until we add other features to streamline this process, but your code will be more readable, and your daily builds will be more robust.
InterSystems IRIS 2019.3 includes a lot of new features for containers, several of which are aimed at streamlining this kind of image building. Take a look at what we've committed to https://github.com/intersystems/container-tools, and what the 2019.3 Class Reference has to say about the SYS.Container class. These things are intended to make the ObjectScript-in-a-Dockerfile process less frustrating, and to demystify some of the things we do like "kill ^SYS("NODE")".
I also see no credentials being passed?
As of 2019.3, the IRIS images we provide have OS Authentication enabled. The net effect of this is that login to irissession is automatic for the right Unix user. This does not change anything else, as the new user can't log in in any other way in those images.
Customers who build their own images from our kits - available on the WRC! - can choose to use this feature or not. I have enabled and used that feature in older versions as well; it is really useful. I have a PuTTY setup with a key pair that starts the IRIS terminal in docker on a remote machine, without any password, but still safe. (I wanted to use my regular account name as well, so I had to do some additional setup in the container, but the principle remains the same.)
Anyway, that explains why there's no need for a password anymore, thanks!
By the way, I have not een an announcement that 2019.3 became an official release, did I miss something? (I also see no Studio for 2019.3, and the 2019.4 preview Studio download doesn't work.) Hi Conor!
Thanks for really wise suggestions. Agreed with everything. Two cents/comments:
1. I think we never want to code a lot of ObjectScript inside Dockerfile. Only a few lines to make some necessary configurations and the intention is to make the code more readable paying with some coding conditions (like sc hard-coded sc for error handling).
2. I am very supportive about putting all the possible setup activity into Installer.cls. But the issue is that not all the actively used setup tweaks are supported by %Installer format, e.g. RESTFul Web app. If you suggest to use <Invoke> - it's better to call method directly. So, here I'm putting some wishes for %Installer format approvements.
Always open for improvements.
I would rather expect that some kind of irissession.sh was implemented by InterSystems. It is a docker build process, InterSystems already added ##class(SYS.Container).QuiesceForBundling() which in fact I would expect it should be called automatically while IRIS stopping during docker build.
I'm against putting all of those container's only lines to Installer manifest, just because of Installer manifests can be used in non-container's environment as well. And those lines need only during docker build.
PS. With 2019.4 this line
do ##class(SYS.Container).SetMonitorStateOK("irisowner")
should not be used (even will give an error), as it is already as part of
do ##class(SYS.Container).QuiesceForBundling() Multi-line blocks
It's actually working. And it's because of code from RUN command goes to chosen SHELL as one line without line endings, \ at the end of the line, is not line ending it is line continuation. So, you can write code in Dockerfile visually like multi-line but it is no so.
Error handling
Any error in iris session will change exit code, so, any such error will fail docker build anyway.
So, with, such lines in my Dockerfile
SHELL ["/irissession.sh"]
RUN \
write !,"Start",! \
for i=1:1:10 { \
write !,"Test Loop",i \
}\
write !,"Finish",! \
write !, error
I will get this
Starting IRIS
Node: 24032930b1e3, Instance: IRIS
%SYS>
%SYS>
Start
Test Loop1
Test Loop2
Test Loop3
Test Loop4
Test Loop5
Test Loop6
Test Loop7
Test Loop8
Test Loop9
Test Loop10
Finish
WRITE !,"Start",! FOR i=1:1:10 { WRITE !,"Test Loop",i } WRITE !,"Finis
h",! WRITE !, error
^
<UNDEFINED> *error
%SYS>
ERROR: Service 'iris' failed to build: The command '/irissession.sh write !,"Start",! for i=1:1:10 { write !,"Test Loop",i } write !,"Finish",! write !, error' returned a non-zero code: 1
As you can see, for loop working well, and UNDEFINED error fails to build That kind of whitespace transformation has serious tradeoffs in ObjectScript. While they're not commonly used, ObjectScript does have cases where two spaces are significantly different than one (argumentless commands), or where a newline and a space are significantly different (legacy versions of no-block FOR, DO, etc). The way that docker parses these things in a Dockerfile, as part of SHELL, mangles that whitespace.
I would rather expect that some kind of irissession.sh was implemented by InterSystems.
The reasons I've listed here are why we have chosen not to implement a feature like this. It is not possible to embed exact ObjectScript syntax inside a Dockerfile. I recommend, wherever possible, piping as few lines as you can into an irissession, and letting the routines or classmethods handle things from there. This is part of why QuiesceForBundling exists.
See this done in imageBuildSteps.sh on GitHub: https://github.com/intersystems/container-tools/blob/master/2019.3/official/iris/imageBuildSteps.sh#L53 Unfortunately, InterSystems officially does not offer how to deal with docker at all. Where articles from, let's say from you or somebody else, with the ways how to do it the Right way.
Comments to the repository https://github.com/intersystems/container-tools:
2019.4 already exists and published, but examples still only for 2019.3
ZSTART.XML in XML format. Why so, when it should be MAC file
quite arguing the decision, to load code in this place
endless loop with goto in the code
Dockerfile, with a line longer than screen size.
where QuiesceForBundling?
InterSystems say how to run InterSystems products with docker, while nothing about running customer's applications on IRIS with Docker.
What's happens here is, it is how the community works. I have a problem, I don't want to write to much in my Dockerfile. I wrote a lot of them, for many different projects. I need some universal way, for me. I did it, and I update my own template from time to time. Hi @Conor.Walsh! Thanks for sharing Container tools! Cool stuff!
Article
Gevorg Arutiunian · Nov 16, 2018
The data model of your solution based on InterSystems platforms constantly changes over time. But what do you do with the data that was entered before? Back then, the data was valid, but what’s happening to it now after a number of data model changes? The answer to this question can be provided by the IDP DV tool that checks the property data of persistent and serial classes according to the types of these properties. In case any discrepancies are found, the tool generates a detailed error report for the user.
## Capabilities
### IDP DV offers three methods of scanning classes:
- Scanning of all classes
- Scanning of all the subclasses of the class
- Scanning of all classes corresponding to the SQL mask
## Usage
To install the tool, just download and import its classes from the repository into the necessary namespace and call the corresponding function.
```
s st = ##class(IDP.DV).ScanAllClasses(.Oid) //for all classes
s st = ##class(IDP.DV).ScanSubclassesOf(Class, .Oid) //for subclasses
s st = ##class(IDP.DV).ScanMatchingClasses(Mask, .Oid) //for SQL
```
### where:
*Oid* — the output structure saving data about unacceptable objects in the classes
*Class* — scanning of all subclasses of the class (and the class itself)
*Mask* — a parameter of the “SELECT ID FROM %Dictionary.ClassDefinition Where ID LIKE ?” SQL query
### Example
For our example, let’s use the Sample.Person class and the ScanSubclassesOf method. Let’s start this method without making any changes to it and with making a single change in one of its properties.
### No changes
```
SAMPLES>s st = ##class(IDP.DV).ScanSubclassesOf("Sample.Person", .Oid)
Sample.Employee has 0 invalid objects
Sample.Person has 0 invalid objects
```
### Having changed the Name property from string to integer:
```
SAMPLES>s st = ##class(IDP.DV).ScanSubclassesOf("Sample.Person", .Oid)
Class: Sample.Person
Object: 1
-----------------------------------------------------------------
ERROR #7207: The value of the ‘Ramsay, Jeff X.” data type is not a valid number
> ERROR #5802: Checking of the data type failed for property ‘Sample.Employee:Name’ with the value equal to “Ramsay, Jeff X.”
...
Class: Sample.Person
Object: 200
----------------------------------------------------------------
ERROR #7207: The value of the ‘Kovalev,Howard F.’ is not a valid number
> ERROR #5802 Checking of the data type failed for property ‘Sample.Employee:Name’ with the value equal to “Kovalev, Howard F.”
```
Comments and suggestions are very much welcome.
The [application with source code and documentation is available on Open Exchange](https://openexchange.intersystems.com/index.html#!/package/IDP-DV)
Link to OE shows an error:UPD: Link should be https://openexchange.intersystems.com/index.html#!/package/IDP-DV Thanks! I fixed it
Announcement
Evgeny Shvarov · Dec 26, 2018
Hi Community!Thank you for being with InterSystems Developer Community yet another year! We appreciate it very much!We want to know how helpful DC for you today and how could we make it better. Could you please go through this short 5 min survey which will let us know what do you think about DC and what could be improved.We wish you a Merry Christmas and a Happy New Year! Sincerely, Your InterSystems Developer Community Team
Announcement
Anastasia Dyubaylo · May 8, 2019
Hi Everyone!New session recording from Global Summit 2018 is available on InterSystems Developers YouTube Channel:InterSystems Healthcare Showcase In this video several of our clients talk about how they are innovating with our healthcare technology.Takeaway: I can create innovative healthcare solutions with InterSystems' software.Presenters: @Jeff.Fried, @Todd.Winey, and Guest Speakers Diane Steidler from Partners Healthcare, George Rosello from Jackson Memorial Hospital, and Eric Widen from HBI SolutionsBig applause for these speakers, thank you guys! Additional materials to the video you can find in this InterSystems Online Learning Course.Feel free to ask any questions about the video in the comments of this post.Enjoy watching the video!
Announcement
Anastasia Dyubaylo · Jun 5, 2019
Hey Community!As you know, InterSystems Developer Community is always evolving. We have a number of different pages in popular social networks. And now we're more than happy to launch the InterSystems Developer Community on LinkedIn! Please welcome:1. Developer Community Page on LinkedIn: to stay in the know about articles, answers, announcements, hot discussions, best practices based on InterSystems technology - so good if you are an active user of LinkedIn!2. InterSystems Developers Group on LinkedIn: to network with other developers.Imagine that you want to invite a high-pro DC member to your event, or you have a question or need advice... How to contact him/her? Now it's easy! Go to DC LinkedIn Group and send a direct message!What's next?We are planning to expand. What do you think about it? In what social networks do you want to see Developer Community? Please leave all your suggestions in the comments of this post.Enjoy and stay tuned! For those who requested direct communication on DC -Developers Group is just for that: join, connect, and chat directly. It doesn't satisfy the request on direct messaging on DC, but it is something which could help.
Announcement
Anastasia Dyubaylo · May 28, 2019
Hi Community!Please welcome a new video on InterSystems YouTube Channel:InterSystems and Python QuickStart InterSystems IRIS™ data platform supports two lightweight Python APIs that provide direct access to InterSystems IRIS databases via relational tables (PyODBC) or multidimensional storage (Native API):PyODBC lets your application quickly retrieve, update, and delete data.The Native API for Python lets your application directly access the underlying data structure within InterSystems IRIS (known as globals) as well as call ObjectScript methods and routines.Watch the video to review ways to connect your application to InterSystems IRIS data platform, or follow the steps in the exercise below to use PyODBC and the Native API for Python to connect to InterSystems IRIS.Visit the Python QuickStart on the InterSystems learning site for more.Enjoy and stay tuned!
Announcement
Jamie Kantor · Dec 2, 2019
Hello, Community!
After beta testing the new exam InterSystems IRIS Core Solutions Developer Specialist at Global Summit 2019, the Certification Team of InterSystems Learning Services has performed the necessary calibration and adjustments to release it to our community. It is now ready for purchase and scheduling in InterSystems exam catalog.
This is InterSystems first certification exam to feature mainly code samples as question topics. To give potential candidates a sample of the exam's content, practice questions have been published to help orient to exam question approaches and content. Take a look here.
Passing the exam allows you to claim the electronic badge that can be embedded in social media accounts to show the world that your InterSystems IRIS development skills are first rate. And if you aren't successful in your first attempt, we now offer a new service, Exam Retake Support, that can help you prepare for a retake. Read all about it in our Policies.
If you are new to InterSystems Certification, please review our new program pages that include information on taking exams, exam policies, FAQ and more. Also, check out our Organizational Certification that can help your organization access valuable business opportunities and establish your organization as a solid provider of InterSystems solutions in our marketplace.
The Certification Team at InterSystems Learning Services are pretty excited about this new exam and we are also looking forward to working with you to create new certifications that can help you advance your career. We are always open to ideas and suggestions at certification@intersystems.com.
Looking forward to celebrating your success,
James Kantor - Certification Manager, InterSystems And I already have it.
Hi,
I think for all those who are certified, there should be an option to add the badge next to their profile here.Even better, Intersystems themselves should add it on their own as they already have the data.
That would not only make the certification more desirable but also will make those who have done the hard work to get certified stand out, can be referred by Intersystems as their preferred consultants and employers also save the effort of scrutinize from dozens of resumes they get.
This platform is the best and may be the only place ideal for my above suggestion. Neerav!
This is a very good idea and of course, we can do that.
But not automatically - not all the members want to expose their certificates.
What is the appropriate way you think? What if we add the extra field in the member profile for the certificate link?
Also, we can add some signs to the avatar image.
Hey,
A sign/star on the avatar and yes ability to add multiple certificates should be there.
The profile should be a brief summary of the person's profession somewhat like Linkedin (Obviously optional if someone wants to fill the values in )
Btw is there a way to update the avatar picture ?? I appreciate if you add a task here - you'll be able to get the update on progress.
>Btw is there a way to update the avatar picture ??
I bet. Same way possibly you added the first one? Hi,
The link is not working. Can you please check?
Thanks fixed, thanks Hi, everyone,
Evgeny is absolutely right - our certified staff must be the ones to decide how they use their credentials. InterSystems cannot automatically publish any credential for a person, they have to do it themselves.
That said, I think it's a great idea to be able to link the credentials to profiles of this community.
Thanks! J. Congrats, Dmitry! It was great to meet you at Global Summit 2019 and hope to see you again, J. For those who participate in ObjectScript Advent of Code 2019: there is an opportunity to receive an attempt for the certification exam for free!
Be one of the top 3 performers in the competition and get a voucher for the certification exam!
The current leaderboard is the following:
And you still have 2 weeks to change the leaderboard!
*The option is not eligible for InterSystems employees so your chances to win are higher! ;) This is great news, Evgeny! Our Certification Team is excited and proud to offer free exam attempts to winners of our Community's initiatives.
So good luck to everyone! We in Certification will be happy to redeem the winners' vouchers for an exam of their choice - even future exams!
Best regards, Jamie And you are able to redeem the voucher for certification attempt with GM points! See the announcement.
Announcement
Anastasia Dyubaylo · Jun 10, 2019
Hi Community!
Please welcome a new video on InterSystems Developers YouTube Channel:
Adopting InterSystems IRIS
This video provides an overview of what it takes to move an existing Caché or Ensemble application to InterSystems IRIS. You will learn that migration is not urgent (unless you want to take advantage of new features in InterSystems IRIS) but that it is often less complex than you might expect. We will also discuss configurations in which InterSystems IRIS, Caché, and/or Ensemble can coexist.
Takeaway: Migrating my existing applications to InterSystems IRIS doesn't have to be a huge headache.Presenter: @Andreas.Dieckow
And...
Content related to this session, including slides, video and additional learning content can be found here.
Don`t forget to subscribe our InterSystems Developers YouTube Channel.
Enjoy and stay tuned!
Question
ramya sri · Dec 11, 2018
what is mirroring?? Take a look at this documentation. It goes in to a lot of detail with some useful diagrams.*edit*There is also this useful Mirroring 101 forum post. If ever you are looking for generalized information, you can always look at learning.intersystems.com as well as the documentation (docs.intersystems.com). There's a lot of good videos there that you can use to help get going. If you have any specific questions there are plenty of us who would be happy to answer them. I agree with the previous answers as a good starting point. If you get past there and want to set up a mirror, take a look at this post.