CONTENTS Title Page Copyright Page Preface Part I A Developer's View of LinkWorks 1 LinkWorks Concepts - A Closer Look 1.1 LinkWorks Focus - Linking and Navigation 1.2 The Application and LinkWorks Partnership 1.3 The LinkWorks Information Space 1.3.1 Information Objects in an Ideal World 1.3.2 Information Objects in the Existing World 1.3.3 LinkWorks Objects 1.3.3.1 Surrogate 1.3.3.2 Link 1.3.3.3 Linknet 1.3.3.4 Composite Linknet 1.3.3.5 Step 1.3.3.6 Path 1.3.3.7 Composite Path 1.3.3.8 LinkWorks User Interface 1.4 Hyperizing an Application 1.4.1 Essential Tasks 1.4.2 Extended LinkWorks Support 1.5 LinkWorks Product Set 1.5.1 LinkWorks Facility 1.5.1.1 LinkWorks Services 1.5.1.2 LinkWorks Manager 1.5.2 LinkWorks Developer's Tools 2 Hyperapplication Design 2.1 Identifying Application Linkable Objects 2.1.1 Bookreader's Linkable Objects 2.2 Designing Surrogates for Application Linkable Objects 2.2.1 Determine Surrogate Properties 2.2.1.1 Surrogate Sub Type Property 2.2.1.2 Application-Specific Properties 2.2.1.3 Consider Property Lifetime 2.2.1.4 VMS DECwindows Mail Surrogate Properties 2.2.2 Identify Query Keys 2.2.3 Coordinate with Other Hyperapplications 2.3 Designing Object Highlighting 2.3.1 Highlighting Techniques 2.4 Considering User Interface Callback Routines 2.4.1 Get Surrogate 2.4.2 Create Surrogate 2.4.3 Complete Link 2.4.4 Apply 2.4.5 Close View 2.4.6 Environment Change 2.5 Considering Query Strategies 2.5.1 Query Techniques 2.5.1.1 On-Demand Query 2.5.1.2 Up-Front Query 2.5.1.3 Incremental Caching of Query Results 2.5.2 Query Performance Considerations 2.5.3 Query Complexity 3 Hyperapplication Implementation 3.1 HyperFiles Sample Hyperapplication 3.1.1 HyperFiles Features 3.1.2 HyperFiles Files 3.2 Initializing a Hyperapplication 3.2.1 Initializing the LinkWorks Services 3.2.2 Responding to Hyperinvocation Requests 3.3 Adding the LinkWorks User Interface 3.3.1 Adding the Link Menu 3.3.2 Creating a LinkWorks User Interface Object 3.3.3 Setting User Interface Properties 3.3.4 Installing Link Menu Accelerators 3.3.5 Multiple DXm UI Considerations 3.3.6 Customizing the Link Menu 3.4 Implementing DXm UI Callback Routines 3.4.1 Get Surrogate Callback Routine 3.4.2 Create Surrogate Callback Routine 3.4.3 Complete Link Callback Routine 3.4.4 Apply Callback Routine 3.4.5 Close View Callback Routine 3.4.6 Environment Change Callback Routine 3.5 Registering Your Linkable Objects 3.5.1 Creating a Registry Definition 3.5.2 Installation Actions 4 Hyperizing Checklist Part II Programming Reference 5 LinkWorks Services Data Types 5.1 Domains 5.2 Primitive Data Types 5.3 Aggregate Data Types 5.4 Abstract Data Types 6 LinkWorks Objects 6.1 The LinkWorks Services Object Model 6.1.1 Properties 6.1.1.1 Getting Property Values 6.1.1.2 Setting Property Values 6.1.2 Operations 6.2 LinkWorks Object 6.2.1 LinkWorks Object Properties 6.2.2 LinkWorks Object Operations 6.3 List 6.3.1 List Properties 6.3.2 List Operations 6.4 Set 6.4.1 Set Properties 6.4.2 Set Operations 6.5 Object Identifier 6.5.1 Object Identifier Properties 6.5.2 Object Identifier Operations 6.6 Object Descriptor 6.6.1 Object Descriptor Properties 6.6.2 Object Descriptor Operations 6.7 User Interface 6.7.1 User Interface Properties 6.7.2 User Interface Operations 6.8 DECwindows Motif User Interface (DXm UI) 6.8.1 DXm UI Properties 6.8.2 DXm UI Operations 6.9 Persistent Object 6.9.1 Persistent Object Properties 6.9.2 Persistent Object Operations 6.10 Surrogate 6.10.1 Surrogate Properties 6.10.2 Surrogate Operations 6.11 Link 6.11.1 Link Properties 6.11.2 Link Operations 6.12 Linknet 6.12.1 Linknet Properties 6.12.2 Linknet Operations 6.13 Composite Linknet 6.13.1 Composite Linknet Properties 6.13.2 Composite Linknet Operations 6.14 Step 6.14.1 Step Properties 6.14.2 Step Operations 6.15 Path 6.15.1 Path Properties 6.15.2 Path Operations 6.16 Composite Path 6.16.1 Composite Path Properties 6.16.2 Composite Path Operations 6.17 Linkbase 6.17.1 Linkbase Properties 6.17.2 Linkbase Operations 7 LinkWorks Services Query Capabilities 7.1 Query Expressions 7.1.1 Logical Operations 7.1.2 Surrogate Query Expressions 7.1.3 Link Query Expressions 7.1.4 Step Query Expressions 7.1.5 Property Query Expressions 7.1.6 Relational Operands 8 LinkWorks User Interface Callback Routine Definitions Apply (Apply an Operation) Close View (Close the User Interface View) Complete Link (Inspect a Newly Created Link) Create Surrogate (Return a Surrogate) Environment Change (Environment Change Notification) Get Surrogate (Return Surrogates) 9 LinkWorks Services Operation Definitions lwk_add_boolean (Add Boolean) lwk_add_date (Add Date) lwk_add_ddif_string (Add DDIF String) lwk_add_element (Add Element) lwk_add_float (Add Float) lwk_add_integer (Add Integer) lwk_add_object (Add Object) lwk_add_string (Add String) lwk_apply (Apply) lwk_close (Close) lwk_confirm_apply (Confirm Apply) lwk_copy (Copy) lwk_copy_aggregate (Copy Aggregate) lwk_create (Create) lwk_create_dxm_ui (Create DXm UI) lwk_create_list (Create List) lwk_create_set (Create Set) lwk_date_to_time (Date To Time) lwk_delete (Delete) lwk_delete_date (Delete Date) lwk_delete_ddif_string (Delete DDIF String) lwk_delete_encoding (Delete Encoding) lwk_delete_string (Delete String) lwk_do_dxm_menu_action (Do DXm Menu Action) lwk_drop (Drop) lwk_enumerate_properties (Enumerate Properties) lwk_export (Export) lwk_get_domain (Get Domain) lwk_get_object_descriptor (Get Object Descriptor) lwk_get_object_id (Get Object Id) lwk_get_value (Get Value) lwk_get_value_domain (Get Value Domain) lwk_get_value_list (Get Value List) lwk_import (Import) lwk_initialize (Initialize) lwk_is_multi_valued (Is Multivalued) lwk_iterate (Iterate) lwk_open (Open) lwk_query (Query) lwk_remove_boolean (Remove Boolean) lwk_remove_date (Remove Date) lwk_remove_ddif_string (Remove DDIF String) lwk_remove_element (Remove Element) lwk_remove_float (Remove Float) lwk_remove_integer (Remove Integer) lwk_remove_object (Remove Object) lwk_remove_string (Remove String) lwk_retrieve (Retrieve) lwk_set_value (Set Value) lwk_set_value_list (Set Value List) lwk_status_to_ddif_string (Status To DDIF String) lwk_status_to_string (Status To String) lwk_store (Store) lwk_surrogate_is_highlighted (Surrogate Is Highlighted) lwk_time_to_date (Time To Date) lwk_transact (Transact) Part III Using the Developer's Tools 10 Compiling and Linking with the LinkWorks Services 10.1 VMS Systems 10.1.1 Compiling on VMS Systems 10.1.2 Linking on VMS Systems 10.1.2.1 Execute-Only and Linkable Shareable Images 10.1.2.2 Linking a DECwindows Motif Hyperapplication 10.1.3 Building HyperFiles on VMS Systems 10.2 Systems Based on UNIX Software 10.2.1 Compiling on Systems Based on UNIX Software 10.2.2 Linking on Systems Based on UNIX Software 10.2.3 Building HyperFiles on Systems Based on UNIX Software 11 Using the Linkbase Utility 11.1 Linkbase Utility on VMS Systems 11.1.1 Invoking the Linkbase Utility on VMS Systems 11.1.2 Subcommand Summary COPY DELETE DIRECTORY DUMP EXIT EXPORT HELP IMPORT 11.2 Linkbase Utility on Systems Based on UNIX Software 11.2.1 Command Summary lbcp (copy) lbdump (dump) lbexport (export) lbimport (import) lbls (list) lbrm (remove) A LinkWorks Services Status Codes FIGURES 1-1 LinkWorks Architecture 3-1 Hyperapplication Link Menu 6-1 Object Type Hierarchy 6-2 Relationships Among Objects in a Linknet 6-3 Relationships Among Objects in a Path TABLES 2-1 Predefined Key Surrogate Properties 3-1 HyperFiles Files on VMS Systems 3-2 HyperFiles Files on Systems Based on UNIX Software 5-1 LinkWorks Services Domains 5-2 Primitive Data Types 5-3 Aggregate Data Types 5-4 Abstract Data Types 6-1 Setting Property Values with Set Value or Set Value List 6-2 Object: Operations 6-3 List: Properties and Operations 6-4 Set: Properties and Operations 6-5 Object Identifier: Properties and Operations 6-6 Object Descriptor: Properties and Operations 6-7 User Interface: Properties and Operations 6-8 Highlighting States 6-9 DECwindows Motif User Interface (DXm UI): Properties and Operations 6-10 Persistent Object: Properties and Operations 6-11 Surrogate: Properties and Operations 6-12 Link: Properties and Operations 6-13 Linknet: Properties and Operations 6-14 Composite Linknet: Properties and Operations 6-15 Step: Properties and Operations 6-16 Follow Types 6-17 Path: Properties and Operations 6-18 Composite Path: Properties and Operations 6-19 Linkbase: Properties and Operations 7-1 Logical Operators 7-2 Surrogate Selection Operators 7-3 Link Selection Operators 7-4 Step Selection Operators 7-5 Property Selection Operators 7-6 Relational Operands 8-1 Apply Callback Reasons 8-2 Follow Types 8-3 Close View Callback Reasons 8-4 Complete Link Callback Reasons 8-5 Create Surrogate Callback Reasons 8-6 Environment Change Callback Reasons 8-7 Environment Change Indicators 8-8 Get Surrogate Callback Reasons 9-1 Menu Actions 9-2 Set Operations 9-3 Transaction Types 10-1 VMS LinkWorks Services API Definitions 10-2 UNIX Systems LinkWorks Services API Definitions