You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

See also: OATC Wiki Home

Date: April 8.6 - 11.2, 2009
Venue:Deltares , Rotterdamseweg 185, Delft, The Netherlands

Participants:

Rob Knapen, Alterra, Wageningen UR (Rob.Knapen@wur.nl)
Standa Vanecek, DHI (s.vanecek@dhi.cz)
Adrian Harper, Wallingford Software (adrian.harper@wallingfordsoftware.com)
Stef Hummel, Deltares (stef.hummel@deltares.nl)
~don, Deltares (gennadii.donchyts@deltares.nl)
~jnh@dhigroup.com Johan Hartnack , DHI (jnh@dhigroup.com)

Apologies:
Jesper Grooss, DHI (jgr@dhigroup.com)

Documents:

http://www.openmi.org/
http://sourceforge.net/projects/openmi
wiki.openmi.org

Table of contents

agenda

1. Minutes from previous OATC meeting

1.1 Status of the Linux test

1.2 Release 1.4.1

1.3 www.OpenMI.org and wiki.OpenMI.org

2. Status of the implementation .NET

2.1 Changest to the standard

2.2 Backbone

2.3 Buffer

2.4 Time interpolation Decorator

2.5 GUI

2.6 SimpleRiver Model - running in GUI

2.7 OpenMIException : Exception - sugestions

2.7 OpenMI 2.0 wrapper around OpenMI 1.4 Components

Status of the Java implementation

3 Pending from previous meetings

  1. Question: what does isAvailable() mean in case of multiple consumers. Do all consumers need to have the same time(s)?
    1. Leave in for now, review after more implementation, one suggestion of modification bool isAvailable(whosAsking);
    2. (warning) Will be discussed later during the meeting, Stef will show an example of using isAvailable(whosAsking);
  2. Question: Introduce IState instead of Object? This will emphasize the relation between IManageState and IPersistentState. Additional suggestion: IPersistentState extends IState.
    (b.t.w: makePersistent / readPersistentState are wrong names, should be something like getAsByteStream)
    1. Gena has discussed with Rob between last and current meeting. After some discussion the final result (thumbs up) is described on: Suggestion about changed to state management
      #OpenMIException : Exception. However, first we will have a detailed look at the guidelines for introducing custom exceptions in both .Net and Java. Rob K. has added a page for this, Guidelines for introducing custom exceptions. It now includes Java suggestions, (warning) Gena will add .Net suggestions.

3.5 More suggestions on v2.0 changes

  • Move IsAvailable to IExchangeItem. Is it only for a thread-safety? If yes than see also ICollection.IsSynchronized

    Stef: The question is confusing, the actual issue is that we should distinguish between IsAvailable and IsValid.
    We are now realized that there is a difference between IsAvailable (only for output item, means it is for consumers) IsValid (probably for IExchangeItem, meaning if item is valid in the context of current component, maybe updated during Validate() call)?

  • Move Values { get; set; } to IExchangeItem?
    • (warning) get; set; to be reviewed at this meeting

      When discussing get/set, the subject of the discussion graduallly moved to the pull versus loop driven approach. This led to an important decision (thumbs up) : We will 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
  • Add params keyword to IArguments[] args parameter in Initialize(IArgument[] args).

    •  Adrian review, if happy then ... (question)(thumbs up)
  • "string Validate()" / "bool IsValid(IExchangeItem item)" / "IsAvailable()", etc.
    • (warning) to be reviewed at this meeting
  • Add "params IOutputItem[] items" argument to Update() in order to specify explicitly what should be updated.

    • (warning) Maybe generalise to IExchangeItem i.e. allow IInputItem?
  • Remove AddConsumer/RemoveConsumer and use BindingList in the implementation instead to listen to IOutputItem.Consumer.Add() / Remove()

    We will leave AddConsumer/RemoveConsumer for now. The BindingList mechanism has been implemented, though, so anyone can use it

  • When we get loops in the compositions - we have to tell which component will be first! In the new GUI, we will let the user indicate the 'Start up component'.
     
  • IArgument needs a mechanism for identifying the type of argument e.g. File, Path, int double etc Very usful for providing customised GUI functionality
    • (question) Adrian's proposal is below
      • namespace OpenMI.Standard
        {
            public enum EArgType
            {
                String = 0, // default
                Bool,
                Int,
                Double,
                Path, // presummed to exist and accessable
                FilePath, // presummed to exist and accessable
                PathNew,
                FilePathNew,
                XML, // Rob: can be used together with a schema for complex argument data
                MIME, // Rob: might be useful to pass in images, or text documents, etc.
            }
        
            /// <summary>
            /// The IArgument interface defines a key - value pair. If the property ReadOnly is
            /// false the value is editable otherwise it is read-only.
            /// </summary>
            public interface IArgument : IDescribable
            {
                /// <summary>
                /// Type that string value represents and can be converted to
                /// </summary>
                EArgType ValueType { get; }
        
        	/// <summary>
                /// The key (string) in key-value pair.
        	/// </summary>
        	string Key {get;}
        
        	/// <summary>
                /// <para>The value (double) in key-value pair.</para>
                ///
                /// <para>If the ReadOnly property is true and the property is attempted to be changed
                /// from outside an exception must be thrown.</para>
        	/// </summary>
        	string Value { get; set; }
        
        	/// <summary>
                /// Defines whether the Values property may be edited from outside.
        	/// </summary>
        	bool ReadOnly {get;}
            }
        }
        

5. OATC Procedures

7. Miscellaneous issues

8. Tasks and unresolved issues

All tasks are handled by sourceForge. GOTO: OpenMI Tasks on source forge

9. Any other business

  • No labels