AbstractResult message
This page specifies the common base of all messages that represent a value calculated, measured or generated in a process. This structure is not meaningful as a standalone message, so it is analogous to an abstract base class in object-oriented programming.
JSON structure
(Fields of AbstractMessage must appear too!)
"EpochNumber" : 14,
"IterationStatus" : "final", // leave out when not iterating
"LastUpdatedInEpoch" : 14, // OPTIONAL field
"TriggeringMessageIds" : // TriggeringMessageIds are irrelevant in Epoch messages?
[
"epoch-14",
"someprocess-14",
"anotherprocess-14"
],
"Warnings" : // If warnings precede an error, it can be beneficial to provide them as well in the Error message
[
"warning.convergence"
],
Fields and multiplicity
Field | Type | Multiplicity | Explanation |
---|---|---|---|
(All fields from AbstractMessage) | Fields from the "abstract base class" | ||
EpochNumber | UInt | 1 (REQUIRED) | Indicates the running ID of the epoch |
IterationStatus | String | 0..1; see (1) | Indicates the status of iteration, either "intermediate" or "final" |
LastUpdatedInEpoch | UInt | 0..1 (OPTIONAL) | Indicates the epoch number when this information was last updated; see (2) |
TriggeringMessageIds | Array of strings | 1..* (at least one REQUIRED) | The ID of messages that were involved in triggering the calculation of this result |
Warnings | Array of strings | * (OPTIONAL) | Indicates any warnings that occurred while resolving the Result; see (4) |
- (1): This field is REQUIRED if the component participates in iteration. Otherwise, this field SHOULD be omitted.
- (2): If this field is not present, the recipient SHOULD consider that the information was updated in the current epoch.
- (3)
- This MUST include the triggering message that was received last
- This SHOULD include Epoch message if it is among triggering messages
- As long as the obligatory messages are there, the designer of each process can consider which additional messages to include.
- This field can be irrelevant in the Epoch message. (Alternatively, Epoch could include the Result received last.)
- (4): See the explanation of causes below. The process SHOULD omit the entire array if no warnings are relevant.
Warning causes
Each warning MUST specify a cause. The cause MUST either belong to base causes or be a user-defined cause.
Base causes
The following specifies the base causes. Each base cause has two parts, (1) "warning" followed by period as the separator and (2) a descriptive set of words separated with hyphens.
warning.convergence
The calculation failed to converge, or the control has not completely finished. The outcome is either is a default value or calculated with some secondary logic.
warning.input
Input is somehow invalid.
warning.input-range
One or more inputs are out of range.
warning.input-unreliable
Input is unreliable, because the data source (e.g., another process) has indicated a warning.
warning.internal
There is something wrong with the internal functionality of the process.
warning.other
Other reason; the processes SHOULD NOT use this in the output.
Open issues
Should there be more information about the warnings, e.g., a more elaborate description for humans to read?