Question
· Sep 15, 2021

Arranging Project

I want to start this project and wants to know the best practices, you guys using to arrange the project. I have done lot of mvc projects and API's in c#. But Intersystems is new to me. Please give me some suggestions like how can I Arrange the objects. Like for eg. Where can I store the productions objects like services,process and operations. will that be like under each resouces folder name? and what are the base classes, and how can I store them? basically please give me some idea about how Can I arrange them . 

 

Thank you 

Sai

Product version: IRIS 2020.4
Discussion (8)1
Log in or sign up to continue

Thank you for the suggestion. But normally what is the good practice. Like how tondeploy you arrange the project or like same objects under one folder. Still confused went though the link but it gives me understanding of what is it. Searched the developer community. Didn’t get any post supporting my question. Would u please help 

Thanks for your reply. Basically  I am trying to figure out how to arrange the project in Git or any repository meaning folder structure . Should I plan to arrange them (like under folders)on how they get deployed? like there is a set up here for deploying classes separately and xml's separately   or should I arrange the objects depending on their sources, like or depending on the resource and its supporting and dependency  objects. or is there is a better way which I am not thinking of.

Thank you,

Package Options
 The above link helped a bit. 

I want to know the best practices out there to arrange the folder structure for repository like Git. I am kind of new to Inter systems development. ,
Right now what we have here is , they deploy classes separately, look up tables separately etc. 
Want to re-arrange the way we have right now, so that if we make any changes to one resource we don't have to package everything while deploying, just that one resource  and its dependencies.
But I am also afraid that , if I tried to package (re-organize) the folder structure say by Database . Say some resource is coming from database abc. 
and class is already been created as currentfoldername.abc.resoucename,and if I move that class under different folder, do I have to modify the class name too? 

Thank you in advance

Sai

Hi Sai Sai,

One thing you might look into in regards to distribution and deployment is ZPM Package Manager https://github.com/intersystems-community/zpm . It's still under active development, but is already very usable at the moment, you can use it with a self-hosted open source private registry https://github.com/intersystems-community/zpm-registry/ and my consultancy is currently developing a commercial hosted version which will be announced at Virtual Summit next month.

There is an example of an Interoperability packaging at GitHub: https://github.com/intersystems-community/iris-interoperability-template

In terms of deployment, unless you have MASSIVE productions, I would recommend to deploy the whole thing at once even if not everything has changed -- it's just a lot less moving parts and options for errors this way, and you can test deployments on your test server as many times as you like.

Hope this helps!

Sergei Shutov
Managing Director, Banksia Global
https://banksiaglobal.com

Sai,

By folder, do you mean moving a class to a different package? It's okay if the class name overlaps, because the package will still differentiate the "full name" of the class.

ex, the following can coexist. 

package1.class

package2.class

You could also use subpackages such as package1.subpackage.class.

Some of the built in class divisions might be helpful for you to compare with - for example, on IRIS for Health, the following packages exist:

EnsLib.HL7.Operation

EnsLib.HL7.Service

etc., for each type of business component.

I certainly agree that having Git / source control set up is a good practice. You may also find the built-in production deployment functionality useful:
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=EGDV_deploying