RiverWare 6.1: Slot Attribute Specifications Redesign, with Unit Schemes
Slot Name and Column Name Selection

Edit: 6-20-2011, Phil Weinstein, CADSWES

Overview

As generally described in the Slot Attribute Specifications Redesign document (see "Current Design Document"), the two instantiations of the "Slot Attribute Specification Set" editor dialog (for editing Slot Attribute Initialization settings and Unit Schemes) will need some tool for allowing the user to select Slot Names (also described as "Slot Entities") and Slot Column Names. This is different from the selection of Slots and Slot Column instances supported by RiverWare RootSelections and the GUS selector dialog.

My recommendation is that a simple Slot Name Chooser dialog be developed which supports the selection of a single item from a list of all possible slots or slot columns on a single (programmatically specified) type of simulation object or account. This would be for transient (one-shot) use only -- no internal state information would be retained. A basically function version of this has been developed for only physical slots (not yet supporting account slots, nor slot columns), as a demonstration -- See this webpage: Slot Name Chooser.

Limitations of the RootSelection class and the GUS selector dialog

These modules were devised for transient (one-shot) and persistent selections of Slots and Slot Columns on objects (including simulation objects and accounts) -- among other types of selections -- which actually exist in the RiverWare model. While the GUS GUI and the internal state representation (RootSelection) do support selection controls for types of simulation objects and accounts, it is fundamental to these modules that particular instances of objects at all levels be selected. A selection of a slot on any of these objects includes a "selection part" at every level in the following "part" sequences (and there is significant architecture at both the data and GUI levels to support these selection parts):

Physical Slot Selection "Parts":

  1. Simulation Object Class
  2. Simulation Object Instance
  3. Slot Instance

Account Slot Selection "Parts":

  1. Simulation Object Class
  2. Simulation Object Instance
  3. Account Type (checkboxes)
  4. Account Instance
  5. Slot Instance

There is, in fact, an optional (and rarely used) "wildcard" flag on the instance-related parts to specify that all instances conforming to the higher-selection-parts are included -- at the time of subsequent evaluation of the RootSelection. But for lower-level "parts" to be assigned a specific selection, there must be at least one actual object at the wildcarded part level defined in the model. The "wildcard" feature is essentially a "sticky" "ALL" setting for an instance-related part. It does not actually an implementation of the "entity" concept needed for the new Slot Attribute related development.

Enhancements to the RootSelection class and the GUS selector dialog for "Slot Entity" Support

The sequence of "selection parts" within a RootSelection (which is mirrored by the instantiation of "GUS Panels" in the GUS dialog) is internally determined by a RootSelection's Selection Mode. The following selection modes are supported:

typedef enum
{
   SELMODE_UND = 0,
   SELMODE_SIMOBJ,           // SimObj
   SELMODE_ACCOUNT,          // Account on SimObj
   SELMODE_SUPPLY,           // Supply to/from Account on SimObj
   SELMODE_EXCHANGE,         // Exchange
   SELMODE_PAYBACK,          // Payback on Exchange
   SELMODE_SLOT_PHYSICAL,    // Slot on SimObj
   SELMODE_SLOT_ACCOUNT,     // Slot on Account (on SimObj)
   SELMODE_SLOT_SUPPLY,      // Slot on Account Supply (on SimObj)
   SELMODE_SLOT_EXCH,        // Slot on Exchange
   SELMODE_SLOT_EXCH_SPLY,   // Slot on Exchange Supply
   SELMODE_SLOT_PBACK,       // Slot on Payback (on Exchange)
   SELMODE_SLOT_PBACK_SPLY,  // Slot on Payback Supply
   SELMODE_SUPPLY_EXCH,      // Supply on Exchange
   SELMODE_SUPPLY_PBACK,     // Supply on Payback (on Exchange)
   SELMODE_SUBBASIN          // SubBasin
} SelMode;

In general, each of the following "selection part" classes know how to populate themselves from the selection within it's "superior" selection part sibling:

class SelectionPart_SimObj;
class SelectionPart_Account;
class SelectionPart_Slot;
class SelectionPart_SubBasin;
class SelectionPart_Supply;
class SelectionPart_Exchange;
class SelectionPart_Payback;

Notes:

  1. The SelectionPart_SimObj class includes a SimObj Class Names list which represents the implicit "top level" selection part for selections involving simulation objects.
  2. The SelectionPart_Account class includes toggles for filtering the four different types of Accounts.

Probably the best way to implement "Slot Entity" selection for simulation object and account slots (and slot columns) would incorporate the following changes:

---