Search

Clear filter
Article
Dmitry Maslennikov · Nov 5, 2018

Abnormal programming with InterSystems

I bet that not everyone familiar with InterSystems Caché knows about Studio extensions for working with the source code. You can actually use the Studio to create your own type of source code, compile it into interpretable (INT) and object code, and sometimes even add code completion support. That is, theoretically, you can make the Studio support any programming language that will be executed by the DBMS just as well as Caché ObjectScript. In this article, I will give you a simple example of writing programs in Caché Studio using a language that resembles JavaScript. If you are interested, please read along. If you go to the SAMPLES namespace, you will find an example of working with user-defined file types. The example suggests opening a document of the “Example User Document (.tst)” type, and there is only one file of this type called TestRoutine.TST, which, in fact, is generated on the go. The class required for working with this file type is called Studio.ExampleDocument. Let’s not get into this example too deeply and create our own instead. The ".JS" file type is already being used in the Studio and JavaScript that we want to support is not exactly the original JavaScript. Let’s call it CacheJavaScript and the file type will be ".CJS". To start off, create a %CJS.StudioRoutines class as a subclass of the %Studio.AbstractDocument class and add the support of the new file type to it. /// The extension name, this can be a comma separated list of extensions if this class supports more than one Projection RegisterExtension As %Projection.StudioDocument(DocumentDescription = "CachéJavaScript Routine", DocumentExtension = "cjs", DocumentIcon = 1, DocumentType = "JS"); DocumentDescription — displayed as the type description in the open file window in the list of filters;DocumentExtension — the extension of the files that will be processed by this class;DocumentIcon — the icon number starts from zero; the following icons are available: DocumentType — this type will be used for code and error highlighting; the following types are available:INT — Cache Object Script INT codeMAC — Cache Object Script MAC codeINC — Cache Object Script macro includeCSP — Cache Server PageCSR — Cache Server RuleJS — JavaScript codeCSS — HTML Style SheetXML — XML documentXSL — XML transformXSD — XML schemaMVB — Multivalue Basic mvb codeMVI — Multivalue Basic mvi code We will now implement all the necessary methods for supporting the new source code type in the Studio. ListExecute and ListFetch methods are used for obtaining a list of files available in the namespace and for showing them in the open file dialogue. ClassMethod ListExecute(ByRef qHandle As %Binary, Directory As %String, Flat As %Boolean, System As %Boolean) As %Status { Set qHandle=$listbuild(Directory,Flat,System,"") Quit $$$OK } ClassMethod ListFetch(ByRef qHandle As %Binary, ByRef Row As %List, ByRef AtEnd As %Integer = 0) As %Status [ PlaceAfter = ListExecute ] { Set Row="",AtEnd=0 If qHandle="" Set AtEnd=1 Quit $$$OK If $list(qHandle)'=""||($list(qHandle,4)=1) Set AtEnd=1 Quit $$$OK set AtEnd=1 Set rtnName=$listget(qHandle,5) For { Set rtnName=$order(^rCJS(rtnName)) Quit:rtnName="" continue:$get(^rCJS(rtnName,«LANG»))'=«CJS» set timeStamp=$zdatetime($get(^rCJS(rtnName,0)),3) set size=+$get(^rCJS(rtnName,0,«SIZE»)) Set Row=$listbuild(rtnName_".cjs",timeStamp,size,"") set AtEnd=0 set $list(qHandle,5)=rtnName Quit } Quit $$$OK } We will store the description of the programs in the ^rCJS global, and the ListFetch method will traverse this global to return strings containing the following: name, date, and size of the found file. In order for the results of being displayed in the dialogue, you need to create an Exists method that checks whether a file with such a name exists. /// Return 1 if the routine 'name' exists and 0 if it does not. ClassMethod Exists(name As %String) As %Boolean { Set rtnName = $piece(name,".",1,$length(name,".")-1) Set rtnNameExt = $piece(name,".",$length(name,".")) Quit $data(^rCJS(rtnName))&&($get(^rCJS(rtnName,«LANG»))=$zconvert(rtnNameExt,«U»)) } The TimeStamp will return the date and time of the program. The result is also shown in the file open dialogue. /// Return the timestamp of routine 'name' in %TimeStamp format. This is used to determine if the routine has /// been updated on the server and so needs reloading from Studio. So the format should be $zdatetime($horolog,3), /// or "" if the routine does not exist. ClassMethod TimeStamp(name As %String) As %TimeStamp { Set rtnName = $piece(name,".",1,$length(name,".")-1) Set timeStamp=$zdatetime($get(^rCJS(rtnName,0)),3) Quit timeStamp } We will now need to load the program and save the changes in the file. The text of the program, line by line, is stored in the same ^rCJS global. /// Load the routine in Name into the stream Code Method Load() As %Status { set source=..Code do source.Clear() set pCodeGN=$name(^rCJS(..ShortName,0)) for pLine=1:1:$get(@pCodeGN@(0),0) { do source.WriteLine(@pCodeGN@(pLine)) } do source.Rewind() Quit $$$OK } /// Save the routine stored in Code Method Save() As %Status { set pCodeGN=$name(^rCJS(..ShortName,0)) kill @pCodeGN set @pCodeGN=$ztimestamp Set ..Code.LineTerminator=$char(13,10) set source=..Code do source.Rewind() WHILE '(source.AtEnd) { set pCodeLine=source.ReadLine() set @pCodeGN@($increment(@pCodeGN@(0)))=pCodeLine } set @pCodeGN@(«SIZE»)=..Code.Size Quit $$$OK } Here comes the most interesting part: compilation of our program. We will compile into INT code and therefore have full compatibility with Caché. This article is just an example, which is why I used just a small fraction of the capabilities of CachéJavaScript: declaration of variables (var), reading (read), and data output (println). /// CompileDocument is called when the document is to be compiled /// It has already called the source control hooks at this point Method CompileDocument(ByRef qstruct As %String) As %Status { Write !,«Compile: „,..Name Set compiledCode=##class(%Routine).%OpenId(..ShortName_“.INT») Set compiledCode.Generated=1 do compiledCode.Clear() do compiledCode.WriteLine(" ;generated at "_$zdatetime($ztimestamp,3)) do ..GenerateIntCode(compiledCode) do compiledCode.%Save() do compiledCode.Compile() Quit $$$OK } Method GenerateIntCode(aCode) [ Internal ] { set varMatcher=##class(%Regex.Matcher).%New("[ \t]*(var[ \t]+)?(\w[\w\d]*)[ \t]*(\=[ \t]*(.*))?") set printlnMatcher=##class(%Regex.Matcher).%New("[ \t]*(?:console\.log|println)\(([^\)]+)\)?") set readMatcher=##class(%Regex.Matcher).%New("[ \t]*read\((.*)\,(.*)\)") set source=..Code do source.Rewind() while 'source.AtEnd { set tLine=source.ReadLine() set pos=1 while $locate(tLine,"(([^\'\""\;\r\n]|[\'\""][^\'\""]*[\'\""])+)",pos,pos,tCode) { set tPos=1 if $zstrip(tCode,"*W")="" { do aCode.WriteLine(tCode) continue } if varMatcher.Match(tCode) { set varName=varMatcher.Group(2) if varMatcher.Group(1)'="" { do aCode.WriteLine($char(9)_«new „_varName) } if varMatcher.Group(3)'=“» { set expr=varMatcher.Group(4) set expr=..Expression(expr) do:expr'="" aCode.WriteLine($char(9)_«set „_varName_“ = „_expr) } continue } elseif printlnMatcher.Match(tCode) { set expr=printlnMatcher.Group(1) set expr=..Expression(expr) do:expr'=“» aCode.WriteLine($char(9)_«Write „_expr_“,!») } elseif readMatcher.Match(tCode) { set expr=readMatcher.Group(1) set expr=..Expression(expr) set var=readMatcher.Group(2) do:expr'="" aCode.WriteLine($char(9)_«read „_expr_“,»_var_",!") } } } } ClassMethod Expression(tExpr) As %String { set matchers($increment(matchers),«matcher»)="(?sm)([^\'\""]*)\+[ \t]*(?:\""([^\""]*)\""|\'([^\']*)\')([^\'\""]*)" set matchers(matchers,«replacement»)="$1_""$2$3""$4" set matchers($increment(matchers),«matcher»)="(?sm)([^\'\""]*)(?:\""([^\""]*)\""|\'([^\']*)\')[ \t]*\+([^\'\""]*)" set matchers(matchers,«replacement»)="$1""$2$3""_$4" set matchers($increment(matchers),«matcher»)="(?sm)([^\'\""]*)(?:\""([^\""]*)\""|\'([^\']*)\')([^\'\""]*)" set matchers(matchers,«replacement»)="$1""$2$3""$4" set tResult=tExpr for i=1:1:matchers { set matcher=##class(%Regex.Matcher).%New(matchers(i,«matcher»)) set replacement=$get(matchers(i,«replacement»)) set matcher.Text=tResult set tResult=matcher.ReplaceAll(replacement) } quit tResult } You can view the generated INT code for each compiled program or class. To do that, you will need to write a GetOther method. It’s pretty simple — its purpose is to return a comma-delimited list of programs that were generated for the source code. /// Return other document types that this is related to. /// Passed a name and you return a comma separated list of the other documents it is related to /// or "" if it is not related to anything. Note that this can be passed a document of another type /// for example if your 'test.XXX' document creates a 'test.INT' routine then it will also be called /// with 'test.INT' so you can return 'test.XXX' to complete the cycle. ClassMethod GetOther(Name As %String) As %String { Set rtnName = $piece(Name,".",1,$length(Name,".")-1)_".INT" Quit:##class(%Routine).%ExistsId(rtnName) rtnName Quit "" } We implemented a method of blocking a program so that just one developer at a time could edit a program or class on the server. Don’t forget about writing a method for deleting programs. /// Delete the routine 'name' which includes the routine extension ClassMethod Delete(name As %String) As %Status { Set rtnName = $piece(name,".",1,$length(name,".")-1) Kill ^rCJS(rtnName) Quit $$$OK } /// Lock the current routine, default method just unlocks the ^rCJS global with the name of the routine. /// If it fails then return a status code of the error, otherwise return $$$OK Method Lock(flags As %String) As %Status { Lock +^rCJS(..Name):0 Else Quit $$$ERROR($$$CanNotLockRoutine,..Name) Quit $$$OK } /// Unlock the current routine, default method just unlocks the ^rCJS global with the name of the routine Method Unlock(flags As %String) As %Status { Lock -^rCJS(..Name) Quit $$$OK } All right, we have written a class that allows us to work with our type of programs. However, we cannot write such a program just yet. Let’s fix it. The Studio enables you to define templates and there are 3 ways of doing it: a simple CSP file of a particular format, a CSP class inherited from the %CSP.StudioTemplateSuper class, and, finally, a ZEN page inherited from %ZEN.Template.studioTemplate. In our case, we will use the last option for simplicity. Templates can be of 3 types as well: for creating new objects, just code templates, and add-ins, which generate no output. In our case, we will need a template for creating new objects. Let’s make a new class called %CJS.RoutineWizard. Its content is pretty simple – you will need to describe a field for entering the program’s name, then describe the name of the new program and its mandatory content for the Studio in the %OnTemplateAction method. /// Studio Template: /// Create a new Cache JavaScript Routine. Class %CJS.RoutineWizard Extends %ZEN.Template.studioTemplate [ StorageStrategy = "" ] { Parameter TEMPLATENAME = "Cache JavaScript"; Parameter TEMPLATETITLE = "Cache JavaScript"; Parameter TEMPLATEDESCRIPTION = "Create a new Cache JavaScript routine."; Parameter TEMPLATETYPE = "CJS"; /// What type of template. Parameter TEMPLATEMODE = "new"; /// If this is a TEMPLATEMODE="new" then this is the name of the tab /// in Studio this template is dispayed on. If none specified then /// it displays on 'Custom' tab. Parameter TEMPLATEGROUP As STRING; /// This XML block defines the contents of the body pane of this Studio Template. XData templateBody [ XMLNamespace = "http://www.intersystems.com/zen" ] { } /// Provide contents of description component. Method %GetDescHTML(pSeed As %String) As %Status { Quit $$$OK } /// This is called when the template is first displayed; /// This provides a chance to set focus etc. ClientMethod onstartHandler() [ Language = javascript ] { // give focus to name var ctrl = zenPage.getComponentById('ctrlRoutineName'); if (ctrl) { ctrl.focus(); ctrl.select(); } } /// Validation handler for form built-into template. ClientMethod formValidationHandler() [ Language = javascript ] { var rtnName = zenPage.getComponentById('ctrlRoutineName').getValue(); if ('' == rtnName) { return false; } return true; } /// This method is called when the template is complete. Any /// output to the principal device is returned to the Studio. Method %OnTemplateAction() As %Status { Set tRoutineName = ..%GetValueByName("RoutineName") Set %session.Data("Template","NAME") = tRoutineName_".CJS" Write "// "_tRoutineName,! Quit $$$OK } } That’s it. You can now create your first program written in Caché JavaScript in the Studio. Let’s call it “hello”. The source code in CachéJavaScript can look like this, for example: // hello console.log('Hello World!'); var name=''; read('What is your name? ', name); println('Hello ' + name + '!'); Let's save it. After save and compile we will see that int code was generated compiled as well successfully, in the output: Compilation started on 11/04/2018 12:57:00 with qualifiers 'ck-u' Compile: hello.CJS Compiling routine : hello.int Compilation finished successfully in 0.034s. Let's look at another source. We can now run it in the terminal USER>d ^hello Hello World! What is your name? daimor Hello daimor! This is how you can describe any language (to a certain extent, of course) that you like and use it to code the server-side business logic for the Caché/IRIS Data platform. There definitely will be problems with code highlighting if this language is not supported by the Studio. This example demonstrates the work with programs, but can definitely create Caché classes the same way. The possibilities are nearly limitless: you just need to write a lexical parser, a syntax parser, and a full-fledged compiler, then come up with the right mapping between all Caché system functions and specific constructs in the new language. Such programs can also be exported and imported with compilation, as it is done with any other programs in Caché. Anyone willing to do it at home can download the source codes here in udl or xml. Just curious is anybody already uses such feature in their work or looking to use? The title looks "scary" )Dmitry, does your approach need Caché Studio only? Could it be used for Eclipse or Visual Studio Code? At this time, it is supported only with Studio. I can easily add support to VSCode, not sure how it will be possible for Eclipse Atelier. That's amazing, Dmitry. Thanks for the introduction.About the parts of lexical parser, syntax, parse, and full-fleged compiler.... how should that be done, and integrated into the framework once they are done? Oh, I missed them in your post. I think that is what you were referring in the method CompileDocument(). Alternatively you could use proper JavaScript via Node.js and the cache.node / iris.node interface :-)
Article
Sylvain Guilbaud · Sep 25, 2023

InterSystems IRIS trainings

Hi Community, to learn quickly and in total autonomy on IRIS, I offer you some links which can help you in this beautiful bicycle ride rich in discoveries: InterSystems Developer Hub​​​​​​ Full Stack Tutorial Build the IT infrastructure for a company that roasts and sells coffee. See how InterSystems IRIS can serve as your IT architecture backbone REST + Angular Application Build a simple URL bookmarking app using InterSystems IRIS, REST service engine, and the Angular web framework Apply Machine Learning Create, train, validate and use prediction models for hospital readmissions based on a publicly available historical database InterSystems Interoperability Test drive our integration framework for connecting systems easily and developing interoperable applications. Getting Started with InterSystems ObjectScript Developing in ObjectScript with Visual Studio Code Building a Server-Side Application with InterSystems Getting Started with InterSystems IRIS for Coders Managing InterSystems IRIS for Developers InterSystems IRIS Management Basics Predicting Outcomes with IntegratedML in InterSystems IRIS Writing Applications Using Angular and InterSystems IRIS Writing Python Applications with InterSystems Configuring InterSystems IRIS Applications for Client Access Connecting Java Applications to InterSystems Products Connecting .NET Applications to InterSystems Products Connecting Node.js Applications to InterSystems Products Analyzing Data with InterSystems IRIS BI Building Business Integrations with InterSystems IRIS Building Custom Integrations If you want to get started with your own local IRIS instance, I recommend using our templates available at OpenExchange : intersystems-iris-dev-template iris-interoperability-template iris-embedded-python-template iris-fullstack-template iris-analytics-template Thanks @Sylvain.Guilbaud This is pretty useful. This is a great list of resources for the beginners! I think would be great to expand the first link, which contains 4 interactive in-browser tutorials Thanks for the advice @Dmitry.Maslennikov I added direct links to the 4 subsections wow! amazing guide for beginners 🤩 thank you, @Sylvain.Guilbaud!!
Article
sween · May 21, 2024

InterSystems® IRIS Conky

Have written several worthless Conky's in my day, and this one is no exception, but it was fun. I cant imagine anybody is going to use this Conky, but here it is anyway. This is a mere implementation that scrapes the REST API for Metrics and uses the execi to display it on your desktop. conky.conf -- Conky, a system monitor https://github.com/brndnmtthws/conky -- InterSystems IRIS https://www.intersystems.com/products/intersystems-iris/ conky.config = { use_xft = true, xftalpha = 0.8, update_interval = .5, total_run_times = 0, own_window = true, own_window_transparent = true, own_window_argb_visual = true, own_window_type = 'normal', own_window_class = 'conky-semi', own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', background = false, double_buffer = true, imlib_cache_size = 0, no_buffers = true, uppercase = false, cpu_avg_samples = 2, override_utf8_locale = true, -- placement alignment = 'top_right', gap_x = 25, gap_y = 50, -- default drawing draw_shades = true, draw_outline = false, draw_borders = false, draw_graph_borders = true, default_bar_width = 150, default_bar_height = 20, default_graph_width = 150, default_graph_height = 12, default_gauge_width = 20, default_gauge_height = 20, -- colors font = 'Liberation Mono:size=14', default_color = 'EEEEEE', color1 = 'AABBFF', color2 = 'FF993D', color3 = 'AAAAAA', color4 = '3ab4ad', -- layouting template0 = [[${font Liberation Sans:bold:size=11}${color2}\1 ${color3}${hr 2}${font}]], template1 = [[${color1}\1]], template2 = [[${goto 100}${color}]], template3 = [[${goto 180}${color}${alignr}]], }; conky.text = [[ ${image /etc/conky/isc.png -p 325,400 -s 100x250} ${color1}InterSystems IRIS Conky:$color ${scroll 16 $conky_version - $sysname $nodename $kernel $machine} ${color grey}Metrics Endpoint:$color ${scroll 32 http://iris.deezwatts.com:52773/api/monitor/metrics} ${color grey}license_days_remaining: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep license_days_remaining | cut -d " " -f 2 } $alignr ${color grey} system_alerts_new: $color2 ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep iris_system_alerts_new | cut -d " " -f 2 } ${color4}$hr ${color grey}$color CPU and Memory ${color grey}cpu_pct:$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep cpu_usage | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep cpu_usage | cut -d " " -f 2 } ${color grey}page_space_percent_used:$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep page_space | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep page_space | cut -d " " -f 2 } ${color grey}phys_mem_percent_used:$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep phys_mem | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep phys_mem | cut -d " " -f 2 } ${color grey}phy_reads_per_sec: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep phys_reads | cut -d " " -f 2 } $alignr ${color grey} phy_writes_per_sec: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep phys_writes | cut -d " " -f 2 } ${color grey}cache_efficiency : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep cache_efficiency | cut -d " " -f 2 } $alignr ${color grey} process_count: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep process_count | cut -d " " -f 2 } ${color4}$hr ${color grey}$color Database ${color grey}db_disk_percent_full :$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep disk_percent_full | grep USER | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep disk_percent_full | grep USER | cut -d " " -f 2 } ${color grey}db_free_space : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep db_free_space | grep USER | cut -d " " -f 2 } GB $alignr ${color grey} db_latency: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep db_latency | grep USER | cut -d " " -f 2 } ${color grey}wij_writes_per_second: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wij_writes | cut -d " " -f 2 } $alignr ${color grey} trans_open_count: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep trans_open_count | cut -d " " -f 2 } ${color4}$hr ${color grey}$color Journaling ${color grey}jrn_free_space_primary: $alignr $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep iris_jrn_free_space | grep primary | cut -d " " -f 2 } GB ${color grey}jrn_free_space_secondary: $alignr $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep iris_jrn_free_space | grep secondary | cut -d " " -f 2 } GB ${color4}$hr ${color grey}$color Shared Memory Heap ${color grey}smh_percent_full_classes :$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Classes | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Classes | cut -d " " -f 2 } ${color grey}smh_percent_full_globalmapping :$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Global | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Global | cut -d " " -f 2 } ${color grey}smh_percent_full_locktable :$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Lock | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Lock | cut -d " " -f 2 } ${color grey}smh_percent_full_routinebuffer :$color $alignr ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Routine | cut -d " " -f 2 }% ${execibar 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep smh_percent_full | grep Routine | cut -d " " -f 2 } ${color4}$hr ${color grey}$color CSP ${color grey}csp_activity : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_activity | cut -d " " -f 2 } $alignr ${color grey} csp_actual_connections: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_actual_connections | cut -d " " -f 2 } ${color grey}csp_gateway_latency : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_gateway_latency | cut -d " " -f 2 } $alignr ${color grey} csp_in_use_connections: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_in_use_connections | cut -d " " -f 2 } ${color grey}csp_private_connections: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_private_connections | cut -d " " -f 2 } $alignr ${color grey} csp_sessions: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep csp_sessions | cut -d " " -f 2 } ${color4}$hr ${color grey}$color SQL ${color grey}sql_commands_per_second: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep sql_commands_per_second | grep all | cut -d " " -f 2 | printf "%.2f" $(cat - | bc -l)} $alignr ${color grey} sql_queries_avg_runtime: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep sql_queries_avg_runtime | grep -v std | grep all | cut -d " " -f 2 | printf "%.5f" $(cat - |bc -l)} ${color grey}sql_queries_per_second : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep sql_queries_per_second | grep all | cut -d " " -f 2 | printf "%.2f" $(cat - |bc -l) } $alignr ${color grey} sql_row_count_per_second: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep sql_row_count_per_second | grep all | cut -d " " -f 2 | printf "%.2f" $(cat - |bc -l)} ${color4}$hr ${color grey}$color Write Daemon ${color grey}wd_buffer_redirty: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wd_buffer_redirty | cut -d " " -f 2 } $alignr ${color grey} wd_buffer_write: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wd_buffer_write | cut -d " " -f 2 } ${color grey}wd_cycle_time : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wd_cycle_time | cut -d " " -f 2 } $alignr ${color grey} wd_proc_in_global: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wd_proc_in_global | cut -d " " -f 2 } ${color grey}wd_wij_time : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wdwij_time | cut -d " " -f 2 } $alignr ${color grey} wd_write_time: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep wd_write_time | cut -d " " -f 2 } ${color4}$hr ${color grey}$color Routines ${color grey}rtn_call_local_per_sec: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep rtn_call_local_per_sec | cut -d " " -f 2 } $alignr ${color grey} rtn_call_miss_per_sec: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep rtn_call_miss_per_sec | cut -d " " -f 2 } ${color grey}rtn_seize_per_sec : $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep rtn_seize_per_sec | cut -d " " -f 2 } $alignr ${color grey} rtn_load_per_sec: $color ${execi 5 curl -s http://iris.deezwatts.com:52773/api/monitor/metrics | grep rtn_load_per_sec | cut -d " " -f 2 } ]]; Ran the below code below in the POD to drive up the resource consumption in the gif above as the example.CPU fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd Disk Space fallocate -l 1390143672 /data/IRIS/OUTPUT.dat Get your Conky and slap IRIS Monitoring on your X11 display today!
Announcement
Anastasia Dyubaylo · Jan 26, 2022

InterSystems Python Contest

Hey Developers, We are pleased to invite you all to the next InterSystems online programming contest focused on Python! 🏆 InterSystems Python Contest 🏆 Duration: February 7 - 27, 2022 In prizes: $10K - more prizes included! Prizes 1. Experts Nomination - a specially selected jury will determine winners: 🥇 1st place - $4,000 🥈 2nd place - $2,000 🥉 3rd place - $1,000 🌟 4-15th places - $100 2. Community winners - applications that will receive the most votes in total: 🥇 1st place - $1,000 🥈 2nd place - $750 🥉 3rd place - $500 If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners. Who can participate? Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account! Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team. Do not forget to highlight your team members in the README of your application – DC user profiles. Contest Period 🛠 February 7 - 20: Application development and registration phase. ✅ February 21 - 27: Voting period. Note: Developers can improve their apps throughout the entire registration and voting period. The topic The recent release of InterSystems IRIS 2021.2 brings Embedded Python functionality and also extends PEX to Python. We invite you to use Embedded Python in a new programming contest! Applications that use Native API for Python or PEX for Python are welcomed too. Submit an open-source application that uses either Embedded Python or Native API for Python or Python PEX for Python with InterSystems IRIS or InterSystems IRIS for Health. General Requirements: Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest. The application should work either on IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition. The application should be Open Source and published on GitHub. The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works. Helpful resources 1. Developing Python Applications with InterSystems IRIS: Learning Path Writing Python Application with InterSystems Embedded Python Documentation Native API for Python Documentation PEX Documentation 2. For beginners with ObjectScript Package Manager (ZPM): How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM 3. How to submit your app to the contest: How to publish an application on Open Exchange How to submit an application for the contest 4. Example applications: interoperability-python pex-demo python-examples WebSocket AOC2021 Python Faker 5. Videos: Introduction to Embedded Python Embedded Python: Bring the Python Ecosystem to Your ObjectScript App Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side Embedded Python with Interoperability InterSystems IRIS Native Python API in AWS Lambda Judgment Voting rules will be announced soon. Stay tuned! So! We're waiting for YOUR project – join our coding marathon to win! ❗️ Please check out the Official Contest Terms here.❗️ ![yeee](https://media1.giphy.com/media/Fo1cy8mqGDvbjpJBB7/giphy.gif?cid=ecf05e47lna8kh28mgvj32phaelx1xw21kc7d47fzvhampyj&rid=giphy.gif&ct=g) so exited! hehehe))) ??? OEX Conrests shows: Start on March 7th, 2022.I hope Feb. 7th is correct, ??? Thank you Robert, already changed the date.🙏 Hello Developers! Don't miss the opportunity to join the InterSystems Python Contest! Participate, make your solutions and win the prizes! Glad to see this contest and what comes out of it!! I'm waiting the start date to participate with this app: https://openexchange.intersystems.com/package/AI-Image-Object-Detector Community! A few days left to the start of the InterSystems Python Contest! Stay tuned and participate! Developers! Do not miss the upcoming InterSystems Python Contest Kick-off Webinar - tomorrow, February 7 at 12:00 PM EDT! Community! The registration to the InterSystems Python Contest is finally started! We are waiting for your participation! Hey, Devs! We already have 3 participants in the game! 🚀 Check them out: AI Image Object Detector by @Yuri.Gomes appmsw-sql2xlsx by @MikhailenkoSergey GlobalToJSON-embeddedPython by @Robert.Cemper1003 Who is gonna be next?! Another application has been uploaded by @Robert.Cemper1003 ! 🚀 GlobalToJSON-ePython-pure What a great job! Check it out! Developers! Technology bonuses for InterSystems Python Contest have been released! Don't forget to check them! They will give you extra points in the voting. Hi Community! Half of the second week for the registration period is almost over.⌛ We are looking forward to your solutions!👨‍💻 Whose application will be next?👀 What timezone is the deadline for the 20th ? I am looking at the eleventh hour here if I can pull it off and was wondering if I have until midnight 2/20 EST. Registration Ends – February 20, 2022, 11:59:59 PM EST Registration ends on the right day when Python is 31 !! I've posted two articles attached to OEX Application for the Contest: Comparison of Python&Dashboards | InterSystems Developer Community |and Dash-Python-IRIS | InterSystems Developer Community | Dashboards|EmbeddedHow to get bonus points?
Article
· May 1

InterSystems IRIS for Health

InterSystems IRIS for Health™ is a complete healthcare platform, built around a high-performance database, that enables the rapid development and deployment of data-rich and mission-critical healthcare applications. It’s a comprehensive platform spanning data management, interoperability, transaction processing, data normalization, and analytics. Building health information systems that deliver intelligent workflows with real-time analytics is just one possibility of what InterSystems IRIS for Health can do. Among its rich feature set, InterSystems IRIS for Health includes healthcare interoperability, FHIR® support, built-in data transformations, and a powerful data platform.
Announcement
Anastasia Dyubaylo · Apr 23, 2020

InterSystems IRIS Tech Talks: Upcoming Webinars for InterSystems Developers

Hi Community, We're pleased to invite you to join the “InterSystems IRIS Tech Talks”, a new series of webinars presented by InterSystems product managers. The webinars will take deep dives into the latest features of InterSystems IRIS 2020.1 from a developer’s perspective. They’ll go beyond the high-level overviews and kick the tires on the very best and latest technologies we’ve released. Please have a look at the list of webinars planned for May and June: ✅ API-First DevelopmentDate: May 5, 2020Time: 10:00 AM EDT ✅ Integrated Development EnvironmentsDate: May 19, 2020Time: 10:00 AM EDT ✅ DevOpsDate: June 2, 2020Time: 10:00 AM EDT So, dear developers! You're very welcome to join the upcoming InterSystems Tech Talks! ➡️ REGISTRATION IS ALREADY OPEN! Hope you enjoy the new webinars! And please find the first webinar recording on Data Science, Machine Learning & Analytics here: WATCH NOW Stay tuned!
Article
Tony Coffman · Feb 6, 2020

Connecting to InterSystems Caché and InterSystem IRIS with BridgeWorks VDM

Hello Community, Thank you all for your continued feedback and support of our ad hoc reporting platform, VDM. There's been some questions around setting up a non-ODBC connection for InterSystems platforms. We published a new YouTube video showing the steps necessary to connect to InterSystems Caché and InterSystem IRIS with BridgeWorks VDM. jQuery(document).ready(function ($){$("#youtubeNtH5w4AzmMY").css("height",$("#youtubeNtH5w4AzmMY").css("width").replace(/[^0-9]/gim,"")/(560/315));$(window).resize(function(){ $("#youtubeNtH5w4AzmMY").css("height",$("#youtubeNtH5w4AzmMY").css("width").replace(/[^0-9]/gim,"")/(560/315));});});
Announcement
Jeff Fried · Dec 10, 2019

InterSystems IRIS and InterSystems IRIS for Health 2019.4 released

The 2019.4 versions of InterSystems IRIS, InterSystems IRIS for Health, and InterSystems IRIS Studio are now Generally Available! These releases are available from the WRC Software Distribution site, with build number 2019.4.0.383.0. InterSystems IRIS Data Platform 2019.4 has many new capabilities including: New Automatic Configuration Customization System security, performance, and efficiency enhancements including node tables ICM support for Tencent Cloud List Class available in the Native API for Java and .Net Container and Cloud Deployment improvements SQL enhancements InterSystems IRIS for Health 2019.4 includes all of the enhancements of InterSystems IRIS. In addition, this release includes FHIR searching with chained parameters (including reverse chaining) and minor updates to FHIR and other health care protocols. These are detailed in the documentation: InterSystems IRIS 2019.4 documentation and release notes InterSystems IRIS for Health 2019.4 documentation and release notes InterSystems IRIS Studio 2019.4 is a standalone development image supported on Microsoft Windows. It works with InterSystems IRIS and InterSystems IRIS for Health version 2019.4 and below, as well as with Caché and Ensemble. As this is a CD release it is only available in OCI (Open Container Initiative) a.k.a. Docker container format. The platforms on which this is supported for production and development are detailed in the Supported Platforms document. Hi Jeff! Thanks! When the new release will be available on Docker Hub? These are now available! docker pull store/intersystems/iris-community:2019.4.0.383.0 docker pull store/intersystems/irishealth-community:2019.4.0.383.0 Thanks, Steve! Hi Jeff, Is there a distinct Health Connect build? I'm upgrading from 2017.1 Kind regards, Stephen Hi Stephen - Sorry for the slow response on this. We are not releasing the quarterly CD releases for Health Connect, so there isn't a 2019.4 available for it. The most recent version is 2019.1.1. But we'll have a 2020.1 out shortly (there's a preview available now if you want to work with it). Since you are moving from 2017.1, you should be aware that the underlying technology has changed (from being based on Ensemble to being based on InterSystems IRIS) , so technically this is an in-place conversion. Please look at the in-place conversion guide ahead of your move, and if you follow the steps it should go quite smoothly. -jeff
Announcement
Evgeny Shvarov · Aug 23, 2017

Share Your InterSystems Solution on InterSystems Global Summit 2017

Hi, Community!For those developers who are attending Global Summit 2017 this year: you have an opportunity to share your solutions, framework, and experience with the rest GS attendees and Developer Community.On Monday 11th we would have Developer Community Sessions in Tech Exchange Open House (see the agenda).Every presenter would have 10 minutes for slides and 5 minutes for questions. So we have 6 slots available at the moment.We would have a live stream of the event on DC YouTube so you would be able to watch it and ask questions in comments to the streaming over Internet.If you want to participate and share your InterSystems solution or framework leave the comment to this post, we would contact you directly.The agenda of the event would be updated here upon incoming requests.Share your InterSystems Developer Solution on Global Summit 2017 the largest annual InterSystems Solutions Developers ConferenceCurrent agenda for the meeting: TimeSessionPresenterSite 5:00 pmDependencies and Complexity [@John.Murray] georgejames.com 5:15 pmRESTForms - REST API and UI Framework for your persistent classes [@Eduard.Lebedyuk] RESTForms 5:30 pmDeepSee Web - Angular and Mobile UI for Deepsee Dashboards [@Evgeny.Shvarov] DeepSeeWeb 5:45 pmCaché ObjectScript Code Quality Management Carlos Carlà cachequality.com 6:00 pmDocker, why and how it can be used in development [@Dmitry.Maslennikov] 6:15 pm Kano MDM - Master Data Management Solution [@Liudmyla.valerko] kanosoftware.com 6:30pmA Secure Distributed System DevOps Architecture with Caché, Git Ansible and Object Synchronization [@Amir.Samary]` 6:45pm Visualizing DeepSee Data Your Way [@Peter.Steiwer] Live Stream on DC Channel. Ask your questions! Hi, Community! We have 3 first sessions for DC Sessions meeting. Have 3 more available. Hi!We would like to talk about Static Code Analysis for COS. AsOne has developed a multi tenancy, multi lingual massive ERP system in Cache which has been deployed in many industries. Would be a good showcase - could we get a slot ? Refer Richard Courier, Mike Fuller etal Hi, Daniel! That's great. Contacted you via email regarding presenter and topic. Hi, Andre! Sounds great! Check your email for details. Hi, Daniel! Your session on Caché ObjectScript static code analysis is introduced! HiI'd like to make a small presentation of Ensemble-based Master Data Management Solution Kano MDM. We are also going to participate in Partner Pavilion. Could you please schedule our presentation. Hi, Liudmila!Sure! We'll contact you directly via email about session details, slides, and presenter. One more session has been introduced to the schedule: "Docker, why and how it can be used in development" by [@Dmitry.Maslennikov] We introduced two more sessions:"A Secure Distributed System DevOps Architecture with Caché, Git Ansible and Object Synchronization " by [@Amir.Samary] and "Visualize DeepSee Data Your Way" by [@Peter.Steiwer].We are starting at 5pm (PT) at Tech Exchange, Developer Community table (Pike's Peak). Come the sessions! Join DC Flash Sessions online on the InterSystems Developers YouTube Channel at 5pm (PT).
Question
Saptarshi Sengupta · Jan 24, 2020

Intersystems and JReport

Intersystems use JReport as their reporting framework. Are there any free version available for developers to try it out? If yes, can I avail the link? Is there any free trial version for 'DeepSee'? if yes, can I avail the link? Thanks in advance for your feedback. Logi JReport are currently available for operational reporting as part of InterSystems TrakCare. InterSystems IRIS Business Intelligence (aka "DeepSee") is available for all InterSystems products for data modeling, exploration and dashboarding. Evgeny pointed you to all the download information needed for that. JReport and InterSystems IRIS BI are complimentary as they provide different capabilities. I am interested in hearing more about your operational reporting requirements. Download as by PRODUCTS / Download IRIS .Never heard of J-Report before. IRIS Analytics. (DeepSee) is included even in IRIS Community Version by default so you are welcome to try. 3 easiest ways to try: 1. download IRIS Community version as @Robert.Cemper1003 mentioned. 2. Launch Try IRIS instance 3. Docker pull the image 4. Run an instance of IRIS on a cloud you like: Azure, AWS, GCP. You have IRIS Analytics with Community Edition but you probably want to try something working. Samples BI is not included but could be installed. The easiest way to install is to use ZPM. Or even to launch a docker image with ZPM on board and install Samples-BI with one command. Also, I can recommend trying AnalyzeThis by @Peter.Steiwer - it's a nice tool to generate a cube+pivot+dashboard vs arbitrary csv file. HTH Hi, If you want to try J-Report, here is a link for the trial version: https://www.jinfonet.com/product/download-jreport/For an OpenSource alternative, you can take a look at Jasper Reports Community Edition https://community.jaspersoft.com/ I used to work with Jasper Reports to generate PDF reports for my customers. To connect to InterSystems IRIS, use the ODBC and voilá. As mentioned by @Carmen.Logue , if you tell us your reporting requirements, that should be easier to discuss alternatives. Thank you very much. Yes JReport trial version does not help much as it is only last 14 days. Regarding Jasper Report, did you install 'Jaspersoft Studio'? I want to work on JReport Designer,which uses JDBC... I mainly want to master JReport Designer, so I can develop/design report. Therefore, do you think, Jasper Studio would provide me similar environment? Any lead would be appreciated. Thanks. @the.alchemist If you want to develop/design reports. Jasper Studios is what you looking for. Free and simple Hi Henrique, Does jasper reports run one time or is it real time. What I intend to have is a real time report embedded in the zen page. not a pdf. i mean a downloaded pdf may be a plus, but not the endpoint Any thoughts? Hi, Jasper Reports will work just like Crystal Reports. It will generate PDF reports on demand. But, you can take a look here: https://www.jaspersoft.com/downloadMaybe what you need it's more than the Jasper Studio. We (#Roche) will also be very interested in having JReport integrated with IRIS in order to generate pdf files given specific data (i.e.: a screen table, a patient test)
Question
Kevin Johnson · Sep 10, 2020

Is InterSystems Global Masters and InterSystems Global Masters Gamification Platform the same?

Hello there Community, I am so pumped and curious about this platform. The more I search about it, the more deeper it goes just as the maze. I followed the following link https://community.intersystems.com/post/global-masters-advocate-hub-start-here and it took me to a page where i learnt more on what Global Masters is and also more about the Advocate Hub. But then I came across an very confusing this named as the Global Masters Gamification Platform. I was denied permission when i tried to access it. (Screen Shot has been attached.) Well, my question is, are both the Global Masters and Global Masters Gamification Platform the same or are they two different platforms ? If they are different I would like to know on how to gain access to it as well. Hoping to hear soon from you all. Regards. @Olga.Zavrazhnova2637 , it looks like we have a bad link at https://community.intersystems.com/post/global-masters-advocate-hub-start-here (leading to the certificate error shown). @Kevin.Johnson3273 see https://intersystems.influitive.com/users/sign_in instead of the link in that article Hi Kevin, thank you for your question. Global Masters and Global Masters Gamification Platform are the same. @Timothy.Leavitt thank you! The link was broken indeed - already fixed it 👌 Good day to all! Hello @Kevin Johnson, Answering to your question, Yes, You are correct. Both are the same and has no difference. The only difference is that the way they have named it. Both are the same. #Good Day.
Question
Kranthi kumar Merugu · Nov 6, 2020

Need to know the difference between InterSystems Cache DB and InterSystems IRIS

Hi Team, What is the difference between Intersystems Cache DB and Intersystems IRIS ? I am looking for Cache DB installation details, but getting IRIS only everywhere. we are looking for a POC to test it. Thanks, Kranthi. The scope and the dimension of possibilities are much wider with IRIS than it was with Caché.Very generally speaking: There is nothing in Caché that you can't do with IRIS.The only thing you might miss eventually, are some ancient compatibility hooks back to the previous millennium. Also, support of some outdated operating system versions is gone In addition to what @Robert.Cemper1003 said InterSystems IRIS is much faster than Caché in SQL, it has officially released Docker images, it has IRIS Interoperability and IRIS BI is included and it has Community Edition which gives you the way to develop and evaluate your solution on IRIS which is less than 10GB without ordering a license. And IRIS has a Package Manager ZPM which gives you a universal and robust way to deploy your solutions. I would also add better JSON support with %JSON.Adapter (the lack of which currently causes a lot of struggle for us on the older version) Hi Kranthi, I believe that you are just finding information about IRIS because it is something that is "in fashion". Part of Summit was about this, if you look at the developer community, basically just talk about it. In a way, we are almost unconsciously induced to migrate to IRIS. It is a fact that they have differences as friends have already commented, however, in general, it is more of the same. For differences between InterSystems CACHE and InterSystems IRIS Data Platform I suggest you have a look here. Specifically you can find there a table comparing the products (including InterSystems Ensemble). As well as a document going into detail about various new features and capabilities If you want to perform a PoC for a new system definitely use InterSystems IRIS. At a high level you can find the feature differences between Cache, Ensemble and IRIS here: https://www.intersystems.com/wp-content/uploads/2019/05/InterSystems_IRIS_Data_Platform_Comparison_chart.pdf
Announcement
Andreas Dieckow · Oct 10, 2019

Full kit versions of InterSystems IRIS and InterSystems IRIS for Health for Developers!

InterSystems is pleased to announce a new Developer Download site providing full kit versions of InterSystems IRIS Community Edition and InterSystems IRIS for Health Community Edition. These are available free of charge for application development use. You can download directly from the InterSystems Developer Community by selecting Download InterSystems IRIS. Those instances include a free built-in 13-month license. They are limited to 10GB of user data, will run on machines up to 8 cores, support 5 concurrent connections and are supported for application development. Available Platforms: RedHat, Ubuntu, SUSE, Windows and macOS. InterSystems IRIS and InterSystems IRIS for Health are also available in container format from the Docker Hub. Please check here for information on how to get started, visit the InterSystems IRIS Data Platform page and the InterSystems IRIS for Health page on our website to learn more about our products, and visit the Developer resource page to get deeper with development. If you previously registered for an InterSystems Login account (e.g. for the Developer Community or WRC Direct), you can use those credentials to gain access to the Developer Download. Why is there no Container option? Hi Angelo! This is a very good question. But there are community versions in containers on docker: image name are for InterSystems IRIS: store/intersystems/iris-community:2019.3.0.309.0 and for InterSystems IRIS for Health: store/intersystems/irishealth:2019.3.0.308.0-community Check this template app to start using this immediately. Hi Evgeny, thanks for informations, even though I already knew that, but there should be everything produced on the download site. I second having the conatiners available in the same place. Also could you show the version number available before downloading and are these production releases or previews? David, Thanks for your feedback! In general, Developer Download always makes available the latest GA version of our two Community Edition products. In this case we wanted to be able to launch by Global Summit and so we went with the Preview since 2019.1.1 kits were not full GA yet. There are ongoing discussions about the pros/cons of making containers available here rather than people just fetching them directly from Docker. We'll let you know the final decision! We will post container kits here as well. Those are released versions and not previews, that can be used for Development, but not for deployments. Thanks for the clarification. The fact that the current download is slightly different from the norm due to a Global Summit launch does highlight the need for a brief explanation of the version you are downloading though. David - I completely agree. It's an excellent suggestion and we'll get it put in place. Hi David, thanks for this suggestion. File names that include full version strings are now visible prior to download. Thanks for adding that, in the case of a preview it might be worth adding this to the "Notes" section to save cross referencing with release notifications or the usual downloads page. I was just able to install IRIS on an Apple MacBook Pro, with Parallels and Windows 10 Pro. I installed the current FOIA VistA with about 8.2 GB of data. Everything worked good until getting to the Taskman and RPC Broker startup. This has always been an issue with the developer version from Intersystems. It's almost enough users to bring up Taskman. Not nearly enough to bring up Taskman and the RPC Broker. It's great to have IRIS Studio. Everything seems just like Cache with a new name. Thanks Intersystems. David - FYI, the full Release Version of 2019.1.1 Community Editions is now available at Download.InterSystems.com I just installed the IRIS for Windows (x86-64) 2021.1 (Build 215U) Wed Jun 9 2021 12:15:53 EDT [Health:3.3.0] ... and the license key expires 10/30/2021. Where can I get a new license, or newer version? I read where it should be for 13 months. I could barely get started in 40 days... ExpirationDate=10/30/2021
Article
Evgeny Shvarov · Jul 28, 2019

How to Learn InterSystems IRIS on InterSystems Developers community? Part 1

Hi Developers! Recently I was asked, “How can a beginner in InterSystems technologies learn from InterSystems Developers community content to improve his developer skills”? This is a really good question. It has several answers so I decided to write the post with the hope it could be useful for developers. So! How to learn Intersystems Data Platforms(IRIS, IRIS for Health) from InterSystems Developers community content if you are a beginner? Beginner and Tutorial tags First, it worth to check articles with Beginner tag and Tutorial tags. Developers who write articles put these tags if they describe the basics or are the tutorials for some InterSystems IRIS features. InterSystems Best Practices Next, if you are looking for some serious stuff check the Best Practices tag. Every week InterSystems product management selects a new article and put Best Practices tag on it. So if you subscribe it you have a new InterSystems best practice every week. Views and Votes Another way to find helpful posts is to pay attention to what developers on community vote for and what developers read most. Indeed, if a developer finds the article helpful he votes up so we can consider that articles with the most of votes are the most useful. This is the filter of the most voted articles. Also, the articles with most of the views could be considered useful too, cause not all the developers vote (and voting need the registration) but we count all the reads. So the articles with most of the views maybe not only are the most popular but also are useful. And often the questions which have accepted answers could be very useful cause it is a solved problem. Same as with articles you can filter questions with accepted answers by votes and by views and hopefully find your answers but definitely is a helpful read. Ask your questions! And of course, the best way to learn and get the experience in technology is to practice with it, run into the problems and solve it. So, you’ll have questions during the process and don’t hesitate to ask your questions on InterSystems Developers - sometimes you’ll get the answers even before you end typing the question! Resources for InterSystems Beginners And of course, it worth to mention the general resources for developers-beginners in InterSystems data platforms. They are Documentation, Online Learning, Try InterSystems IRIS sandbox, classroom learning, InterSystems Developers Videos. Developers, you are very welcome to submit other ways and advice on how to learn InterSystems Technology on Developer Community in the comments below.
Announcement
Olga Zavrazhnova · Oct 6, 2020

InterSystems Digital Services for Business

Hi Community, We introduced Business Services Rewards on Global Masters, so now you have a great opportunity to highlight applications, solutions, services of your company on Developer Community and our social media, and even redeem a Google AdWords campaign for your OEX application! $1,000 Google AdWords Campaign Voucher Redeem this prize to promote your OEX application on Google Adwords.We will set up the campaign (keywords, description, audience) and will send a report after campaign is over. Requirements: The application should work on InterSystems IRIS/IRIS for Health or be a tool to manage/develop with IRIS. 3,000 points "NEWS" Promo Block on Developer Community Redeem this prize to promote your services, events or vacancies on Developer Community. Duration: 1 week. Through all website pages on the right. Our designer will prepare a banner for you. Requirements: Development services, events or vacancies should be related to InterSystems technology. 1,500 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 during 1 week, through all website pages on the right in the "App of the week" block. 1,000 points Webinar supported by InterSystems Would you like to organize a professional webinar for developers to tell about your solution/tool and your company services? Redeem this reward and we will help to organize it. What you will get: InterSystems team will set up an online webinar; Promotion of the webinar on DC and social media; Landing page on Developers Community; Dry-run before and technical support during webinar. Requirements: The application should work on InterSystems IRIS/IRIS for Health or be a tool to manage/develop with IRIS. 3,000 points Your Video on InterSystems Developers YouTube channel Do you have a YouTube video that describes the tool, solution or experience related to InterSystems Data Platforms? Increase the traffic to your YouTube videos ordering the Video Boost Pack: 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. 1,500 points Introduce Your Company's Tag on Developer Community Redeem this prize to get a tag for your Company on Developers Community and thus a description, a section with posts and your own subscribers. 5,000 points How to redeem if you are not a Global Masters member yet? ➡️ We invite you to join: Log in to Global Masters with the same credentials you use on DC. Answer 4 questions in "Customize your program. START HERE!" challenge (you'll see it there). Points for your contribution to OEX and DC will be automatically awarded within 3 days. Redeem the prizes at the Rewards catalog. InterSystems Developer Community has an audience of more than 80K people visiting every month. Let the world know about your applications, solutions, and services built on InterSystems Data Platform! Feel free to ask your questions in the comments below. Additional information about Global Masters: What is Global Masters? Start Here