Looping back to this.

I thought it might be more user-friendly to define custom property parameters for this solution to specify both length (LENGTH) and alignment (ALIGN), rather than just relying on MAXLEN. I'd also of course modify the code to be generated to handle the desired formatting.

I've defined a a property parameter class with those parameters and added it as a PropertyClass to the class containing the property definition, but on compilation I get:

ERROR #5002: ObjectScript error: <UNDEFINED>Get+1^rcc.FixStr.G1 *%parameter("LENGTH")
  > ERROR #5490: Error running generator for method 'Get:rcc.FixStr'  

What am I missing? Here's the property class:

Class rcc.FixStr.Props
{

Parameter LENGTH As %String = "10";
Parameter ALIGN As %String = "LEFT";
}

And the class containing the Get() method for the property definition:

Class rcc.FixStr Extends %RegisteredObject [ PropertyClass = rcc.FixStr.Props ]
{

/// Fill value <var>%val</var> to <a href="#MAXLEN">MAXLEN</a> characters.
Method Get() As %String [ CodeMode = generator, ServerOnly = 1 ]
{
	set tCode="$e(%val_"""_$j("",+%parameter("LENGTH"))
	set tCode=tCode_""",1,"_+%parameter("LENGTH")_")"
	$$$GENERATE( "  Quit "_tCode)
	QUIT $$$OK
}

}

You could write a custom method that subclasses Ens.Rule.FunctionSet and includes Ensemble.inc (may already be included by default, haven't checked). There's a $$$LOGINFO() macro available that can be invoked from a method; that method would be called in an argument to an assign rule.

Here's an example:

Include Ensemble

Class IDC.Util.FunctionSet Extends Ens.Rule.FunctionSet
{
ClassMethod LogInfo(pText As %String) As %Status
{
	$$$LOGINFO(pText)
	Return $$$OK
}

}

Invoke it like this (or within another expression):

And debug is definitely a more sensible option than assign. Thanks, @Enrico Parisi 😁

Are both instances on the same host, and if yes, have you set them up with instance prefixes (it looks like you have based on the screenshot). You may want to check all of your service entries in the registry and verify that they're pointing at the right instance.

And I know some of the OAuth2 artifacts are created on production start ... is at least the registry/hub running?

Are you looking to view the expected request and/or response? The %Net.HttpRequest Send() method has a test argument as its 3rd option; setting it to 1 outputs the request, 2 the response, and 3 the response headers.

It's unfortunate that this isn't described in the class documentation; you have to look at the source to figure out what the test argument does.

The IRIS regex functionality is built on the ICU engine, which was based on (but does not rigorously adhere to) PCRE. This includes the ObjectScript $MATCH() and $LOCATE() functions as well as the %Regex.Matcher class. A web search turns up a handful of articles and posts discussing the differences between the two.

Python has a PCRE library (python-pcre) that may help if your development effort can be transitioned in whole or part to Python.

Thanks, this is useful @Nick Petrocelli! It appears that the order in which the properties are returned by iterating with Count() is sorted alphabetically. Is there any way to fetch them in the order in which they were defined in the class? I have SqlColumnNumber assigned for each of the properties, so if there's a way to fetch that keyword's value I can order them according to that. I'd prefer not to hard-code them in if possible, as the spec may change ...

Thanks!