Contents
The EventFlow Editor's Annotations tab provides two features for the current EventFlow module:
Typecheck Warnings |
Module Annotations |
Use this section to enable or disable categories of typecheck warnings from appearing as decoration markers on the EventFlow Editor canvas for this module, or as warning text in the Properties view. You can set any typecheck warning category as Warning or Ignore; by default, all categories are set as Warning. See Typecheck Warnings for an overview of where the warnings appear.
This tab affects only the current module. You can also enable and disable warnings for an entire project or for the Studio workspace as a whole:
-
To set project-wide typecheck warnings, click the Project settings link in the upper right corner of the Annotations tab to open the → preference page for the current module's containing project.
-
To set workspace-wide typecheck warnings, click the Workspace settings link in the Annotations tab to open the → page in the → dialog.
On the Annotations tab and in the two preferences pages referenced above, typecheck warning settings have the following meanings:
Typecheck warning category | Description |
---|---|
Ambiguous field references with implicit defaults | Warns when a schema has a field with a default value, where that field could be interpreted as another field or variable with the same name. |
Container connection endpoint missing | Warns when you have specified a container connection, but the container or a stream in the container at one end of the connection is not visible in the current module search path. |
Constant expression is not static | Warns when you define a constant with an expression that produces different results when the module that contains the constant definition is loaded. |
Multiple dynamic variables with the same name | Warns on detection of more than one dynamic variable with the same name defined in different modules in an application. |
A field or variable name is hidden by another | Warns when you have named a function alias, dynamic variable, or named schema with the same name as built-in expression language function or as another alias, variable, or named schema elsewhere in the module search path. |
An explicitly specified action is hidden by a field mapping | In a Query operator Properties view, Operation tab, Additional Expressions grid, warnings are issued when you specify an action
(set or ignore) that contradicts the fields read from the associated Query Table. For example, if you add a Set row for the
non-existing field foo with any expression, you receive the warning "Field foo set but does not exist in table schema, so it will be dropped ". This warning can also appear when you attempt to set a value for the table's primary key field.
|
An error port or stream is left unconnected | An Input Stream, Error Input Stream, or an error port on any component was defined, but left without a downstream connection. |
A Query Table will be accessed using a potentially slow plan | A proposed Query operation on its associated Query Table will require a full table scan or other time-consuming operation. |
The application contains an unused import | A module imports schemas and/or constants from another module or interface, but then does not use any of them. |
Concurrency is used in a potentially incorrect manner | For this Aggregate operator, there is a Group By setting and (in the Concurrency tab) Multiplicity is set greater than one, and the Dispatch Style setting is either Round Robin or Broadcast. The results may not be what you intend.
The Round Robin dispatch style with a Group-By may create multiple groups with the same Group-By key in separate parallel regions. The Broadcast dispatch style with a Group-By creates identical groups in each parallel region. Instead, consider using the Numeric Dispatch Style based on the Group-By key. |
A conditional expression always evaluates to null | This operator contains an expression that does not return a result, which is not likely to be what you intended. Check all expressions defined for this operator. |
Values output by this operator are not guaranteed to be monotonic. | Timestamp or numeric field values emitted by this operator that you might expect to increase in a regular fashion, or decrease regularly, may not do so. This information becomes important if such a field is used downstream as an index field, or as the synchronized timestamp feature for two or more feed simulations, or in a downstream Merge operator, or in general, in other downstream operators that expect monotonically increasing or decreasing values. |
Access to a deprecated feature | This warning appears under certain conditions, including:
|
Java classpath contains non-portable entries | The classpath of the JVM running StreamBase Server contains full local pathnames that are not likely to work if the current application is deployed on another machine. |
There are two labeled check boxes in the Module Annotations section of the Annotations tab.
- References to this module override Input Stream schemas
-
Mark this module as hygienic by clearing the check box for the References to this module control:
Mark this module as non-hygienic by selecting the check box:
See Hygienic Modules for more on hygienic versus non-hygienic modules.
See EventFlow Editor Read-Only Canvas for information on the context menu command that can open non-hygienic modules in a way that shows how their input stream schemas will be overridden at runtime.
- Constants and dynamic variables in this module will be visible to any module referenced inside it.
-
The default state of this check box is cleared. In this state, constants and dynamic variables defined on the Definitions tab have scope only for this module, and can override only parameters defined in this module.
Now, let's say module Outer.sbapp contains a module reference to Middle.sbapp, which in turn contains a module reference to Inner.sbapp. With this check box selected, you can define a constant in Outer.sbapp, then reference it in either Middle.sbapp or Inner.sbapp. The constant defined in Outer.sbapp can override parameters set in either Middle or Inner.