Henrique Dias · Feb 13, 2020 go to post

Thanks @Evgeny Shvarov  

I'm working on an update in the IRIS History Monitor, using the new IRIS API and WebService in version 2019.4

Besides that, I include the module.xml file, making the ZPM installation possible.

Henrique Dias · Feb 14, 2020 go to post

Hi @Evgeny Shvarov 
I'm creating a module.xml for iris-history-monitor, and during the process, a question came up.
When you run docker-compose up in my project, the Installer has an invoke tag to execute a class method.

But how can I make this works in the ZPM?

Henrique Dias · Feb 14, 2020 go to post

I apologize for the lack of the link. I ended up extending myself in the article and ended up just informing the Management Portal link.

I'm fixing it right now.

Thank you for your kind words

 
Henrique Dias · Feb 18, 2020 go to post

Hi @Eduard Lebedyuk 

Thanks for your PR on GitHub.

Answering your questions:
1. I'm always trying to make things simple and using those opportunities to make Caché/IRIS to shiny a little bit in my work environment. And choosing CSP over REST+Angular or any other technology stack is one of those attempts to show what CSP (Caché/IRIS) is capable of creating. I can say that it was a personal choice.

2. I'm improving these points, and I'll publish the fix as soon as possible.

3. Right now, I don't have any plans to create a new visual trace. Unfortunately, I didn't face a situation as you mention "...  single session exceeds 300-500 thousands of messages ..." But, I'll search for something that can improve your scenario.

Thank you again for spending your time with my article and my application.

Henrique Dias · Feb 19, 2020 go to post

Hi Neerav, 

Thanks for pointing the license situation. But, as we discussed before in LinkedIn messages and the post of History Monitor. 

The license for the DevExtreme is free to develop Non-Commercial applications. I updated the README.md file to make the situation clear following the instructions provided by the DevExtreme website.

https://js.devexpress.com/Licensing/#NonCommercial

Henrique Dias · Feb 19, 2020 go to post

Sure,

Visual Trace appears to need improvements in huge productions. But, right now, I'm just collecting information to found out a way to create something different.

Henrique Dias · Feb 28, 2020 go to post

Hi Scott, 

Thanks for your interest in my project.

A similar question happened with the History Monitor Dashboard. 

https://community.intersystems.com/post/dashboard-iris-history-monitor#comment-73721

You can choose to import the code in an existent Namespace, and just like Eduard replied before, for the non-docker environment, import the code in your Namespace and access the main csp. 

Or you can choose to install the Message Viewer in a new Namespace and make use of the Installer.cls.

If that was your choice change the parameters in the Installer.cls

<Default Name="APPPATH" Dir="/opt/app/" /> 

Change the /opt/app/ to whatever directory you want.

Next, you can use the class Installer.cls to create the Database, Namespace, and Web Application.

So, run the following lines of the Dockerfile in the Caché/Ensemblé/IRIS Terminal: 

Do $system.OBJ.Load("/opt/app/Installer.cls","ck")

Set sc = ##class(App.Installer).setup(,3)

HTH

Answering the question, "What is docker-compose?"

"Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application's services. Then, with a single command, you create and start all the services from your configuration."

for more info: https://docs.docker.com/compose/

Henrique Dias · Apr 14, 2020 go to post

IRIS History Monitor is using the new API /api/monitor 

Can I submit the application to this contest?

Henrique Dias · Apr 27, 2020 go to post

Thanks, @Luca Ravazzolo , I'm happy with your comment.
The main goal of this article was to be clear enough with an example to show the possibilities of the IRIS, and to show that you don't need a fancy architecture to take advantage of what IRIS offers.

Henrique Dias · May 21, 2020 go to post

Hi, @Ben Spead, 

I'm using a plugin to change the color of each one of my workspaces. The plugin's easy to use and helps me a lot, avoiding mistakes editing in the wrong workspace.
Peacock
https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock

The plugin creates the configuration inside the .vscode folder in a JSON file.

{
    "objectscript.conn.ns": "IRISMONITOR",
    "objectscript.conn.port": 52773,
    "objectscript.conn.active": true,
    "objectscript.format": {
        "commandCase": "word",
        "functionCase": "word"
    },
    "objectscript.export.addCategory": true,
    "workbench.colorCustomizations": {
        "activityBar.background": "#88d7ea",
        "activityBar.activeBorder": "#de41bf",
        "activityBar.foreground": "#15202b",
        "activityBar.inactiveForeground": "#15202b99",
        "activityBarBadge.background": "#de41bf",
        "activityBarBadge.foreground": "#e7e7e7",
        "titleBar.activeBackground": "#5dc9e2",
        "titleBar.inactiveBackground": "#5dc9e299",
        "titleBar.activeForeground": "#15202b",
        "titleBar.inactiveForeground": "#15202b99",
        "statusBar.background": "#5dc9e2",
        "statusBarItem.hoverBackground": "#32bbda",
        "statusBar.foreground": "#15202b",
        "activityBar.activeBackground": "#88d7ea",
        "statusBar.border": "#5dc9e2",
        "titleBar.border": "#5dc9e2"
    },
    "peacock.color": "#5dc9e2"
}

HTH

Henrique Dias · Jun 1, 2020 go to post

Great article! 

Very well detailed

I am looking forward to creating something using the python suite as a reference. 

Henrique Dias · Jun 6, 2020 go to post

Maybe I'm wrong, but the minimum requirement here it's because you don't have %JSON.Adaptor on Caché.

 
Henrique Dias · Jun 6, 2020 go to post

Hi @Oliver Wilms 

One of your approaches could be to simplify your diagram to create blocks using divs and make it easier to understand and show what you want in a more straightforward way, using CSS and simple javascript/jQuery.

The other one can be using different libraries that give to you power to create any diagram you want laugh

I found a few libraries that could be useful in your journey. 

https://modeling-languages.com/javascript-drawing-libraries-diagrams/

One of them that calls my attention was:

https://gojs.net/latest/samples/index.html

Hope that helps

Best Regards,
Henrique  

Henrique Dias · Jun 17, 2020 go to post

Hi @Timothy Leavitt 
I'm testing the AppS.REST to create a new application, following the Tutorial and Sample steps in Github I created a Dispatch Class: 

Class NPM.REST.Handler Extends AppS.REST.Handler{ClassMethod AuthenticationStrategy() As %Dictionary.CacheClassname{
    Quit ##class(AppS.REST.Authentication.PlatformBased).%ClassName(1)}ClassMethod GetUserResource(pFullUserInfo As %DynamicObject) As AppS.REST.Authentication.PlatformUser{
    Quit ##class(AppS.REST.Authentication.PlatformUser).%New()}}

And a simple persistent class:

Class NPM.Model.Task Extends (%Persistent, %Populate, %JSON.Adaptor, AppS.REST.Model.Adaptor){Parameter RESOURCENAME = "task";Property RowID As %String(%JSONFIELDNAME = "_id", %JSONINCLUDE = "outputonly") [ Calculated, SqlComputeCode = {Set {*} = {%%ID}}, SqlComputed, Transient ];Property TaskName As %String(%JSONFIELDNAME = "taskName");/// Checks the user's permission for a particular operation on a particular record./// <var>pOperation</var> may be one of:/// CREATE/// READ/// UPDATE/// DELETE/// QUERY/// ACTION:<action name>/// <var>pUserContext</var> is supplied by <method>GetUserContext</method>ClassMethod CheckPermission(pID As %String, pOperation As %String, pUserContext As AppS.REST.Authentication.PlatformUser) As %Boolean{
    Quit ((pOperation = "QUERY") || (pOperation = "READ") || (pOperation = "CREATE") || (pOperation = "UPDATE"))}}

But when I try the REST API using Postman GET: http://localhost:52773/csp/npm-app-rest/api/task/1

I'm getting a 404 Not Found message.

Am I doing something wrong or missing something?

Thanks

Henrique Dias · Jun 18, 2020 go to post

I added auditing on everything, and the <PROTECT> error never showed up. So, I started everything from scratch and found out a typo on Postman. blush

Thanks, @Eduard Lebedyuk @Timothy Leavitt 
PS: Sorry, guys. I think not sleeping enough hours isn't good for health and cause this kind of mistakes laugh

Henrique Dias · Jun 24, 2020 go to post

It's great! 
I tried the application, and I liked the interface and how easy it is to create a simple CRUD using RESTForms.