EventFlow Editor Read-Only Canvas

Non-hygienic modules are defined as such on the Annotations tab of the EventFlow Editor, as described in Module Annotations. The defining characteristic of a non-hygienic module is that the schemas of its input streams can be overridden by the schema of the corresponding input stream of the calling Module Reference.

In the EventFlow Editor canvas that contains such a Module Reference, if you select the Module Reference and press F3, a new EventFlow Editor session opens as usual to show you the called module. The problem with this is that an F3-opened canvas can only show the schemas of the called module's input streams as they were originally defined, not how they are actually used. This can lead to confusion when attempting to follow the progress of a tuple through the calling sequence.

You can select a Module Reference to a non-hygienic module, right-click, and from the context menu, select View Module with Overridden Schemas. Like using F3, this opens an EventFlow Editor canvas showing the referenced module. However, there are important differences compared to opening with F3:

  • The EventFlow Editor canvas is read-only. You cannot add, remove, or move components, and you cannot save this canvas. You cannot run, debug, or trace debug the module from this canvas. It is only a temporary view of the module.

  • The schemas of the input streams of this temporary module view are shown, not as they were originally defined, but exactly as they would be overridden by the calling module.

  • To avoid confusion with an F3-opened Editor session that might exist at the same time, the name of the temporary view takes the form called-module-name.sbapp as called-module-name1.sbapp in calling-module-name.sbapp. This name is reflected in the tab of the read-only canvas, while a more complete version of that long name is shown in Studio's title bar.

While this feature is not an interactive debugging aid, it can nevertheless help you understand how a non-hygienic module is actually used at runtime.