...
- Remark: When experimenting with the IsAvailable(), Rob B. and Stef introduced the IExchangeDefinition (see below). Rob K. actually introduced the same interface in the java version. Indeed it is quite natural entity, the exchange definition. Question: do we want to introduce it
.
Code Block java java public interface IExchangeDefinition { IValueDefinition ValueDefinition { get; } ITimeSet TimeSet { get; } IElementSet ElementSet { get; } }
- "string Validate()" / "bool IsValid(IExchangeItem item)" / "IsAvailable()", etc.
to be reviewed at this meetingAre we happy with IOutputItem.IsAvailable() and with ILinkableComponent.Validate(), or do we need additional methods on LinkableComponent and/or ExchangeItem to check validity.
We are happy. The only small change that has been proposed and has been agreed on is:
The return value will be an array of strings, to let the component compose a multi line message.
- Should we introduce a boolean argument that indicates whether the component should run in a pull mode (like in OpenMI 1.4) or in loop mode?
- Discuss component operation mode here comment from Peter Gijsbers need to be discussed
Discussion/Conclusion:We decided to let the LinkableComponent have a propery: CascadingUpdateCallsDisabled.
The default is false, indicating that the component is running in Pull Driven mode (there will be a cascade of update() calls. This Pull Driven mode has to be supported by every component.
If set to true, the component is expected to run Update()-step by Update-Step(), controlled by some outer world (which may be another component). If the component does not support this Update() by Update() way of running, it will throw an Exception when CascadingUpdateCallsDisabled= true is called.
In the GUI, the user hat to tell which component is at the end of the chain. This controlling component will be triggered first.
...