Personal tools
You are here: Home Project Info LIME Iteration 2

Iteration 2

This iteration will focus on the uncertainity about Eclipse working with C# classes that validate input parameters.

  • Phase: Elaboration
  • Dates: TBD

Tasks to be Completed

Simple Plug-in

  • Modify the simple Eclipse plug-in constructed in Iteration 1 so that it uses a C# class in a .NET assembly to validate the timestep.

Assessment

Summary

There were two parts to this iteration. First, finish iteration 1 and create plugins that work with the LIME RCP. Second, enable communication between the LIME RCP and parameter validation from a LANDIS-II .NET extension. Both elements were completed although they do not yet work together.

A plugin is a simple compressed .jar file that can be copied into the appropriate LIME directory and will function thereafter. A simple plugin with time step was demonstrated.

The communication between a simple LANDIS-II plugin (.NET) was accomplished through a messaging system. The messaging system works through a series of applications that ultimately exchange messages between a Java application (LIME) and a .NET application (LANDIS). The messages bounce from LIME via MSMQ to LANDIS-II and back again utilizing MSMQ's COM and .NET APIs. The messanging software, Microsoft Message Queuing (MSMQ), is a free product that comes with Windows Server 2003 (and later) or can be installed separately. LANDIS-II calls MSMQ directly, while LIME uses JNI to create JAVA-COM wrapper. Likewise MSMQ, JNI is a free application from Sun Microsystems (installed with Java JDK).

Hit and Misses

  • Huge hit: The plugins are simple and VERY easy to install/uninstall.
  • Huge hit: Messaging working between LIME and the EditableParameters class from a simple Hello World extension.
  • Miss: The messaging is currently between an RCP View and a LANDIS extension, not between a plugin and a LANDIS extension. A View is a permanent addition to the RCP. A View may be appropriate for permanent user interfaces (species, ecoregions, for examples) but is not appropriate for LANDIS extensions.

Lessons Learned

  • Running parallel threads (RCP + Java side MessageManager + MSMQ + .NET side MessageManager) is slightly awkward. It will be worth exploring writing a simple version of MSMQ that would be part of LIME.
  • The chain of messages is unwieldy. Messages are checked every 1/10 of a second, regardless of whether there is a message or not. It would be better if a message was sent when and only when a message was created. However, the 1/10 delay is not noticeable to the User.
Document Actions