User Answers

It's not the prettiest, but I think the simplest solution would be to avoid navigating to the parent object entirely:

  • Add a Foobar property to EmbedObj.
  • Via a row/object trigger in ContainerObj, propagate changes to Foobar to EmbedObj_Foobar.
    • As an initial step for data population in existing records, run SQL: update ContainerObj set EmbedObj_Foobar = Foobar
  • Base your SQLComputeCode on the copy of Foobar in the serial class.

Re: extending method keywords, you can't do that at this time, but a useful approximation is structuring a comment - for example:

/// @MyKeyword MyValue
ClassMethod TestOne()
    // Implementation

And then looking at the %Dictionary.MethodDefinition / %Dictionary.CompiledMethod documentation in a generator method. (But it looks like you might already be on to that with @AutoGenerated.)

Re: making first compilation work, this works for me, by making the first compilation automatically trigger a second one when needed:

In the possible absence of a built-in class for such a purpose, this seems to work:

This can be done with the requiredMessage property of %ZEN.Component.control. There are two ways to accomplish this:

1. Just add the requiredMessage attribute

We specifically chose not to support this capability in Atelier, other than for the special case of launching web pages. As an implementation of Studio Source Control, running an executable on the client only makes sense in cases where the "server" and the "client" are always the same, and for that model the source control plugins publicly and freely available in the Eclipse ecosystem are far superior in terms of support and usability.

I would be interested to hear more details of your use case. What version control system are you using? Git?

USER>d $System.OBJ.GetPackageList(.classes,"%CSP.Documatic") zw classes

You could have your unit test class extend the class with the [Private] method, or (if that doesn't make sense or causes issues) write another class that your unit test loads that extends the class with the [Private] method and has another method that wraps it.