I can put a few globals to tracing the method execution. But I'm (almost laugh) sure that the method was invoked.

The only difference between the Installer ClassMethod e the ClassMethod that I'm invoking during the ZPM installation is a Namespace Name. 

Installer

ClassMethod CustomApplicationMetrics() As %Status
{
  New $Namespace
  Set $Namespace = "%SYS"   
  Set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("diashenrique.historymonitor.util.customSensors","IRISMONITOR")
  
  Quit status
}

Invoked during ZPM install 

ClassMethod CustomApplicationMetrics() As %Status
{
    Set oldNamespace = $Namespace
    New $Namespace
    Set $Namespace = "%SYS"     
    Set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("diashenrique.historymonitor.util.customSensors",oldNamespace)     
    Quit status
}

I also executed this line on the terminal on USER Namespace, after I installed the ZPM package.

Set status = ##class(SYS.Monitor.SAM.Config).AddApplicationClass("diashenrique.historymonitor.util.customSensors",oldNamespace)

 But, nothing happened. So, I started to doubt myself and wondering if I'm doing something wrong.

 

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

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  

@Timothy Leavitt this is amazing! 

I'll be making use of it in my application :) 

I was looking into the OpenExchange description, and in the Tutorial and User Guide, I think the links are broken. I got a "Not found" message when I try to access the URLs.

https://openexchange.intersystems.com/docs/sample-phonebook.md

https://openexchange.intersystems.com/docs/user-guide.md