Introduction
Modeling Services
Basic Features
Exception Handling
Server Relations and Special Data Members
Server Objects
Smart Pointers
Smart Pointers and Reference Counting
Defining and Using Smart Pointers
Properties of Smart Pointers
Integrity Checks
Dictionaries
Defining a Dictionary
Using a Dictionary
Timers
Relations
Ownership and Use Relations
Overview
Main Differences
One-to-one Relations
Defining Ownership Relations
Constructing Ownership Relations
Updating Ownership Relations
Defining Use Relations
Constructing Use Relations
Updating Use Relations
One-to-many Relations
List-relations
Declaring Simple List-relations
Sorted List-relations
List Iterators
Set-relations
Declaring a Set-relation
The Key Manager
Updating a Key
Building a Set-relation
Handling Set-relations
Set-relation Iterators
Array-relations
Fixed Arrays
Dynamic Arrays
Inverting Relations
Inverting One Relation
Inverting Multiple Relations
Sorted Inverted List-relations
Integrity Checks
Entry and Derived Data Members
Entry Data Members
Defining an Entry Data Member
Constructing an Entry Data Member
Manipulating an Entry Data Member
Derived Data Members
Defining a Derived Data Member
Constructing a Derived Data Member
Eager Versus Lazy Derived Data Members
Evaluation Algorithm of a Derived Data Member
Context-Sensitive Features
The cut Function
Cut Default Behavior
Redefining the cut Function
Mandatory Relations
Overriding the cut Function
Dynamic Modeling Services
Overview
Defining a Dynamic Model
Using the Dynamic Model Interpreter API
Using an XMI Description
Using UML Modelling Tools
How to Use Dynamic Objects
Creating Dynamic Objects
Identified Objects
Mixing Static and Dynamic Types
Managing Inheritance
Dynamic Attributes
Dynamic Relations
Maintaining Inverse Relations
Dynamic Member Functions
Extending Dynamic Objects
Check Functions
Updating the Dynamic Model at Runtime
Implementing a Dynamic Server
Rogue Wave Script Integration
Overview
Implementing Dynamic Functions Using Scripts
Accessing Server Objects from Scripts
Creating New Objects
Life Cycle of Script Objects
Accessing Server Object Attributes
Accessing Server Relations
Calling Methods
Rogue Wave Server API Available to Scripts
Loading a Script to a Dynamic Server
Using User-Defined Types in a Script
Invoking Member Functions from a Script
Performance Issues
Dynamic View Services
View and Notification Services
Presenting the Company Example
The Object Model
The Representations
Linking and Running the View Server
Concept and Definitions
Views
View Server
Viewed Objects
Viewed Relations
Component
Notification Engine
Interaction Cycle
View Specification
Notification Functions
Notification States
Notification States Assigned to Objects
Notification States Assigned to Relations
Example of a Notification Cycle
Defining Runtime Access to the Server Model
Overview
Declaring Model Classes
Basic Macros
Extended Macros
Declaring Runtime Relations
Basic Macros
Extended Macros
Declaring Runtime Attributes
Basic Macros
Extended Macros
Declaring Runtime Functions
Implementing a Representation Model
Principle
Implementing a Tree Representation Model
Bridge Classes
Server-to-Component Updates
Component-to-Server Updates
Implementing a Table Representation Model
Graphic Class
Bridge Classes
Server-to-Component Updates
Component-to-Server Updates
Specifying Dynamic View Types
Basic Specification
XML View Specification
Opening the View
Creating a Representation
Editing the Server Objects
Editing the Tree Representation
Redefining the Representation Type Associated with DomainTree
Management of Current Time
Expression of Representation Attributes
Simple Expressions
Complex Expressions
References
Specifying References for Non-Hierarchical Representations
Reference and Propagation Order
Editing a Reference
References and n-m Relations
Support of Inheritance When Resolving References
Hyper-References
Specifying a Hyper-Reference
Dereferencing a Hyper-Reference
Editing the Label of a Hyper-Reference
Editing the Target of a Hyper-Reference
Unbound Hyper-References
Collectors
Specifying a Collector
Editing a Collector
Editing a Collector with Local Feedback
View Parameters
Row Color and Cost Threshold
Displaying a View in a Given Window
Representation and Propagation Conditions
Specifying Conditions
Representation Status
User-Defined Representation Attributes Types
Declaring and Implementing the Identity Type
Using the Identity Type in the Company Server Model
Using the Identity Type in the Table Representation Model
Using the Identity Type in the DepartmentTable View Type
Predefined User Types
Server Object Subtypes and View Type Specification
Notification to Server Object Subtypes
Explicit Propagation to Parent Types
Using Narrowing in Expressions
Subclassing C++ View Types
Implementing a Dynamic View Server and its Components
Overview
What Is a Dynamic View Server?
Subclassing a Dynamic View Server
Managing Connections and Installing an Encoder/Decoder
Subclassing IlsMvUser
Initializing and Running a View Server
Linked Applications
Distributed View Server
Initializing and Running a Dynamic Server
Initializing and Running a Component
Using Rogue Wave Server MvTCP
Using Rogue Wave Server MvTCP and Rogue Wave Views
Using Orbix
Using Orbix and Rogue Wave Views
Subclassing Components
Dynamic View Server in Multithread Mode
Sending Requests in Multithread Mode
Correct Use of Multithread Mode in Rogue Wave Server Applications
Loading View Specification Files
Connecting Components and Opening Views
Connecting a Component to a View Server
Connection Control
Opening Views
Interaction Cycles
Initiating an Interaction Cycle
Controlling the Steps of the Interaction Cycle
Feedback from the Server
Buffered Dynamic Views
Using Buffered Dynamic Views
Semantics of Dynamic View Type Specifications
Dynamic View Types: Overview
View Specification
Main Origin and Propagation
Dynamic View Types and C++ View Types
Representations
Representation Attributes
Values of Representation Attributes
References
Propagation and Representation Order
Hyper-References
Collectors
Conditions Applying to Propagation and Representations
Expressions and Type Inheritance
Reference and Alternate Representation
Representation Status
Rogue Wave Server/Rogue Wave Views Integration
Overview of the Server/Views Integration
What Is a Mapping in the Server/Views Integration?
The Server/Views Mapping
The Mechanism
The mvsw Library
The API of the Server/Views Mapping
Dynamics of the Server/Views Mapping
Initial Creation
Adding Server Objects
Modifying Server Objects
Deleting Server Objects
Closing a View
Predefined Properties
Server/Views Mapping
Indexes Used in the Server/Views Mapping
Server/Views Mapping Component
Function IlsMvComponent::Connect
Callbacks
Server Data Sources vs. Views Data Sources
Creating a Server Data Source
Local and Global Data Sources
Deleting Server Data Sources
Structure of a Server/Views .ilv File
Server/Views Representation Model
IlsSwRepresentation
IlsSwTable
IlsSwRow
IlsSwMemoryTable
Using the Rogue Wave Views Batch Mode
Accessing Server/Views Representation Objects
Manipulating Rogue Wave Views Data Sources
Hyper-References
Mapping Data Sources
Multiple-Row-Type Tables
Managing Multiple Row Types in the Same Table
Managing Inheritance Using Multiple-Row-Type Tables
Opening Views in the Server/Views Mapping
View Parameters
Preregistered Server Data Source
Opening a View
Managing User-Defined Server Object Types
Associating an Rogue Wave Server User-Defined Type with an Rogue Wave Views Type
Converting an Rogue Wave Server User-Defined Type Value to an Rogue Wave Views Type Value
Converting an Rogue Wave Views Type Value to an Rogue Wave Server User-Defined Type Value
Customized Server/Views Gadgets
Extending the Server/Views Mapping
Factories
Subclassing the Server/Views Component
Extending the Mapping
Installing your Own Server/Views Memory Table
Error Handling
Frequently Asked Questions
The Rogue Wave Views Component
The Predefined Rogue Wave Views Component
Designing your Own V<smaller letters>IEWS Component
Rogue Wave Server Studio
Rogue Wave Server Studio Advanced Features
Using Studio with Derived Representation Object Types
Prerequisites
Changing the Representation Type
Changing the Table Representation Type
Changing the Row Type
Creating User-Defined View Types
Using Predefined Properties
Using a Separate View Specification File
Creating Several Table Representations in the Same View
Creating the DomainTable Table Representation
Creating the NodeTable Table Representation
Creating InputLineTable and OutputLineTable Representations
Warning
Creating Multiple-Row-Type Table Representations
Managing Inheritance
Using Test Mode in Rogue Wave Server Studio
Server Data Source Inspector Reference
Server Data Source Inspector Command Reference
File Menu
Edit Menu
Server Menu
Miscellaneous
Context-Sensitive Model Pop-up Menu
Context-Sensitive Menu
Notebook Pages In Bottom Panel
Troubleshooting
How to Create a Table Representation
How to Create a Row Representation
How to Create a Read-Only Table Representation
How to Work Off-line
How to Change the Order of Propagation
How to Hide Classes in the Model Pane
How to Show Classes That Have Been Hidden in the Model Pane
How to Add a Collector to a Table
How to Clear the Connection History
How to Add a User-Defined View Parameter
Why am I Missing an Attribute or Relation in the Model?
Why Can’t I Drop an Attribute?
Why Do I Get Error Messages when Testing the Panel and its View?
Java Data Sources
Overview of Java Data Sources
What Are Java Data Sources?
Presenting the Java Data Sources
Presenting the Adapters
What Is a Mapping in the Server/Java Integration?
The Server/Java Data-Source Mapping
The Mechanism
Dynamics of the Server/Java Data-Source Mapping
Initial Creation
Adding Server Objects
Modifying Server Objects
Deleting Server Objects
Closing a View
Predefined Properties
API of the Server/Java Mapping
Overview
Base Classes and Interfaces
Swing Components
List Data Sources
Table Data Sources
Tree Data Sources
Rogue Wave JViews Components
Gantt Data Sources
Graph Data Sources
SDM Data Sources
Working with the Server/Java Mapping
Lists
IlsRpList
IlsRpElement
IlsListDataSource
Working with List Data Sources
Tables
IlsRpTable
IlsRpRow
IlsTableDataSource
Trees
IlsRpTree
IlsRpTreeItem
IlsRpRootItem
IlsTreeDataSource
Graphs
IlsRpGraph
IlsRpLink
IlsRpNode
IlsGraphDataSource
Gantt Charts
IlsRpGanttModel
IlsRpActivity
IlsRpResource
IlsRpConstraint
IlsRpReservation
IlsGanttDataSource
Working with Gantt Data Sources
SDM (Stylable Data Mapper)
IlsRpSDMModel
IlsRpSDMElement
IlsRpSDMNode
IlsRpSDMLink
IlsSDMDataSource
Working with SDM Data Sources
Java Data Source Adapters
Principle
Listeners, Adapters and Strategies
Notification Cycle
Using IlsTableDS2JTableAdapter
Managing Row Properties
Using a User-Defined Type
Using IlsTreeDS2JTreeAdapter
Dereferencing a Referenced Item
Using IlsGraphDS2IlvGrapherAdapter
Managing New Types of Nodes
Appendices
Portable Thread Library
Threads
Creating a Thread
Joining a Thread
Yielding the Current Thread
Thread Identifier and Thread Names
Mutexes
Creating a Mutex
Locking and Unlocking a Mutex
Using trylock on a Mutex
Using Mutex Lockers
Running a Safe Mutex in Check Mode
Condition Variables
Creating a Condition Variable
Waiting for a Condition Variable
Creating a Barrier
Changing the Count on a Barrier
Readers/Writer Lock
Accessing a Readers/Writer lock
Using a Readers/Writer Lock Wrapper
Using Rogue Wave Server on Windows
Controlling Rogue Wave Server Error and Trace Messages
Displaying Text Messages
Redirecting Messages to a File
Redirecting Messages to an Application Window
Disabling Error and Trace Messages Temporarily
Shutting Down an Application Cleanly
Floating Reference Cycles
Avoiding Floating Reference Cycles
Internationalization in Rogue Wave Server
What is I18N?
Creating a Program to Run in a Localized Environment
Before You Begin to Run Your Program
Locale Requirements
Locale Name Format
Current Default Locale
Changing the Current Default Locale
X Library Support (UNIX Systems Only)
Rogue Wave Server Support
Rogue Wave Server Locale Names
Determining Rogue Wave Server Support for the Locale
Localized Message Database Files in Rogue Wave Server
Language of the Message Database Files
Location of the Message Database Files
Loading the Message Database
Database Message .dbm File Format
Encoding Compatibility of .dbm Files
Using Rogue Wave Server with Far Eastern Languages
Data Input Requirements
Multibyte Support in Rogue Wave Server
Manipulating Strings
Setting the Locale
Translating Between Different Encodings
Limitations of Internationalization Features
Troubleshooting
Encodings
The MvTCP Communication Layer
Using MvTCP in Rogue Wave Server Applications
Using the Rogue Wave Server Logical Mapper
Mixing the MvTCP Main loop with an External Main Loop
Registering Foreign File Descriptors to the MvTCP Main Loop
Registering MvTCP File Descriptors to an External Main Loop
Compiling and Linking Applications using MvTCP
Miscellaneous Features
Protocol Version
Subclassing IlsTcpMvProcess
Environment Variables
Compiler Options for Multithreaded Applications
Grammar of Dynamic View Type Specifications
Introduction
Grammar of Dynamic View Type Specifications