Ben Spead · Sep 14, 2020 go to post

@Perla Escarcega  - taking a closer look at this, I think we had an issue with a historical file clean-up routine which was a little too overeager to reclaim space.  All of your source is safe and available but you may need to create a fresh ItemSet to push this source.  Note - you should always be making fresh ItemSets anyway because the head revision may be newer than what is in your historical ItemSet, and you don't want to get an older revision of something which breaks when interacting with a newer revision of other items.  So simply create a new ItemSet for BASE and deploy it and you should be all set.

P.S.  This does raise the question of why you are initializing a new Secondary BASE environment from old ItemSets as opposed to just grabbing the head revision of the BASE source and running Refresh to pull it all into the Namespace?  I am afraid your approach may be significantly more risky than the recommended approach.  

Ben Spead · Sep 14, 2020 go to post

Actually - I take back my statement now that I looked at the error more closely.  It appears as though it's trying to fetch an ItemSet by ID that doesn't actually exist.   What is the CCR in question?

Ben Spead · Sep 14, 2020 go to post

@Perla Escarcega  - the fact that it is already in LIVE should not have any bearing here.  I am guessing that the newly created Namespace is part of a newly created instance?  It looks like you may have an older version of the CCR Client Tools with a bug in it.  Could you provide the results of "Do Version^%buildccr" so we can see what versions of the tools you are running?

Ben Spead · Sep 11, 2020 go to post

I hope that someone else can chime in and confirm, but my understanding is that we don't release Caché on containers, only InterSystems IRIS containers (I just looked in the Distributions section of the WRC to confirm).  However, you should be able to get a InterSystems IRIS container to play with so this shouldn't be a blocker for you - just grab an InterSystems IRIS container (available via the WRC Distributions page, or Docker Hub) and use that to try the demo.

In terms of Caché on containers, I know that there are people in the community who have 'rolled their own', and you can find details on threads here, but I don't think you want to go in that direction if you're new with containers.  

HTH - good luck!

Ben

Ben Spead · Sep 11, 2020 go to post

I need to defer to @Sergei Shutov  for many of the answers but I can help with one of these:
[quote]

- General web application question for Cache/IRIS: once I create the web application for example at \csp\mxdtest, any subfolder there is treated as part of the app, yes?  So i could create C:\InterSystems\Cache\CSP\mxdtest\images and the images folder are part of the web applcation  \csp\mxdtest?

[/quote]

Yes, that is correct.  Your subfolders under the root should be navigable via the CSP application.  NOTE - I think this can be overridden by web server settings, but this is the default behavior and I leverage it frequently for my apps

Ben Spead · Sep 11, 2020 go to post

I will admit - I was taken by how persuasive the tone was and was planning a rebuttal until I got to the last paragraph.  Well done Igor :)

Ben Spead · Sep 1, 2020 go to post

@sjbttt sjbttt  - it sounds like you want to set up source control which controls this Readonly property on the server, is that correct?  If that is the case, then you will need to use server-side source control hooks.  https://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=GSTD_Hooks  would be a good place to start understanding how to manage this in general.

For your specific question, the way we force classes to be read-only with our source control hooks is via the GetStatus() method which should be extended from the %Studio.SourceControl.Base subclass of your hooks (see https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?APP=1&CLASSNAME=%25Studio.SourceControl.Base
).  This method returns an "Editable" property which your hooks control and which can be used to force the IDE (Studio, Atelier or VSCode) to treat the file as Readonly, thereby preventing users from changing it.  In our development workflow, we will force the class to be Readonly in the following situations:

  •  The user does not have it checked out
  • A different user has it checked out
  • The entire namespace has source locked (e.g. for non-development environments)
  •  It is mapped from another namespace (we manage our source branches based on Namespace so we treat a read-only those things which are not in the current Namespace

Hope this is helpful.  

Ben Spead · Jun 24, 2020 go to post

That may be the cleanest you can get it, unless you know that the methods are always Classmethods of the class you are calling in which case you don't need to send $classname() every time.  But sending it does allow for the generalized use-case of calling to different classes.

I was playing around to programmatically figure out how many argument a method accepts using %Library.ClassDefinition, however I just realized that if $classmethod() can't accept variable argument quantities than this doesn't help at all and you'd still end up with the approach that you have above.  

It may be worth a note to the WRC to ask for an enhancement to $classmethod() (unless someone chimes in here to say that there is a way to pass a variable number of arguments to it)

Ben Spead · Jun 24, 2020 go to post

I think you could generalize the sample I pasted about which uses $classmethod but passing in a collection of some sort with the Method name as the first item and the arguments for the method as additional items and then iterate through that.  It could be a $LB of $LBs or a JSON object.  It would be easier if there was a set number of arguments that were allowed.  This approach is probably a little safer than the use of Exceute.

Ben Spead · Jun 24, 2020 go to post

Not sure what you mean by occurring before and after.  However, you could pass the name of the method and then execute it using $ClassMethod within MethodA()

Something like:

Do ..MethodA("Method1","var","Method2",0)

MethodA {method1, arg1, method2, arg2) {

Do $classmethod($classname(),method1,arg1)

Do $classmethod($classname(),method2,arg2)

}

But again, I am not entirely sure what you want to accomplish here....

Ben Spead · May 21, 2020 go to post

Allan - do you just need Studio or do you need a running DB at 2017.1?  If you need a running DB then you will need a license, and assuming you have a license as a supported customer you can grab the distribution you need from the WRC Downloads page: https://wrc.intersystems.com/wrc/coDistribution.csp

If you only need Studio in order to connect to a 2017.1.1 instance, then you can install the latest InterSystems IRIS Community Edition which is freely available at https://download.InterSystems.com and you can install that and use InterSystems Studio from within that installation to connect to the 2017.1 instance.  Technically, if you are not a Supported Customer then you should only have access to the Community Edition software kits.

Please let us know if you are able to get what you need from this.

Ben Spead · May 21, 2020 go to post

I have a follow-up question about the coloration Dmitriy.  Any of the developers on my team may need to connect to anywhere from 50-60 shared servers for development, testing and production, and years ago we simplified access by having our change control system auto-generate windows registry keys so that developers can simply import the file and their cube's Server Manager will automatically list all applicable Studio server connections for that application.  For Studio, server-specific background coloration is stored in the Windows Registry so we auto-color each of the servers according to their type (no color for dev, test is yellow background and production is a red background).  We have found this to be extremely helpful in preventing accidental checking out of source in non-development environments (we use serverside source control hooks exclusively).

Eventually we'll be moving to VSCode (once server-side workflows are complete) and I would very much like to create an equivalent solution where a developer can easily and quickly build out a catalog of servers to connect to from VSCode by generating the required json connection files on our change control application so developers can just import them into their local environments.  Will it be possible to include color along with the JSON that includes the server connection details?  Or is the color config stored somewhere apart from your plug-in in VSCode?   

Ben Spead · May 15, 2020 go to post

I suggest you contact Support if no one provides insights on this thread.  

Ben Spead · Apr 21, 2020 go to post

Kevin,

If you are interested in a full kit install rather than a container, you can get yourself a full kit of InterSystems IRIS For Health Community Edition from:

https://download.InterSystems.com

(If you are interested in a container, see the other answers people have already given you)

HTH - welcome to the community and feel free to ask any questions here as you are learning / gaining your experience!

Ben

Ben Spead · Mar 24, 2020 go to post

Excellent article Tim!  Great description of how people can move the ball forward with the maturity of their development processes :)

Ben Spead · Feb 25, 2020 go to post

@Amanda Priestly  - yes, absolutely.  The initial beta covers the 6 areas covered in this article.  We will eventually be updating the entire application but we're working through it one section at a time.   The next section will be the System Details page. 

Ben Spead · Feb 25, 2020 go to post

@Amanda Priestly - thank you so much for trying it out!

The issue is that there are many sites around the world with a SystemName of "T2018".  You need to specify the site that you're interested in, eg "SCBO/T2018".

We have a development task to make this more clear and keep people from being stuck on this point.  I hope we'll have it in place within the next week or so.  Thank you! 

Ben Spead · Feb 21, 2020 go to post

I suggest you work with your Sales Rep to discussion licensing options. 

As a licensed customer you can go to evaluation.intersystems.com in order to grab an InterSystems IRIS evaluation key for trying out the product.

Ben Spead · Feb 19, 2020 go to post

Neerav,

Thank you for your interest!  Although per the post this is only open to "users at CCR-controlled sites".   Looking at your D.C. profile I don't think this is the case for you.  If you are actually using CCR already, then you will need to log in with the InterSystems SSO account that you use to do your CCR work in order to try out the beta.

Thanks!

Ben Spead · Dec 19, 2019 go to post

Neerav,

For internal applications within InterSystems, we've chosen a webapp strategy of:

- REST services from Caché/InterSystems IRIS

- Angular8

- Angular Material

We are part-way into the implementation of this strategy and so far so good.  However, the work that we've done so far doesn't yet fit in the category of "tons of data to display' so I can't comment first-hand on the efficacy of this stack for that requirement (but you should be able to find experiences of others using Angular for data-heavy web apps).  We are using this for new application development, and we're also working to retrofit existing CSP/Zen apps and move them to this stack.  

Hope that helps!

Ben Spead · Nov 14, 2019 go to post

Mike - I think the issue is that Apache is working in conjunction with Web Applications defined in Caché, and it hands off requests to the Web Applications (e.g. /csp/samples), which then serve out the files (this is configurable btw for static files).  This is why you can put something in /csp/samples or another existing web application and it works.  The issue is that in putting something at \Cache\CSP\index.csp, there is no Web Application with a root of \Cache\CSP\, and so there is no Web Application to route the request to, and thus the 404 error.  You could create a new Web Application in Caché that points to \Cache\CSP\ but that would be a bit of a security issue because people could navigate to files in other web applications from there and potentially get to things they should not.

Why do you want to put something at the top level rather than in the root for a Web Application in Caché?

Ben Spead · Nov 5, 2019 go to post

David - FYI, the full Release Version of 2019.1.1 Community Editions is now available at Download.InterSystems.com

Ben Spead · Oct 28, 2019 go to post

Joel,

I completely agree with you!  

Within InterSystems we have at least one development team that has codified this via serverside source control hooks which automatically expand use standard case for all commands (there was a presentation on this at last year's Global Summit).  Adopting this tool is on my list of process/tools improvements for my development  team in internal apps.  There will be a discontinuity in the source control branches  when we turn this on and standardize everything in one check-in, but I think the benefits of having a standard way to representing commands without developers having to personally remember to do it the same way will be pretty considerable!

Ben Spead · Oct 18, 2019 go to post

Yes - absolutely!  But you should discuss with InterSystems to work through the details.  But many customers have migrated from DSM to modern versions of the InterSystems stack.

Ben Spead · Oct 18, 2019 go to post

David,

I suggest you look into using the DeployToFile() and InstallFromFile() methods of the %Studio.Project class.  A discussion of the topic can be found here in the docs:

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ADEPLOY

Another option is calling  the following on individual classes:

 $system.OBJ.MakeClassDeployed()

But since you are looking at just pushing partial updates, most likely the DeployToFile() with the parameter to strip out the source will be your best bet.

Ben Spead · Oct 17, 2019 go to post

David - I completely agree.  It's an excellent suggestion and we'll get it put in place.

Ben Spead · Oct 15, 2019 go to post

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!