Rational Rhapsody API Reference Manual Before using the information in this manual, be sure to read the IBM “Notices” section of the IBM Rational Help. This edition applies to IBM® Rational® Rhapsody® 7.4 and to all subsequent releases and modifications until otherwise indicated in new editions. © Copyright IBM Corporation 1997, 2009. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. ii Contents The Rational Rhapsody API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Information Available to the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Hierarchy of API Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Rational Rhapsody Java API Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Java API Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Java API Differences from COM API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Rational Rhapsody Environment Initialization before Using Rational Rhapsody API on Linux . 6 COM API Basic Concepts and Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 COM API Tools and Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 COM API with Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 COM API with VBScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Setting Up the COM Interface for Visual C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Manipulating Project Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Creating a Project Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Modifying an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Deleting an Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Handling Properties Using the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Propagation of Default Property Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Methods for Manipulating Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Catching an Error Condition in VB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Installing Custom Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Adding Helpers to Rational Rhapsody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Rational Rhapsody API Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Rational Rhapsody API Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Running the RPYReporter Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Rational Rhapsody iii Table of Contents Running the RPYExplorer Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Running RPYReporter in Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 VB Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Running RPYReporter Step-by-Step. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Starting and Saving Your Own VB IDE Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Saving the Examples as New Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Making Your Own New Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Compiling and Making Your Executables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Creating Applications with Microsoft Word VB IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Specifying the Macro Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Comments on the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Modifying the Example to Print Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Rhapsody API Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Access to VB Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 API Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Rhapsody Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 IRPAction Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 IRPActor Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 IRPAnnotation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 IRPApplication Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 IRPArgument Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 IRPASCIIFile Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 IRPAssociationClass Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 IRPAssociationRole Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 IRPAttribute Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 IRPBlock Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 IRPClass Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 IRPClassifier Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 IRPClassifierRole Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 IRPCollaboration Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 IRPCollaborationDiagram Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 IRPCollection Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 IRPComment Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 IRPComponent Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 IRPComponentDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 IRPComponentInstance Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 IRPConfiguration Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 IRPConnector Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 IRPConstraint Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 IRPControlledFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 IRPDependency Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 iv API Reference Manual Table of Contents IRPDeploymentDiagram Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPEnumerationLiteral Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPEvent Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPEventReception Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPExecutionOccurrence Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPExternalCodeGenerator Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPExternalCodeGeneratorInvoker Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPFile Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPFlow Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPFlowchart Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPFlowItem Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGeneralization Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGraphEdge Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGraphElement Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGraphicalProperty Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGraphNode Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPGuard Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPHyperLink Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPImageMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPInstance Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPInteractionOccurrence Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPInterfaceItem Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPLink Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPMessage Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPMessagePoint Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPModelElement Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPModule Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPNode Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPObjectModelDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPOperation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPPackage Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPPin Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPPort Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPProfile Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPProject Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPRelation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPRequirement Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPSequenceDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPState Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPStatechart Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPStateVertex Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPStereotype Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPStructureDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rational Rhapsody 233 233 238 239 240 241 241 257 259 269 274 277 280 281 281 286 286 286 287 290 291 296 297 303 304 306 308 341 341 344 344 349 402 404 410 410 429 434 434 436 457 465 470 470 v Table of Contents IRPSwimlane Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTag Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTemplateInstantiation Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTemplateInstantiationParameter Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTemplateParameter Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTransition Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPTrigger Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPType Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPUnit Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPUseCase Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPUseCaseDiagram Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPInternalOEMPlugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRPVariable Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 471 471 472 472 474 487 490 506 512 519 519 519 The Callback API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Callback API Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Events with Callback Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522 API Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 IRPApplicationListener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 IRPRoundTripListener. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 IRPCodeGeneratorListener. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Callback Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Disabling Callback Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Disabling Cancellable Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 Sample Client Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 vi API Reference Manual The Rational Rhapsody API The Rational Rhapsody API allows you write applications that access and manipulate Rational Rhapsody model elements. Two versions of the API are provided with Rational Rhapsody: COM Java Information Available to the API The Rational Rhapsody API facilitates reading, changing, adding to, and deleting from all model elements that are available in the Rational Rhapsody browser. The browser displays the static elements of a model including, but not limited to, the following: Model information Descriptions and other information within browser forms Information describing the model hierarchy, components, and packages Configurations and profiles Features and properties File and directory names Diagrams in a form that can be printed or included in external files for printing, such as Microsoft® Word® Rational Rhapsody 1 The Rational Rhapsody API Hierarchy of API Interfaces The class diagram depicts the hierarchical relationships between the API interfaces. The application (IRPApplication) is the top-level object of the Rational Rhapsody object model. The hierarchy of the API interfaces is as follows: IRPApplication IRPASCIIFile IRPCollection IRPExternalCodeGenerator IRPExternalCodeGeneratorInvoker IRPFlow IRPGraphElement IRPGraphEdge IRPGraphNode IRPGraphicalProperty IRPModelElement IRPAction IRPAnnotation IRPComment IRPConstraint IRPRequirement IRPAssociationRole IRPClassifierRole IRPCollaboration IRPComponentInstance IRPConfiguration IRPDependency IRPHyperLink IRPEnumerationLiteral IRPExecutionOccurrence IRPFile IRPGeneralization IRPGuard IRPInteractionOccurrence IRPInterfaceItem IRPEvent IRPEventReception IRPOperation IRPLink IRPMessage IRPMessagePoint IRPStateVertex IRPConnector IRPState IRPStereotype IRPSwimlane IRPTemplateInstantiation IRPTemplateInstantiationParameter IRPTransition IRPTrigger IRPUnit IRPClassifier IRPActor IRPClass IRPAssociationClass IRPFlowItem IRPNode IRPType IRPUseCase 2 API Reference Manual Hierarchy of API Interfaces IRPComponent IRPDiagram IRPCollaborationDiagram IRPComponentDiagram IRPDeploymentDiagram IRPObjectModelDiagram IRPSequenceDiagram IRPStatechart IRPFlowchart IRPStructureDiagram IRPUseCaseDiagram IRPPackage IRPProfile IRPProject IRPRelation IRPInstance IRPBlock IRPModule IRPPort IRPVariable IRPArgument IRPAttribute IRPTag IRPTemplateParameter Rational Rhapsody 3 The Rational Rhapsody API 4 API Reference Manual Rational Rhapsody Java API Basic Concepts In terms of its capabilities, the Rational Rhapsody Java API is identical to the Rational Rhapsody COM API. The reference material for the COM API can be used to see what you can do with the Java API. The names of the objects, attributes, and methods in the Java API are more or less the same as those in the COM API. For the details of the Rational Rhapsody Java API, see the Javadoc output for the API, which can be found at [rhapsody installation directory]\Doc\java_api\index.html. A sample that uses the Java version of the Rational Rhapsody API can be found in the directory: [Rhapsody installation directory]\Samples\JavaAPI A more advanced sample can be found in the directory: [Rhapsody installation directory]\Samples\CustomCG Samples\Statechart_Simplifier_Writer\Statechart_Java_Simplifier Java API Features Rational Rhapsody includes a Java version of the Rational Rhapsody API that can be used for working with Rational Rhapsody models. Since the Java API can be used on both Windows and Linux, this API allows you to write cross-platform applications. Rational Rhapsody provides two files that can be found in the directory [installation directory]Share/JavaAPI: Rhapsody.jar—contains the Java classes and interfaces Rhapsody.dll (or Rhapsody.so for Linux)—native implementation of the Java interfaces The .jar file should be included in the CLASSPATH of the Java project, and the .dll (or .so file) should be included in the lib path. To access the Rational Rhapsody application, you use the object RhapsodyAppServer. See the API javadoc output for details. Rational Rhapsody 5 Rational Rhapsody Java API Basic Concepts Java API Differences from COM API The following are specific differences between the Rational Rhapsody Java API and the Rational Rhapsody COM API: Methods in the Java version of the API throw RhapsodyAPIException exceptions. You can use the toString method to get the description of the exception. provides a method called toList that returns a native Java list container populated with the elements of the collection. This is the recommended method of iterating over collections with the Java version of the API. (In Java 1.5, you can cast the list to a types list and thus benefit from the for-each iterator.) IRPCollection Unlike the COM version of the API, where you have to use the IDispatch::QueryInterface method, in the Java version, you can use the native Java operator instanceOf. To check whether two interfaces point to the same model element, you should use the native boolean Object.equals(Object) method. Rational Rhapsody Environment Initialization before Using Rational Rhapsody API on Linux An initialization script called rhp_env (located in the root of the Rational Rhapsody installation directory) must be run before using Rational Rhapsody on Linux. This is done automatically when Linux users launch Rational Rhapsody as described in the documentation. However, this script must also be run by Linux users who run Java applications that include use of the Rational Rhapsody API. When you write a Java application that includes use of the Rational Rhapsody API, make sure to inform the users of the application that they must run the initialization script prior to running the Java application. Alternatively, you can try to automate this process for the users of your application, for example, by having the script run as part of each users Linux startup process, or by including a call to this script in the script file you provide for launching your Java application (provided, of course, that Rational Rhapsody is installed in the same location on each users computer). 6 API Reference Manual COM API Basic Concepts and Examples The Rational Rhapsody Repository API consists of a set of COM interfaces that supports dual interfaces (COM and automation). This allows access from Visual Basic and any language implemented with COM bindings. COM interfaces allow access from either Visual Basic® or VBScript, even when type information is not available (for example, OLE automation). Note See http://www.urc.bl.ac.yu/manuals/vbscript/ch13fi.htm for a comparison of Visual Basic, VBA, and VBScript. Each interface represents a class in the Rational Rhapsody repository, and the set of interfaces forms the Rational Rhapsody object model. Each instance in the Rational Rhapsody repository returns a reference to a particular COM interface based on its metaclass. For example, access to an event in the Rational Rhapsody repository is via the IRPEvent interface. COM API Tools and Languages The following sections describe how to use the Rhapsody COM API tools and languages COM API with Visual Basic Like all COM-based APIs, two components are required to create Rational Rhapsody automation scripts: The Rational Rhapsody COM type library, rhapsody.tlb. COM type libraries are selfdocumenting and easy to browse using COM object viewers. A Rational Rhapsody executable providing COM server functionality. In Visual Basic, attach the rhapsody.tlb library to the project by selecting Project > References. This familiarizes the VB environment with the Rational Rhapsody API interfaces. No further action is required. VB implicitly connects to the Rhapsody server (rhapsody.exe) once the VB application is executed. Rational Rhapsody 7 COM API Basic Concepts and Examples Example The following VB program shows an example of how to traverse all the classes and add a serial number property (initialized to 0) to each one. Public Sub SetClassesInPackage(p As IRPPackage) ‘ ‘ Routine to add recursively a property to all classes in ‘a package ‘ Dim allClassifiers As RPCollection Set allClassifiers = p.nestedClassifiers Dim c As RPClassifier For each c in allClassifiers isClass = c.isOfMetaClass ‘Class’ If isClass Then On error resume next If not c.addProperty(‘general:class:serialNo’, ‘int’, ‘0’) then If not err.Number then Print ‘class can’t be assigned a property’, c.name end if Else ‘ Check for nested packages isPackage = c.isOfMetaClass ‘Package’ If isPackage Then ‘ nested package case Dim nestedP as Package Set nestedP = c ‘ cast classifier to package SetClassesInPackage nestedP End If End If Next End Sub ‘ ‘ The main program ‘ Dim Rph As Object Dim ProjName As String Dim Prj As RPProject Dim Packages As RPCollection Set Rph = CreateObject("Rhapsody.Application") ProjName = ‘D:\Rhapsody\Examples\PingPong.rpy’ Rph.OpenProject projName Set Prj = Rph.activeProject Packages = Prj.packages Dim p As RPPackage For each p in allProjectClassifiers SetClassesInPackage p Next 8 API Reference Manual COM API Tools and Languages COM API with VBScript Most Rational Rhapsody users on Windows platforms can use the Visual Basic IDE programming environment or VBA, which are not available on a Solaris platform. However, Rational Rhapsody users on Solaris platforms can access the Rational Rhapsody API using VBScript (Visual Basic Scripting edition), a cross-platform development language. Running VBScript The setup for running VBScript scripts is done during installation. Note the following: 1. Before running a VBScript script, you must run Rational Rhapsody at least once for registration of the COM interfaces in the registry. 2. Run the VBS script located in the Rational Rhapsody home directory. 3. Use the vbstest program by Mainsoft™ to run vbs programs. VBScript samples are available in the Samples/Vbs directory of the Rational Rhapsody installation. Writing Files from VBScript Some of the elements of Visual Basic are not included in VBScript, such as file input/output functions. Rhapsody compensates for this with the addition of a File object to the Rational Rhapsody COM library to facilitate reading and writing to files. To write to files, use code similar to the following in your script: rem Create a rhapsody object. . . . rem Create and open a file object. Set F = CreateObject("Rhapsody.RPASCIIFile") rem Use it to open a file. F.open "/tmp/show.txt" rem Use is to write to the file with VB script commands. F.write "Succeeded in opening project " + vbLf rem Close the file when finished with it. F.close Rational Rhapsody 9 COM API Basic Concepts and Examples Example VBScript The following VBScript script dumps packages, classes, and events. It is included in the Rhapsody installation. Dim rappl Dim appl Dim p Dim s Dim c Dim pack Dim F Set rappl = CreateObject("Rhapsody.Application") Set F = CreateObject("Rhapsody.RPASCIIFile") F.open "/tmp/show.txt" F.write "Succeeded in opening project " + vbLf MsgBox "Started Rhapsody"+rappl.version s = "/disk1/RP/Samples/Pingpong/pingpong.rpy" rappl.openProject s Set p = rappl.activeProject Set c = p.components For Each pack In c MsgBox pack.Name Next dim NextPack, NextOperation rem Lets send them to a file level=1 ShowPackages p, level F.close MsgBox "Done listing the Project" sub ShowPackages(p, levelPack) CallLevelPack = levelPack + 1 Set Pk = p.packages For Each Pack In Pk PrintSpace levelPack F.write"Package:"+pack.Name+vbLf ShowClasses Pack, CallLevelPack CallLevelClass = levelClass + 1 ShowEvents Pack, CallLevelPack Next End Sub sub ShowClasses(Pack, levelClass) CallLevelClass = levelClass + 1 set NextPack = Pack.Classes PrintSpace levelClass F.write"Classes::"+vbLf For Each Class In NextPack PrintSpace levelClass F.writeClass.Name+"::"+vbLf 10 API Reference Manual COM API Tools and Languages ShowOperations Class, CallLevelClass CallLevelClass = levelClass + 1 ShowAttributes Class, CallLevelClass Next End Sub sub ShowOperations(Class, levelOperation) CallLevelOperation = levelOperation + 1 set NextOperation = Class.Operations PrintSpace levelOperation F.write"Operations::"+vbLf for Each Operation in NextOperation PrintSpace CallLevelOperation F.write"::"+Operation.name+vbLf CallLevelClass = levelOperation + 1 Next End Sub sub ShowAttributes(Class, levelAttribute) CallLevelAttribute = levelAttribute + 1 set NextAttribute = Class.Attributes PrintSpace levelAttribute F.write"Attributes::"+vbLf for Each Attribute in NextAttribute PrintSpace CallLevelAttribute F.write"::"+Attribute.name+vbLf Next End Sub sub ShowEvents(Pack, levelEvent) CallLevelEvent = levelEvent + 1 set NextEvent = Pack.Events PrintSpace levelEvent F.write"Events::"+vbLf for Each RHPEvent in NextEvent PrintSpace CallLevelEvent F.write"::"+RHPEvent.name+vbLf Next End Sub sub PrintSpace (levelPrint) For x = 1 to levelPrint F.write "" Next End sub Rational Rhapsody 11 COM API Basic Concepts and Examples Setting Up the COM Interface for Visual C++ Like all COM-based APIs, two components are required to create Rational Rhapsody automation scripts: The Rational Rhapsody COM type library, rhapsody.tlb. COM type libraries are selfdocumenting and easy to browse using COM object viewers. One such viewer is provided in the Share directory of the installation. A Rhapsody executable providing COM server functionality. The class wizard can create Rhapsody proxy objects by attaching to the rhapsody.tlb library. This requires the VC++ project also to be COM-enabled. The important steps in setting up the COM interface are as follows: 1. Include an #import statement. For example: #import "C:\Rhapsody\rhapsody.tlb" no_namespace named_guids This statement makes C++ recognize the various interfaces as C++ classes. 2. Invoke the rhapsody.application object. For example: IRPApplication apl = NULL; hr = CoCreateInstance(CLSID_RPApplication, NULL,CLSCTX_ALL, IID_IRPApplication, (void**)&apl); 3. Access elements of the rhapsody.application object through API methods. For example: // Get project file name IRPProjectPtr proj = NULL; hr = apl->openProject (projectFileName, &proj); // Get count of packages in project IRPCollectionPtr collection; hr = proj->get_packages(&collection); long elementsCollectionCount; hr = collection->get_Count(&elementsCollectionCount); The following two examples demonstrate how to invoke Rhapsody from a C++ client using direct COM calls to the Rational Rhapsody API interface. 12 API Reference Manual COM API Tools and Languages Sample: Reading from the API The following example is the primary file in a Visual C++ workspace application that reads from a Rational Rhapsody project using the COM API interface. // // ReadAPI.cpp : Defines the entry point for the console //application. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <atlbase.h> // The following depends on the place that Rhapsody is //installed #import "F:\Documents\RiCPP_2.3MR1\Rhapsody\rhapsody.tlb" raw_interfaces_only, no_namespace, named_guids void printBSTR(BSTR errorMessage) { LPCWSTR tmpName = errorMessage; char buf[1000]; int tmpNameLen = tmpName != NULL ? wcslen(tmpName) :0; if (tmpNameLen != 0) { wcstombs(buf, tmpName, (tmpNameLen*2)+1); printf(buf); printf("\n"); } } void printErrorMessageIfError(HRESULT hr, IRPModelElement* modelElement) { if (FAILED(hr)) { BSTR errorMessage; HRESULT tmpHr; tmpHr = modelElement >getErrorMessage(&errorMessage); printBSTR(errorMessage); } } int loadProject(const char* rpyFileName) { HRESULT hr; CLSID clsid; hr = CLSIDFromProgID(OLESTR("Rhapsody.Application"), &clsid); if (FAILED(hr)) { printf(_T("Failed to resolve CLSID. HR = 0x%8x"),hr); return 0; } // Create CoClass instance from ClassId, using dispatch iid IRPApplicationPtr apl; hr = ::CoCreateInstance( CLSID_RPApplication, NULL, CLSCTX_ALL, IID_IRPApplication, (void**)&apl ); Rational Rhapsody 13 COM API Basic Concepts and Examples if (FAILED(hr)) { printf(_T("Failed to create instance. HR = 0x%8x"),hr); return 0; } int len = MultiByteToWideChar(CP_ACP, 0, rpyFileName, strlen(rpyFileName), NULL, NULL); BSTR projectFileName = SysAllocStringLen(NULL, len); MultiByteToWideChar(CP_ACP, 0, rpyFileName, strlen(rpyFileName), projectFileName, len); IRPProjectPtr proj = NULL; hr = apl->openProject (projectFileName,&proj); SysFreeString(projectFileName); IRPCollectionPtr collection; hr = proj->get_packages(&collection); long elementsCollectionCount; hr = collection->get_Count(&elementsCollectionCount); BSTR packageName; VARIANT r; for ( int i = 1; i <= elementsCollectionCount; i++) { IRPPackagePtr p; hr = collection->get_Item(i, &r); hr = r.pdispVal->QueryInterface(IID_IRPPackage, (void**)&p); hr = p->get_name(&packageName); printBSTR(packageName); } hr = apl->quit(); return 0; } void Usage() { printf("Usage: ReadAPI rpyFile\n"); } // General remark: In the following, in most cases there // is no check on the returned hr for readability. int main(int argc, char* argv[]) { HRESULT hr; hr = CoInitialize(0); if (FAILED(hr)) { printf(_T("Failed to initialize COM")); return 0; } if (argc == 2) loadProject(argv[2]); else Usage(); // loadProject("D:\\Temp\\Project.rpy"); CoUninitialize(); return 0; } 14 API Reference Manual COM API Tools and Languages Sample: Writing to the API The following example is the primary file in a Visual C++ workspace application that writes to a Rational Rhapsody project using the COM API interface. Note Change the #import line to match your own project. // // WriteAPI.cpp : Defines the entry point for the console // application. #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <atlbase.h> // The following depends on the place that Rhapsody is // installed #import "D:\Rhapsody\rhapsody.tlb" raw_interfaces_only, no_namespace, named_guids void printBSTR(BSTR errorMessage) { LPCWSTR tmpName = errorMessage; char buf[1000]; int tmpNameLen = tmpName != NULL ? wcslen(tmpName) :0; if (tmpNameLen != 0) { wcstombs(buf, tmpName, (tmpNameLen*2)+1); printf(buf); printf("\n"); } } void printErrorMessageIfError(HRESULT hr, IRPModelElement* modelElement) { if (FAILED(hr)) { BSTR errorMessage; HRESULT tmpHr; tmpHr = modelElement->getErrorMessage( &errorMessage); printBSTR(errorMessage); } } int createNewProject(const char* userDirectoryName, const char* userProjectName) { HRESULT hr; hr = CoInitialize(0); if (FAILED(hr)) { printf(_T("Failed to initialize COM")); return 0; } CLSID clsid; hr = CLSIDFromProgID(OLESTR("Rhapsody.Application"), &clsid); if (FAILED(hr)) { printf(_T("Failed to resolve CLSID. HR = Rational Rhapsody 15 COM API Basic Concepts and Examples 0x%8x"),hr); return 0; } // Create CoClass instance from ClassId, using // dispatch iid IRPApplicationPtr apl; hr = ::CoCreateInstance( CLSID_RPApplication, NULL, CLSCTX_ALL, IID_IRPApplication, (void**)&apl ); if (FAILED(hr)) { printf(_T("Failed to create instance. HR = 0x%8x"),hr); return 0; } IRPProjectPtr proj = NULL; int len = MultiByteToWideChar(CP_ACP, 0, userDirectoryName, strlen(userDirectoryName), NULL, NULL); BSTR projectLocation = SysAllocStringLen(NULL, len); MultiByteToWideChar(CP_ACP, 0, userDirectoryName, strlen(userDirectoryName), projectLocation, len); len = MultiByteToWideChar(CP_ACP, 0, userProjectName, strlen(userProjectName), NULL, NULL); BSTR projectName = SysAllocStringLen(NULL, len); MultiByteToWideChar(CP_ACP, 0, userProjectName, strlen(userProjectName), projectName, len); hr = apl->createNewProject(projectLocation, projectName); hr = apl->activeProject(&proj); SysFreeString(projectLocation); SysFreeString(projectName); IRPPackagePtr package; BSTR packageName = SysAllocString(L"myPackage"); hr = proj->addPackage(packageName, &package); SysFreeString(packageName); IRPClassPtr newClass; BSTR className = SysAllocString(L"myClass"); hr = package->addClass(className, &newClass); SysFreeString(className); IRPOperationPtr operation; BSTR operationName = SysAllocString(L"myOperation"); hr = newClass->addOperation(operationName, &operation); SysFreeString(operationName); IRPAttributePtr attribute; BSTR attributeName = SysAllocString(L"myAttribute"); hr = newClass->addAttribute(attributeName, &attribute); SysFreeString(attributeName); hr = proj->save(); hr = apl->quit(); CoUninitialize(); return 0; } void Usage() { printf("Usage: WriteAPI directoryName projectName\n"); } 16 API Reference Manual COM API Tools and Languages // General remark: In the following, in most cases there // is no check on the returned hr for readability. int main(int argc, char* argv[]) { HRESULT hr; hr = CoInitialize(0); if (FAILED(hr)) { printf(_T("Failed to initialize COM")); return 0; } if (argc == 3) createNewProject(argv[2], argv[3]); else Usage(); // createNewProject("D:\\temp\\Project", "Project"); CoUninitialize(); return 0; } Rational Rhapsody 17 COM API Basic Concepts and Examples Manipulating Project Elements The following sections describe how to create, modify, and delete Rhapsody project elements. Creating a Project Element There are two ways to add a new Rhapsody element: Add a new object while the project is still open in Rational Rhapsody using the method addNewAggr on an owner object, supplying the metatype, name, and receiving the newly created object. The syntax for the call is as follows: owner.addNewAggr(metaType, name); In this call, metaType and name are String expressions for the type and name of an object with which to form an aggregation relation with an owner object. For example, if a package p is present in your open model, you can execute the following code in Visual Basic: Dim c as RPClass c = p.AddNewAggr("Class","C"); When finished, the new class c is added to package p. There are also addObject methods available for every object. For example: Dim Dim Set Set cl as RPClass attr as RPAttribute cl = Package.AddClass("C"); attr = Class.AddAttribute("att"); The objects created are connected to their owner. Even a new project can be created using a special method. Note: Do not use the VB methods createObject or createInstance to create new elements. The only correct way to create new elements is with the addNewAggr method or the specific addObject methods. 18 API Reference Manual Manipulating Project Elements Modifying an Element When you attempt to modify an object through an API method, you call the appropriate method, such as setName(newName). Rhapsody checks the permissions, and returns one of the values listed in the following table. Return State Description YES The operation is performed and returns without error. For example, you want to name a class “A”. NOOP The operation is not performed and returns without error. For example, you want to name a class “A”, but it already has that name. NO The operation is not performed and returns with an error. For example, you want to name a class “A”, but it is readonly, or there is already a class named “A” present. The error message RP_CANT_MODIFY is returned as the error message for this method. WARNING You can choose from two working modes: • Force mode on? WARNING is regarded as YES. • Force mode off? WARNING is regarded as NO. MERGE The operation is not performed as if a NO is returned. Merge routines are available. Deleting an Element The method deleteFromProject deletes an object from its package. In addition, there are DeleteXXXX methods that delete elements of a core object. In the following examples, cl and att are wrappers to their core objects. Package.DeleteClass(cl); Class.DeleteAttribute(att); Only cl = NULL and att = NULL in a Visual Basic application will delete the wrapper itself. Rational Rhapsody 19 COM API Basic Concepts and Examples Handling Properties Using the API Rhapsody model elements can have name/value pairs, known as properties, that extend the model in some way. They provide, for example, instructions for code generation, additional applicationdependent properties, and so on. The name (or key) part of the name/value pair is a string that must consist of three qualifying fields separated by a period. For example: <lang>_CG.Configuration.Environment The first of the three fields designates a subject, such as code generation, reverse engineering, and so on. The second field designates the metaclass (or stereotype) to which the property applies. The third field designates the name of the property. The value part of the name/value pair is a string that can be interpreted as either a string value, an integer, a Boolean, or an enumerated type. For example, “Microsoft” is one of the enumerated values “Microsoft, MicrosoftDLL, VxWorks, Solaris2, Borland, MSStandardLibrary, PsosX86, PsosPPC, MicrosoftWinCE, OseSfk, Linux, Solaris2GNU, QNXNeutrinoGCC, QNXNeutrinoCW, OsePPCDiab” for the key <lang>_CG.Configuration.Environment. For a given property name, a Rhapsody model element can have either a specific value (a value given to it by either a user or Rhapsody), or a default value, which it finds by searching a predefined search path. For some keys, it is possible to have no value at all. Propagation of Default Property Values To facilitate assignment of values to groups of model elements rather than a single model element each time, Rhapsody implements a propagation mechanism where property values propagate along the containment hierarchy. The propagation originates at the factory.prp file, continues to the project through the site.prp file, and then on to the configuration and model containment hierarchy. For example, consider a class C1 that is nested in a package P11 that is nested in a package P1. Class C1 is denoted by the expression P1::P11::C1. Assume that for all the classes in P11 the statecharts should not be implemented (generated). To do this, the property CG.Class.ImplementStatechart should be set to False for package P11. By default, all classes within P11 (recursively) “inherit” this value, unless overridden. If this behavior is required for the entire project, this property should be set to False at the project level. Note The propagation mechanism referred to resembles inheritance, although the word “inheritance” is intentionally not used to avoid confusion. 20 API Reference Manual Handling Properties Using the API Methods for Manipulating Properties The API provides a number of functions that enable you to add or modify Rhapsody properties. These methods belong to the IRPModelElement interface and include the following: addProperty getPropertyValue getPropertyValueExplicit removeProperty setPropertyValue You can use properties set in the site.prp file to create customized documentation. These properties can also be accessed by the API and changed as required. Rational Rhapsody 21 COM API Basic Concepts and Examples Error Handling All COM methods return a status of HRESULT indicating the success status of the method. In Visual Basic (VB), HRESULT is not visible and a failure status raises a VB error condition that, if not handled, aborts the calling program. Most of the API functions do not create side effects, and therefore there is no reason for them to flag an error. However, the API might flag errors if permission on an update is not given. The following table lists the methods that flag errors and might require error handling. Method Member Of addProperty IRPModelElement getPropertyValue IRPModelElement getPropertyValueExplicit IRPModelElement removeProperty IRPModelElement setPropertyValue IRPModelElement save IRPProject saveAs IRPProject Catching an Error Condition in VB Catching an error condition in VB is performed using an On Error statement. A practical way to handle errors flagged by method calls is demonstrated by the following example: On Error Resume Next getSelectedElement.getPropertyValue("no.property.exists") Dim s As String getSelectedElement.getErrorMessage s MsgBox s In this example: Resume Next makes the program continue to execute at the statement immediately following the one that caused the error. The method getErrorMessage, defined for every model element, fetches a message of the most recent error occurrence. This message can be displayed to diagnose the error, as shown in the example. 22 API Reference Manual Error Handling Error Codes A return value of zero indicates success. The following table lists the non-zero values that represent Rhapsody API error codes. Error Description RP_CANT_ADD_AGGREGATE Could not add the element. RP_CANT_MODIFY The item cannot be modified. RP_CANT_DELETE The item cannot be deleted. RP_NO_OPEN_PROJECT There is no open project with which to interface. RP_DELETED_OBJECT_ERROR Indicates a reference to a deleted object. RP_BAD_ENUMERATED_VALUE The enumerated type used does not exist. RP_BAD_PROPERTY_KEY_ERROR Illegal property key syntax (not in <subject>.<metaclass>.<name> format). RP_MISSING_PROPERTY_ERROR The property requested does not exist. RP_PROPERTY_EXISTS_ERROR Attempt to add a property that already exists. RP_CONFIGURATION_NOT_IN_COMPONENT_ ERROR Attempt to set an active configuration a nonexistent one. RP_OPERATION_FAILED_ERROR Applying an operation that cannot be handled by certain objects, although defined by its base interface. An example is addProperty, which is defined for all model elements, but currently generalization and reception cannot apply it. RP_SAVE_FAILED_ERROR The save or save as operation failed, probably because of lack of file writing privileges. RP_CANNOT_WRITE_TO_FILE_ERROR The provided file name cannot be opened for writing. Currently, this applies to the getPicture method of IRPDiagram. Rational Rhapsody 23 COM API Basic Concepts and Examples Installing Custom Helpers Helpers are custom programs that can be attached to Rhapsody to extend it. Helpers can be either external programs (executables) or VBA macros: An external program helper is typically either a VB or a C++ program that uses the COM API and connects to the Rhapsody instance via the GetObject COM service. Note: Currently, GetObject is not supported on Linux systems. A VBA macro helper is a VBA macro defined in a VBA module promoted to be a helper. Helpers are attached to the Tools menu of Rational Rhapsody using the Customize option. Adding Helpers to Rational Rhapsody To add a helper, select Tools > Customize in Rational Rhapsody. The Helpers dialog box is displayed. This dialog box is similar to the Visual Studio external tools menu. You manipulate the menu and create new entries using the toolbar at the top of the dialog box, which includes the following tools: New Delete Move Up Move Down 24 API Reference Manual Rational Rhapsody API Interface Rational Rhapsody includes a interface tool for users who want to programmatically interact with their Rational Rhapsody projects for useful applications such as the preparation of custom reports. This interface is referred to as the Rational Rhapsody application programming interface (Rational Rhapsody API or simply API). Without going into excessive detail, this lesson describes how to use the Visual Basic® API examples that come with Rational Rhapsody to make your own Visual Basic API applications. This chapter describes how to perform the following tasks: Generate a report using RPYReporter. Generate a model tree using RPYExplorer. View the Visual Basic source code for RPYReporter and RPYExplorer. The Rational Rhapsody API functions through a set of methods and attributes that act as a set of Microsoft COM interfaces. Using these methods and attributes, users of languages with COM bindings such as C++, Java, and Visual Basic (VB) can programmatically access a Rational Rhapsody project and all its model elements. Currently, access is restricted to read-only access for model elements and write access for model properties. Rational Rhapsody 25 Rational Rhapsody API Interface Rational Rhapsody API Examples The Rational Rhapsody distribution includes two example applications prepared in Visual Basic that access Rational Rhapsody projects through the Rational Rhapsody API. The following sections describe these examples in detail. Running the RPYReporter Example to run the RPYReporter example: 1. Double-click on the executable file RPYReporter.exe in the Samples\CppSamples\Api\RPYReporter directory under your Rational Rhapsody installation directory. The RPY Project Reporter dialog box is displayed. 2. Click Load Project and browse for the Dishwasher project you completed in the tutorial. 3. Select your Dishwasher project, then click OK. Rational Rhapsody displays a wait screen while the project is being loaded. 4. Click Report on Project. After preparing the report, the application displays the name and location of the text file containing the report so you can access it at any time. 5. Click OK to display the report in Notepad. The report contains detailed information about your model, including data types used, stereotypes, names of events, classes, operations, and so on. 6. Click File > Exit to close Notepad. 7. Click Exit to exit the application. 8. Click Yes when asked if you really want to quit. 26 API Reference Manual Rational Rhapsody API Examples Running the RPYExplorer Example To run the RPYExplorer example, follow these steps: 1. Double-click the executable file RPYExplorer.exe in the Samples\CppSamples\API\RPYExplorer directory under your Rational Rhapsody installation directory. Rational Rhapsody displays the RPY Explorer window, as shown in the following figure. 2. In the window, select File > Load RPY Project. 3. In the resultant dialog box, browse for your Dishwasher project, then click Open. The root of an expandable Dishwasher tree is displayed, with a plus sign in front of it. 4. Click the plus sign to expand the Dishwasher project. At the categories level, expandable segments appear for Packages, Object Diagrams, Sequence Diagrams, and so on. 5. Expand each category to reveal its contents. Rational Rhapsody 27 Rational Rhapsody API Interface 6. To expand individual elements of a category, simply select them. The RPYExplorer example has a browser similar to the Rational Rhapsody browser. Information for each highlighted model element is displayed on the right-hand side of the dialog box. Tools Menu Options The Tools menu options provide the following capabilities: Get, set, add and remove project properties using property dot notation (Subject.MetaClass.Property). Get nested elements recursively for a selected element. For example, if you highlight a component and select Get Nested Elements Recursive from the Tools menu, you receive a small report on all configurations and files in the component. Save a report of an element’s properties and methods to a text file. Report on a model. View diagrams. You can view a diagram only after storing a diagram as an.emf file. Storing and Viewing Diagram Files To store and view diagram files, follow these steps: 1. Highlight an individual diagram in the tree. The properties and methods for the diagram are displayed in the right-hand pane. When you highlight a diagram in the VB browser, VB automatically creates an.emf file of the diagram in your system’s temporary directory (for example, C:\TEMP). VB displays the message “getPicture: see metaFile in your TMP folder” in the righthand panel. 2. To save the file to a different location (in addition to the one in your temporary directory), select Tools> Create EMetaFile from the RPDiagram. You are prompted for the name and location of a file in which to store the diagram. 3. To view a stored diagram file, select Tools > RPDiagram Viewer. 4. In the resultant dialog box, highlight the appropriate .emf file, then click View Selected RPDiagrams. The diagram is displayed. 28 API Reference Manual Running RPYReporter in Visual Basic Running RPYReporter in Visual Basic The intent of this lesson is to describe how the examples were prepared so you can create your own applications. The RPYReporter and RPYExplorer examples were created in the Microsoft Visual Basic 6.0 IDE (Interface Development Environment). Although the intent of this lesson is not to instruct you in Visual Basic, the features are explained as encountered in order to see how the examples were prepared. Note that although this tutorial uses Visual Basic version 6.0, version 5.0 is also compatible. Do the following: 1. Start Microsoft Visual Basic 6.0 IDE using the Windows Start menu or from within Rational Rhapsody by selecting Tools > VBA > Visual Basic Editor. 2. In the New Project dialog box, select Standard EXE and click Open. The Microsoft Visual Basic design window is displayed with an empty, default project. 3. Select File > Open Project and browse for the RPYReporter project file, Project1.vbp, located in the subdirectory Samples\CppSamples\API\RPYReporter of the Rational Rhapsody installation directory. This is the same directory with the executable RPYReporter.exe. 4. Select Project1.vbp, then click OK to load it. When the RPYReporter project is loaded, you should see several open windows in the VB IDE. The Project Explorer window has a browser-like appearance with the window title Project - RPYReporter, as shown in the following figure. If this window is not displayed, select View > Project Explorer on the VB desktop. Rational Rhapsody 29 Rational Rhapsody API Interface 5. In the Project Explorer, double-click on the form RPYReportDumpForm. A window containing this form is displayed, as shown in the following figure. This form is similar to the dialog box in the RPY Report executable. Another window that should be present on the VB IDE is the Properties window, shown in the following figure. : If this window is not open, select View > Properties Window. 30 API Reference Manual Running RPYReporter in Visual Basic VB Forms Forms are the basis for writing programs in Visual Basic. Each form consists of elements such as buttons, text fields, and pull-downs. The form and its elements each have properties that are listed in the Properties window. Currently, the Properties window displays the properties for the entire form. You can show the properties of each form element by clicking on an individual element, then examining the Properties window. Placing Elements on Forms To place elements on a form, follow these steps: 1. Click the appropriate type of form element in the Form toolbox on the left. 2. Double-click a location for the element, or click and drag to establish its outline. Viewing the Element Properties and Code Each element has many properties, such as Appearance, BackColor, Caption, and Label. For example, if you click the Load Project button, you can see its properties consist of a name (cmdLoad), a type (CommandButton), and others such as Caption (“Load Project”), which labels the button. Note that the name cmdLoad begins with the three character prefix “cmd” which, by denotes a command button. Note the different prefixes used for the other elements. Each form element automatically has code associated with it that reacts to different events on the element. The most common of these is the “Click” event. For each element that you can click, there is a Visual Basic subprogram that services that click, whose name is the same as the element’s name with the “_Click”suffix. To view the properties and code associated with an element, follow these steps: 1. Click on each form element and observe the element type and name. These appear in the pull-down box at the top of the Properties window. 2. On the form, double-click the Load Project button to see the subprogram cmdLoad_Click() in the VB desktop. A window appears with all of the code for the RPYReportDumpForm form that has been scrolled so the start of the cmdLoad_Click() subprogram is at the top, as shown in the following figure. Rational Rhapsody 31 Rational Rhapsody API Interface Note that the subprogram cmdLoad_Click() calls the subprogram mnuFileLoad_Click(). You can scroll through the entire contents of this code window to find mnuFileLoad(), or select it directly using the left pull-down at the top of the code window. The mnuFileLoad_Click() calls the subprogram loadRPYProject(), with the argument projectNameText.Text. The RPYReporter example was originally built with menu commands instead of button commands, which is why cmdLoad_Click() calls mnuFileLoad_Click(). Currently, the menu command elements are invisible and therefore unusable. To enable them, follow these steps: 1. Select Tools > Menu File Editor. 2. Check the Visible check box for the rows &File, &Tools, and &Help. 3. Uncheck these boxes for now because you do not want to use menus for the application. Running RPYReporter Step-by-Step To step through the code of the RPYReporter example, follow these steps: 1. Press the F8 key to begin the RPYReporter example. In the RPYReportDumpForm, the first line of the Form_Load() subprogram is highlighted. This subprogram loads the form and sets the variable doc to the special value of Nothing. If you scroll to the very top of the code window, you can see the variable doc declared as an Object. VB enables you to create an object so it can be subsequently used to refer to an actual object. That object will eventually be the Rhapsody API Application object, which you will see later. For now, doc is assigned the value of Nothing, which keeps it from referencing anything. 32 API Reference Manual Running RPYReporter in Visual Basic Note: The keyword Private is used to indicate that a variable or subprogram is available only within the module in which it is declared. Therefore, the variable doc is relevant only to this code module, the one accompanying the form RPYReportDumpForm. 2. Press F8 three times until the Form_Load() subprogram is ended and the RPYReportDumpForm form is displayed. 3. Click Load Project to continue program execution. Selecting Load Project calls the local subprogram cmdLoad_Click(), which is now displayed and highlighted in the code window. 4. Continue pressing F8 to verify that cmdLoad_Click() calls the subprogram mnuFileLoad(), which calls mnuFileLoad_Click(), which calls the subprogram loadRPYProject() with the argument projectNameText.Text. 5. Press F8 to proceed to the first line of the subprogram loadRPYProject(). The projectNameText element is the name of the long text box at the top of the RPYReportDumpForm form. This element has a property called Text, which is the actual text contents of that text box. The program can designate the contents of the text property using the expression projectNameText.Text. Thus, if you typed the project name in the projectNameText field, the subprogram loadRPYProject() would now have it as an argument. As it is, its value is currently an empty, or blank, string. Note: The following steps assume that you have clicked F8 to move to next section of code to be described. 6. The On Error GoTo CancelHandler line enables the Cancel button on the dialog box. If you click Cancel, execution continues at the code line following the line labeled CancelHandler:, located at the bottom of the loadRPYProject() subprogram that exits the subprogram. 7. rpyModelName is a string variable that will hold the name of the project you are loading. Its value is initialized to an empty string. 8. The next few lines involve properties and an operation of the object RPYModelDlg. This element, a common dialog box, does not appear on the form during execution until its operation ShowOpen is executed. The first three RPYModelDlg lines change the properties of the dialog for its initial directory, default file search pattern, and the name of the project (which was passed as an argument). Finally, the ShowOpen operation of the RPYModelDlg object is executed and the Open dialog box is displayed with the appropriate property changes. 9. Browse for your Dishwasher project, then click OK. Rational Rhapsody 33 Rational Rhapsody API Interface The step rpyModelName = RPYModelDlg.FileName is ready for execution. This step sets the string variable rpyModelName to the name of the project you selected in the Open dialog box. 10. Press F8. In the following line, the variable rpyModelName is checked to see if it is empty. If so, the loadRPYProject subprogram exits. Otherwise, it loads the waitForm object, followed by the execution of the waitForm object’s Show operation (waitForm.show), which displays the waitForm form to tell the user the project is loading. Before continuing program execution, you need to learn more about the Rational Rhapsody API. 34 API Reference Manual Running RPYReporter in Visual Basic The Rational Rhapsody API: A Closer Look The Rational Rhapsody API is a set of classes consisting of operations and attributes that enable you to programmatically interact with a Rational Rhapsody project (repository) using a programming environment that supports Microsoft COM (Component Object Model). This allows an application to interface programs using COM, such as Rational Rhapsody. In this way, standard interfaces to obtain system services or provide functionality to other programs can be established. You can make the Rational Rhapsody API classes available for the RPYReporter project file (Project1.vbp) using references, which allow the use of objects from other applications. To see the list of references in this project, follow these steps: 1. Stop execution of the RPYReporter application by selecting Run > End in the VB integrated development environment (IDE). 2. Select Project > References in the VB IDE. VB displays the References dialog box, as shown in the following figure. Access to the Rational Rhapsody API classes is made possible by referencing the RHAPSODY.tlb library file included in the Rational Rhapsody distribution. Without it, the Rational Rhapsody API is not available. Be sure to check this part of your project if this becomes questionable. When you create a new project to access a Rational Rhapsody model, the very first step is to make sure that your project references RHAPSODY.tlb. Rational Rhapsody 35 Rational Rhapsody API Interface The Rational Rhapsody API classes that come from the RHAPSODY.tlb reference, along with their operations and attributes, are visible in the VB design area. In Visual Basic, interface classes are implemented with names that begin with the letter “I.” However, when the interfaces are seen in the VB IDE, they appear without the “I.” For example, the IRPModelElement class appears as RPModelElement. To display the Rational Rhapsody API classes and their methods and properties, follow these steps: 1. Select View > Object Browser. The Object Browser dialog box is displayed, as shown in the following figure. 36 API Reference Manual Running RPYReporter in Visual Basic 2. Select the rhapsody library from the pull-down field. VB displays the Rational Rhapsody API classes, as shown in the following figure. 3. Click on one of the API classes to see its attributes and operations. 4. Click on an attribute or operation of the selected API class to view a small report on it at the bottom of the display area. 5. Click the “X” in the upper, right-hand corner to dismiss the dialog box. Continuing the Step-by-Step Execution of RPYReporter Now that you have seen how the Rational Rhapsody API is made available to the RPYReporter project, you can continue step-by-step execution of the RPYReporter application to see how it is used. Continue executing each step of the program, as follows: 1. If you halted execution earlier, press F8 to begin step-by-step execution again. 2. The next execution step in the loadRPYProject subprogram calls the disableAllButtons subprogram, which sets all the enabled properties of all RPYReportDumpForm buttons to False, rendering the buttons unusable (grayed-out). Press F8 to move through the subprogram. 3. The next step compares Not doc (recall that doc is an object of type Object) against the value Nothing. Because doc was created a few steps ago and was initialized to Nothing, execution steps into the Else part of the If-Then-Else statement that follows it. Rational Rhapsody 37 Rational Rhapsody API Interface 4. Because the module-level variable THE_APPLICATION has been set to the string “rhapsody.Application” (scroll to the top of the window to see the declaration) the line Set doc = CreateObject(THE_APPLICATION) makes doc a reference to the Rhapsody Application object and a stepping stone for upcoming use of the Rhapsody API. Note: Rhapsody is started as an application during the execution of the line CreateObject(THE_APPLICATION). 5. Because doc is now a reference to the Application object, you can use API class operations and attributes through it. Therefore, the line doc.openProject rpyModelName actually calls the openProject subprogram of the Application object referenced by doc, and opens the project file you selected. 6. The next line, Set theProject = doc.activeProject, calls the activeProject method of the Application object referenced by doc and sets the project you loaded as the active project in Rational Rhapsody. 7. The unload waitForm line unloads wait dialog box. 8. The next line, projectNameText.text is set to the name and path of the Dishwasher model (rpy file) you selected. 9. Now that the project is loaded, the program calls EnableAllButtons to re-enable all the buttons on the main form. Press F8 to step through each button. 10. Now that a project has been loaded, the property Enabled of the mnuToolsReport object is set to True. The function of this menu item is equivalent to that of the Report on Project button. 11. Press F8 to step through the exiting of all subprograms that have been entered as part of project loading. These include, in order: a. loadRPYProject() b. mnuFileLoad_Click() c. cmdLoad_Click() The program now waits in stasis for the next event to occur through other button clicks on the RPY Project Reporter window. Code Summary of Loading a Project The following is a code summary of the project-loading process in VB: Private doc As Object Private ProjectName As String Private theProject As RPModelElement ~ ’ Get project name and store as ProjectName ~ 38 API Reference Manual Running RPYReporter in Visual Basic ’ Open the Rhapsody API Application Object Set doc = CreateObject(“rhapsody.Application”) doc.openProject ProjectName Set theProject = doc.activeProject Reporting on a Project Reporting requires the execution of several important API operations. The following instructions assume that you have performed the previous project loading example and are continuing uninterrupted. However, if you have stopped the program, press F8 to enter the program in stepby-step mode and repeat all steps from the previous section. Otherwise, continue stepping through the program, as follows: 1. In the RPYReportDumpForm form, click Report on Project. 2. The subprogram cmdReport_Click() is called, which calls the subprogram mnuToolsReport_Click. Within the mnuToolsReport_Click subprogram, the waitForm form is loaded and displayed, and the buttons of the RPYReportDumpForm form are disabled. 3. Because the report will be written to a file, the function getDefaultLogFileName generates a name for the file using the project name string rpyModelName as a base. 4. After the name of the report output file is generated in the variable logFileName, it is opened by a call to the VB subprogram Open, which opens it for output and assigns it the reference number of FILE_NUMBER (set to 1 at the top of the code file) for future calls on this file. 5. Finally, the subprogram Report_on_Model is called with the arguments theProject and FILE_NUMBER. The variable theProject has been typed to be an API object type RPModelElement. 6. In the Report_on_Model subprogram, the calling arguments are passed by value using the keyword ByVal, which makes a local copy of them. Note that in the diagram for the Rational Rhapsody API hierarchy (see The Rational that all the remaining classes, except for the Application class, inherit from RPModelElement. By using an object of type RPModelElement, you can access objects of subclasses corresponding to hierarchical project elements in a generic fashion. Many of the properties of an RPModelElement have been developed to make its identification and consequent action possible. Rhapsody API: A Closer Look) Before proceeding to other steps in Report_on_Model, note the typing of local variables col as RPCollection, and e as RPModelElement. An RPCollection is a collection of RPModelElement objects used for holding and accessing the result of a “get” that obtains multiple or numerous objects satisfying the requirements of the get. Rational Rhapsody 39 Rational Rhapsody API Interface 7. After setting the variable tb to an empty string, the second line performs the following get: Set col = aProject.getNestedElementsRecursive() The getNestedElementsRecursive() method, a member of object class RPModelElements, is called for the current project, aProject, and returns a collection of RPModelElements that is accessed through the variable col. The method getNestedElementsRecursive() retrieves all owned elements of the calling object and places the results in a collection. Because the calling object in this case is a project, getNestedElementsRecursive() returns all packages, classes, diagrams, and so on that belong to the project. The remaining code opens the report file and writes a header to it, followed by a large for loop over each element in col (for e in col). Within the loop, each element is analyzed for its type and is reported accordingly. As previously mentioned, a variety of properties of the element identify it (the element’s metaClass (e.metaClass)), making this computed action possible. Code Summary of Reporting a Project The following is a code summary of the project-reporting process in VB: Dim col As RPCollection Dim e As RPModelElement Private logFileName As String Private Const FILE_NUMBER As Integer = 1 ~ ‘Open file logFileName: FILE_NUMBER’ ~ ‘Set col = theProject.getNestedElementsRecursive() ~ ‘ Write header to file=FILE_NUMBER ~ for e In col ~ ‘ Identify model element e based on e.xxxx properties ~ ‘ Write report of e based on e.xxxx properties ~ Next ‘Close file=FILE_NUMBER 40 API Reference Manual Starting and Saving Your Own VB IDE Work Starting and Saving Your Own VB IDE Work If you want to use the API, spend some time studying the RPYReporter example and the more complex RPYExplorer example. In conjunction with the examples, you can use the online help, which contains the methods and properties of each API class along with descriptions of required arguments. If you want to use these Rational Rhapsody API examples as a starting point for your own applications, the following sections describe how to perform some common tasks. Saving the Examples as New Projects If you want to create your own applications by modifying one of the supplied examples, a good starting point is to save the appropriate example as a new project in its own directory. Note that VB projects consist of a project file (.vbp), a form file for each form (.frm), and module files (.bas). Use the File > Save As options for projects, forms, and modules, and save to a new directory. Making Your Own New Projects You might decide to start from scratch and build your own project. When you open Visual Basic, VB displays a default new project environment, complete with a blank form. Alternatively, you can create a new project environment by selecting File > New Project > Standard EXE in the VB IDE. Once you have started a new project or begun working with an existing one, you can add new forms or modules to a project by right-clicking on the forms folder in the VB Explorer window, then select either Add > Form or Add > Module. Compiling and Making Your Executables To create your own applications, you must compile and make your projects into executable files. In Visual Basic 6.0, compiling is seen as part of making so when you make, you compile. Compiling appears as a separate step only when you test run your project in the Visual Basic IDE by selecting Run > Start With Full Compile. To make your application’s executable, select File > Make [Project].exe. Rational Rhapsody 41 Rational Rhapsody API Interface Creating Applications with Microsoft Word VB IDE In addition to the Visual Basic IDE, you can use the Visual Basic editor of Microsoft Word to create applications that use the Rational Rhapsody API. Follow these steps: 1. Start Microsoft Word. 2. Select File > New to start a new document. 3. In the New dialog box, select the template labeled Blank Document, then click OK. 4. Select File > Save As and save the new, blank document as Word_API.doc. 5. Start a new Word macro by selecting Tools > Macro > Record New Macro. 6. In the Record Macro dialog box, follow these steps: a. For the Name field, type “CountPackages.” b. For the Store macro in field, select Word_API.doc from the pull-down list. c. Click the Keyboard icon. 7. In the Customize Keyboard dialog box, follow these steps: a. If it is not there already, move the cursor to the Press new shortcut key field. While holding down the Alt key, type the characters “CP”. When finished, you should see the following entry: Alt+C,P b. In the Save changes in field, select Word_API.doc. c. Click Assign and Close, in that order. A small dialog box (shown below) appears to stop and pause the recording of the macro that you are currently recording. 8. Click the small square to stop recording the macro. You now have a macro named CountPackages saved in the file Word_API.doc that you can trigger at any time within this document with the keyboard sequence Alt+C,P. Currently, the macro has no content. 42 API Reference Manual Creating Applications with Microsoft Word VB IDE Specifying the Macro Content To alter the content of the CountPackages macro, follow these steps: 1. With the file Word_API.doc still loaded in Word, select Tools > Macro > Macros. 2. In the Macros dialog box, follow these steps: a. In the Macros in field, select Word_API.doc. b. In the list of available macros, select CountPackages. c. Click Edit. The Microsoft Word Visual Basic IDE opens, so you can edit the contents of the macro CountPackages. 3. Select Tools > References. 4. In the Reference - Project dialog box, scroll down until you find the reference rhapsody. 5. Mark the rhapsody check box, then click OK. Its location is reported in a small area at the bottom of the dialog box, referencing the RHAPSODY.tlb file located in the Rhapsody installation directory. 6. Insert the following code between the lines Sub CountPackages() and End Sub, but after the comments that appear identifying the macro, date, and author. Rational Rhapsody 43 Rational Rhapsody API Interface Make sure the projName path is correct for your Rational Rhapsody installation. ' ' Start Rhapsody ' Dim rhapApp As Object Set rhapApp = CreateObject("rhapsody.Application") ' ' Set Project Name String ' Dim projName As String projName = "C:\Rhapsody40\Samples\CppSamples\Radio\Radio.rpy" ' ' Open Project ' Dim theProject As RPModelElement rhapApp.openProject projName Set theProject = rhapApp.activeProject ' ' Get Packages ' Dim packages As rhapsody.RPCollection Set packages = theProject.packages ' ' Report Packages to Current Word Doc (ThisDocument) ' Dim package As rhapsody.RPPackage For Each package In packages ThisDocument.Range.InsertAfter package.name & vbCrLf Next ' ' Close Application When Finished ' If Not rhapApp Is Nothing Then rhapApp.Quit 7. Run the macro by selecting Run > Run Sub/UserForm. If you encounter an error, click Debug on the error dialog window to see the offending line of code highlighted. If the macro works, you will see the packages of the Rhapsody project radio displayed in the document screen of Word. There are three packages: guiPkg hardwarePkg radioPkg Once you are sure that the macro works, you can execute it in the Word document area by simply typing the macro key sequence (Alt+C,P). 44 API Reference Manual Creating Applications with Microsoft Word VB IDE Comments on the Code The following sequence loads the project: Dim rhapApp As Object Set rhapApp = CreateObject("rhapsody.Application") Dim projName As String projName = "C:\Rhapsody\some_project.rpy" Dim theProject As RPModelElement rhapApp.openProject projName Set theProject = rhapApp.activeProject An alternative sequence is as follows: Dim rhapApp As rhapsody.Application Set rhapApp = CreateObject("rhapsody.Application") Dim projName As String projName = "C:\Rhapsody\some_project.rpy" Dim theProject As RPProject rhapApp.openProject projName Set theProject = rhapApp.activeProject Note the use of RPCollection in the following sequence: Dim packages As rhapsody.RPCollection Set packages = theProject.packages Unlike the RPYReporter example, a “get” method was not used to obtain the elements (in this case, packages). You can use this method for obtaining model elements on one level. Finally, note the following for loop over the packages: For Each package In packages ThisDocument.Range.InsertAfter package.name & vbCrLf Next Printing to the Word document is accomplished through the second line of code. The object called ThisDocument is the highest level object of Word, representing the document itself. You can see it in the explorer window in the upper, left-hand corner of the VB desktop. Highlight it to examine some its properties. Rational Rhapsody 45 Rational Rhapsody API Interface Modifying the Example to Print Classes Suppose that instead of printing the names of all the classes in the radio model, you want to print the names of all the classes for a particular package, such as radioPkg. To modify the previous code and save it to another macro, follow these steps: 1. Start a new Word macro by selecting Tools > Macro > Record New Macro. 2. In the Record Macro dialog box, follow these steps: a. For the Name field, type “CountClassesForPackage.” b. For the Store macro in field, select Word_API.doc from the pull-down list. c. Click the Keyboard icon. 3. In the Customize Keyboard dialog box, follow these steps: a. If it is not there already, move the cursor to the Press new shortcut key field. While holding down the Alt key, type the “CC” characters. When finished, you should see the following entry: Alt+C,C b. In the Save changes in field, select Word_API.doc. c. Click Assign and Close, in that order. A small dialog box appears to stop and pause the recording of the current macro. 4. Click the small square to stop recording the macro. 5. With the file Word_API.doc still loaded in Word, select Tools > Macro > Macros. 6. In the Macros dialog box, follow these steps: a. In the Macros in field, select Word_API.doc. b. In the list of available macros, select CountClassesForPackage. c. Click Edit. The focus switches to the VB editor. Note the presence of the new, empty CountClassesForPackage subprogram. If you scroll up, you can see the code you created for the CountPackages macro. 7. Cut and paste the code between the lines Sub CountPackages() and End Sub in the CountPackages macro, but after the comments that appear identifying the macro, date, and author. 46 API Reference Manual Creating Applications with Microsoft Word VB IDE 8. Replace this section: ' ' Report Packages to Current Word Doc (ThisDocument) ' Dim package As rhapsody.RPPackage For Each package In packages ThisDocument.Range.InsertAfter package.name & vbCrLf Next ' ' Close Application When Finished ' If Not rhapApp Is Nothing Then rhapApp.Quit With this: ' ' Report Classes of Package "radioPkg" to Current ' Document ' Dim package As rhapsody.RPPackage For Each package In packages If (package.name = "radioPkg") Then Dim classes As rhapsody.RPCollection Dim class As rhapsody.RPClass Set classes = package.classes For Each class In classes ThisDocument.Range.InsertAfter class.name & vbCrLf Next End If Next ' ' Close Application When Finished ' If Not rhapApp Is Nothing Then rhapApp.Quit 9. Run the macro by selecting Run > Run Sub/UserForm. If you encounter an error, click Debug on the error dialog window to see the offending line of code highlighted. If the macro works, you will see the classes of the radioPkg package displayed in the document screen of Word, as follows: Frequency IDisplay ITuner Radio Waveband Rational Rhapsody 47 Rational Rhapsody API Interface 48 API Reference Manual Rhapsody API Interfaces This section contains reference information describing the classes and methods that comprise the abstract factory interface. For ease of use, the interfaces are presented in alphabetical order. Note Only the public and protected methods are documented. The reference material for each of the Rhapsody API interfaces is shown in VB-compliant form (except for the interface class names). This means the following: Each COM interface has attributes and methods. In Visual Basic, the attributes are identified as properties. The actual identity of the interface classes used in the Rhapsody API varies with the language platform of the client application attempting to interface with the Rhapsody repository. In COM, all interface names start with “I”, such as IRPModelElement. Visual C++ connects directly with the COM tables, which are C++ (or C++-related), and sees the “I”. However, Visual Basic (VB) tries to be user-friendly by avoiding the use of the “I” so, for example, the IRPModelElement interface is RPModelElement in VB. If you open the object browser in the Microsoft Visual Basic IDE, you can see which classes are there and what they are called. Nevertheless, in the reference material, interface objects are identified with the “IRP” prefix and not the “RP” prefix seen in VB. Void returns are not shown as void—they are simply not shown. Pointers are not displayed. In C++, interfaces and collections of interfaces are handled with pointers. VB has no pointers. Each method has an implied argument: an instance of its interface referred to as “this.” Thus, the reference on a method of IRPClass will refer to something done to “this Class.” String returns and arguments are shown as String. For C++, this type is BSTR. There is only one collection object type: IRPCollection. In the reference material, however, collections are displayed as “xxxxs” where xxxx refers to the object type of the collection and the “s” indicates it is a collection. Rational Rhapsody 49 Rhapsody API Interfaces Access to VB Properties The COM API interface consists of data and methods. In Visual Basic, the data is identified as properties. These properties are implemented with invisible operations that enable some properties to be read/write (RW). In other words, the property can be used to set a value in a Rhapsody 6.1 model or retrieve it. Thus, if A is a read/write property, you can set the model value it points to through an "A=…" statement or retrieve it through a "…=A" statement. Note Not all properties are implemented with write ability. These are identified as read-only (RO). API Conventions The Rhapsody Repository API is a set of COM interfaces specified in terms of COM properties and methods, using COM types. The API listings have two syntaxes to describe the various attributes and methods provided by each interface: The VB syntax that follows indicates that the function takes a string argument for the property key and then returns a string: getProperty (propertyKey As String) As String The C/C++ prototype for the same function is: HRESULT getProperty (String propertyKey, String*** retVal); All interfaces are prefixed with “IRP” (“I” for interface, “RP” for Rhapsody 6.1). For example, the interface for a package is IRPPackage. Calls returning multiple objects return the equivalent of a VBA “collection.” To enhance readability, collectionsare treated as “typed,” for example, “Collection of IRPClasses.” However, in the API, all collections are implemented as “Collection of IRPModelElements.” Enumerated types are treated as strings. For example, the getVisibility method of an attribute returns the string “Public,” “Protected,” or “Private.” 50 API Reference Manual Rhapsody Interfaces Rhapsody Interfaces The Rhapsody API interfaces are as follows: IRPAction Interface IRPActor Interface IRPAnnotation Interface IRPApplication Interface IRPArgument Interface IRPASCIIFile Interface IRPAssociationClass Interface IRPAssociationRole Interface IRPAttribute Interface IRPBlock Interface IRPClass Interface IRPClassifier Interface IRPClassifierRole Interface IRPCollaboration Interface IRPCollaborationDiagram Interface IRPCollection Interface IRPComment Interface IRPComponent Interface IRPComponentDiagram Interface IRPComponentInstance Interface IRPConfiguration Interface IRPConnector Interface IRPConstraint Interface IRPControlledFile IRPDependency Interface IRPDeploymentDiagram Interface IRPDiagram Interface IRPEnumerationLiteral Interface IRPEvent Interface Rational Rhapsody 51 Rhapsody API Interfaces IRPEventReception Interface IRPExecutionOccurrence Interface IRPExternalCodeGenerator Interface IRPExternalCodeGeneratorInvoker Interface IRPFile Interface IRPFlow Interface IRPFlowchart Interface IRPFlowItem Interface IRPGeneralization Interface IRPGraphEdge Interface IRPGraphElement Interface IRPGraphicalProperty Interface IRPGraphNode Interface IRPGuard Interface IRPHyperLink Interface IRPImageMap IRPInstance Interface IRPInteractionOccurrence Interface IRPInterfaceItem Interface IRPLink Interface IRPMessage Interface IRPMessagePoint Interface IRPModelElement Interface IRPModule Interface IRPNode Interface IRPObjectModelDiagram Interface IRPOperation Interface IRPPackage Interface IRPPort Interface IRPProfile Interface IRPProject Interface IRPRelation Interface 52 API Reference Manual Rhapsody Interfaces IRPRequirement Interface IRPSequenceDiagram Interface IRPState Interface IRPStatechart Interface IRPStateVertex Interface IRPStereotype Interface IRPStructureDiagram Interface IRPSwimlane Interface IRPTag Interface IRPTemplateInstantiation Interface IRPTemplateInstantiationParameter Interface IRPTemplateParameter Interface IRPTransition Interface IRPTrigger Interface IRPType Interface IRPUnit Interface IRPUseCase Interface IRPUseCaseDiagram Interface IRPVariable Interface IRPAction Interface The IRPAction interface represents the action of a transition in a statechart. It inherits from IRPModelElement. VB Properties Name body Rational Rhapsody Type String Access RW Description The entered body of this action 53 Rhapsody API Interfaces IRPActor Interface The IRPActor interface represents Rhapsody actors. It inherits from IRPClassifier. IRPAnnotation Interface The IRPAnnotation interface represents Rhapsody annotations—notes, comments, constraints, and requirements. It inherits from IRPModelElement. VB Properties Name anchoredByMe Type RPCollection Access RO Description The list of model elements that are anchored to the annotation Deprecated body body String RW The body text of the remark specification String RW The body text for the annotation Method Summary addAnchor 54 Adds an anchor from the annotation to the specified model element. API Reference Manual Rhapsody Interfaces addAnchor Read method Description The addAnchor method adds an anchor from the annotation to the specified model element. Visual Basic Syntax addAnchor(target As RPModelElement) Arguments target The model element to which to anchor the annotation C/C++ Prototype HRESULT addAnchor (IRPModelElement* target) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 55 Rhapsody API Interfaces IRPApplication Interface The application is the top-level object of the Rhapsody object model, which represents the Rhapsody application shell. It conceptually provides the functionality available through the Rhapsody menu bars. Initially, the application object exposes the minimal set of functionality required to open a project. When you use VB or VC++ to interface to the COM API, the IRPApplication object needs to be created before any other API interface objects are used. However, if you use the Rhapsody VBA interface, you are automatically connected to the IRPApplication object. 56 API Reference Manual Rhapsody Interfaces VB Properties Name Type Access Description BuildNo CString RO The current build number Language String RW The current language setting OMROOT String RO The value for OMROOT SerialNo CString RO The serial number ToolSet CString RO The current tool setting (demo, Designer, and so on) Method Summary activeProject Returns a pointer to the active (open) project addToModel Adds a Rhapsody unit located in the specified file to the current model with or without descendant elements addToModelByReference Adds the Rhapsody unit you specify to your model as a reference. addToModelFromURL Adds a Rhapsody unit located at the specified URL to the current model arcCheckOut Checks out files from the CM archive into the model build Builds the application checkIn Checks in the specified unit within the model into the CM archive you have already connected to (using connectToArchive) checkModel Checks the current model checkOut Refreshes a unit in the model by checking it out from the CM archive connectToArchive Connects the Rhapsody 6.1 project to the specified CM archive createNewProject Creates a new project named <projectName> in <projectLocation> enterAnimationCommand Specifies the command to begin animation errorMessage Returns the most recent error message forceRoundtrip Forces a roundtrip of the code back into the Rhapsody 6.1 model, and vice versa generate Generates code for the active configuration of the active component getDiagramOfSelectedElement Retrieves the diagram of the current element Rational Rhapsody 57 Rhapsody API Interfaces 58 getErrorMessage Returns the most recent error message getListOfFactoryProperties Retrieves the list of properties in the <lang>_factory.prp file getListOfSelectedElements Returns the collection of model elements getListOfSiteProperties Retrieves the list of properties in the <lang>_site.prp file getSelectedElement Retrieves the current model element getTheExternalCodeGeneratorInvoker Retrieves the invoker for the external code generator highlightByHandle Highlights an element, given its handle highLightElement Highlights the specified element importClasses Imports classes according to the reverse engineering setting stored in the current configuration make Builds the current component following the current configuration openProject Opens a Rhapsody 6.1 project openProjectFromURL Opens the Rhapsody 6.1 product at the specified URL openProjectWithLastSession Opens the project using the settings from the previous Rhapsody 6.1 session openProjectWithoutSubUnits Opens the Rhapsody 6.1 project without subunits quit Closes the active Rhapsody 6.1 project rebuild Rebuilds the application refreshAllViews Refreshes all the views regenerate Regenerates the active configuration of the active component report Generates a report in ASCII or RTF into the specified file roundtrip Roundtrips code changes back into the open model setComponent Sets the current component for the open project setConfiguration Sets the current configuration for the open project setLog Creates a log file that records all the information that is normally displayed in the Rhapsody 6.1 output window version Returns the version of Rhapsody 6.1 that corresponds to the current COM API version API Reference Manual Rhapsody Interfaces activeProject Read method Description The activeProject method returns a pointer to the active (open) project. Visual Basic Syntax activeProject() As RPProject Return Value A pointer to the current open project (an RPProject) C/C++ Prototype HRESULT activeProject (IRPProject** pVal) Return Value HRESULT (0 for success, or a signed integer error code) addToModel Write method Description The addToModel method adds a Rhapsody unit located in the specified file to the current model with or without descendant elements. Note: When adding a file with descendants, all the file subunits must be in the unit directory of the project before you issue the command. Visual Basic Syntax addToModel (filename As String, withDescendant As Long) Arguments filename The full file name of the file that contains the unit to be added withDescendants Specifies whether to bring in descendants of the unit to be added to the model Rational Rhapsody 59 Rhapsody API Interfaces C/C++ Prototype HRESULT addToModel (BSTR filename, long withDescendant) Return Value HRESULT (0 for success, or a signed integer error code) 60 API Reference Manual Rhapsody Interfaces addToModelByReference The method addToModelByReference adds the Rhapsody unit you specify to your model as a reference. Syntax addToModelByReference (filename As String) Arguments filename The name of the file that contains the unit to be added. The full path to the file must be specified. Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addJavadocProfile() Dim app As Object Set app = GetObject(, "Rhapsody.Application") On Error GoTo aa app.addToModelByReference ("C:\temp\JavaDocProfile.sbs") Exit Sub aa: MsgBox errorMessage End Sub Rational Rhapsody 61 Rhapsody API Interfaces addToModelFromURL Write method Description The addToModelFromURL method adds a Rhapsody unit located at the specified URL to the current model. This method is used to support the Webify Toolkit. Visual Basic Syntax addToModelFromURL (url As String) Arguments url The URL that contains the unit to be added C/C++ Prototype HRESULT addToModelFromURL (BSTR url) Return Value HRESULT (0 for success, or a signed integer error code) arcCheckOut Write method Description The arcCheckOut method checks out files from the configuration management (CM) archive into the model. Note: The difference between arcCheckOut and checkOut is that arcCheckOut refers to files in the archive, whereas checkOut refers to units in the model. To add new units to the model, use arcCheckOut. The method checkOut is intended to refresh elements already existing in the model. Visual Basic Syntax arcCheckOut (filename As String, label As String, isLocked As Long, isRecursive As Long) Arguments filename 62 API Reference Manual Rhapsody Interfaces Specifies the name of the file. label Specifies the revision or label to be checked out. If this is set to NULL, the last revision on the main trunk (the default) will be checked out. isLocked Specifies whether the file is locked. The possible values are as follows: 1--Designates that a writable file be checked out and the archive locked from other checkouts of the file. 0--The file is checked out as read-only and the archive not locked to other checkouts. isRecursive (1 or 0) If this is set to 1, the file and all the other elements that it contains are checked out. C/C++ Prototype HRESULT arcCheckOut (BSTR filename, BSTR label, long isLocked, long isRecursive) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 63 Rhapsody API Interfaces build Note Currently, this method has not been implemented. Read method Description The build method builds the application. Visual Basic Syntax build() C/C++ Prototype HRESULT build() Return Value HRESULT (0 for success, or a signed integer error code) checkIn Read method Description The checkIn method checks in the specified unit within the model into the configuration management (CM) archive you have already connected to (using connectToArchive). Visual Basic Syntax checkIn (unitName As String, label As String, isLocked As Long, isRecursive As Long, description As String) 64 API Reference Manual Rhapsody Interfaces Arguments unitName The name of the unit. label The label to apply when you check in the file to the archive. If it is not needed, set this argument to NULL. isLocked (1 or 0) Specifies whether to lock the archive after checkin. isRecursive If set to 1, check in the unit and all the elements contained in it. description The description to add to the unit when you check it in to the archive. C/C++ Prototype HRESULT checkIn (BSTR unitName, BSTR label, long isLocked, long isRecursive, BSTR description) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 65 Rhapsody API Interfaces checkModel Read method Description The checkModel method checks the current model. This is equivalent to the Rhapsody 6.1 command Tools > Check Model for the current configuration. Visual Basic Syntax checkModel() C/C++ Prototype HRESULT checkModel() Return Value HRESULT (0 for success, or a signed integer error code) 66 API Reference Manual Rhapsody Interfaces checkOut Write method Description The checkOut method refreshes a unit in the model by checking it out from the CM archive. Visual Basic Syntax checkOut (unitName As String, label As String, isLocked As Long, isRecursive As Long) Arguments unitName The name of the unit. label The revision or label to be checked out. If you set this to NULL, the last revision on the main trunk (the default) will be checked out. isLocked Specifies whether to lock the archive after checkout. The possible values are as follows: 1--Designates that a writable unit is to be checked out and the archive locked from other checkouts of the unit. 0--The unit is checked out as read-only and the archive not locked to other checkouts. isRecursive If this is set to 1, check out the unit and all the elements contained in it. C/C++ Prototype HRESULT checkOut (BSTR unitName, BSTR label, long isLocked, long isRecursive) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 67 Rhapsody API Interfaces connectToArchive Read method Description The connectToArchive method connects the Rhapsody 6.1 project to the specified CM archive. This operation is necessary only for the following cases: There is no current association in the project. The association needs to be modified. Visual Basic Syntax connectToArchive (archivePath As String) Arguments archivePath The path to location of archive C/C++ Prototype HRESULT connectToArchive (BSTR archivePath) Return Value HRESULT (0 for success, or a signed integer error code) 68 API Reference Manual Rhapsody Interfaces createNewProject Write method Description The createNewProject method creates a new project named <projectName> in <projectLocation>. You should call this operation before a project has been opened, or after a project has been saved. Note that helper applications might not close the current document. This means that the createNewProject method should not be used in a VBA macro that you specify as a helper. Visual Basic Syntax createNewProject (projectLocation As String, projectName As String) Arguments projectLocation The location of the project projectName The name of the project C/C++ Prototype HRESULT createNewProject (BSTR projectLocation, BSTR projectName) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 69 Rhapsody API Interfaces deferredAddToModel Write method Description The deferredAddToModel method TBS. Visual Basic Syntax deferredAddToModel(filename As String, withDescendants As Long, orijPrjId As String, eraseDir As Long) Arguments filename The full name of the file that contains the unit to be added withDescendants Specifies whether to bring in descendants of the unit to be added to the model orijPrjId The project ID eraseDir Specifies whether to delete the directory after the unit has been added to the model C/C++ Prototype HRESULT deferredAddToModel (BSTR filename, long withDescendants, BSTR orijPrjId, long eraseDir); Return Value HRESULT (0 for success, or a signed integer error code) 70 API Reference Manual Rhapsody Interfaces enterAnimationCommand Read method Description The enterAnimationCommand method specifies the command to begin animation. Visual Basic Syntax enterAnimationCommand (command As String) Arguments command The animation command C/C++ Prototype HRESULT enterAnimationCommand (BSTR command) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 71 Rhapsody API Interfaces errorMessage Read method Description The errorMessage method returns the most recent error message. Visual Basic Syntax errorMessage() As String Return Value A pointer to the most recent error message (a string) C/C++ Prototype HRESULT errorMessage (BSTR* __MIDL_0016) Arguments BSTR* A pointer to most recent error message Return Value HRESULT (0 for success, or a signed integer error code) 72 API Reference Manual Rhapsody Interfaces forceRoundtrip Read method Description The forceRoundtrip method forces a roundtrip of the code back into the Rhapsody 6.1 model, and vice versa. Visual Basic Syntax forceRoundtrip() C/C++ Prototype HRESULT forceRoundtrip() Return Value HRESULT (0 for success, or a signed integer error code) generate Read method Description The generate method generates code for the active configuration of the active component. Visual Basic Syntax generate() C/C++ Prototype HRESULT generate() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 73 Rhapsody API Interfaces getDiagramOfSelectedElement Read method Description The getDiagramOfSelectedElement method retrieves the diagram of the current element. Visual Basic Syntax getDiagramOfSelectedElement() As RPDiagram Return Value The RPDiagram C/C++ Prototype HRESULT getDiagramOfSelectedElement (IRPDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 74 API Reference Manual Rhapsody Interfaces getErrorMessage Read method Description The getErrorMessage method returns the most recent error message. Visual Basic Syntax getErrorMessage(__MIDL_0014 As String) As String Return Value A pointer to the most recent error message (a string) C/C++ Prototype HRESULT getErrorMessage (BSTR* _MIDL_0014) Arguments BSTR* A pointer to most recent error message Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 75 Rhapsody API Interfaces getListOfFactoryProperties Note Currently, this method has not been implemented. Read method Description The getListOfFactoryProperties method returns the list of properties in the <lang>_factory.prp file. Visual Basic Syntax getListOfFactoryProperties() As RPCollection Return Value The list of properties defined in the <lang>_factory.prp file C/C++ Prototype HRESULT getListOfFactoryProperties (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 76 API Reference Manual Rhapsody Interfaces getListOfSelectedElements Read method Description The getListOfSelectedElements method returns a collection of model elements. In Version 4.1, this method was modified as follows: If the instance is selected in the context of an OMD, the method returns an IRPInstance instead of IRPClass or IRPActor. See “IRPInstance Interface” for more information on this interface. If a link is selected in the context of an OMD, the method returns an IRPLink instead of IRPRelation. See “IRPLink Interface” for more information on this interface. If an instance is selected in the context of a sequence diagram, the method returns an IRPClassifierRole instead of IRPClass. See “IRPClassifierRole Interface” for more information on this interface. Visual Basic Syntax getListOfSelectedElements () As RPCollection Return Value The collection of elements C/C++ Prototype HRESULT getListOfSelectedElements (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 77 Rhapsody API Interfaces getListOfSiteProperties Note Currently, this method has not been implemented. Read method Description The getListOfSiteProperties method returns the list of properties in the <lang>_site.prp file. Visual Basic Syntax getListOfSiteProperties() As RPCollection Return Value The list of properties defined in the <lang>_site.prp file C/C++ Prototype HRESULT getListOfSiteProperties (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 78 API Reference Manual Rhapsody Interfaces getSelectedElement Read method Description The getSelectedElement method retrieves the current model element. In Version 4.1, this method was modified as follows: If the instance is selected in the context of an OMD, the method returns an IRPInstance instead of IRPClass or IRPActor. See “IRPInstance Interface” for more information on this interface. If a link is selected in the context of an OMD, the method returns an IRPLink instead of IRPRelation. See “IRPLink Interface” for more information on this interface. If an instance is selected in the context of a sequence diagram, the method returns an IRPClassifierRole instead of IRPClass. See “IRPClassifierRole Interface” for more information on this interface. Visual Basic Syntax getSelectedElement() As RPModelElement Return Value The current model element C/C++ Prototype HRESULT getSelectedElement (IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) VBA Example The following example assumes that a link is selected. Dim Dim Dim Dim Dim Dim Dim m As RPModelElement link as RPLink fromCls as RPClass toCls as RPClass from as RPInstance to as RPInstance rel as RPRelation Set m = getSelectedElement If m.metaClass = "Link" then Rational Rhapsody 79 Rhapsody API Interfaces link = m from = link.from to = link.to fromCls = from.otherClass toCls = to.otherClass rel = link.instantiates 'Variable content: 'link points to the selected link. 'from points to the "source" instance. 'to points to the "target" instance. 'fromCls points to the class of the "source" instance. 'toCls points to the class of the "target" instance. 'rel points to the relation instantiated by the link. MsgBox m.name & " is a link from instance " & from.name &" of class " + clsFrom.name & " to instance " & to.name & " of class " + toCls.name & " which instantiates the " & rel.name & " relation." End If 80 API Reference Manual Rhapsody Interfaces getTheExternalCodeGeneratorInvoker Read method Description The getTheExternalCodeGeneratorInvoker method returns the invoker for the external code generator. Visual Basic Syntax getTheExternalCodeGeneratorInvoker() As RPExternalCodeGeneratorInvoker Return Value The RPExternalCodeGeneratorInvoker singleton. The external code generator queries the application for this interface. C/C++ Prototype HRESULT getTheExternalCodeGeneratorInvoker ( IRPExternalCodeGeneratorInvoker** pVal) Return Value HRESULT (0 for success, or a signed integer error code) highlightByHandle Read method Description The highlightByHandle method highlights the specified model element, given its handle. The rules for developing the handle for each element type are as follows: 1. The metaclass in the beginning is the value of the metaClass property. 2. The GUID at the end of the name is the value of the GUID property. 3. The structure of the name is as follows: <Package name>::<Class name>.<Element name> In this syntax: <Package name> is the full path of the package of the element (for example, P1::P2). Rational Rhapsody 81 Rhapsody API Interfaces – <Class full name> is the full path of the class of the element (for example, C1::C2). – <Element name> is the name of the element. See the section “Example” for a code example that uses this method. Visual Basic Syntax highlightByHandle (strHandle As String) Arguments strHandle The handle to the element to highlight. Call the method with this argument using the following string: "(<metaclass>)<FullPathName>(<GUID>)" C/C++ Prototype HRESULT highlightByHandle (BSTR strHandle) Return Value HRESULT (0 for success, or a signed integer error code) Example Dim proj As RPProject Dim m As RPModelElement Dim str As String Dim app As Object set app = GetObject(, "Rhapsody.Application") On Error GoTo aa Set proj = getProject Set m = proj.findNestedElementRecursive("state_0", "State") str = "(" & m.metaClass & ")" & m.getFullPathName & "(" & m.GUID & ")" app.highlightByHandle (str) Exit Sub aa: MsgBox errorMessage 82 API Reference Manual Rhapsody Interfaces highLightElement Read method Description Highlights the specified element. Visual Basic Syntax highLightElement (val As RPModelElement) Arguments val The element to highlight C/C++ Prototype HRESULT highLightElement (IRPModelElement* val) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 83 Rhapsody API Interfaces importClasses Write method Description The importClasses method imports classes according to the reverse engineering setting stored in the current configuration. This is equivalent to selecting the Rhapsody 6.1 command Tools > Reverse Engineering. Visual Basic Syntax importClasses() C/C++ Prototype HRESULT importClasses () Return Value HRESULT (0 for success, or a signed integer error code) make Read method Description The make method builds the current component following the current configuration. Visual Basic Syntax make() C/C++ Prototype HRESULT make() Return Value HRESULT (0 for success, or a signed integer error code) 84 API Reference Manual Rhapsody Interfaces openProject Read method Description The openProject method opens a Rhapsody 6.1 project. Note that helper applications might not close the current document. This means that you should not use the openProject method in a VBA macro that you specify as a helper: Visual Basic Syntax openProject (filename As String) As RPProject Arguments filename The name of the file that contains the project Return Value A pointer to the opened project (an RPProject) C/C++ Prototype HRESULT openProject (BSTR filename, IRPProject** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 85 Rhapsody API Interfaces openProjectFromURL Write method Description The openProjectFromURL method opens the Rhapsody 6.1 product at the specified URL. This method is used to support the Webify Toolkit. Visual Basic Syntax openProjectFromURL (url As String) Arguments url The URL of the project to open C/C++ Prototype HRESULT openProjectFromURL (BSTR url) Return Value HRESULT (0 for success, or a signed integer error code) 86 API Reference Manual Rhapsody Interfaces openProjectWithLastSession Write method Description The openProjectWithLastSession method opens the project using the settings from the previous Rhapsody 6.1 session. Visual Basic Syntax openProjectWithLastSession (filename As String) As RPProject Arguments filename The name of the project to open Return Value The RPProject that was opened C/C++ Prototype HRESULT openProjectWithLastSession (BSTR filename, IRPProject** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 87 Rhapsody API Interfaces openProjectWithoutSubUnits Write method Description The openProjectWithoutSubUnits method opens the Rhapsody 6.1 project without subunits. Visual Basic Syntax openProjectWithoutSubUnits (filename As String) As RPProject Arguments filename The name of the project to open C/C++ Prototype HRESULT openProjectWithoutSubUnits (BSTR filename, IRPProject** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 88 API Reference Manual Rhapsody Interfaces quit Read method Description The quit method closes the active Rhapsody 6.1 project. Note that helper applications might not close the current document. This means that you should not use the quit method in a VBA macro that you specify as a helper: Visual Basic Syntax quit() C/C++ Prototype HRESULT quit() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 89 Rhapsody API Interfaces rebuild Note Currently, this method has not been implemented. Read method Description The rebuild method rebuilds the application. Visual Basic Syntax rebuild() C/C++ Prototype HRESULT rebuild() Return Value HRESULT (0 for success, or a signed integer error code) 90 API Reference Manual Rhapsody Interfaces refreshAllViews Read method Description The refreshAllViews method refreshes the views. Visual Basic Syntax refreshAllViews() C/C++ Prototype HRESULT refreshAllViews() Return Value HRESULT (0 for success, or a signed integer error code) regenerate Read method Description The regenerate method regenerates the active configuration of the active component. Visual Basic Syntax regenerate() C/C++ Prototype HRESULT regenerate() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 91 Rhapsody API Interfaces report Read method Description The report method generates a report in ASCII or RTF into the specified file. The report is generated for the elements found in the scope of the current component. Visual Basic Syntax report (format As String, outputFileName As String) Arguments format The file format. The possible values are as follows: ASCII RTF outputFileName The name of the output file, including the path. C/C++ Prototype HRESULT report (BSTR format, BSTR outputFileName) Return Value HRESULT (0 for success, or a signed integer error code) 92 API Reference Manual Rhapsody Interfaces roundtrip Write method Description The roundtrip method roundtrips code changes back into the open model. Visual Basic Syntax roundtrip() C/C++ Prototype HRESULT roundtrip() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 93 Rhapsody API Interfaces setComponent Write method Description The setComponent method sets the current component for the open project. Visual Basic Syntax setComponent (component As String) Arguments component The name of component in the project C/C++ Prototype HRESULT setComponent (BSTR component) Return Value HRESULT (0 for success, or a signed integer error code) 94 API Reference Manual Rhapsody Interfaces setConfiguration Write method Description The setConfiguration method sets the current configuration for the open project. Note: This method fails if the configuration is not found within the current component. Therefore, you should call setComponent before setConfiguration. Visual Basic Syntax setConfiguration (configuration As String) Arguments configuration The name of the configuration in the project. This refers to the simple name of the configuration, not the full name, i.e., not packageA::componentB::configC. C/C++ Prototype HRESULT setConfiguration (BSTR configuration) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 95 Rhapsody API Interfaces setLog Write method Description The setLog method creates a log file that records all the information that is normally displayed in the Rhapsody 6.1 output window. Visual Basic Syntax setLog (logFile As String) Arguments LogFile The name of the log file, including the path C/C++ Prototype HRESULT setLog (BSTR logFile) Return Value HRESULT (0 for success, or a signed integer error code) 96 API Reference Manual Rhapsody Interfaces version Read method Description The version method returns the version of Rhapsody 6.1 that corresponds to the current COM API version. Visual Basic Syntax version() As String Return Value The version of Rhapsody that corresponds to the COM API version C/C++ Prototype HRESULT version (BSTR* __MIDL_0015) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 97 Rhapsody API Interfaces IRPArgument Interface The IRPArgument interface represents an argument of an operation or an event. It inherits from IRPVariable. VB Properties Name Type Access Description argumentDirection String RW The direction of the argument (In, Out, or InOut) declaration String RW A string that represents an inline declaration of this argument defaultValue String RW The default value of this argument type RPType RW The type of this argument Method Summary setTypeDeclaration 98 Sets the C++ type declaration for this argument API Reference Manual Rhapsody Interfaces setTypeDeclaration Write method Description The setTypeDeclaration method sets the C++ type declaration for this argument. Visual Basic Syntax setTypeDeclaration (newVal As String) Arguments NewVal The C++ type declaration for this argument C/C++ Prototype HRESULT setTypeDeclaration (BSTR newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 99 Rhapsody API Interfaces IRPASCIIFile Interface The IRPASCIIFile interface represents a disk file that you can open, close, and write to. It is a top-level interface in the Rhapsody 6.1 object model. Method Summary close Closes a file open Opens a file write Writes to the specified file close Write method Description The close method closes the file. Visual Basic Syntax close() C/C++ Prototype HRESULT close Return Value HRESULT (0 for success, or a signed integer error code) 100 API Reference Manual Rhapsody Interfaces open Write method Description The open method opens a file. Visual Basic Syntax open (filename As String) Arguments filename The name of file to open C/C++ Prototype HRESULT open (BSTR filename) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 101 Rhapsody API Interfaces write Write method Description The write method writes to the specified file. Visual Basic Syntax write (data As String) Arguments Data The ASCII string data to write to the disk file C/C++ Prototype HRESULT write (BSTR data) Return Value 102 API Reference Manual Rhapsody Interfaces HRESULT (0 for success, or a signed integer error code) IRPAssociationClass Interface The IRPAssociationClass interface represents a Rhapsody 6.1 association (bi-directional, directed, composition, or aggregation). IRPAssociationClass inherits from the IRPClass. VB Properties Name Type Access Description end1 RPRelation RO The first end of the association line end2 RPRelation RO The second end of the association line IRPAssociationRole Interface The IRPAssociationRole interface represents a channel or relation through which objects in a collaboration communicate. This object is meaningful only for collaborations displayed in collaboration diagrams. IRPAssociationRole inherits from the IRPModelElement. VB Properties Name roleType Type String Access RO Description The role type (specified or unspecified) Method Summary getClassifierRoles Returns a collection of IRPClassifierRoles linked by the current association role getFormalRelations Returns a collection of IRPRelations for the current association role Rational Rhapsody 103 Rhapsody API Interfaces getClassifierRoles Read method Description The getClassifierRoles method returns a collection of IRPClassifierRoles linked by the current association role. Note that an association role in a collaboration diagram is always bidirectional. Visual Basic Syntax getClassifierRoles () As RPCollection Return Value A collection of classifier roles C/C++ Prototype HRESULT getClassifierRoles ( IRPCollection** classifierRoles) Return Value HRESULT (0 for success, or a signed integer error code) 104 API Reference Manual Rhapsody Interfaces getFormalRelations Read method Description The getFormalRelations method returns a collection of IRPRelations for the current association role. Pass one of the following values to the method: 0—Get the unspecified relations. 1—Get the directional relations. 2—Get the bidirectional relations. Visual Basic Syntax getFormalRelations() As RPCollection Return Value A collection of RPRelations C/C++ Prototype HRESULT getFormalRelations ( IRPCollection** classifierRoles) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 105 Rhapsody API Interfaces IRPAttribute Interface The IRPAttribute interface represents a class attribute. It Inherits from IRPVariable. VB Properties Name Access Description declaration String RW The declaration of this attribute. For an inline declaration, this is an uninterpreted string. defaultValue String RW The default value of this attribute, if one has been defined. isConstant Long RW A flag that indicates whether the attribute is read-only or modifiable. isOrdered Long RW A flag that specifies whether the order of the reference type items is significant. isReference Long RW A flag that specifies whether the attribute is referenced as a reference (such as a pointer (*) or an address (&) in C++). isStatic Long RW A flag that indicates whether this attribute is a static class attribute. Static status implies that the attribute belongs to the class as a whole rather than to an individual instance. multiplicity String RW The multiplicity of the attribute. If this is greater than 1, use the isOrdered property to specify whether the order of the reference type items is significant. RPType RW The type of this attribute. For Rhapsody predefined types, this is a reference to that type. String RW The visibility of this attribute (public, protected, or private). type visibility 106 Type API Reference Manual Rhapsody Interfaces IRPBlock Interface The IRPBlock interface was removed in version 7.2 of Rhapsody. Use IRPInstance instead. Rational Rhapsody 107 Rhapsody API Interfaces IRPClass Interface The IRPClass interface represents Rhapsody 6.1 classes. It inherits from IRPClassifier. VB Properties Name Type Access Description isActive Long RW Indicates whether this class is an active class. isBehaviorOverridden Long RW Indicates whether the statechart of the subclass overrides the statechart of this class. A statechart is not inherited. isComposite Long RO Indicates whether this class is a composite class. isReactive Long RO Indicates whether this class has a statechart that is, it’s a reactive class). Method Summary 108 addClass Adds a class to the current class addConstructor Adds a constructor to the current class addDestructor Adds a destructor to the current class addEventReception Adds an event reception to the current class addLink Adds a link between two objects to the current class addReception Adds a reception to the current class addSuperclass Adds a superclass to the current class addTriggeredOperation Adds a triggered operation to the current class addType Adds a type to the current class deleteClass Deletes a class from the current class deleteConstructor Deletes a constructor from the current class deleteDestructor Deletes a destructor from the current class deleteEventReception Deletes the specified event reception from the current class deleteReception Deletes the specified reception from the current class deleteSuperclass Deletes a superclass from the current class deleteType Deletes a type from the current class API Reference Manual Rhapsody Interfaces addClass Write method Description The addClass method adds a class to the current class. Visual Basic Syntax addClass (name As String) As RPClass Arguments name The name of the new class Return Value The new class C/C++ Prototype HRESULT addClass (BSTR name, IRPClass** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 109 Rhapsody API Interfaces addConstructor Write method Description The addConstructor method adds a constructor to the current class. Visual Basic Syntax addConstructor (argumentsData As String) As RPOperation Arguments argumentsData The arguments for the constructor Return Value The new constructor for this class C/C++ Prototype HRESULT addConstructor (BSTR argumentsData, IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addNetwork(c As RPClass) Dim o As RPOperation c.addOperation ("serialize") c.addOperation ("unserialize") c.addConstructor ("") On Error Resume Next c.addDestructor ("") x = c.addStereotype("G3Network", "Class") End Sub 110 API Reference Manual Rhapsody Interfaces addDestructor Write method Description The addDestructor method adds a destructor to the current class. Visual Basic Syntax addDestructor() As RPOperation Return Value The new destructor for this class C/C++ Prototype HRESULT addDestructor (IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addNetwork(c As RPClass) Dim o As RPOperation c.addOperation ("serialize") c.addOperation ("unserialize") c.addConstructor ("") On Error Resume Next c.addDestructor ("") x = c.addStereotype("G3Network", "Class") End Sub Rational Rhapsody 111 Rhapsody API Interfaces addEventReception Write method Description The addEventReception method adds an event reception to the current class. Visual Basic Syntax addEventReception (name As String) As RPEventReception Arguments name The name of the new event reception for this class Return Value The new event reception C/C++ Prototype HRESULT addEventReception (BSTR name, IRPEventReception** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 112 API Reference Manual Rhapsody Interfaces addLink The addLink method adds a link between two objects to the current class. Syntax addLink(fromPart As RPInstance, toPart As RPInstance, assoc As RPRelation, fromPort As RPPort, toPort As RPPort) As RPLink Arguments fromPart, toPart The objects that are being linked. assoc Association that is being instantiated (optional). fromPort, toPort Ports that are being linked (optional). Rational Rhapsody 113 Rhapsody API Interfaces addReception Write method Description The addReception method adds a reception to the current class. Visual Basic Syntax addReception (name As String) As RPEventReception Arguments name The name of the new reception for this class Return Value The new reception C/C++ Prototype HRESULT addReception (BSTR name, IRPEventReception** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 114 API Reference Manual Rhapsody Interfaces addSuperclass Write method Description The addSuperclass method inherits this class from a new superclass. Visual Basic Syntax addSuperclass (superClass As RPClass) Arguments superClass Specifies the RPClass from which this class will inherit C/C++ Prototype HRESULT addSuperclass (IRPClass* superClass) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 115 Rhapsody API Interfaces addTriggeredOperation Write method Description The addTriggeredOperation method adds a new triggered operation to the current class. Visual Basic Syntax addTriggeredOperation (name As String) As RPOperation Arguments name A string that specifies the name of the new trigger Return Value The new trigger for this class C/C++ Prototype HRESULT addTriggeredOperation (BSTR name, IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 116 API Reference Manual Rhapsody Interfaces addType Write method Description The addType method adds a type to the current class. Visual Basic Syntax addType (name As String) As RPType Arguments name The name of the new type Return Value The new type for this class C/C++ Prototype HRESULT addType (BSTR name, IRPType** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 117 Rhapsody API Interfaces deleteClass Write method Description The deleteClass method deletes a class from the current class. Visual Basic Syntax deleteClass (name As String) Arguments name The name of the class to delete C/C++ Prototype HRESULT deleteClass (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 118 API Reference Manual Rhapsody Interfaces deleteConstructor Write method Description The deleteConstructor method deletes a constructor from the current class. Visual Basic Syntax deleteConstructor (constructor As RPOperation) Arguments constructor The constructor to delete C/C++ Prototype HRESULT deleteConstructor (IRPOperation* constructor) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 119 Rhapsody API Interfaces deleteDestructor Write method Description The deleteDestructor method deletes a destructor from the current class. Visual Basic Syntax deleteDestructor() C/C++ Prototype HRESULT deleteDestructor() Return Value HRESULT (0 for success, or a signed integer error code) 120 API Reference Manual Rhapsody Interfaces deleteEventReception Write method Description The deleteEventReception method deletes the specified event reception. Visual Basic Syntax deleteEventReception (pVal As RPEventReception) Arguments pVal The event reception to delete C/C++ Prototype HRESULT deleteEventReception (IRPEventReception* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 121 Rhapsody API Interfaces deleteReception Write method Description The deleteReception method deletes the specified reception. Visual Basic Syntax deleteReception (pVal As RPEventReception) Arguments pVal The event reception to delete C/C++ Prototype HRESULT deleteReception (IRPEventReception* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 122 API Reference Manual Rhapsody Interfaces deleteSuperclass Write method Description The deleteSuperclass method deletes the superclass for the current class. Visual Basic Syntax deleteSuperclass (superClass As RPClass) Arguments superClass The superclass (base class) to delete C/C++ Prototype HRESULT deleteSuperclass (IRPClass* superClass) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 123 Rhapsody API Interfaces deleteType Write method Description The deleteType method deletes a type from the current class. Visual Basic Syntax deleteType (name As String) Arguments name The type to delete C/C++ Prototype HRESULT deleteType (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 124 API Reference Manual Rhapsody Interfaces IRPClassifier Interface The IRPClassifier interface is an abstract interface consisting of all the shared features of classes, actors, use cases, and (data) types. It inherits from IRPUnit. VB Properties Name Type Access Description activityDiagram RPFlowchart RO The activity diagram attributes Collection of RO A collection of attributes belonging to this classifier RO A collection of classifiers from which this classifier is derived (inherits) RO A collection of classifiers that derive (inherit) from this classifier RO A collection of flows belonging to this classifier RPAttributes baseClassifiers Collection of RPClassifiers derivedClassifiers Collection of RPClassifiers flows Collection of RPInformationFlows flowItems Collection of A collection of flowItems belonging to this classifier RPInformationItems generalizations Collection of RO A collection of generalizations that generalize this classifier (for which this classifier is a specialization) RO A collection of operations, events, and event receptions belonging to this classifier RO A collection of classifiers defined in this classifier RO A collection of operations belonging to this classifier RPGeneralizations interfaceItems Collection of RPInterfaceItems nestedClassifiers Collection of RPClassifiers operations Collection of RPOperations ports RPCollection RO A collection of ports belonging to this classifier relations Collection of RO A collection of all relations belonging to this classifier RO The handle to the statechart of this class, if it has one RPRelations statechart Rational Rhapsody RPStatechart* 125 Rhapsody API Interfaces Method Summary 126 addActivityDiagram Adds an activity diagram to the current class addAttribute Adds an attribute to the current class addFlowItems Adds the specified flowItem to the collection of flowItems addFlows Adds the specified flow to the collection of flows addGeneralization Adds a generalization to the current class addOperation Adds an operation to the current class addRelation Adds a symmetric relation between the current class and another one addStatechart Adds a statechart to the current class addUnidirectionalRelation Adds a directional relation from the current class to another class deleteActivityDiagram Deletes the specified activity diagram from the current class deleteAttribute Deletes the specified attribute from the current class deleteFlowItems Deletes the specified flowItem from the collection of flowItems deleteFlows Deletes the specified flow from the collection of flows deleteGeneralization Deletes the specified generalization from the current class deleteOperation Deletes the specified operation from the current class deleteRelation Deletes the specified relation from the current class deleteStatechart Deletes the specified statechart from the current class findAttribute Retrieves the specified attribute of the classifier findBaseClassifier Retrieves a base (parent) classifier of a classifier findDerivedClassifier Retrieves the specified derived classifier of a classifier findGeneralization Retrieves the specified generalization of a classifier findInterfaceItem Retrieves an operation or event reception of the given signature that belongs to a classifier API Reference Manual Rhapsody Interfaces findNestedClassifier Retrieves the specified classifier defined within this object findNestedClassifierRecursive Retrieves the specified classifier defined in this object and in objects defined within this object findRelation Retrieves the specified relation that belongs to the current classifier findTrigger Retrieves the specified trigger in the statechart of the current class getAttributesIncludingBases Retrieves the attributes defined for this class and the ones inherited from its superclasses getInterfaceItemsIncludingBases Retrieves the operations and event receptions defined for this class and the ones it inherited from its superclasses getRelationsIncludingBases Retrieves the relations defined for this class and the ones it inherited from its superclasses Note Some of the properties and methods are meaningful only for some of the derived interfaces. When meaningless, the call will return nothing (NULL) or an empty collection. Rational Rhapsody 127 Rhapsody API Interfaces addActivityDiagram Write method Description The addActivityDiagram method adds an activity diagram to the current class. Visual Basic Syntax addActivityDiagram () As RPFlowchart Return Value The new activity diagram C/C++ Prototype HRESULT addActivityDiagram (IRPFlowchart** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 128 API Reference Manual Rhapsody Interfaces addAttribute Write method Description The addAttribute method adds an attribute to the current class. Visual Basic Syntax addAttribute (name As String) As RPAttribute Arguments name The name of the new attribute C/C++ Prototype HRESULT addAttribute (BSTR name, IRPAttribute** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 129 Rhapsody API Interfaces addFlowItems Write method Description The addFlowItems method adds the specified flowItem to the collection of flowItems. Visual Basic Syntax addFlowItems (name As String) As RPFlowItem Arguments name The name of the new flowItem C/C++ Prototype HRESULT addFlowItems (BSTR name, IRPFlowItem** ppItem) Return Value HRESULT (0 for success, or a signed integer error code) 130 API Reference Manual Rhapsody Interfaces addFlows Write method Description The addFlows method adds the specified flow to the collection of flows. Visual Basic Syntax addFlows (name As String) As RPFlow Arguments name The name of the new flow C/C++ Prototype HRESULT addFlows (BSTR name, IRPFlow** ppFlow) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 131 Rhapsody API Interfaces addGeneralization Write method Description The addGeneralization method adds a generalization to the current class. Visual Basic Syntax addGeneralization (pVal As RPClassifier) Arguments pVal The generalization to add to this class C/C++ Prototype HRESULT addGeneralization (IRPClassifier *pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addUi(c As RPClass) Dim x As Object Dim p As RPPackage Dim theClass As RPClass 'all gui objects are derived from GUI.UIBase c.Description = "gui class" On Error Resume Next Set p = pr.findNestedElement("GUI", "Package") Set theClass = p.findNestedElement("UIBase", "Class") c.addGeneralization theClass If Not Err.Number = 0 Then MsgBox (errorMessage) End If c.addStereotype "G3UI", "Class" End Sub 132 API Reference Manual Rhapsody Interfaces addOperation Write method Description The addOperation method adds an operation to the current class. Visual Basic Syntax addOperation (name As String) As RPOperation Arguments name The name of the new operation Return Value The operation added to this class C/C++ Prototype HRESULT addOperation (BSTR name, IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addNetwork(c As RPClass) Dim o As RPOperation c.addOperation ("serialize") c.addOperation ("unserialize") c.addConstructor ("") On Error Resume Next c.addDestructor ("") x = c.addStereotype("G3Network", "Class") End Sub Rational Rhapsody 133 Rhapsody API Interfaces addRelation Write method Description The addRelation method adds a symmetric relation between the current class and another one. Visual Basic Syntax addRelation (otherClassName As String, otherClassPackageName As String, roleName1 As String, linkType1 As String, multiplicity1 As String, roleName2 As String, linkType2 As String, multiplicity2 As String, linkName As String) As RPRelation Arguments OtherClassName The name of the other class involved in the new relation with the current class. OtherClassPackageName The name of the package containing the other class. roleName1 The role name of the other class, from the point of view of the current class. roleName2 The role name of the current class, from the point of view of the other class. linkType1 The relation type. The possible values are as follows: Aggregation Association Composition linkType2 The second relation type. The possible values are as follows: Aggregation Association Composition multiplicity1 The multiplicity of instances for the other class. multiplicity2 134 API Reference Manual Rhapsody Interfaces The multiplicity of instances for the current class. linkName The name of the link. This is a descriptive and explanatory field that plays no part in code generation. Notes The valid combinations of linkType1 and linkType2 are as follows: Association/Association--I know you; you know me. Aggregation/Association--I belong to you; you know me. Composition/Association--I strongly belong to you; you know me. Association/Aggregation--I know you; you belong to me. Association/Composition--I know you; you strongly belong me. Return Value The new relation C/C++ Prototype HRESULT addRelation (BSTR otherClassName, BSTR otherClassPackageName, BSTR roleName1, BSTR linkType1, BSTR multiplicity1, BSTR roleName2, BSTR linkType2, BSTR multiplicity2, BSTR linkName, IRPRelation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 135 Rhapsody API Interfaces addStatechart Write method Description The addStatechart method adds a statechart to the current class. Visual Basic Syntax addStatechart() As RPStatechart Return Value The new statechart C/C++ Prototype HRESULT addStatechart (IRPStatechart** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 136 API Reference Manual Rhapsody Interfaces addUnidirectionalRelation Write method Description The addUnidirectionalRelation method adds a directional relation from the current class to another class. Visual Basic Syntax addUnidirectionalRelation (otherClassName As String, otherClassPackageName As String, roleName As String, linkType As String, multiplicity As String, linkName As String) As RPRelation Arguments OtherClassName The name of the other class involved in the new relation with the current class. OtherClassPackageName The name of the package containing the other class. roleName The role name of the other class, from the point of view of the current class. linkType The relation type. The possible values are as follows: Aggregation Association Composition multiplicity The multiplicity of instances for the other class. linkName The name of the link. This is a descriptive and explanatory field that plays no part in code generation. Return Value The new relation Rational Rhapsody 137 Rhapsody API Interfaces C/C++ Prototype HRESULT addUnidirectionalRelation (BSTR otherClassName, BSTR otherClassPackageName, BSTR roleName, BSTR linkType, BSTR multiplicity, BSTR linkName, IRPRelation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) deleteActivityDiagram Write method Description The deleteActivityDiagram method deletes the specified activity diagram from the current class. Visual Basic Syntax deleteActivityDiagram () C/C++ Prototype HRESULT deleteActivityDiagram() Return Value HRESULT (0 for success, or a signed integer error code) 138 API Reference Manual Rhapsody Interfaces deleteAttribute Write method Description The deleteAttribute method deletes the specified attribute from the current class. Visual Basic Syntax deleteAttribute (attribute As RPAttribute) Arguments attribute The attribute to delete C/C++ Prototype HRESULT deleteAttribute (IRPAttribute* attribute) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 139 Rhapsody API Interfaces deleteFlowItems Write method Description The deleteFlowItems method deletes the specified flowItem from the collection of flowItems. Visual Basic Syntax deleteFlowItems (pItem As RPFlowItem) Arguments pFlowItem The flowItem to delete C/C++ Prototype HRESULT deleteFlowItems (IRPFlowItem* pItem) Return Value HRESULT (0 for success, or a signed integer error code) 140 API Reference Manual Rhapsody Interfaces deleteFlows Write method Description The deleteFlows method deletes the specified flow from the collection of flows. Visual Basic Syntax deleteFlows (pFlow As RPFlow) Arguments pFlow The flow to delete C/C++ Prototype HRESULT deleteFlows (IRPFlow* pFlow) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 141 Rhapsody API Interfaces deleteGeneralization Write method Description The deleteGeneralization method deletes the specified generalization from the current class. Visual Basic Syntax deleteGeneralization (superClass As RPClassifier) Arguments superClass The superclass of the current class to be deleted C/C++ Prototype HRESULT deleteGeneralization (IRPClassifier* superClass) Return Value HRESULT (0 for success, or a signed integer error code) 142 API Reference Manual Rhapsody Interfaces deleteOperation Write method Description The deleteOperation method deletes the specified operation from the current class. Visual Basic Syntax deleteOperation (operation As RPOperation) Arguments operation The operation to delete C/C++ Prototype HRESULT deleteOperation (IRPOperation* operation) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 143 Rhapsody API Interfaces deleteRelation Write method Description The deleteRelation method deletes the specified relation from the current class. Visual Basic Syntax deleteRelation (relation As RPRelation) Arguments relation The relation to delete C/C++ Prototype HRESULT deleteRelation (IRPRelation* relation) Return Value HRESULT (0 for success, or a signed integer error code) 144 API Reference Manual Rhapsody Interfaces deleteStatechart Write method Description The deleteStatechart method deletes the specified statechart from this class. Visual Basic Syntax deleteStatechart() C/C++ Prototype HRESULT deleteStatechart() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 145 Rhapsody API Interfaces findAttribute Read method Description The findAttribute method retrieves the specified attribute of the classifier. Visual Basic Syntax findAttribute (name As String) As RPAttribute Arguments name The name of the attribute to find Return Value The named attribute of the classifier C/C++ Prototype HRESULT findAttribute (BSTR newVal, IRPAttribute** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 146 API Reference Manual Rhapsody Interfaces findBaseClassifier Read method Description The findBaseClassifier method retrieves a base (parent) classifier of a classifier. Visual Basic Syntax findBaseClassifier (newVal As String) As RPClassifier Arguments newVal The name of the base classifier Return Value The base classifier of this classifier C/C++ Prototype HRESULT findBaseClassifier (BSTR newVal, IRPClassifier** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 147 Rhapsody API Interfaces findDerivedClassifier Read method Description The findDerivedClassifier method retrieves the specified derived classifier of a classifier. Visual Basic Syntax findDerivedClassifier (newVal As String) As RPClassifier Arguments newVal The name of the derived classifier of this classifier Return Value The derived classifier of this classifier C/C++ Prototype HRESULT findDerivedClassifier (BSTR newVal, IRPClassifier** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 148 API Reference Manual Rhapsody Interfaces findGeneralization Read method Description The findGeneralization method retrieves the specified generalization that belongs to this classifier. Visual Basic Syntax findGeneralization (newVal As String) As RPGeneralization Arguments newVal The name of the generalization Return Value The RPGeneralization C/C++ Prototype HRESULT findGeneralization (BSTR newVal, IRPGeneralization** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 149 Rhapsody API Interfaces findInterfaceItem Read method Description The findInterfaceItem method retrieves an operation or event reception of the given signature that belongs to a classifier. Visual Basic Syntax findInterfaceItem (signature As String) As RPInterfaceItem Arguments signature The signature of the operation or event reception of this classifier Return Value The operation or event reception C/C++ Prototype HRESULT findInterfaceItem (BSTR signature, IRPInterfaceItem** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 150 API Reference Manual Rhapsody Interfaces findNestedClassifier Read method Description The findNestedClassifier method retrieves the specified classifier defined within this object. Visual Basic Syntax findNestedClassifier (newVal As String) As RPClassifier Arguments newVal The name of the nested classifier Return Value The nested classifier within this classifier C/C++ Prototype HRESULT findNestedClassifier (BSTR newVal, IRPClassifier** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 151 Rhapsody API Interfaces findNestedClassifierRecursive Read method Description The findNestedClassifierRecursive method recursively retrieves the specified classifier defined in this object and in objects defined within this object. Visual Basic Syntax findNestedClassifierRecursive (newVal As String) As RPModelElement Arguments newVal The name of the nested classifier (at any level of ownership) Return Value The nested classifier C/C++ Prototype HRESULT findNestedClassifierRecursive (BSTR newVal, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 152 API Reference Manual Rhapsody Interfaces findNestedGeneralization Read method Description The findNestedGeneralization method retrieves the specified generalization relation. Visual Basic Syntax findGeneralization (name As String) As IRPGeneralization Arguments name A string that specifies the name of the generalization to find Return Value The generalization for this classifier (an IRPGeneralization) C/C++ Prototype HRESULT findGeneralization(BSTR newVal, IRPGeneralization** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 153 Rhapsody API Interfaces findRelation Read method Description The findRelation method retrieves the specified relation that belongs to the current classifier. Visual Basic Syntax findRelation (newVal As String) As RPRelation Arguments newVal The name of the relation to find Return Value The classifier’s relation C/C++ Prototype HRESULT findRelation (BSTR newVal, IRPRelation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 154 API Reference Manual Rhapsody Interfaces findTrigger Read method Description The findTrigger method retrieves the specified trigger in the statechart of the current class. Visual Basic Syntax findTrigger (name As String) As RPInterfaceItem Arguments name The name of the trigger to find Return Value The trigger C/C++ Prototype HRESULT findTrigger (BSTR name, IRPInterfaceItem** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 155 Rhapsody API Interfaces getAttributesIncludingBases Read method Description The getAttributesIncludingBases method retrieves the attributes defined for this class and the ones inherited from its superclasses. Visual Basic Syntax getAttributesIncludingBases() As RPCollection Return Value A collection of class attributes (RPAttributes) C/C++ Prototype HRESULT getAttributesIncludingBases ( IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 156 API Reference Manual Rhapsody Interfaces getInterfaceItemsIncludingBases Read method Description The getInterfaceItemsIncludingBases method retrieves the operations and event receptions defined for this class and the ones it inherited from its superclasses. Visual Basic Syntax getInterfaceItemsIncludingBases() As RPCollection Return Value A collection of interface items C/C++ Prototype HRESULT getInterfaceItemsIncludingBases( IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 157 Rhapsody API Interfaces getRelationsIncludingBases Read method Description The getRelationsIncludingBases method retrieves the relations defined for this class and the ones it inherited from its superclasses. Visual Basic Syntax getRelationsIncludingBases() As RPRelations Return Value A collection of relations C/C++ Prototype HRESULT getRelationsIncludingBases (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 158 API Reference Manual Rhapsody Interfaces IRPClassifierRole Interface The IRPClassifierRole interface represents an object participating in the collaboration. It usually corresponds to some object of a given class or actor. It inherits from IRPModelElement. VB Properties Name Type Access Description formalClassifier RPClassifier RO The classifier (NULL (unspecified), systemBorder, or multipleObjects) referencedSequenceDiagram RPSequence Diagram RW The referenced sequence diagram roleType String RO The role type (unspecified, systemBorder, class, actor, or multipleObjects) Rational Rhapsody 159 Rhapsody API Interfaces IRPCollaboration Interface The IRPCollaboration interface represents the logical collaboration, devoid of any sequence diagram or collaboration diagram graphics. Note that the two diagrams give rise to similar but slightly different IRPCollaboration objects. This class inherits from IRPModelElement. VB Properties Name Type Access Description activationCondition CString RO The activation condition. This can be empty. activationMode CString RO The activation mode (initial, invariant, or unspecified). associations RPAssociationRoles RO A collection of RPAssociationRoles in the collaboration diagram. This applies only to collaboration diagram-based IRPCollaborations. classifier RPClassifierRoles RO A collection of RPClassifierRoles in the collaboration diagram. messagePoints RPMessagePoints RO A collection of RPMessagePoints. For sequences, this is the way of obtaining full information about the order of messages in the sequence diagram. For collaborations, each send messagepoint is immediately followed by a receive messagepoint on the same message. messages RPMessages RO A collection of RPMessages. For collaborations, this list contains all information regarding the order of elements in the model. For sequences, some information is lost and the message list is ordered by the send time (as opposed to the receive time). mode 160 Cstring RO The mode (existential, universal, or unspecified). API Reference Manual Rhapsody Interfaces Method Summary addCancelledTimeout Adds a cancelled timeout to the diagram addClassifierRole Adds a classifier role addClassifierRoleByName Adds a classifier role, given its name addCtor Adds a constructor addDestructionEvent Adds a destruction event to a classifier role in a sequence diagram addDtor Adds a destructor addFoundMessage Adds a found message to a classifier role in a sequence diagram addInteractionOccurrence Adds an interaction occurrence (reference diagram) to the diagram addInteractionOperator Adds an interaction operator to a sequence diagram addLostMessage Adds a lost message to a classifier role in a sequence diagram addMessage Adds a message addSystemBorder Adds a system border addTimeInterval Adds a time interval to the diagram addTimeout Adds a timeout the diagram generateSequence Generates the specified sequence diagram getConcurrentGroup Retrieves the activation messages getConcurrentGroup Retrieves all the messages concurrent with the input message, including the input message itself getMessagePoints Returns an ordered collection of all messagepoints occurring on this classifier getPredecessor Retrieves the message that precedes the specified message getSuccessor Retrieves the message that follows the specified message Rational Rhapsody 161 Rhapsody API Interfaces addCancelledTimeout Write method Description The addCancelledTimeout method adds a cancelled timeout to a collaboration diagram. Visual Basic Syntax addCancelledTimeout (receiver As RPClassifierRole) As RPMessage Arguments receiver The receiver object for the timeout Return Value The new cancelled timeout C/C++ Prototype HRESULT addCancelledTimeout (IRPClassifierRole *receiver, IRPMessage **pVal) Return Value HRESULT (0 for success, or a signed integer error code) 162 API Reference Manual Rhapsody Interfaces addClassifierRole Write method Description The addClassifierRole method adds a classifier role. Visual Basic Syntax addClassifierRole (newVal As String, cls As RPClass) As RPClassifierRole Arguments newVal The name of the new classifier role cls The name of the class Return Value The new RPClassifierRole C/C++ Prototype HRESULT addClassifierRole (BSTR newVal, IRPClass *cls, IRPClassifierRole** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 163 Rhapsody API Interfaces addClassifierRoleByName Write method Description The addClassifierRoleByName method adds the specified classifier role. Visual Basic Syntax addClassifierRoleByName (newVal As String, classFullPath As String) As RPClassifierRole Arguments newVal The name of the classifier role to add classFullPath The full path to the class Return Value The new RPClassifierRole C/C++ Prototype HRESULT addClassifierRoleByName (BSTR newVal, BSTR classFullPath, IRPClassifierRole** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 164 API Reference Manual Rhapsody Interfaces addCtor Write method Description The addCtor method adds a constructor. Visual Basic Syntax addCtor (interItem As RPInterfaceItem, actualParamList As String, sender As RPClassifierRole, receiver As RPClassifierRole) As RPMessage Arguments interItem The interface item actualParamList The list of parameters for the constructor sender The RPClassifierRole that acts as the sender receiver The RPClassifierRole that acts as the receiver Return Value An RPMessage C/C++ Prototype HRESULT addCtor (IRPInterfaceItem *interItem, BSTR actualParamList, IRPClassifierRole *sender, IRPClassifierRole *receiver, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 165 Rhapsody API Interfaces addDestructionEvent Write method Description The addDestructionEvent method is used to add a destruction event to a classifier role in a sequence diagram. Visual Basic Syntax addDestructionEvent (classifier As RPClassifierRole) As RPMessage Arguments classifier The classifier role to which the destruction event should be added. Return Value An RPMessage Return Value HRESULT (0 for success, or a signed integer error code) 166 API Reference Manual Rhapsody Interfaces addDtor Write method Description The addDtor method adds a destructor. Visual Basic Syntax addDtor (interItem As RPInterfaceItem, actualParamList As String, sender As RPClassifierRole, receiver As RPClassifierRole) As RPMessage Arguments interItem The interface item actualParamList The list of parameters for the constructor sender The RPClassifierRole that acts as the sender receiver The RPClassifierRole that acts as the receiver Return Value An RPMessage C/C++ Prototype HRESULT addDtor (IRPInterfaceItem *interItem, BSTR actualParamList, IRPClassifierRole *sender, IRPClassifierRole *receiver, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 167 Rhapsody API Interfaces addFoundMessage Write method Description The addFoundMessage method is used to add a found message to a classifier role in a sequence diagram. Visual Basic Syntax addFoundMessage (receiver As RPClassifierRole) As RPMessage Arguments receiver The classifier role that receives the message from an unknown sender. Return Value An RPMessage Return Value HRESULT (0 for success, or a signed integer error code) 168 API Reference Manual Rhapsody Interfaces addInteractionOccurrence Write method Description The addInteractionOccurrence method adds a new interaction occurrence (reference diagram) to the collaboration diagram. Visual Basic Syntax addInteractionOccurrence () As RPInteractionOccurrence Return Value The new interaction occurrence C/C++ Prototype HRESULT addInteractionOccurrence ( IRPInteractionOccurrence** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 169 Rhapsody API Interfaces addInteractionOperator Write method Description The addInteractionOperator method is used to add an interaction operator to a sequence diagram. Visual Basic Syntax addInteractionOperator() As RPInteractionOperator Arguments None Return Value An RPInteractionOperator Return Value HRESULT (0 for success, or a signed integer error code) 170 API Reference Manual Rhapsody Interfaces addLostMessage Write method Description The addLostMessage method is used to add a lost message to a classifier role in a sequence diagram. Visual Basic Syntax addLostMessage (sender As RPClassifierRole) As RPMessage Arguments sender The classifier role that sent the message that did not reach its target. Return Value An RPMessage Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 171 Rhapsody API Interfaces addMessage Write method Description The addMessage method adds a message. Visual Basic Syntax addMessage (interItem As RPInterfaceItem, actualParamList As String, sender As RPClassifierRole, receiver As RPClassifierRole) As RPMessage Arguments interItem The interface item actualParamList The list of parameters for the constructor sender The RPClassifierRole that acts as the sender receiver The RPClassifierRole that acts as the receiver Return Value The new message C/C++ Prototype HRESULT addMessage (IRPInterfaceItem *interItem, BSTR actualParamList, IRPClassifierRole *sender, IRPClassifierRole *receiver, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 172 API Reference Manual Rhapsody Interfaces addSystemBorder Write method Description The addSystemBorder method adds a system border to the collaboration diagram. Visual Basic Syntax addSystemBorder () As RPClassifierRole Return Value The new system border C/C++ Prototype HRESULT addSystemBorder (IRPClassifierRole** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 173 Rhapsody API Interfaces addTimeInterval Write method Description The addTimeInterval method adds a time interval to the diagram. Visual Basic Syntax addTimeInterval (receiver As RPClassifierRole) As RPMessage Arguments interItem The interface item Return Value The new time interval C/C++ Prototype HRESULT addTimeInterval (IRPClassifierRole *receiver, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 174 API Reference Manual Rhapsody Interfaces addTimeout Write method Description The addTimeout method adds a timeout. Visual Basic Syntax addTimeout (interItem As RPInterfaceItem, actualParamList As String, sender As RPClassifierRole, receiver As RPClassifierRole) As RPMessage Arguments interItem The interface item actualParamList The list of parameters for the constructor sender The RPClassifierRole that acts as the sender receiver The RPClassifierRole that acts as the receiver Return Value The new timeout C/C++ Prototype HRESULT addTimeout (IRPInterfaceItem *interItem, BSTR actualParamList, IRPClassifierRole *sender, IRPClassifierRole *receiver, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 175 Rhapsody API Interfaces generateSequence Write method Description The generateSequence method generates the specified sequence diagram. Visual Basic Syntax generateSequence (newVal As String, owner As RPPackage) As RPSequenceDiagram Arguments newVal The name of the sequence diagram to generate owner The owner package Return Value The new RPSequenceDiagram C/C++ Prototype HRESULT generateSequence (BSTR newVal, IRPPackage* owner, IRPSequenceDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 176 API Reference Manual Rhapsody Interfaces getActivator Read method Description The getActivator method retrieves the activation messages. Visual Basic Syntax getActivator (msg As RPMessage) As RPMessage Arguments msg The message to retrieve Return Value A collection of RPMessages C/C++ Prototype HRESULT getActivator (IRPMessage* msg, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 177 Rhapsody API Interfaces getConcurrentGroup Read method Description The getConcurrentGroup method retrieves all the messages concurrent with the input message, including the input message itself. If the message does not have any concurrent messages because it is sequential, the method returns only the message itself. Visual Basic Syntax getConcurrentGroup (message As RPMessage) As RPMessages Arguments message The group of messages to retrieve Return Value A collection of RPMessages C/C++ Prototype HRESULT getConcurrentGroup (IRPMessage* message, IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 178 API Reference Manual Rhapsody Interfaces getMessagePoints Read method Description The getMessagePoints method returns an ordered collection of all messagepoints occurring on this classifier. Visual Basic Syntax getMessagePoints (classifier As RPClassifierRole) As RPCollection Arguments classifier The RPClassifier whose messagepoints you want to retrieve Return Value A collection of RPMessagePoints C/C++ Prototype HRESULT getMessagePoints (IRPClassifier* classifier, IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 179 Rhapsody API Interfaces getPredecessor Read method Description The getPredecessor method retrieves the message that precedes the specified message. Visual Basic Syntax getPredecessor (message As RPMessage) As RPMessage Arguments message The message whose predecessor you want Return Value The message that precedes the specified message C/C++ Prototype HRESULT getPredecessor (IRPMessage *message, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 180 API Reference Manual Rhapsody Interfaces getSuccessor Read method Description The getSuccessor method retrieves the message that follows the specified message. Visual Basic Syntax getSuccessor (message As RPMessage) As RPMessage Arguments message The message whose successor you want Return Value The message that follows the specified message C/C++ Prototype HRESULT getSuccessor (IRPMessage *message, IRPMessage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 181 Rhapsody API Interfaces IRPCollaborationDiagram Interface The IRPCollaborationDiagram interface represents a collaboration diagram. It inherits from IRPDiagram. Method Summary getLogicalCollaboration Retrieves the logic behind the collaboration diagram getLogicalCollaboration Read method Description The getLogicalCollaboration method retrieves the logic behind the collaboration diagram. Visual Basic Syntax getLogicalCollaboration() As RPCollaboration Return Value The collaboration diagram C/C++ Prototype HRESULT getLogicalCollaboration (IRPCollaboration** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 182 API Reference Manual Rhapsody Interfaces IRPCollection Interface The IRPCollection interface is a utility class used to return collections of IRPModelElements. Methods and attributes that need to return more than one element always return a pointer to an IRPCollection. IRPCollection also supports VB iteration via the following construct: For Each obj in col VB Properties Name Type Access Description Count Long RO The number of elements currently in the collection Item(long i) RPModelElement* RO The ith element in the collection Method Summary addItem Rational Rhapsody Adds an item to the collection 183 Rhapsody API Interfaces addItem Write method Description The addItem method adds an item to the collection. Visual Basic Syntax addItem (newVal As RPModelElement) Arguments newVal The new item to add C/C++ Prototype HRESULT addItem (IRPModelElement* newVal) Return Value HRESULT (0 for success, or a signed integer error code) 184 API Reference Manual Rhapsody Interfaces IRPComment Interface The IRPComment interface represents Rhapsody comments. It inherits from IRPAnnotation. IRPComponent Interface The IRPComponent interface represents a code generation component. It inherits from IRPUnit. VB Properties Name Type Access Description additionalSources String RW The additional source files to be compiled with the component. buildType String RW The build type (library or executable). configurations Collection of RW The configurations of this component. RPConfiguration files Collection of RPFiles RO The files of this component. includePath String RW The path to standard headers to be linked with the component. libraries String RW The libraries to be linked with the component (for example, "x.lib, y.lib, z.lib"). nestedComponents Collection of RO The components nested in this component. RO The string containing the path to the component.If fullPath is True, the full path is returned: RPComponent path(fullPath) String(path) Boolean(fullPath) <drive>:\ <model dir>\ <component dir>\ <config dir>) If fullPath is False, the path relative to the project is returned: <component dir>\ <config dir> Rational Rhapsody 185 Rhapsody API Interfaces Name scopeElements Type Access Collection of RO The logical elements allocated to this component. RW The standard header files to be linked with the component. RPModelElement standardHeaders String Description Method Summary 186 addConfiguration Adds a configuration to this component addFile Adds an empty file to the current component addFolder Adds an empty folder to the current component addNestedComponent Adds a component to the current component addScopeElement Places a model element within the scope of the current component addToScope Places the specified file, classes, and packages within the scope of the current component allElementsInScope Places all model elements within the scope of the current component deleteConfiguration Deletes the specified configuration from the current component deleteFile Deletes the specified file from the current component findConfiguration Retrieves the specified configuration in the current component getConfigByDependency Retrieves the appropriate configuration to use in the component on which the current component depends getFile Returns the file in which the specified classifier will be generated getFileName Retrieves the name of the file to which the specified classifier will be generated in this component getModelElementFileName Gets the file name of the specified model element getPackageFile Returns the package file removeScopeElement Deletes a scope element setPath Sets the path of the application built for this component API Reference Manual Rhapsody Interfaces addConfiguration Write method Description The addConfiguration method adds a configuration to the current component. Visual Basic Syntax addConfiguration (name As String) As RPConfiguration Arguments name The name of the new configuration Return Value The new configuration C/C++ Prototype HRESULT addConfiguration (BSTR name, IRPConfiguration** configuration) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 187 Rhapsody API Interfaces addFile Write method Description The addFile method adds an empty file to the current component. Visual Basic Syntax addFile (name As String) As RPFile Arguments name The name of the new file Return Value The file added to the component C/C++ Prototype HRESULT addFile (BSTR name, IRPFile** file) Return Value HRESULT (0 for success, or a signed integer error code) 188 API Reference Manual Rhapsody Interfaces addFolder Write method Description The addFolder method adds an empty folder to the current component. Visual Basic Syntax addFolder (name As String) As RPFile Arguments name The name of the new folder Return Value The folder added to the component C/C++ Prototype HRESULT addFolder (BSTR name, IRPFile** file) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 189 Rhapsody API Interfaces addNestedComponent Write method Description The addNestedComponent method adds a component to the current component. Visual Basic Syntax addNestedComponent (name As String) As RPComponent Arguments name The name of the component to add Return Value The component added to the current component C/C++ Prototype HRESULT addNestedComponent (BSTR name, IRPComponent** pval) Return Value HRESULT (0 for success, or a signed integer error code) 190 API Reference Manual Rhapsody Interfaces addScopeElement Write method Description The addScopeElement method places a model element within the scope of the current component. Visual Basic Syntax addScopeElement (pVal As RPModelElement) Arguments pVal The RPModelElement to place in the scope of the current component C/C++ Prototype HRESULT addScopeElement (IRPModelElement* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 191 Rhapsody API Interfaces addToScope Write method Description The addToScope method places the specified file, classes, and packages within the scope of the current component. Visual Basic Syntax addToScope (file As RPFile, classes As RPCollection, packages As RPCollection) Arguments file The file to place in scope of the current component classes The classes to place in scope of the current component packages The packages to place in scope of the current component C/C++ Prototype HRESULT addToScope (IRPFile* file, IRPCollection* classes, IRPCollection* packages) Return Value HRESULT (0 for success, or a signed integer error code) 192 API Reference Manual Rhapsody Interfaces allElementsInScope Write method Description The allElementsInScope method places all model elements within the scope of the current component. Visual Basic Syntax allElementsInScope() C/C++ Prototype HRESULT allElementsInScope() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 193 Rhapsody API Interfaces deleteConfiguration Write method Description The deleteConfiguration method deletes the specified configuration from the current component. Visual Basic Syntax deleteConfiguration (configuration As RPConfiguration) Arguments configuration The configuration to delete C/C++ Prototype HRESULT deleteConfiguration ( IRPConfiguration* configuration) Return Value HRESULT (0 for success, or a signed integer error code) 194 API Reference Manual Rhapsody Interfaces deleteFile Write method Description The deleteFile method deletes the specified file from the current component. Visual Basic Syntax deleteFile (file As RPFile) Arguments file The file to delete C/C++ Prototype HRESULT deleteFile (IRPFile* file) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 195 Rhapsody API Interfaces findConfiguration Read method Description The findConfiguration method retrieves the specified configuration in the current component. Visual Basic Syntax findConfiguration (name As String) As RPConfiguration Arguments name The name of the configuration to retrieve Return Value The Rhapsody configuration C/C++ Prototype HRESULT findConfiguration (BSTR name, IRPConfiguration** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 196 API Reference Manual Rhapsody Interfaces getConfigByDependency Used in cases where there are dependencies between components, this method retrieves the appropriate configuration to use in the component on which the current component depends. The argument required is the name of the dependency between the components. getFile Read method Description The getFile method returns the file in which the specified classifier will be generated. Visual Basic Syntax getFile (c As RPClassifier, spec As Long) As RPFile Arguments c The classifier. spec (1 or 0) If this is set to 1, the file is a specification file. Return Value The file in which the specified classifier is generated C/C++ Prototype HRESULT getFile (IRPClassifier* c, long spec, IRPFile** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 197 Rhapsody API Interfaces getFileName Read method Description The getFileName method retrieves the name of the file to which the specified classifier will be generated in this component. Visual Basic Syntax getFileName (c As RPClassifier, spec As Long, withExt As Long) As String Arguments c The classifier. spec (1 or 0) If this is set to 1, the file is a specification file. withExt (1 or 0) If this is set to 1, the file extension is included in the retrieval. Return Value The name of the file that contains the generated classifier C/C++ Prototype HRESULT getFileName (IRPClassifier* c, long spec, long withExt, BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 198 API Reference Manual Rhapsody Interfaces getModelElementFileName Read method Description The getModelElementFileName method gets the file name of the specified model element. Visual Basic Syntax getModelElementFileName (c As RPModelElement, long spec As Long, withExt As Long) As String Arguments c The model element. spec (1 or 0) If this is set to 1, this is a specification file. withExt (1 or 0) If this is set to 1, the extension is included in the returned file name. Return Value The file name C/C++ Prototype HRESULT getModelElementFileName (IRPModelElement *c, long spec, long withExt, BSTR *pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 199 Rhapsody API Interfaces getPackageFile Read method Description The getPackageFile method returns the package file. Visual Basic Syntax getPackageFile (c as RPPackage, spec As Long spec) As RPFile Arguments c The model element. spec (1 or 0) If this is set to 1, this is a specification file. Return Value The file name C/C++ Prototype HRESULT getPackageFile (IRPPackage* c, long spec, IRPFile** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 200 API Reference Manual Rhapsody Interfaces removeScopeElement Write method Description The removeScopeElement method deletes the scope element. Visual Basic Syntax removeScopeElement (pVal As RPModelElement) Arguments pVal The element to delete C/C++ Prototype HRESULT removeScopeElement (IRPModelElement* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 201 Rhapsody API Interfaces setPath Write method Description The setPath method sets the path of the application built for this component. Visual Basic Syntax setPath (path As String) Arguments path The path to which this component is built C/C++ Prototype HRESULT setPath (BSTR path) Return Value HRESULT (0 for success, or a signed integer error code) 202 API Reference Manual Rhapsody Interfaces IRPComponentDiagram Interface The IRPComponentDiagram interface represents a component diagram. It inherits from the IRPDiagram. Currently, IRPComponentDiagram does not expose additional functionality to the diagram. IRPComponentInstance Interface The IRPComponentInstance interface represents a component instance. It inherits from the IRPComponent. VB Properties Name Type componentType RPComponent RW The component type node RPNode RO The node Rational Rhapsody Access Description 203 Rhapsody API Interfaces IRPConfiguration Interface The IRPConfiguration interface represents a code generation configuration within a given IRPComponent. It inherits from IRPModelElement. VB Properties Name 204 Type Access Description additionalSources String RW The additional source files to be compiled with this configuration. allElementsIn InstrumentationScope Long RW A Boolean value that reflects the All Elements and Selected Elements options of the instrumentation scope. The property defines the following accessor and mutator: propget, HRESULT allElementsInInstrumentation-Scope ([out, retval] BOOL *pVal); propput, HRESULT allElementsInInstrumentation-Scope ([in] BOOL newVal); buildSet String RW The build set of this configuration (debug or release). compilerSwitches String RW The compiler switches to be applied to this configuration in addition to those already specified in property <lang>_CG::<env>:: CPPCompileSwitches. generateCodeForActors Boolean RW If this is TRUE, code is generated for actors when this configuration is generated. includePath String RW The path to standard headers to be linked with the configuration. initialInstances RPCollection RO The initial instances. API Reference Manual Rhapsody Interfaces Name Type Access Description initializationCode String RW The string containing the initialization code to be added to the main program after any initialization done by Rhapsody and before the main program loop. instrumentationScope RPCollection RW A container of elements in the selected instrumentation scope, if the All Elements option is selected. The property defines the following accessor: propget, HRESULT instrumentationScope( [out], retval] IRPCollection** pVal); instrumentationType String RW The type of instrumentation in this configuration (None, Trace, or Animate). libraries String RW The libraries to be linked with the component (for example, "x.lib, y.lib, z.lib"). linkSwitches String RW The link switches to be applied to the configuration in addition to those already specified in the property <lang>_CG::<env>:: LinkSwitches. path(fullPath) String(path) RO The string containing the path to the component.If fullPath is true, the full path is returned: <drive>:\ <model dir>\ <component dir>\ <config dir>) Boolean(fullPath) If fullPath is false, the path relative to the project is returned: <component dir>\ <config dir> scopeType Rational Rhapsody String RW The scope type of the configuration (explicit or derived). 205 Rhapsody API Interfaces Name Type Access Description standardHeaders String RW The standard header files to be linked with the configuration. statechartImplementation String RW The statechart implementation of the configuration (flat or reusable). timeModel String RW The time model of the configuration (real or simulated). Method Summary 206 addInitialInstance Adds an instance to the list of initial instances for the current configuration addPackageToInstrumentationScope Adds a classifier to the instrumentation scope addToInstrumentationScope Adds explicit initial instances to the instrumentation scope deleteInitialInstance Deletes an instance from the list of build instances for the current configuration getDirectory Retrieves the build directory specified for the current configuration getItsComponent Retrieves the component to which the current configuration belongs getMainName Retrieves the name of the file where the main() routine for the current configuration resides getMakefileName Retrieves the name of the makefile generated for the current configuration getTargetName Retrieves the build name of the file to be generated for the current configuration removeFromInstrumentationScope Removes the classifier from the instrumentation scope removePackageFromInstrumentationScope Removes the specified package from the instrumentation scope. including all its aggregated classes, actors, and nested packages setDirectory Sets the directory for the current configuration setItsComponent Sets the owning component for the current configuration API Reference Manual Rhapsody Interfaces addInitialInstance Write method Description The addInitialInstance method adds an instance to the list of initial instances for the current configuration. Visual Basic Syntax addInitialInstance (newVal As RPModelElement) Arguments newVal The new instance to add to list of initial instances for this configuration C/C++ Prototype HRESULT addInitialInstance (IRPModelElement* newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 207 Rhapsody API Interfaces addPackageToInstrumentationScope Write method Description The addPackageToInstrumentationScope method adds the specified package to the instrumentation scope, including all its aggregated classes, actors, and nested packages. Visual Basic Syntax addPackageToInstrumentationScope (pVal As RPPackage) Arguments pVal The package to add to the instrumentation scope C/C++ Prototype HRESULT addPackageToInstrumentationScope ( IRPPackage* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 208 API Reference Manual Rhapsody Interfaces addToInstrumentationScope Write method Description The addToInstrumentationScope method adds explicit initial instances to the instrumentation scope. Beginning with Version 5.0, Rhapsody 6.1 does not include explicit initial instances as part of the scope. In other words, in explicit mode, code is not generated for a class just because it is in the list of initial instances for the configuration. For existing models, Rhapsody 6.1 sets the CG::Configuration::AddExplicitInitialInstancesToScope property to True at the project level to maintain the old behavior. This change enables you to use the list of initial instances to create instances that their classes defined in related components (libraries). Visual Basic Syntax addToInstrumentationScope (pVal As RPClassifier) Arguments pVal The initial instance to add to the instrumentation scope C/C++ Prototype HRESULT addToInstrumentationScope ( IRPClassifier* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 209 Rhapsody API Interfaces deleteInitialInstance Write method Description The deleteInitialInstance method deletes an instance from the list of build instances for the current configuration. Visual Basic Syntax deleteInitialInstance (newVal As RPModelElement) Arguments NewVal The initial instance to delete from list of initial instances for this configuration C/C++ Prototype HRESULT deleteInitialInstance (IRPModelElement* newVal) Return Value HRESULT (0 for success, or a signed integer error code) 210 API Reference Manual Rhapsody Interfaces getDirectory Read method Description The getDirectory method retrieves the build directory specified for the current configuration. Visual Basic Syntax getDirectory (fullPath As Long, newName As String) As String Arguments fullPath If this is 1, the returned directory contains the full path. newName Reserved for future use. Return Value The build directory for the current configuration C/C++ Prototype HRESULT getDirectory (long fullPath, BSTR newName, BSTR* retVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 211 Rhapsody API Interfaces getItsComponent Read method Description The getItsComponent method retrieves the component to which the current configuration belongs. Visual Basic Syntax getItsComponent() As RPComponent Return Value The component to which this configuration belongs C/C++ Prototype HRESULT getItsComponent (IRPComponent** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 212 API Reference Manual Rhapsody Interfaces getMainName Read method Description The getMainName method retrieves the name of the file where the main() routine for the current configuration resides. Visual Basic Syntax getMainName() As String Return Value The location of the file that contains the main() C/C++ Prototype HRESULT getMainName (BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 213 Rhapsody API Interfaces getMakefileName Read method Description The getMakefileName method retrieves the name of the makefile generated for the current configuration. Visual Basic Syntax getMakefileName (fullPath As Long) As String Arguments fullPath Set this to one of the following values: 1--Return the full path. 0--Return the path relative to the project directory. Return Value The name of the makefile C/C++ Prototype HRESULT getMakefileName (long fullPath, BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 214 API Reference Manual Rhapsody Interfaces getTargetName Read method Description The getTargetName method retrieves the build name of the file to be generated for the current configuration. Visual Basic Syntax getTargetName (fullPath As Long) As String Arguments fullPath Set this to one of the following values: 1--Return the full path. 0--Return the path relative to the project directory. Return Value The name of the build file (for example, BuildName.exe or BuildName.lib) C/C++ Prototype HRESULT getTargetName (long fullPath, BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 215 Rhapsody API Interfaces removeFromInstrumentationScope Write method Description The removeFromInstrumentationScope method removes the classifier from the instrumentation scope. Visual Basic Syntax removeFromInstrumentationScope (pVal As RPClassifier) Arguments pVal The classifier to remove from the instrumentation scope C/C++ Prototype HRESULT removeFromInstrumentationScope ( IRPClassifier *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 216 API Reference Manual Rhapsody Interfaces removePackageFromInstrumentationScope Write method Description The removePackageFromInstrumentationScope method removes the specified package from the instrumentation scope. including all its aggregated classes, actors, and nested packages. Visual Basic Syntax removePackageFromInstrumentationScope (pVal As RPPackage) Arguments pVal The package to remove from the instrumentation scope C/C++ Prototype HRESULT removePackageFromInstrumentationScope ( IRPPackage* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 217 Rhapsody API Interfaces setDirectory Note Currently, this method has not been implemented. Write method Description The setDirectory method sets the directory for the current configuration. Visual Basic Syntax setDirectory (fullpath As Long, newName As String) Arguments fullpath (1 or 0) Set this to 1 to include the full directory path. newName The new name for the directory. C/C++ Prototype HRESULT setDirectory (long fullpath, BSTR newName) Return Value HRESULT (0 for success, or a signed integer error code) 218 API Reference Manual Rhapsody Interfaces setItsComponent Write method Description The setItsComponent method sets the owning component for the current configuration. Visual Basic Syntax setItsComponent (newVal As RPComponent) Arguments newVal The new owner component for this configuration C/C++ Prototype HRESULT setItsComponent (IRPComponent* newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 219 Rhapsody API Interfaces IRPConnector Interface The IRPConnector interface represents a connector in a statechart diagram. It inherits from IRPStateVertex. VB Properties Name connectorType Type String Access RW Description The connector type (Termination, History, Condition, Fork, Join, or Unknown) Method Summary 220 getDerivedInEdges Retrieves the incoming transitions for the connector getDerivedOutEdge Retrieves the outgoing transition for the connector getOfState Returns the state connected to the current connector if it is a history connector isConditionConnector Determines whether the current connector is a condition connector isDiagramConnector Determines whether the current connector is a diagram connector isForkConnector Determines whether the current connector is a fork synch bar connector isHistoryConnector Determines whether the current connector is a history connector isJoinConnector Determines whether the current connector is a join synch bar connector isJunctionConnector Determines whether the current connector is a junction connector isStubConnector Determines whether the current connector is a stub connector isTerminationConnector Determines whether the current connector is a termination connector setOfState Updates the source state of the current connector with a new state API Reference Manual Rhapsody Interfaces getDerivedInEdges Read method Description The getDerivedInEdges method retrieves the incoming transitions for the connector. Visual Basic Syntax getDerivedInEdges() As RPCollection Return Value The incoming transitions C/C++ Prototype HRESULT getDerivedInEdges (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 221 Rhapsody API Interfaces getDerivedOutEdge Read method Description The getDerivedOutEdge method retrieves the outgoing transition for the connector. Visual Basic Syntax getDerivedOutEdge() As Transition Return Value The outgoing transition C/C++ Prototype HRESULT getDerivedOutEdge (IRPTransition** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 222 API Reference Manual Rhapsody Interfaces getOfState Read method Description The getOfState method returns the state connected to the current connector if it is a history connector. This is the state for which the history connector maintains historical state information. Visual Basic Syntax getOfState() As RPState Return Value The state for which the history connector maintains state information C/C++ Prototype HRESULT getOfState (IRPState** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 223 Rhapsody API Interfaces isConditionConnector Read method Description The isConditionConnector method determines whether the current connector is a condition connector. Visual Basic Syntax isConditionConnector() As Long Return Value 1 if the connector is a condition connector; 0 otherwise C/C++ Prototype HRESULT isConditionConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 224 API Reference Manual Rhapsody Interfaces isDiagramConnector Read method Description The isDiagramConnector method determines whether the current connector is a diagram connector. Visual Basic Syntax isDiagramConnector() As Long Return Value 1 if the connector is a diagram connector; 0 otherwise C/C++ Prototype HRESULT isDiagramConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 225 Rhapsody API Interfaces isForkConnector Read method Description The isForkConnector method determines whether the current connector is a fork synch bar connector. Visual Basic Syntax isForkConnector() As Long Return Value 1 if the connector is a fork synch bar connector; 0 otherwise C/C++ Prototype HRESULT isForkConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 226 API Reference Manual Rhapsody Interfaces isHistoryConnector Read method Description The isHistoryConnector method determines whether the current connector is a history connector. Visual Basic Syntax isHistoryConnector() As Long Return Value 1 if the connector is a history connector; 0 otherwise C/C++ Prototype HRESULT isHistoryConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 227 Rhapsody API Interfaces isJoinConnector Read method Description The isJoinConnector method determines whether the current connector is a join synch bar connector. Visual Basic Syntax isJoinConnector() As Long Return Value 1 if the connector is a join synch bar connector; 0 otherwise C/C++ Prototype HRESULT isJoinConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 228 API Reference Manual Rhapsody Interfaces isJunctionConnector Read method Description The isJunctionConnector method determines whether the current connector is a junction connector. Visual Basic Syntax isJunctionConnector() As Long Return Value 1 if the connector is a junction connector; 0 otherwise C/C++ Prototype HRESULT isJunctionConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 229 Rhapsody API Interfaces isStubConnector Read method Description The isStubConnector method determines whether the current connector is a stub connector. Visual Basic Syntax isStubConnector() As Long Return Value 1 if the connector is a stub connector; 0 otherwise C/C++ Prototype HRESULT isStubConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isTerminationConnector Read method Description The isTerminationConnector method determines whether the current connector is a termination connector. Visual Basic Syntax isTerminationConnector() As Long Return Value 1 if the connector is a termination connector; 0 otherwise C/C++ Prototype HRESULT isTerminationConnector (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 230 API Reference Manual Rhapsody Interfaces setOfState Write method Description The setOfState method updates the source state of the current connector with a new state. Visual Basic Syntax setOfState (OfState As RPState) Arguments OfState The new source state for the connector C/C++ Prototype HRESULT setOfState (IRPState* OfState) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 231 Rhapsody API Interfaces IRPConstraint Interface The IRPConstraint interface represents a constraint in a Rhapsody model. It inherits from IRPAnnotation. VB Properties Name Type Access Description body String RW The body of the constraint. constraintsByMe Collection of RO The model elements affected by this constraint. RPModelElements For example, if a constraint says that each Airplane must have at least two Pilots, this collection will contain both the Airplane and Pilot classes. IRPControlledFile Represents controlled files. fullPathFileName Property that represents the full path of the file. open Method that can be used to open the controlled file. 232 API Reference Manual Rhapsody Interfaces IRPDependency Interface The IRPDependency interface represents the dependencies between model elements, for example, in terms of either an include or a friend relationship between classes. It inherits from IRPModelElement. VB Properties Name Type Access Description dependent RPModelElement RW The source element in the dependency relation dependsOn RPModelElement RW The target element in the dependency relation IRPDeploymentDiagram Interface The IRPDeploymentDiagram interface represents deployment diagrams. It inherits from IRPDiagram. IRPDiagram Interface The IRPDiagram interface is an abstract interface that provides the common functionality of Rhapsody diagrams. Currently, the functionality provided by IRPDiagram (in addition to IRPModelElement) is to render the view as a metafile. This class inherits from IRPUnit, because diagrams are also units. Method Summary getElementsInDiagram Returns a collection of all the model elements in the current diagram getPicture Renders this diagram into the specified extended metafile getPictureAs Saves a Rhapsody diagram in a specific graphic format. getPictureAsDividedMetafiles Enables you to split a large diagram into several metafiles when you export it Rational Rhapsody 233 Rhapsody API Interfaces getElementsInDiagram Read method Description The getElementsInDiagram method returns a collection of all the model elements in the current diagram. Visual Basic Syntax getElementsInDiagram() As RPCollection Return Value A collection of all the model elements in the diagram C/C++ Prototype HRESULT getElementsInDiagram (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) getPicture Read method Description The getPicture method renders this diagram into the specified extended metafile. Note: If the file cannot be written, this method flags the error. Visual Basic Syntax getPicture (filename As String) Arguments filename The name of the metafile that will contain the current diagram.The format of the created metafile is .emf. The created metafile is used later by the VB function LoadPicture, which creates a VB function object that can be used for placing pictures in documents. 234 API Reference Manual Rhapsody Interfaces C/C++ Prototype HRESULT getPicture (BSTR filename) Return Value HRESULT (0 for success, or a signed integer error code) getPictureAs This method can be used to save a Rhapsody diagram in a specific graphic format. The method can also be used to retrieve diagram element information that can be used to create an HTML image map. The method returns a list of the graphic files created. getPictureAs(firstFileName As String, imageFormat As String, getImageMaps As Long, diagrammap As RPCollection, fileNames As RPCollection) As RPCollection firstFileName The naming convention to use for the files that will be created. For a detailed explanation, see getPictureAsDividedMetafiles. imageFormat The graphic format in which the diagram should be saved. This can be one of the following: EMF, BMP, JPEG, JPG, TIFF. getImageMaps Use this argument to indicate whether the function should also return a collection of objects that can be used to construct an HTML image map for the diagram. (Use 1 if you want this information, else use 0.) diagrammap The collection to use when returning objects containing the required information for constructing an HTML image map. fileNames The collection to use for the names of the graphic files created. Rational Rhapsody 235 Rhapsody API Interfaces getPictureAsDividedMetafiles Read method Description The getPictureAsDividedMetafiles method enables you to split a large diagram into several metafiles when you export it. This method is influenced by the property General::Graphics::ExportedDiagramScale. See the definition provided for the property on the applicable Properties tab of the Features dialog box. Note: If the file cannot be written, this method flags the error. Visual Basic Syntax getPictureAsDividedMetafiles (firstFileName As String) As RPCollection Arguments firstFileName The naming convention for the created files. For example, if you passed the value “Foo” as the firstFileName: If the diagram can be drawn on one page, the name of the metafile is Foo. If the diagram is split into multiple pages, the first file will be named FooZ_X_Y. The variables used in the name are as follows: Z—The number of the created file X—The number of the page along the X vector Y—The number of the page along the Y vector For example, the file Foo2_1_2 means that this is the second metafile created and it contains one page, which is the second page along the Y vector (the X vector is 1). All the file names will be inserted in the sent strings list (fileNames). Return Value A collection that contains the names of the files that were created 236 API Reference Manual Rhapsody Interfaces C/C++ Prototype HRESULT getPictureAsDividedMetafiles ( [in] BSTR firstFileName, [out, retval] IRPCollection** fileNames) Return Value HRESULT (0 for success, or a signed integer error code) VBA Sample Private Sub CommandButton1_Click() Dim proj As RPProject Dim d As RPDiagram Dim col As RPCollection On Error GoTo aa Set proj = getProject Set d = proj.findNestedElementRecursive( "Dishwasher Cycle", "SequenceDiagram") Set col = d.getPictureAsDividedMetafiles( "D:\Temp\Diagram.emf") Exit Sub aa: MsgBox errorMessage End Sub Rational Rhapsody 237 Rhapsody API Interfaces IRPEnumerationLiteral Interface The IRPEnumerationLiteral interface supports the language-independent types introduced in Rhapsody 5.0. It inherits from IRPModelElement. VB Properties Name value 238 Type RPEvent Access RW Description An optional value for the literal API Reference Manual Rhapsody Interfaces IRPEvent Interface The IRPEvent interface represents an event. It derives from IRPInterfaceItem. VB Properties Name Type Access Description baseEvent RPEvent RW The pointer to the base event (if this event is inherited from it). superEvent RPEvent RW The pointer to the super event (if this event is inherited from it) As a read method, superEvent() provides the base event that an event was derived from. Thus, if event B is inherited from event A, B.superEvent() returns a pointer to A.As a write method, superEvent() inherits or reinherits an event from a new base (super) event. Thus, if you want event B to be inherited from A, set B.superEvent() = A. Rational Rhapsody 239 Rhapsody API Interfaces IRPEventReception Interface The IRPEventReception interface represents a relationship between a class and an event that is part of its interface. It derives from IRPInterfaceItem. Method Summary getEvent Returns the event for the current event reception that serves as part of the interface for a class getEvent Read method Description The getEvent method returns the event for the current event reception that serves as part of the interface for a class. Visual Basic Syntax getEvent() As RPEvent Return Value The RPEvent related to a class through the event reception interface C/C++ Prototype HRESULT getEvent (IRPEvent** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 240 API Reference Manual Rhapsody Interfaces IRPExecutionOccurrence Interface The IRPExecutionOccurrence interface represents an execution occurrence in a sequence diagram. It derives from IRPModelElement. VB Properties Name message Type RPMessage Access RO Description The start message for the execution occurrence IRPExternalCodeGenerator Interface The IRPExternalCodeGenerator interface is a dispatch interface that defines events that must be handled by the external code generator. The interface inherits from IDispatch. Using an External Code Generator Beginning with Version 4.1, you can integrate an external code generator with Rhapsody 6.1. The code generator application is loaded when Rhapsody 6.1 is loaded. This code generator should be a full-featured code generator that can generate all the model code. When you specify an external code generator, Rhapsody 6.1 does not generate any code. Rhapsody 6.1 in Ada uses an external code generator. You can set the environment variable ExternalGenerator in the [codegen] section of the rhapsody.ini file to the path of the external code generator executable. This executable will be loaded when Rhapsody 6.1 is loaded and terminates when Rhapsody 6.1 exits. If you do not set this environment variable, you must manually load your code generator after Rhapsody 6.1 is loaded. Note the following: This variable setting applies only to full-featured external code generators. If you do not load your external code generator, it cannot display messages in the Rhapsody 6.1 output window. In addition, you can integrate makefiles generated by a makefile generator other than the Rhapsody 6.1 generator; all other code generation is done by Rhapsody 6.1. Rational Rhapsody 241 Rhapsody API Interfaces Restrictions Note the following restrictions: Because the active code view uses the annotations generated by Rhapsody 6.1 to find the location of a model element in a source file, searching a file generated by an external code generator (unannotated) might not be accurate. There are other annotation issues concerning roundtrip and error highlighting. Therefore, the external code generator must generate annotations to make all of these features work properly. If you specify an external code generator, you cannot use the CG In Browser feature to generate code. You can integrate a single external code generator with one instance of a Rhapsody 6.1 application, running on the same machine. You can integrate an external code generator with Rhapsody 6.1 on a Solaris platform only if the client supports the COM framework. This functionality is supported only by Rhapsody 6.1 Developer Edition as a separate, add-on feature. Event Handling When you trigger code generator operations, Rhapsody 6.1 fires events that are handled by the registered, external code generator. The following table lists the different events and when they are fired. Event 242 When Fired generate When you invoke any kind of generation command (forced or incremental), for selected classifiers, files, or for the entire configuration. The invocation can be explicit or by DMCA. When called, the external code generator generates the elements according to the settings for the active configuration. This method is called with all model elements that need to be generated. Abort Is invoked when the user selects the Abort option during code generation. When the external code generator receives this event, it stops the code generation process and notifies Rhapsody 6.1 that it is done. getFileName Is invoked when Rhapsody 6.1 needs the file name and path of a model element. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the file name from the external code generator. Note that if the external code generator uses the same file mapping scheme as Rhapsody 6.1, you do not need to implement this event. API Reference Manual Rhapsody Interfaces Event When Fired GetMainFileName Is invoked when Rhapsody 6.1 needs the main file name and path for a configuration. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the file name from the external code generator. GetTargetfileName Is invoked when Rhapsody 6.1 needs the target name and path for a configuration. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the makefile name from the external code generator. Note that if the external code generator uses the same file mapping scheme as Rhapsody 6.1, you do not need to implement this event. WhoAmI Is invoked to identify the external code generator. Exit Is invoked before Rhapsody 6.1 exits. When the external code generator receives this event, it performs the necessary cleanup and terminates its process. Implementing the External Code Generator To implement an external code generator, follow these steps: 1. Implement the event handlers for the IRPExternalCodeGenerator events: Invoke the code generation process on another thread to return from the call to generate as soon as possible. Notify the IRPExternalCodeGeneratorInvoker when the generation session has ended. 2. Instantiate your event handler class when the external code generator is loaded. 3. Get the IRPApplication object. 4. Get the IRPExternalCodeGeneratorInvoker singleton from the IRPApplication interface. See the method getTheExternalCodeGeneratorInvoker for more information. 5. Register the implemented IRPExternalCodeGenerator as the external code generator on the IRPExternalCodeGeneratorInvoker interface. 6. Print code generation messages using standard output. For example: cout<<"Generating"<<class_name<<endl; 7. Terminate the external code generator process when Exit is called. Rational Rhapsody 243 Rhapsody API Interfaces Rhapsody Settings You must set the following environment variables and properties: Set the ExternalGenerator environment variable in the rhapsody.ini file to the path to the implemented code generator executable. See “Using an External Code Generator”for more information. Set the <lang>_CG::<Environment>::CodeGeneratorTool property for the configuration that should be generated with the external code generator. Set the <lang>_CG::Configuration::ExternalGenerationTimeout property with a reasonable time for an average class generation session. See the definition provided for the property on the applicable Properties tab of the Features dialog box. 244 API Reference Manual Rhapsody Interfaces Sample /////////////////////////////////////////////////////// // MyCodeGenerator.h: interface for the CMyCodeGenerator // class. ///////////////////////////////////////////////////////// ... class CMyCodeGenerator: public IDispEventImpl<1,CMyCodeGenerator, &DIID_IRPExternalCodeGenerator, &LIBID_rhapsody,1,0> { public: CMyCodeGenerator(); virtual ~CMyCodeGenerator(); void Register(); //event handlers HRESULT __stdcall Generate( IDispatch* configuration, IDispatch* classifiers,IDispatch* files, BOOL genMain,BOOL genMake); BSTR __stdcall WhoAmI(); BSTR __stdcall GetFileName(IDispatch* modelElement, IDispatch* configuration, int pathType, BOOL withExt); BSTR __stdcall GetTargetfileName(IDispatch* configuration, int pathType,BOOL withExt); BSTR __stdcall GetMainFileName( IDispatch* configuration, int pathType, BOOL withExt); BSTR __stdcall GetMakefileName( IDispatch* configuration, int pathType, BOOL withExt); VOID __stdcall OnExit(); VOID __stdcall Abort(); BEGIN_SINK_MAP(CMyCodeGenerator) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x1, Generate) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x2, OnExit) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x3, GetFileName) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x4, GetTargetfileName) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x5, GetMainFileName) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x6, GetMakefileName) SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x7, WhoAmI) Rational Rhapsody 245 Rhapsody API Interfaces SINK_ENTRY_EX(/*nID =*/ 1, DIID_IRPExternalCodeGenerator, /*dispid =*/ 0x8, Abort) END_SINK_MAP() ... Method Summary 246 Abort Is invoked when the user selects the Abort option during code generation Exit Is invoked before Rhapsody 6.1 exits generate Is invoked whenever a generation command of any kind is invoked getFileName Is invoked when Rhapsody 6.1 needs the file name and path of a model element GetMainFileName Is invoked when Rhapsody 6.1 needs the main file name and path for a configuration getMakefileName Is invoked when Rhapsody 6.1 needs the makefile name and path for a configuration GetTargetfileName Is invoked when Rhapsody 6.1 needs the target name and path for a configuration WhoAmI Is invoked to identify the external code generator API Reference Manual Rhapsody Interfaces Abort Description The Abort event is invoked when the user selects the Abort option during code generation. When the external code generator receives this event, it stops the code generation process and notifies Rhapsody 6.1 that it is done. Visual Basic Syntax Event Abort() C/C++ Prototype void Abort() Exit Description The Exit event is invoked before Rhapsody 6.1 exits. When the external code generator receives this event, it performs the necessary cleanup and terminates its process. Visual Basic Syntax Event Exit() C/C++ Prototype void Exit() Rational Rhapsody 247 Rhapsody API Interfaces generate Description The generate event is invoked whenever a generation command of any kind is invoked (including forced or incremental generation for selected classifiers; or files for the entire configuration either explicitly by the user or by DMCA). When called, the external code generator generates the elements according to the settings for the active configuration. Visual Basic Syntax Event generate (activeConfiguration As Object, classifiersCollection As Object, filesCollection As Object, generateMainFile As Long, generateMakefile As Long) Arguments activeConfiguration A pointer to the active configuration for this generation session. If this value is not NULL, configuration files (main and make) are generated. The external code generator queries the activeConfiguration for its RPConfiguration interface. classifiersCollection The container of classes and package interfaces to be generated. The container can be NULL if no classifiers need to be generated. Packages in this container are generated without their aggregates (the package’s classes). The external code generator queries the classifiersCollection for its RPCollection interface. filesCollection The container of file and folder interfaces (RPFiles) to be generated. The container can be NULL if no files need to be generated. Model elements that are mapped to a file or folder in the filesCollection container will be added to the classifiersCollection. Therefore, the external generator does not query the file for its mapped classifiers. However, the code generator does check the files for text elements. The external code generator queries the filesCollection for its RPCollection interface. generateMainFile (1 or 0) Set this to 1 to generate the main configuration files. generateMakefile (1 or 0) 248 API Reference Manual Rhapsody Interfaces Set this to 1 to generate the makefile for the configuration. C/C++ Prototype HRESULT generate (IDispatch* activeConfiguration, IDispatch* classifiersCollection, IDispatch* filesCollection, long generateMainFile, long generateMakefile) Return Value S_0K for success, or an error code. If an error occurs, code generation is aborted. Rational Rhapsody 249 Rhapsody API Interfaces getFileName Description The getFileName method is invoked when Rhapsody 6.1 needs the file name and path of a model element. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the file name from the external code generator. Note: If the external code generator uses the same file mapping scheme as Rhapsody 6.1, you do not need to implement this event. Visual Basic Syntax Event getFileName (modelElement As Object, configuration As Object, pathType As Long, withExtensions As Long) Arguments modelElement The model element whose name you want to retrieve. The model element can be a class, actor, package, event, or file. The external code generator queries the modelElement for its RPModelElement interface. configuration The configuration for which the file name is requested. The external code generator queries the configuration for its RPConfiguration interface. pathType The requested path format. The possible values are as follows: 1. Include the full path. For example: C:\Project\Component\Config\Class1.h 2. Include only the name of the file. For example: Class1.h 3. Include the path relative from the project directory. For example: Component\Config\Class1.h 4. Include the path relative from the active configuration to the requested file. 250 API Reference Manual Rhapsody Interfaces For example, if the file is located under C:\Project\Component\Subfolder\Class1.h, the includes the following path: Subfolder\Class1.h. external code generator withExtensions Specifies whether to include the extension in the returned file name. For example, Class1.h instead of Class1. Return Value The file names of the model elements, separated by commas. If there is more than one file in the list, Rhapsody 6.1 assumes that the first file is the specification file and the others are implementation files. C/C++ Prototype BSTR getFileName (IDispatch* modelElement, IDispatch* configuration, int pathType, long withExtensions) Rational Rhapsody 251 Rhapsody API Interfaces GetMainFileName Description The GetMainFileName method is invoked when Rhapsody 6.1 needs the main file name and path for a configuration. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the file name from the external code generator. Visual Basic Syntax Event GetMainFileName (configuration As Object, pathType As Long, withExtensions As Long) Arguments configuration The configuration for which the main file name is requested. The external code generator queries the configuration for its RPConfiguration interface. pathType The requested path format. The possible values are as follows: 1—Include the full path. For example: C:\Project\Component\Config\Class1.h 2—Include only the name of the file. For example: Class1.h 3—Include the path relative from the project directory. For example: Component\Config\Class1.h 4—Include the path relative from the active configuration to the requested file. For example, if the file is located under C:\Project\Component\Subfolder\Class1.h, the include the following path: Subfolder\Class1.h. external code generator will withExtensions Specifies whether to include the extension in the returned file name. For example, mainfile.cpp instead of mainfile. 252 API Reference Manual Rhapsody Interfaces Return Value The main file names of the model elements, separated by commas. If there is more than one file in the list, Rhapsody 6.1 assumes that the first file is the specification file and the second is the implementation file. C/C++ Prototype BSTR GetMainFileName (IDispatch* configuration, int pathType, long withExtensions) Rational Rhapsody 253 Rhapsody API Interfaces getMakefileName Description The getMakefileName method is invoked when Rhapsody 6.1 needs the makefile name and path for a configuration. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the makefile name from the external code generator. Visual Basic Syntax Event getMakefileName (configuration As Object, pathType As Long, withExtensions As Long) Arguments configuration The configuration for which the file name is requested. The external code generator queries the configuration for its RPConfiguration interface. pathType The requested path format. The possible values are as follows: 1—Include the full path. For example: C:\Project\Component\Config\Class1.h 2—Include only the name of the file. For example: Class1.h 3—Include the path relative from the project directory. For example: Component\Config\Class1.h 4—Include the path relative from the active configuration to the requested file. For example, if the file is located under C:\Project\Component\Subfolder\Class1.h, the include the following path: Subfolder\Class1.h. external code generator will withExtensions Specifies whether to include the extension in the returned file name. For example, makefile.mak instead of makefile. Return Value The name of the makefile 254 API Reference Manual Rhapsody Interfaces C/C++ Prototype BSTR getMakefileName (IDispatch* configuration, int pathType, long withExtensions) GetTargetfileName Description The GetTargetfileName method is invoked when Rhapsody 6.1 needs the target name and path for a configuration. If the event is not handled, Rhapsody 6.1 displays an error message stating that it could not get the makefile name from the external code generator. Note: If the external code generator uses the same file mapping scheme as Rhapsody 6.1, you do not need to implement this event. Visual Basic Syntax Event GetTargetfileName (configuration As Object, pathType As Long, withExtensions As Long) Arguments configuration The configuration for which the file name is requested. The external code generator queries the configuration for its RPConfiguration interface. pathType The requested path format. The possible values are as follows: 1—Include the full path. For example: C:\Project\Component\Config\Class1.h 2—Include only the name of the file. For example: Class1.h 3—Include the path relative from the project directory. For example: Component\Config\Class1.h 4—Include the path relative from the active configuration to the requested file. For example, if the file is located under C:\Project\Component\Subfolder\Class1.h, the include the following path: Subfolder\Class1.h. Rational Rhapsody external code generator will 255 Rhapsody API Interfaces withExtensions Specifies whether to include the extension in the returned file name. For example, target.exe instead of target. Return Value The name of the target file C/C++ Prototype BSTR GetTargetfileName (IDispatch* configuration, int pathType, long withExtensions) WhoAmI Description The WhoAmI event is invoked to identify the external code generator. Visual Basic Syntax Event WhoAmI() C/C++ Prototype BSTR WhoAmI() Return Value A string that identifies the name and version number of the external code generator. It is printed to the output window before the generate event is invoked. 256 API Reference Manual Rhapsody Interfaces IRPExternalCodeGeneratorInvoker Interface The IRPExternalCodeGeneratorInvoker is the interface that invokes the external code generator. The invoker is the object that fires all the events defined by the IRPExternalCodeGenerator interface. The external code generator registers the invoker instance to get events, and notifies the IRPExternalCodeGeneratorInvoker when a code generation session is over. This interface inherits from IDispatch. Method Summary notifyGenerationDone Rational Rhapsody Is called by the external code generator after a generation session invoked by the generate event is done 257 Rhapsody API Interfaces notifyGenerationDone Description The notifyGenerationDone method is called by the external code generator after a generation session invoked by the generate event is done. You cannot invoke a new code generation session or make any changes to the model between the call to the generate and notifyGenerationDone events. However, you can set the timeout period using the property <lang>_CG::Configuration::ExternalGenerationTimeout. See the definition provided for the property on the applicable Properties tab of the Features dialog box. Note: The external code generator must call this method after a code generation session (invoked by the generate event) was done or aborted (by the Abort event). Visual Basic Syntax notifyGenerationDone() C/C++ Prototype HRESULT notifyGenerationDone() Return Value HRESULT (0 for success, or a signed integer error code) 258 API Reference Manual Rhapsody Interfaces IRPFile Interface The IRPFile interface represents a file or folder to be generated during code generation. It inherits from IRPModelElement. VB Properties Name elements Type Collection of Access Description RO The elements to be mapped to the file or folder. RPClassifiers files Collection of RPFiles RO If fileType is “folder,” files is the collection of all files contained in that folder. fileType String RW The file type (“folder,” “implementation,” “specification,” “logical,” or “other”). path(fullPath) String(path) RO The string containing the path to the component.If fullPath is true, the full path is returned: Boolean( fullPath) <drive>:\ <model dir>\ <component dir>\ <config dir>) If fullPath is false, the path relative to the project is returned: <component dir>\ <config dir> Rational Rhapsody 259 Rhapsody API Interfaces Method Summary 260 addElement Adds an element to the current file addPackageToScope Adds the specified package to the scope of the file or folder addTextElement Adds text to the file addToScope Places an element within the scope of the current file or folder getImpName Retrieves the name of the current file’s implementation file, including its extension and, if specified, its relative path getSpecName Retrieves the name of the current file’s specification file, including its extension and, if specified, its relative path isEmpty Determines whether the current file is empty setPath Sets the path to the specified file API Reference Manual Rhapsody Interfaces addElement Write method Description The addElement method adds an element to the current file or folder. Visual Basic Syntax addElement (element As RPClassifier, fileFragmentType As String) Arguments element An RPClassifier that specifies the new element to be mapped to the current file. The possible values are as follows: Actors Classes Data Use cases fileFragmentType One of the following strings: undefFragment—The element is not defined. textFragment—The element is text. implFragment—The implementation of the element is added to the file. specFragment—The specification of the element is added to the file. moduleFragment—Both implementation and specification of the element are added to the file. C/C++ Prototype HRESULT addElement (IRPClassifier *element, BSTR fileFragmentType) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 261 Rhapsody API Interfaces addPackageToScope Write method Description The addPackageToScope method adds the specified package to the scope of the file or folder. Visual Basic Syntax addPackageToScope (p As RPPackage) Arguments p The package to add C/C++ Prototype HRESULT addPackageToScope (IRPPackage *p) Return Value HRESULT (0 for success, or a signed integer error code) 262 API Reference Manual Rhapsody Interfaces addTextElement Write method Description The addTextElement method adds text to the file. Visual Basic Syntax addTextElement (text As String) Arguments text The text to add to the file C/C++ Prototype HRESULT addTextElement (BSTR text) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 263 Rhapsody API Interfaces addToScope Write method Description The addToScope method places an element within the scope of the current file or folder. If the file represents a file, both the implementation and specification of the element are added to the file. If the file represents a folder, the element is added to the folder scope. Visual Basic Syntax addToScope (element As RPClassifier) Arguments element The element to place in the scope of the file C/C++ Prototype HRESULT addToScope (IRPClassifier *element) Return Value HRESULT (0 for success, or a signed integer error code) 264 API Reference Manual Rhapsody Interfaces getImpName Read method Description The getImpName method retrieves the name of the current file’s implementation file, including its extension and, if specified, its relative path. Visual Basic Syntax GetImpName (includingPath As Long) As String Arguments includingPath (1 or 0) Set this to 1 to include the relative path in the implementation file name. Return Value The name of the implementation file C/C++ Prototype HRESULT getImpName (long includingPath, BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 265 Rhapsody API Interfaces getSpecName Read method Description The getSpecName method retrieves the name of the current file’s specification file, including its extension and, if specified, its relative path. Visual Basic Syntax getSpecName (includingPath As Long) As String Arguments includingPath(1 or 0) Set this to 1 to include the relative path in the specification file name. Return Value The name of the specification file C/C++ Prototype HRESULT getSpecName (long includingPath, BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 266 API Reference Manual Rhapsody Interfaces isEmpty Read method Description The isEmpty method determines whether the current file is empty. Visual Basic Syntax IsEmpty() As Long Return Value 1 if the file is empty; otherwise 0 C/C++ Prototype HRESULT isEmpty (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 267 Rhapsody API Interfaces setPath Write method Description The setPath method sets the path to the specified file. Visual Basic Syntax setPath (path As String) Arguments path The file path C/C++ Prototype HRESULT setPath (BSTR path) Return Value HRESULT (0 for success, or a signed integer error code) 268 API Reference Manual Rhapsody Interfaces IRPFlow Interface The IRPFlow interface represents a flow. It inherits from IRPModelElement. VB Properties Name Type Access Description conveyed RPCollection RO A read-only collection of information elements conveyed by the flow. direction String RW A string specifying the direction of the flow. The possible values are: • toEnd1 • toEnd2 • bidirectional end1 RPModelElement RW An association to a model object that is one of the ends of the flow. end1Port RPPort RO Valid when end1 is an RPInstance that is connected via a port defined by the class of the instance. end2 RPModelElement RW An association to a model object that is one of the ends of the flow. end2Port RPPort RO Valid when end2 is an RPInstance that is connected via a port defined by the class of the instance. Method Summary addConveyed Adds an information element to the conveyed collection removeConveyed Removes an information element to the conveyed collection setEnd1ViaPort Connects end1 of the flow to the specified instance via the given port (defined by the instance class) setEnd2ViaPort Connects end2 of the flow to the specified instance via the given port (defined by the instance class) Rational Rhapsody 269 Rhapsody API Interfaces addConveyed Write method Description The addConveyed method adds an information element to the conveyed collection. Visual Basic Syntax addConveyed (pElement As RPModelElement) Arguments pElement The information element to add C/C++ Prototype HRESULT addConveyed (IRPModelElement* pElement) Return Value HRESULT (0 for success, or a signed integer error code) 270 API Reference Manual Rhapsody Interfaces removeConveyed Write method Description The removeConveyed method removes an information element from the conveyed collection. Visual Basic Syntax removeConveyed (pElement As RPModelElement) Arguments pElement The information element to remove C/C++ Prototype HRESULT removeConveyed (IRPModelElement* pElement) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 271 Rhapsody API Interfaces setEnd1ViaPort Write method Description The setEnd1ViaPort method connects end1 of the flow to the specified instance via the given port (defined by the instance class). Visual Basic Syntax setEnd1ViaPort (pInstance As RPInstance, pPort As RPPort) Arguments pInstance The instance to which to connect end1 of the flow pPort The port used to connect end1 of the flow to pInstance C/C++ Prototype HRESULT setEnd1ViaPort (IRPInstance* pInstance, IRPModelElement* pPort) Return Value HRESULT (0 for success, or a signed integer error code) 272 API Reference Manual Rhapsody Interfaces setEnd2ViaPort Write method Description The setEnd2ViaPort method connects end2 of the flow to the specified instance via the given port (defined by the instance class). Visual Basic Syntax setEnd2ViaPort (pInstance As RPInstance, pPort As RPPort) Arguments pInstance The instance to which to connect end2 of the flow pPort The port used to connect end2 of the flow to pInstance C/C++ Prototype HRESULT setEnd2ViaPort (IRPInstance* pInstance, IRPModelElement* pPort) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 273 Rhapsody API Interfaces IRPFlowchart Interface The IRPFlowchart interface represents an activity diagram (formerly referred to as a flowchart). It inherits from IRPStatechart. VB Properties Name Type Access Description isAnalysisOnly Long RW If this is set to 1 (as opposed to 0), this IRPFlowchart is for analysis only. itsOwner RPOperation RW The operation that owns this activity diagram swimlanes RPCollection RO The collection of swimlanes in the activity diagram Method Summary 274 addReferenceActivity Adds a reference activity to the activity diagram addSwimlane Adds a swimlane to the activity diagram API Reference Manual Rhapsody Interfaces addReferenceActivity Note Currently, this method has not been implemented. Write method Description The addReferenceActivity method adds the specified reference activity to the activity diagram. Visual Basic Syntax addReferenceActivity (referenced As RPModelElement) As RPState Arguments referenced The referenced activity or activity chart Return Value The new reference activity C/C++ Prototype HRESULT addReferenceActivity ( IRPModelElement* referenced, IRPState** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 275 Rhapsody API Interfaces addSwimlane Note Currently, this method has not been implemented. Write method Description The addSwimlane method adds the specified swimlane to the activity diagram. Visual Basic Syntax addSwimlane (name As String) As RPSwimlane Arguments name The name for the new swimlane Return Value The new RPSwimlane C/C++ Prototype HRESULT addSwimlane (BSTR name, IRPSwimlane** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 276 API Reference Manual Rhapsody Interfaces IRPFlowItem Interface The IRPFlowItem interface represents a flowItem. It inherits from IRPClassifier. IRPFlowItem is a limited classifier (it cannot own attributes, operations, types, and so on), but the interface does support generalization. VB Properties Name represented Type Collection of Access RO RPFlowItems Description A read-only collection of flow items represented by the flowItem Method Summary addRepresented Adds a flowItem to the represented collection removeRepresented Removes a flowItem from the represented collection Rational Rhapsody 277 Rhapsody API Interfaces addRepresented Write method Description The addRepresented method adds a flowItem to the represented collection. Visual Basic Syntax addRepresented (pElement As RPModelElement) Arguments pElement The flow item to add C/C++ Prototype HRESULT addRepresented (IRPModelElement* pElement) Return Value HRESULT (0 for success, or a signed integer error code) 278 API Reference Manual Rhapsody Interfaces removeRepresented Write method Description The removeRepresented method removes a flowItem from the represented collection. Visual Basic Syntax removeRepresented (pElement As RPModelElement) Arguments pElement The flow item to remove C/C++ Prototype HRESULT removeRepresented (IRPModelElement* pElement) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 279 Rhapsody API Interfaces IRPGeneralization Interface The IRPGeneralization interface represents an inheritance relation between two classifiers (class/use case/actor). It inherits from IRPModelElement. VB Properties Name Type Access Description baseClass RPClassifier RW The base class of the generalization derivedClass RPClassifier RW The derived class of the generalization extensionPoint String RW The extension point isVirtual Long RO A flag that indicates whether the generalization is virtual visibility String RO The visibility of the generalization (public, protected, or private) The baseClass and derivedClass properties allow write access to update the generalization. For example, if class C is derived from class A and you want to derive it from class B instead, follow these steps: C.getGeneralization.baseClass = B Here, getGeneralization is used as pseudo-operation shorthand for the procedure involved in actually obtaining a Generalization object from a class. Similarly, if class C is derived from A and you want to derive it from B instead, follow these steps: B.getGeneralization.derivedClass = C 280 API Reference Manual Rhapsody Interfaces IRPGraphEdge Interface The IRPGraphEdge interface represents a linear element of a diagram, such as a transition. It represents the UML GraphEdge class. IRPGraphEdge inherits from IRPGraphElement. VB Properties Name Type Access Description source RPGraphNode RO The point at which the edge is connected to the source target RPGraphNode RO The point at which the edge is connected to the target IRPGraphElement Interface The IRPGraphElement interface is the base for all graphical elements on a diagram. It represents the UML Interchange GraphElement class. IRPGraphElement inherits from IRPDispatch. VB Properties Name Type Access Description graphicalParent RPGraphElement RO The owning object modelObject RPModelElement RO The graphical object Method Summary getAllGraphicalProperties Returns the list of graphical properties for a diagram element getGraphicalProperty Returns the specified graphical property for a diagram element setGraphicalProperty Allows the setting of graphical properties for a diagram element Rational Rhapsody 281 Rhapsody API Interfaces getAllGraphicalProperties Read method Description The getAllGraphicalProperties method returns the list of graphical properties for a diagram element. Visual Basic Syntax getAllGraphicalProperties() As RPCollection Return Value An RPCollection that contains the read-only list of graphical properties C/C++ Prototype HRESULT getAllGraphicalProperties (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 282 API Reference Manual Rhapsody Interfaces getGraphicalProperty Read method Description The getGraphicalProperty method returns the value of the specified graphical property for a diagram element. Visual Basic Syntax getGraphicalProperty(name As String) As RPGraphicalProperty Arguments name The name of the property whose value you want to retrieve (note that only the actual property name is required here, there is no need to specify the hierarchy, as is the case with getPropertyValue) Return Value The value of the specified property, or null if the specified key is unsupported or invalid C/C++ Prototype HRESULT getGraphicalProperty (BSTR name, IRPGraphicalProperty **pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 283 Rhapsody API Interfaces setGraphicalProperty Write method Description The setGraphicalProperty method allows the setting of graphical properties for a diagram element. Visual Basic Syntax setGraphicalProperty(name As String, value As String) Arguments name The name of the graphical property whose value you want to set (note that only the actual property name is required here; there is no need to specify the hierarchy, as is the case with setPropertyValue) value The value of the specified graphical property C/C++ Prototype HRESULT setGraphicalProperty([in] BSTR name, [in] BSTR value) Return Value HRESULT (0 for success, or a signed integer error code) VBA Sample Dim Set Dim Dim Dim Dim Dim Dim Dim proj As RPProject d = proj.addNewAggr(“ObjectModelDiagram”, “MyDiagram”) m As RPModelElement n1 As RPGraphNode n2 As RPGraphNode e As RPGraphEdge c1 As RPClass c2 As RPClass gp As RPGraphicalProperty On Error GoTo aa Set Set Set Set proj = getProject d = proj.addNewAggr(“ObjectModelDiagram”, “MyDiagram”) m = proj.findNestedElementRecursive("C", "Class") c1 = m ' Add node for existing element 284 API Reference Manual Rhapsody Interfaces Set n1 = d.AddNewNodeForElement(m, 10, 20, 50, 50) Call n1.setGraphicalProperty("LineColor", "155.230.100") ' Add node with new element Set n2 = d.AddNewNodeByType("Class", 110, 120, 50, 50) Set c2 = n2.modelObject c2.name = "D" ' Add edge for new dependency Set e = d.AddNewEdgeByType("Dependency", n1, 60, 60, n2, 130, 140) Set gp = e.getGraphicalProperty("LineStyle") MsgBox gp.value Exit Sub aa: MsgBox errorMessage Rational Rhapsody 285 Rhapsody API Interfaces IRPGraphicalProperty Interface The IRPGraphicalProperty interface represents a graphical elements on a diagram. It inherits from IRPDispatch. VB Properties Name Type Access Description key String RO The name of the property value String RO The property value IRPGraphNode Interface The IRPGraphNode interface represents either a boxed element (for example, a class box) or a point element (for example, a connector) in a diagram. It represents the UML GraphNode class. IRPGraphNode inherits from IRPGraphElement. IRPGuard Interface The IRPGuard interface represents the guard of a transition in a statechart diagram. It inherits from IRPModelElement. VB Properties Name body 286 Type String Access RW Description The body of the guard API Reference Manual Rhapsody Interfaces IRPHyperLink Interface The IRPHyperLink interface enables you to read the attributes of hyperlink objects. Note: You cannot create or modify hyperlinks using the COM API. VB Properties Name Type Access Description target RPModelElement RW The target for the hyperlink URL String RW The URL for the hyperlink Method Summary getDisplayOption Returns the display option (free text, target name, target label, or tag value) for the hyperlink setDisplayOption Sets the display option (free text, target name, target label, or tag value) for the hyperlink Rational Rhapsody 287 Rhapsody API Interfaces getDisplayOption Read method Description The getDisplayOption method returns the display option (free text, target name, target label, or tag value) for the hyperlink. Visual Basic Syntax getDisplayOption (pVal As HYPNameType, [pDisplayName As String]) Arguments pVal The hyperlink Return Value A string that represents the display option for the hyperlink C/C++ Prototype HRESULT getDisplayOption (HYPNameType* pVal, BSTR *pDisplayName) Return Value HRESULT (0 for success, or a signed integer error code) 288 API Reference Manual Rhapsody Interfaces setDisplayOption Write method Description The setDisplayOption method sets the display option (free text, target name, target label, or tag value) for the hyperlink. Visual Basic Syntax setDisplayOption (pVal As HYPNameType, [pDisplayName AsString]) Arguments pVal The hyperlink pDisplayName The display type (free text, target name, target label, or tag value) C/C++ Prototype HRESULT setDisplayOption (HYPNameType* pVal, BSTR *pDisplayName) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 289 Rhapsody API Interfaces IRPImageMap Represents diagram element information that can be used to build an HTML image map for the diagram. IRPDiagram's getPictureAs method returns a collection of objects of this type. interfaceName This property is for future use. isGUID Indicates whether the target property is the GUID of the element. name Name of the element. pictureFileName Name of the image file. points String that represents the bounding rectangle for the element in the Rhapsody diagram (for example, "10,10,206,10,206,151,10,151"). shape This property is for future use. target Target for the image map entry. 290 API Reference Manual Rhapsody Interfaces IRPInstance Interface The IRPInstance interface represents an instance. It is derived from IRPRelation, because the instance is a relation between an owner and some class. VB Properties Name instantiatedBy Type RPOperation Access RW Description The constructor used to create the instance, as defined by the user within the instance features dialog box Method Summary getInLinks Retrieves the list of incoming links getListOfInitializerArguments Retrieves the list of initializer arguments getOutLinks Retrieves the list of outgoing links setInitializerArgumentValue Sets the value of the initializer argument Rational Rhapsody 291 Rhapsody API Interfaces getInLinks Read method Description The getInLinks method returns the list of links for which the instance is the target instance (identified by the “to” property of the link). Visual Basic Syntax getInLinks() As RPCollection Return Value An RPCollection that contains the read-only list of incoming links C/C++ Prototype HRESULT getInLinks (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 292 API Reference Manual Rhapsody Interfaces getListOfInitializerArguments Read method Description The getListOfInitializerArguments method returns the list of arguments for the initializer, as defined by the user in the instance features dialog box. Visual Basic Syntax getListOfInitializerArguments() As RPCollection Return Value An RPCollection that contains the values of the arguments passed to the initializer. This list is a read-only list of strings. C/C++ Prototype HRESULT getListOfInitializerArguments( IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 293 Rhapsody API Interfaces getOutLinks Read method Description The getOutLinks method returns the list of links for which the instance is the source instance (identified by the “from” property of the link). Visual Basic Syntax getOutLinks() As RPCollection Return Value An RPCollection that contains the read-only list of outgoing links C/C++ Prototype HRESULT getOutLinks (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 294 API Reference Manual Rhapsody Interfaces setInitializerArgumentValue Write method Description The setInitializerArgumentValue method sets the value of the initializer argument. Visual Basic Syntax setInitializerArgumentValue(argName As String, argValue as String) Arguments argName The name of the initializer argument argValue The initial value of the initializer argument C/C++ Prototype HRESULT setInitializerArgumentValue (BSTR argName, BSTR argValue) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 295 Rhapsody API Interfaces IRPInteractionOccurrence Interface The IRPInteractionOccurrence interface represents an interaction occurrence (reference sequence diagram). It derives from IRPModelElement. VB Properties Name 296 Type Access Description messagePoints RPCollection RO The message points of the referenced sequence diagram referenceSequenceDiagram RPSequenceDiagram RW The sequence diagram being referenced API Reference Manual Rhapsody Interfaces IRPInterfaceItem Interface The IRPInterfaceItem interface represents the commonality of class interface elements. It derives from IRPModelElement. VB Properties Name arguments Type Collection of Access RO The arguments of this operation or event RO The signature of this operation. For example: RPArguments signature String Description "f(int x, char *y)" Method Summary addArgument Adds an argument for the operation to the end of its argument list addArgumentBeforePosition Adds an argument for the operation at the specified position in its argument list getSignatureNoArgNames Retrieves the signature of the current class interface element without argument names getSignatureNoArgTypes Retrieves the signature of the current class interface element without argument types matchOnSignature Determines whether the signature of the current class interface element matches that of another IRPInterfaceItem Rational Rhapsody 297 Rhapsody API Interfaces addArgument Write method Description The addArgument method adds an argument for the operation to the end of its argument list. Visual Basic Syntax addArgument (newVal As String) As RPArgument Arguments NewVal The new argument to append to the argument list Return Value The new argument added to the argument list C/C++ Prototype HRESULT addArgument (BSTR newVal, IRPArgument** argument) Return Value HRESULT (0 for success, or a signed integer error code) 298 API Reference Manual Rhapsody Interfaces addArgumentBeforePosition Write method Description The addArgumentBeforePosition method adds an argument for the operation at the specified position in its argument list. Visual Basic Syntax addArgumentBeforePosition (newVal As String, pos As Long) As RPArgument Arguments newVal The new argument to add to the argument list pos A long that represents the position of the argument in argument list (1,2,3,…n; left to right) Return Value The new argument added to the argument list C/C++ Prototype HRESULT addArgumentBeforePosition (BSTR newVal, long pos, IRPArgument** argument) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 299 Rhapsody API Interfaces getSignatureNoArgNames Read method Description The getSignatureNoArgNames method retrieves the signature of the current class interface element without argument names. Visual Basic Syntax getSignatureNoArgNames() As String Return Value The signature of the element without argument names. For example: f(string,int) C/C++ Prototype HRESULT getSignatureNoArgNames (BSTR *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 300 API Reference Manual Rhapsody Interfaces getSignatureNoArgTypes Read method Description The getSignatureNoArgTypes method retrieves the signature of the current class interface element without argument types. Visual Basic Syntax getSignatureNoArgTypes() As String Return Value The signature of the element without argument types. For example: f(x,y) C/C++ Prototype HRESULT getSignatureNoArgTypes (BSTR *pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 301 Rhapsody API Interfaces matchOnSignature Read method Description The matchOnSignature method determines whether the signature of the current class interface element matches that of another IRPInterfaceItem. Visual Basic Syntax matchOnSignature (item As RPInterfaceItem) As Long Arguments item A pointer to the RPInterfaceItem whose signature is being compared to that of the current interface item Return Value 1 if the two signatures match; otherwise 0 C/C++ Prototype HRESULT matchOnSignature (IRPInterfaceItem* item, long *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 302 API Reference Manual Rhapsody Interfaces IRPLink Interface The IRPLink interface represents a link-end that instantiates a relation. It inherits from IRPModelElement. VB Properties Name Type Access Description end1Multiplicity String RW The multiplicity of the first end of the link end1Name String RW The name of the first end of the link end2Multiplicity String RW The multiplicity of the second end of the link end2Name String RW The name of the second end of the link from RPInstance RO The source instance of the link. instantiates RPRelation RO The association the link instantiates. other RPLink RO The pair link. In most cases, this property is redundant. to RPInstance RO The target instance of the link. Rational Rhapsody 303 Rhapsody API Interfaces IRPMessage Interface The IRPMessage interface represents a message sent between two classifier roles in a collaboration. It inherits from IRPModelElement. VB Properties Name Type Access Description actualParameterList String RO A collection of strings that contain parameters. communication Connection RPAssocationRole RO The communication connection. This is always NULL for sequence diagrams. condition Cstring RO This is meaningful only if the message is of type “condition”. formalInterfaceItem RPInterfaceItem RO This can be NULL for timeouts or “default” for CTOR, DTOR, and nonspecified methods. messageType Cstring RO The message type (constructor, destructor, event, operation, triggered, timeout, cancelled timeout, condition, or unspecified). returnValue Cstring RO The name of the element that receives the return value. sequenceNumber Cstring RO The number or position in an ordered list. For sequence diagrams, Rhapsody deduces the number. source RPClassifierRole RO Specifies who sent the message. target RPClassifierRole RO Specifies who received the message. timerValue String RO The timer value Method Summary getSignature 304 Retrieves the prototype of the IRPMessage API Reference Manual Rhapsody Interfaces getSignature Read method Description The getSignature method retrieves the prototype of the IRPMessage. Visual Basic Syntax getSignature () As String Return Value The signature C/C++ Prototype HRESULT getSignature (BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 305 Rhapsody API Interfaces IRPMessagePoint Interface The IRPMessagePoint interface represents an event in a sequence diagram. It inherits from IRPModelElement. Note that in a collaboration diagram, all events are send/receive pairs with nothing in between them. VB Properties Name Type Access Description message RPMessage RO The message that the current event refers to type String RO “Send' or “receive” Method Summary getClassifierRole 306 Retrieves the classifier role for this message point API Reference Manual Rhapsody Interfaces getClassifierRole Read method Description The getClassifierRole method retrieves the classifier role for this message point. This is the classifier role (object) that received this event and sent back a return message. Visual Basic Syntax getClassifierRole() As RPClassifierRole Return Value The RPClassifierRole on which the message occurred C/C++ Prototype HRESULT getClassifierRole ( IRPClassifierRole** classifierRole) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 307 Rhapsody API Interfaces IRPModelElement Interface The IRPModelElement interface is the base abstract interface for all Rhapsody 6.1 metamodel elements. It consists of all the common functionality shared by all the elements in the model (except for the Application class). It acts as an abstract interface. VB Properties Name annotations Type Collection of Access RO The annotations that belong to this model element. RPAnnotations associationClasses Collection of IRPAssociationClass es RO The association classes connected to this model element. constraints Collection of RO The constraints that belong to this model element. RO The constraints that affect this model element. RO The model elements on which this model element depends. RPConstraints constraintsByHim Collection of IRPConstraints dependencies Collection of RPDependency 308 Description description String RW The description of this model element. descriptionHTML String RW The description of the model element in HTML format. descriptionRTF String RW The description of the model element in RTF format. displayName String RW The display name. GUID String RW The GUID value. hyperLinks Collection of IRPHyperLink-s RO The hyperlinks added to an element. isOfMetaclass (metaclass) Long RO This is equal to 1 (as opposed to 0) if the current model element is a member of this metaclass. Requires the string metaclass. isShowDisplayName Long RW Specifies whether to show the display name. API Reference Manual Rhapsody Interfaces Name Type Access Description mainDiagram RPDiagram RW The main diagram of this element. Currently, this property is valid only for classes, packages, actors, and use cases. metaClass String RO The metaclass of this model element. name String RW The name of this model element. ofTemplate RPModelElement RW If the model element is an instantiation, this method will return the template used to instantiate it. owner RPModelElement RW The object in which this model element is defined. You can use this property to establish ownership. For example, suppose c is a class and p is a package: Dim c as RPClass Dim p as RPPackage set c = ... set p = ... c.owner = p This will work for any two objects where one can contain the other. project RPProject RO The project that owns this element. requirementTraceability Handle long RW The handle to this model element used by requirement traceability tools. stereotype RPStereotype RW The stereotype attached to this model element. templateParameters Collection of RO If this model element is a template, the method returns the template’s parameters. RPTemplate Parameter Rational Rhapsody 309 Rhapsody API Interfaces Name ti Type RPTemplate Instantiation Access RW Description If this model element is a template, it instantiates the template into a class as follows: 1. Create a class c. 2. Create a template instantiation, theTi. 3. Connect the new class with the template instantiation: c.ti = theTi Method Summary 310 addDependency Adds a dependency relationship to the specified object addDependencyTo Creates a new dependency between two objects addNewAggr Used to add a new model element to the current element, for example, adding a class to a package addProperty Adds a new property/value pair for the current element addStereotype Adds a stereotype relationship to the specified object becomeTemplateInstantiationOf Creates a template instantiation of another template (of another template class) clone Clones the element deleteDependency Deletes a dependency deleteFromProject Deletes the current model element from the project open in Rhapsody 6.1 errorMessage Returns the most recent error message findElementsByFullName Searches for the specified element findNestedElement Retrieves the specified element nested in a model element findNestedElementRecursive Retrieves the specified element from a given model element at any level of nesting within that element getErrorMessage Returns the most recent error message API Reference Manual Rhapsody Interfaces getFullPathName Retrieves the full path name of a model element as a string getFullPathNameIn Retrieves the full path name of a model element as a string getNestedElements Retrieves the elements defined in the current object getNestedElementsRecursive Recursively retrieves the elements defined in the model element for the object and for objects defined in it getOverriddenProperties Retrieves the list of properties whose default values have been overridden getPropertyValue Returns the value associated with the specified key value getPropertyValueExplicit Returns an explicit value if it has been assigned to the metamodel getTag Returns the tag for the specified model element HighLightElement Highlights the current model element openFeaturesDialog Displays the information for an element in the Features dialog. Depending on parameter provided, opens new dialog or uses an already-open dialog. removeProperty Removes the property from the model element removeStereotype Removes the stereotype setPropertyValue Modifies the value of the specified property setTagValue Assigns the specified tag to the model element synchronizeTemplateInstantiation Is used to synchronize between a template and a template instantiation parameter Rational Rhapsody 311 Rhapsody API Interfaces addDependency Write method Description The addDependency method adds a dependency relationship to the specified object. Visual Basic Syntax addDependency (dependsOnName As String, dependsOnType As String) As RPDependency Arguments dependsOnName The name of the object that this element depends on dependsOnType The type of object that this element depends on Return Value The newly created dependency C/C++ Prototype HRESULT addDependency (BSTR dependsOnName, BSTR dependsOnType, IRPDependency** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 312 API Reference Manual Rhapsody Interfaces addDependencyTo Write method Description The addDependencyTo method creates a new dependency relationship between two objects. Visual Basic Syntax addDependencyTo (element As RPModelElement) As RPDependency Arguments element The name of the object that the current object depends on Return Value The newly created dependency C/C++ Prototype HRESULT addDependencyTo (IRPModelElement* element, IRPDependency** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 313 Rhapsody API Interfaces addNewAggr Write method Description The addNewAggr method is used to add a new model element to the current element, for example, adding a new class to a package or adding a new diagram to a project. Visual Basic Syntax addNewAggr (metaType As String, name As String) As RPModelElement Arguments metaType The type of element to add (the string to use is the name of the appropriate metaclass). Note The list of metaclass names that can be used for this argument can be found in the file metaclasses.txt in the Doc directory of your Rhapsody installation. name The name to use for the new element Return Value The newly created element C/C++ Prototype HRESULT addNewAggr (BSTR metaType, BSTR name, IRPModelElement** newObject) Return Value HRESULT (0 for success, or a signed integer error code) Example Set proj = getProject Set d = proj.addNewAggr(“ObjectModelDiagram”, “MyDiagram”) 314 API Reference Manual Rhapsody Interfaces addProperty Write method Description The addProperty method adds a new property/value pair for the current element. This method is capable of flagging an error. For more information, see Error Handling Visual Basic Syntax addProperty (propertyKey As String, propertyType As String, propertyValue As String) Arguments propertyKey The name of the new property. propertyType The property type. The possible values are as follows: Int String Enum, <xxx>, <yyy>, <zzz> (i.e., Enum, followed by each of the defined values, for example: Enum,No,Prefix,Suffix) Bool propertyValue The default value of the new property. C/C++ Prototype HRESULT addProperty (BSTR propertyKey, BSTR propertyType, BSTR propertyValue) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 315 Rhapsody API Interfaces addStereotype Write method Description The addStereotype method adds a stereotype relationship to the specified object. Visual Basic Syntax addStereotype (name As String, metaType As String) As RPStereotype Arguments name The name of the object in the new stereotype relationship metaType The type of the object in the new stereotype relationship Return Value The newly created stereotype relationship C/C++ Prototype HRESULT addStereotype (BSTR name, BSTR metaType, IRPStereotype** stereotype) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addNetwork(c As RPClass) Dim o As RPOperation c.addOperation ("serialize") c.addOperation ("unserialize") c.addConstructor ("") On Error Resume Next c.addDestructor ("") x = c.addStereotype("G3Network", "Class") End Sub 316 API Reference Manual Rhapsody Interfaces becomeTemplateInstantiationOf Write method Description The becomeTemplateInstantiationOf method creates a template instantiation of another template (of another template class). Visual Basic Syntax becomeTemplateInstantiationOf (newVal As RPModelElement) Arguments newVal The template object that the template is an instantiation of C/C++ Prototype HRESULT becomeTemplateInstantiationOf ( IRPModelElement *newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 317 Rhapsody API Interfaces clone Write method Description The clone method clones the element, names it, and adds it to the new owner. Visual Basic Syntax clone (name As String, newOwner As RPModelElement) As RPModelElement Arguments name The name to use for the cloned element newOwner The new owner of the cloned element C/C++ Prototype HRESULT clone (BSTR string, IRPModelElement *newOwner, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 318 API Reference Manual Rhapsody Interfaces deleteDependency Write method Description The deleteDependency method deletes a dependency. Visual Basic Syntax deleteDependency (dependency As RPDependency) Arguments dependency The dependency to delete C/C++ Prototype HRESULT deleteDependency (IRPDependency* dependency) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 319 Rhapsody API Interfaces deleteFromProject Write method Description The deleteFromProject method deletes the current model element from the project open in Rhapsody 6.1. Visual Basic Syntax deleteFromProject() C/C++ Prototype HRESULT deleteFromProject() Return Value HRESULT (0 for success, or a signed integer error code) 320 API Reference Manual Rhapsody Interfaces errorMessage Read method Description The errorMessage method returns the most recent error message. Visual Basic Syntax errorMessage() As String Return Value The most recent error message (a string) C/C++ Prototype HRESULT errorMessage (BSTR* __MIDL_0020) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 321 Rhapsody API Interfaces findElementsByFullName Read method Description The findElementsByFullName method searches for the specified element. Visual Basic Syntax findElementsByFullName (name As String, metaClass As String) As RPModelElement Arguments name The name of the element to look for metaClass The element’s metaclass Return Value The specified element C/C++ Prototype HRESULT findElementsByFullName (BSTR name, BSTR metaClass, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Suppose you have a class A, under package P. The following VBA code will find this class using the findElementsByFullName API call: Dim proj As RPProject Dim m As RPModelElement Set proj = getProject Set m = proj.findElementsByFullName("A in P", "Class") MsgBox m.name Note This method requires that you use the “full” notation, e.g., “A in P”. Otherwise, the method will not return the specified element. 322 API Reference Manual Rhapsody Interfaces findNestedElement Read method Description The findNestedElement method retrieves the specified element nested in a model element. For example, if x is of type IRPModelElement (or a type inherited from it), the following call returns an attribute of x named A (or null if there is no such element: x.findNestedElement(‘A’,’Attribute’) Visual Basic Syntax findNestedElement (name As String, metaClass As String) As RPModelElement Arguments name The name of the element metaClass The name of the metaclass Return Value If found, the retrieved RPModelElement; otherwise, NULL C/C++ Prototype HRESULT findNestedElement (BSTR name, BSTR metaClass, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example Sub addUi(c As RPClass) Dim x As Object Dim p As RPPackage Dim theClass As RPClass 'all gui objects are derived from GUI.UIBase c.Description = "gui class" On Error Resume Next Set p = pr.findNestedElement("GUI", "Package") Set theClass = p.findNestedElement("UIBase", "Class") c.addGeneralization theClass If Not Err.Number = 0 Then Rational Rhapsody 323 Rhapsody API Interfaces MsgBox (errorMessage) End If c.addStereotype "G3UI", "Class" End Sub findNestedElementRecursive Read method Description The findNestedElementRecursive method retrieves the specified element from a given model element at any level of nesting within that element. For example, if x is of type IRPModelElement (or a type inherited from it), the following call returns an attribute named A (or null if there is no such element) of x, or of any element nested within x at any level of ownership: x.findNestedElementRecursive(‘A’,’Attribute’) Visual Basic Syntax IRPModelElement findNestedElementRecursive( name As String, metaClass As String) As RPModelElement Arguments name The name of the element metaClass The name of the metaclass Return Value If found, the retrieved RPModelElement; otherwise, NULL C/C++ Prototype HRESULT findNestedElementRecursive (BSTR name, BSTR metaClass, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 324 API Reference Manual Rhapsody Interfaces getErrorMessage Read method Description The getErrorMessage method returns the most recent error message. Visual Basic Syntax String getErrorMessage (__MIDL_0019 As String) Return Value The most recent error message C/C++ Prototype HRESULT getErrorMessage (BSTR* __MIDL_0019) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 325 Rhapsody API Interfaces getFullPathName Read method Description The getFullPathName method retrieves the full path name of a model element as a string with the following format: <package>::<class> Visual Basic Syntax getFullPathName() As String Return Value The full path of the model element C/C++ Prototype HRESULT getFullPathName (BSTR* name) Return Value HRESULT (0 for success, or a signed integer error code) Example The following macro checks each transition to see if it has a trigger. Sub checkNullTransitions() Dim elem As RPModelElement For Each elem In getProject.getNestedElementsRecursive If elem.metaClass = "Transition" Then Dim trans As RPTransition Set trans = elem If trans.getItsTrigger Is Nothing Then Debug.Print "The trigger in transition '" + trans.getFullPathName + "' is null!" End If End If Next elem End Sub ... 326 API Reference Manual Rhapsody Interfaces getFullPathNameIn Read method Description The getFullPathNameIn method retrieves the full path name of a model element as a string in the following format: <class> in <package> Visual Basic Syntax getFullPathNameIn() As String Return Value The full path of the model element C/C++ Prototype HRESULT getFullPathNameIn (BSTR* name) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 327 Rhapsody API Interfaces getNestedElements Read method Description The getNestedElements method retrieves the elements defined in the current object. Visual Basic Syntax getNestedElements() As RPCollection Return Value A collection of model elements defined in the current object C/C++ Prototype HRESULT getNestedElements (IRPCollection** __MIDL_0017) Return Value HRESULT (0 for success, or a signed integer error code) 328 API Reference Manual Rhapsody Interfaces getNestedElementsRecursive Write method Description The getNestedElementsRecursive method recursively retrieves the elements defined in the model element for the object and for objects defined in it. Visual Basic Syntax getNestedElementsRecursive() As RPCollection Return Value A collection of model elements defined in the current object and the objects nested within it C/C++ Prototype HRESULT getNestedElementsRecursive( IRPCollection** __MISL__0018) Return Value HRESULT (0 for success, or a signed integer error code) Example The following macro checks each transition to see if it has a trigger. Sub checkNullTransitions() Dim elem As RPModelElement For Each elem In getProject.getNestedElementsRecursive If elem.metaClass = "Transition" Then Dim trans As RPTransition Set trans = elem If trans.getItsTrigger Is Nothing Then Debug.Print "The trigger in transition '" + trans.getFullPathName + "' is null!" End If End If Next elem End Sub ... Rational Rhapsody 329 Rhapsody API Interfaces getOverriddenProperties Read method Description The getOverriddenProperties method retrieves the list of properties whose default values have been overridden. Visual Basic Syntax getOverriddenProperties (recursive As Long) As RPCollection Arguments recursive Specifies whether to include the properties of ascendants of the unit C/C++ Prototype HRESULT getOverriddenProperties (long recursive, IRPCollection **pVal) Return Value HRESULT (0 for success, or a signed integer error code) 330 API Reference Manual Rhapsody Interfaces getPropertyValue Read method Description The getPropertyValue method returns the value associated with the specified key value. This method is capable of flagging an error. Visual Basic Syntax getPropertyValue (propertyKey As String) As String Arguments propertyKey The name of the property whose value is to be retrieved Return Value The value of a property explicitly assigned to this instance or the default value (the value propagated from the containers of the instance as a default). Notes Property-related API calls can cause the following error conditions: RP_BAD_PROPERTY_KEY_ERROR—Illegal property key syntax (that is, not in a "<subject>.<metaclass>.<name>" format). RP_MISSING_PROPERTY_ERROR—The property requested does not exist. RP_PROPERTY_EXISTS_ERROR—You are attempting to add a property that already exists. C/C++ Prototype HRESULT getPropertyValue (BSTR propertyKey, BSTR* propertyValue) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 331 Rhapsody API Interfaces Example Set elt = getSelectedElement theFileName = elt.getPropertyValue( "UserProperties.ExternalFile.FileName") theFilePath = elt.getPropertyValue( "UserProperties.ExternalFile.FilePath") theFileType = elt.getPropertyValue( "UserProperties.ExternalFile.FileType") getPropertyValueExplicit Read method Description The getPropertyValueExplicit method is similar to the getPropertyValue method, but it does not return a default value. Instead, it returns an explicit value if it has been assigned to the metamodel. This method is capable of flagging an error. For more information, see Error Handling Visual Basic Syntax getPropertyValueExplicit (propertyKey As String) As String Arguments propertyKey The name of the property whose value is to be retrieved Return Value The explicit value of the property, if one has been assigned to the metamodel instance C/C++ Prototype HRESULT getPropertyValueExplicit (BSTR propertyKey, BSTR* propertyValue) Return Value HRESULT (0 for success, or a signed integer error code) 332 API Reference Manual Rhapsody Interfaces getTag Read method Description The getTag method returns the tag for the specified model element. Visual Basic Syntax getTag (name As String) As RPTag Arguments name The name of the element whose tag you want to retrieve Return Value The tag C/C++ Prototype HRESULT getTag (BSTR name, IRPTag **pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 333 Rhapsody API Interfaces openFeaturesDialog Description The method openFeaturesDialog displays the information for an element in the Features dialog. Depending on the parameter you provide, a new Features dialog will be opened or an already-open Features dialog will be used to display the information: 1 - opens a new dialog 0 - displays information in already-open dialog; opens a new dialog is there is not a Features dialog currently open. Syntax openFeaturesDialog(newDialog As Long) Example The code below displays the information for class C in a new Features dialog. P is the name of the package that contains the class. Dim proj As RPProject Dim m As RPModelElement Set proj = getProject Set m = proj.findElementsByFullName("C in P", "Class") m.openFeaturesDialog(1) 334 API Reference Manual Rhapsody Interfaces HighLightElement Read method Description The HighLightElement method highlights the current element. Visual Basic Syntax HighLightElement () C/C++ Prototype HRESULT highLightElement () Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 335 Rhapsody API Interfaces removeProperty Write method Description The removeProperty method removes the property from the model element. This method is capable of flagging an error. Visual Basic Syntax removeProperty (propertyKey As String) Arguments propertyKey The name of the property to be removed C/C++ Prototype HRESULT removeProperty (BSTR propertyKey) Return Value HRESULT (0 for success, or a signed integer error code) 336 API Reference Manual Rhapsody Interfaces removeStereotype Write method Description The removeStereotype method removes the stereotype from the model element. Visual Basic Syntax removeSterotype (stereotype As RPSterotype) Arguments stereotype The name of the stereotype to be removed C/C++ Prototype HRESULT removeStereotype (IRPStereotype* stereotype) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 337 Rhapsody API Interfaces setPropertyValue Write method Description The setPropertyValue method modifies the value of the specified property. This method is capable of flagging an error. For more information, see Error Handling Visual Basic Syntax setPropertyValue (propertyKey As String, propertyValue As String) Arguments propertyKey The name of the property whose value is to be set Note: When providing the name of the property, the delimiter used should be a period, not a colon, for example, CPP_CG.Attribute.AccessorGenerate. propertyValue The value to be assigned to the property C/C++ Prototype HRESULT setPropertyValue (BSTR propertyKey, BSTR propertyValue) Return Value HRESULT (0 for success, or a signed integer error code) Sample Code element.setPropertyValue "CPP_CG.Attribute.AccessorGenerate", "True" 338 API Reference Manual Rhapsody Interfaces setTagValue Write method Description The setTagValue method assigns the specified tag to the current model element. Visual Basic Syntax setTagValue (tag As RPTag, val As String) AS RPTag Arguments tag The name of the tag to add to the element val The value of the new tag Return Value The new tag C/C++ Prototype HRESULT setTagValue (IRPTag *tag, BSTR val, IRPTag **pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 339 Rhapsody API Interfaces synchronizeTemplateInstantiation Write method Description The synchronizeTemplateInstantiation method is used to synchronize between a template and a template instantiation parameter. For example, if you add a parameter to a template, this method updates the template instantiation. It is activated on template instantiation. Visual Basic Syntax synchronizeTemplateInstantiation () C/C++ Prototype HRESULT synchronizeTemplateInstantiation () Return Value HRESULT (0 for success, or a signed integer error code) 340 API Reference Manual Rhapsody Interfaces IRPModule Interface The IRPModule interface represents a Rhapsody module. It inherits from IRPInstance. IRPNode Interface The IRPNode interface represents a node. It derives from IRPClassifier. VB Properties Name Type Access Description componentInstances RPCollection RO The list of component instances CPUType String RW The CPU type Method Summary addComponentInstance Adds a new component instance deleteComponentInstance Deletes the specified component instance findComponentInstance Retrieves the specified component instance addComponentInstance Write method Description The addComponentInstance method adds a component instance. Visual Basic Syntax addComponentInstance (name As String) As RPComponentInstance Arguments name The name of the new component instance Return Value The new component instance Rational Rhapsody 341 Rhapsody API Interfaces C/C++ Prototype HRESULT addComponentInstance (BSTR name, IRPComponentInstance** pVal) Return Value HRESULT (0 for success, or a signed integer error code) deleteComponentInstance Write method Description The deleteComponentInstance method deletes the specified component instance. Visual Basic Syntax deleteComponentInstance (BSTR name) Arguments name The name of the new component instance C/C++ Prototype HRESULT deleteComponentInstance (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) findComponentInstance Read method Description The findComponentInstance method retrieves the specified component instance. Visual Basic Syntax findComponentInstance (name As String) As RPComponentInstance 342 API Reference Manual Rhapsody Interfaces Arguments name The name of the component instance to look for Return Value The component instance C/C++ Prototype HRESULT findComponentInstance (BSTR name, IRPComponentInstance** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 343 Rhapsody API Interfaces IRPObjectModelDiagram Interface The IRPObjectModelDiagram interface represents an object model diagram. It inherits from IRPDiagram. Currently, IRPObjectModelDiagram does not expose additional functionality to IRPDiagram. IRPOperation Interface The IRPOperation interface is an abstract class that represents an operation. It derives from IRPInterfaceItem. VB Properties Name 344 Type Access Description body String RW The body of the operation. flowchart RPFlowchart RW The activity chart of the operation. initializer String RW If this operation is a constructor, this is a string containing the constructor initialization list. isAbstract Long RW This is equal to 1 (as opposed to 0) if the operation is abstract. isCgDerived Long RO This is equal to 1 (as opposed to 0) if this operation is automatically generated by Rhapsody 6.1. isConst Long RO This is equal to 1 (as opposed to 0) if the operation is a const. isCtor Long RO This is equal to 1 (as opposed to 0) if the operation is a constructor. isDtor Long RO This is equal to 1 (as opposed to 0) if the operation is a destructor. isFinal Long RW This is equal to 1 (as opposed to 0) if the operation is final (Java only). API Reference Manual Rhapsody Interfaces Name Type Access Description isStatic Long RO This is equal to 1 (as opposed to 0) if the operation is a static. isTrigger Long RO This is equal to 1 (as opposed to 0) if the operation is triggered. isVirtual Long RO This is equal to 1 (as opposed to 0) if the operation is virtual. returns RPClassifier RW The return type of this operation. In previous versions, this property was called “returnType”. returnType RPType RW The return type of this operation. visibility String RW The visibility of this operation (public, protected, or private). Method Summary deleteArgument Deletes an argument from the current operation deleteFlowchart Deletes an activity diagram from the current operation getImplementationSignature Returns a string representing the signature of the operation as it will appear in the generated code. setReturnTypeDeclaration Specifies a new value for the return type declaration Rational Rhapsody 345 Rhapsody API Interfaces deleteArgument Write method Description The deleteArgument method deletes an argument from the current operation. Visual Basic Syntax deleteArgument (argument As RPArgument) Arguments argument The argument to be deleted C/C++ Prototype HRESULT deleteArgument (IRPArgument* argument) Return Value HRESULT (0 for success, or a signed integer error code) 346 API Reference Manual Rhapsody Interfaces deleteFlowchart Write method Description The deleteFlowchart method deletes an activity diagram from the current operation. Visual Basic Syntax deleteFlowchart() C/C++ Prototype HRESULT deleteFlowchart() Return Value HRESULT (0 for success, or a signed integer error code) getImplementationSignature Returns a string representing the signature of the operation as it will appear in the generated code. Rational Rhapsody 347 Rhapsody API Interfaces setReturnTypeDeclaration Write method Description The setReturnTypeDeclaration method specifies a new value for the return type declaration. Visual Basic Syntax setReturnTypeDeclaration (newVal As String) Arguments newVal The new value for the return type declaration C/C++ Prototype HRESULT setReturnTypeDeclaration (BSTR newVal) Return Value HRESULT (0 for success, or a signed integer error code) 348 API Reference Manual Rhapsody Interfaces IRPPackage Interface The IRPPackage interface represents Rhapsody packages, which are essentially definition spaces for diagrams and other model elements. It inherits from IRPUnit. VB Properties Name Type Access Description actors Collection of RPActors RO The collection of actors defined in this package classes Collection of RPClasses RO The collection of classes defined in this package collaboration Diagrams Collection of RO The collection of collaboration diagrams defined in this package componentDiagrams Collection of RO The collection of component diagrams defined in this package RO The collection of deployment diagrams defined in the package RPCollaboration Diagrams RPComponent Diagrams deploymentDiagrams Collection of RPDeployment Diagrams events Collection of RPEvents RO The collection of events defined in this package eventsBaseId Long RO The event base identifier globalFunctions Collection of RO The collection of global functions defined in the package RO The collection of global objects defined in the package RO The collection of global variables defined in the package RO The collection of information items defined in this package RPOperations globalObjects Collection of RPRelations globalVariables Collection of RPAttributes flowItems Collection of RPFlowItems flows Collection of RPFlows RO The collection of flows defined in this package nestedClassifiers Collection of classifiers RO The collection of classifiers defined in this package nodes RPCollection RO The list of package nodes objectModelDiagrams Collection of RO The collection of object model diagrams defined in this package RPObjectDiagrams Rational Rhapsody 349 Rhapsody API Interfaces Name packages Type Access Collection of Description RO The collection of packages nested inside this package RPPackages SavedInSeperateDirectory Long RW Determines whether each package is saved in a separate directory sequenceDiagrams Collection of RO The collection of sequence diagrams defined in this package RPSequence Diagrams types Collection of RPType RO The collection of data types defined in this package useCaseDiagrams Collection of RO The collection of use case diagrams defined in this package RO The collection of use cases defined in this package RO The collection of userdefined stereotypes defined in this package RPUseCaseDiagrams useCases Collection of RPUseCases userDefinedStereotypes Collection of RPStereotypes Method Summary 350 addActor Adds the specified actor to the current package addClass Adds the specified class to the current package addCollaborationDiagram Adds the specified collaboration diagram to the current package addComponentDiagram Adds the specified component diagram to the current package addDeploymentDiagram Adds the specified deployment diagram to the current package addEvent Adds the specified event to the current package addFlowItems Adds the specified flowItem to the flowItems collection addFlows Adds the specified flow to the flows collection addGlobalFunction Adds the specified global function to this package addGlobalObject Adds a global object (instance) to the current package API Reference Manual Rhapsody Interfaces addGlobalVariable Adds the specified global variable to the current package addLink Adds a link between two objects to the current package addNestedPackage Adds a nested package to the current package addNode Adds the specified node to the current package addObjectModelDiagram Adds the specified OMD to the current package addSequenceDiagram Adds the specified sequence diagram to the current package addType Adds the specified type to the current package addUseCase Adds the specified use case to the current package addUseCaseDiagram Adds the specified UCD to the current package deleteActor Deletes the specified actor from the current package deleteClass Deletes the specified class from the current package deleteCollaborationDiagram Deletes the specified collaboration diagram from the current package deleteComponentDiagram Deletes the specified component diagram from the current package deleteDeploymentDiagram Deletes the specified deployment diagram from the current package deleteEvent Deletes the specified event from the current package deleteFlowItems Deletes the specified flowItem from the flowItems collection deleteFlows Deletes the specified flow from the flows collection deleteGlobalFunction Deletes the specified global function from the current package deleteGlobalObject Deletes the specified global object from the current package deleteGlobalVariable Deletes the specified global variable from the current package deleteNode Deletes the specified node from the current package deleteObjectModelDiagram Deletes the specified OMD from the current package deletePackage Deletes the current package Rational Rhapsody 351 Rhapsody API Interfaces 352 deleteSequenceDiagram Deletes the specified sequence diagram from the current package deleteType Deletes the specified type from the current package deleteUseCase Deletes the specified use case from the current package deleteUseCaseDiagram Deletes the specified use case diagram from the current package findActor Retrieves the specified actor, if it belongs to the current package findAllByName Searches all the elements and finds the first element of the specified name and metaclass in the current package findClass Retrieves the specified class, if it belongs to the current package findEvent Retrieves the specified event, if it belongs to the current package findGlobalFunction Retrieves the specified global function, if it belongs to the current package findGlobalObject Retrieves the specified global object, if it belongs to the current package findGlobalVariable Retrieves the specified global variable, if it belongs to the current package findNode Retrieves the specified node, if it belongs to the current package findType Retrieves the specified data type, if it belongs to the current package findUsage Retrieves the usage of the specified element in the current package findUseCase Retrieves the specified use case, if it belongs to the current package recalculateEventsBaseId Recalculates the events base ID of the package API Reference Manual Rhapsody Interfaces addActor Write method Description The addActor method adds the specified actor to the current package. Visual Basic Syntax addActor (name As String) As RPActor Arguments name The name of actor to add to this package Return Value The new actor added to the package C/C++ Prototype HRESULT addActor (BSTR name, IRPActor** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 353 Rhapsody API Interfaces addClass Write method Description The addClass method adds the specified class to the current package. Visual Basic Syntax addClass (name As String) As RPClass Arguments name The name of the class to be added Return Value The class added to this package C/C++ Prototype HRESULT addClass (BSTR name, IRPClass** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 354 API Reference Manual Rhapsody Interfaces addCollaborationDiagram Write method Description The addCollaborationDiagram method adds the specified collaboration diagram to the current package. Visual Basic Syntax addCollaborationDiagram (name As String) As RPCollaborationDiagram Arguments name The name of the collaboration diagram to be added Return Value The new collaboration diagram added to this package C/C++ Prototype HRESULT addCollaborationDiagram (BSTR name, IRPCollaborationDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 355 Rhapsody API Interfaces addComponentDiagram Write method Description The addComponentDiagram method adds the specified component diagram to the current package. Visual Basic Syntax addComponentDiagram (name As String) As RPComponentDiagram Arguments name The name of the component diagram to be added Return Value The new component diagram added to this package C/C++ Prototype HRESULT addComponentDiagram (BSTR name, IRPComponentDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 356 API Reference Manual Rhapsody Interfaces addDeploymentDiagram Write method Description The addDeploymentDiagram method adds the specified deployment diagram to the current package. Visual Basic Syntax addDeploymentDiagram (name As String) As RPDeploymentDiagram Arguments name The name of the deployment diagram to be added Return Value The new deployment diagram added to this package C/C++ Prototype HRESULT addDeploymentDiagram (BSTR name, IRPDeploymentDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 357 Rhapsody API Interfaces addEvent Write method Description The addEvent method adds the specified event to the current package. Visual Basic Syntax addEvent (name As String) As RPEvent Arguments name The name of the event to be added Return Value The new event added to this package C/C++ Prototype HRESULT addEvent (BSTR name, IRPEvent** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 358 API Reference Manual Rhapsody Interfaces addFlowItems Write method Description The addFlowItems method adds the specified flowItem to the flowItems collection. Visual Basic Syntax addFlowItems (name As String) As RPFlowItem Arguments name The name of the flowItem to add to the collection Return Value The new flowItem added to this package C/C++ Prototype HRESULT addFlowItems (BSTR name, IRPFlowItem** ppItem) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 359 Rhapsody API Interfaces addFlows Write method Description The addFlows method adds the specified flow to the flows collection. Visual Basic Syntax addFlows (name As String) As RPFlow Arguments name The name of the flow to add to the collection Return Value The new flow added to this package C/C++ Prototype HRESULT addFlows (BSTR name, IRPFlow** ppFlow) Return Value HRESULT (0 for success, or a signed integer error code) 360 API Reference Manual Rhapsody Interfaces addGlobalFunction Write method Description The addGlobalFunction method adds the specified global function to this package. Visual Basic Syntax addGlobalFunction (name As String) As RPOperation Arguments name The global function to be added Return Value The new global function added to this package C/C++ Prototype HRESULT addGlobalFunction (BSTR name, IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 361 Rhapsody API Interfaces addGlobalObject Write method Description The addGlobalObject method adds a global object (instance) to the current package. Visual Basic Syntax addGlobalObject (name As String, otherClassName As String, otherClassPackageName As String) As RPRelation Arguments name The name of the global instance to add otherClassName The name of the class-defining instance otherClassPackageName The name of the package with the class-defining instance Return Value The new global instance in this package C/C++ Prototype HRESULT addGlobalObject (BSTR name, BSTR otherClassName, BSTR otherClassPackageName, IRPRelation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 362 API Reference Manual Rhapsody Interfaces addGlobalVariable Write method Description The addGlobalVariable method adds the specified global variable to the current package. Visual Basic Syntax addGlobalVariable (name As String) As RPAttribute Arguments name The name of the global variable to add Return Value The new global variable added to this package C/C++ Prototype HRESULT addGlobalVariable (BSTR name, IRPAttribute** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 363 Rhapsody API Interfaces addLink The addLink method adds a link between two objects to the current package. Syntax addLink(fromPart As RPInstance, toPart As RPInstance, assoc As RPRelation, fromPort As RPPort, toPort As RPPort) As RPLink Arguments fromPart, toPart The objects that are being linked. assoc Association that is being instantiated (optional). fromPort, toPort Ports that are being linked (optional). 364 API Reference Manual Rhapsody Interfaces addNestedPackage Write method Description The addNestedPackage method adds a nested package to the current package. Visual Basic Syntax addNestedPackage (name As String) As RPPackage Arguments name The name of the nested package to add Return Value The nested package added to this package C/C++ Prototype HRESULT addNestedPackage (BSTR name, IRPPackage** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 365 Rhapsody API Interfaces addNode Write method Description The addNode method adds a node to the current package. Visual Basic Syntax addNode (name As String) As RPNode Arguments name The name of the node to add Return Value The new node added to this package C/C++ Prototype HRESULT addNode (BSTR name, IRPNode** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 366 API Reference Manual Rhapsody Interfaces addObjectModelDiagram Write method Description The addObjectModelDiagram method adds the specified OMD to the current package. Visual Basic Syntax addObjectModelDiagram (name As String) As RPObjectModelDiagram Arguments name The name of the OMD to add Return Value The OMD added to this package C/C++ Prototype HRESULT addObjectModelDiagram (BSTR name, IRPObjectModelDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 367 Rhapsody API Interfaces addSequenceDiagram Write method Description The addSequenceDiagram method adds the specified sequence diagram to the current package. Visual Basic Syntax addSequenceDiagram (name As String) As RPSequenceDiagram Arguments name The name of the sequence diagram to add Return Value The sequence diagram added to this package C/C++ Prototype HRESULT addSequenceDiagram (BSTR name, IRPSequenceDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 368 API Reference Manual Rhapsody Interfaces addType Write method Description The addType method adds the specified type to the current package. Visual Basic Syntax addType (name As String) As RPType Arguments name The name of the type to add Return Value The new type added to this package C/C++ Prototype HRESULT addType (BSTR name, IRPType** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 369 Rhapsody API Interfaces addUseCase Write method Description The addUseCase method adds the specified use case to the current package. Visual Basic Syntax addUseCase (name As String) As RPUseCase Arguments name The name of the use case to add Return Value The use case added to this package C/C++ Prototype HRESULT addUseCase (BSTR name, IRPUseCase** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 370 API Reference Manual Rhapsody Interfaces addUseCaseDiagram Write method Description The addUseCaseDiagram method adds the specified UCD to the current package. Visual Basic Syntax addUseCaseDiagram (name As String) As RPUseCaseDiagram Arguments name The name of the UCD to add Return Value The UCD added to this package C/C++ Prototype HRESULT addUseCaseDiagram (BSTR name, IRPUseCaseDiagram** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 371 Rhapsody API Interfaces deleteActor Write method Description The deleteActor method deletes the specified actor from the current package. Visual Basic Syntax deleteActor (actor As RPActor) Arguments actor The actor to delete C/C++ Prototype HRESULT deleteActor (IRPActor *actor) Return Value HRESULT (0 for success, or a signed integer error code) 372 API Reference Manual Rhapsody Interfaces deleteClass Write method Description The deleteClass method deletes the specified class from the current package. Visual Basic Syntax deleteClass (theClass As RPClass) Arguments theClass The class to delete C/C++ Prototype HRESULT deleteClass (IRPClass *theClass) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 373 Rhapsody API Interfaces deleteCollaborationDiagram Write method Description The deleteCollaborationDiagram method deletes the specified collaboration diagram from the current package. Visual Basic Syntax deleteCollaborationDiagram (name As String) Arguments name The name of the collaboration diagram to delete C/C++ Prototype HRESULT deleteCollaborationDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 374 API Reference Manual Rhapsody Interfaces deleteComponentDiagram Write method Description The deleteComponentDiagram method deletes the specified component diagram from the current package. Visual Basic Syntax deleteComponentDiagram (name As String) Arguments name The name of the component diagram to delete C/C++ Prototype HRESULT deleteComponentDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 375 Rhapsody API Interfaces deleteDeploymentDiagram Write method Description The deleteDeploymentDiagram method deletes the specified deployment diagram from the current package. Visual Basic Syntax deleteDeploymentDiagram (name As String) Arguments name The name of the deployment diagram to delete C/C++ Prototype HRESULT deleteDeploymentDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 376 API Reference Manual Rhapsody Interfaces deleteEvent Write method Description The deleteEvent method deletes the specified event from the current package. Visual Basic Syntax deleteEvent (event As RPEvent) Arguments event The event to delete C/C++ Prototype HRESULT deleteEvent (IRPEvent *event) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 377 Rhapsody API Interfaces deleteFlowItems Write method Description The deleteFlowItems method deletes the specified flowItem from the flowItems collection. Visual Basic Syntax deleteFlowItems (pItem As RPFlowItem) Arguments pItem The name of the flowItem to remove from the collection C/C++ Prototype HRESULT deleteFlowItems (IRPFlowItem* pItem) Return Value HRESULT (0 for success, or a signed integer error code) 378 API Reference Manual Rhapsody Interfaces deleteFlows Write method Description The deleteFlows method deletes the specified flow from the flows collection. Visual Basic Syntax deleteFlows (pFlow As RPFlow) Arguments pFlow The name of the flow to delete from the collection C/C++ Prototype HRESULT deleteFlows (IRPFlow* pFlow) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 379 Rhapsody API Interfaces deleteGlobalFunction Write method Description The deleteGlobalFunction method deletes the specified global function from the current package. Visual Basic Syntax deleteGlobalFunction (operation As RPOperation) Arguments operation The global function to delete C/C++ Prototype HRESULT deleteGlobalFunction (IRPOperation* operation) Return Value HRESULT (0 for success, or a signed integer error code) 380 API Reference Manual Rhapsody Interfaces deleteGlobalObject Write method Description The deleteGlobalObject method deletes the specified global object from the current package. Visual Basic Syntax deleteGlobalObject (relation As RPRelation) Arguments relation The global object to delete C/C++ Prototype HRESULT deleteGlobalObject (IRPRelation* relation) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 381 Rhapsody API Interfaces deleteGlobalVariable Write method Description The deleteGlobalVariable method deletes the specified global variable from the current package. Visual Basic Syntax deleteGlobalVariable (attribute As RPAttribute) Arguments attribute The global variable to delete C/C++ Prototype HRESULT deleteGlobalVariable (IRPAttribute* attribute) Return Value HRESULT (0 for success, or a signed integer error code) 382 API Reference Manual Rhapsody Interfaces deleteNode Write method Description The deleteNode method deletes the specified node from the current package. Visual Basic Syntax deleteNode (name As String) Arguments name The name of the node to delete C/C++ Prototype HRESULT deleteNode (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 383 Rhapsody API Interfaces deleteObjectModelDiagram Write method Description The deleteObjectModelDiagram method deletes the specified OMD from the current package. Visual Basic Syntax deleteObjectModelDiagram (name As String) Arguments name The name of the OMD to delete C/C++ Prototype HRESULT deleteObjectModelDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 384 API Reference Manual Rhapsody Interfaces deletePackage Write method Description The deletePackage method deletes the current package. Visual Basic Syntax deletePackage() C/C++ Prototype HRESULT deletePackage() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 385 Rhapsody API Interfaces deleteSequenceDiagram Write method Description The deleteSequenceDiagram method deletes the specified sequence diagram from the current package. Visual Basic Syntax deleteSequenceDiagram (name As String) Arguments name The name of the sequence diagram to delete C/C++ Prototype HRESULT deleteSequenceDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 386 API Reference Manual Rhapsody Interfaces deleteType Write method Description The deleteType method deletes the specified type from the current package. Visual Basic Syntax deleteType (type As RPType) Arguments type The type to delete C/C++ Prototype HRESULT deleteType (IRPType *type) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 387 Rhapsody API Interfaces deleteUseCase Write method Description The deleteUseCase method deletes the specified use case from the current package. Visual Basic Syntax deleteUseCase (useCase As RPUseCase) Arguments useCase The use case to delete C/C++ Prototype HRESULT deleteUseCase (IRPUseCase *useCase) Return Value HRESULT (0 for success, or a signed integer error code) 388 API Reference Manual Rhapsody Interfaces deleteUseCaseDiagram Write method Description The deleteUseCaseDiagram method deletes the specified use case diagram from the current package. Visual Basic Syntax deleteUseCaseDiagram (name As String) Arguments name The name of the UCD to delete C/C++ Prototype HRESULT deleteUseCaseDiagram (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 389 Rhapsody API Interfaces findActor Read method Description The findActor method retrieves the specified actor, if it belongs to the current package. Visual Basic Syntax findActor (name As String) As RPActor Arguments name The name of the actor to find Return Value If found, the RPActor; otherwise, NULL. C/C++ Prototype HRESULT findActor (BSTR name, IRPActor** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 390 API Reference Manual Rhapsody Interfaces findAllByName Read method Description The findAllByName method searches all the elements and finds the first element of the specified name and metaclass in the current package. Visual Basic Syntax findAllByName (name As String, metaClass As String) As RPModelElement Arguments name The name of the element to find metaclass The name of the metaclass to find Return Value The first RPModelElement that matches the specified name and metaclass, or NULL if not found C/C++ Prototype HRESULT findAllByName (BSTR name, BSTR metaClass, IRPModelElement** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 391 Rhapsody API Interfaces findClass Read method Description The findClass method retrieves the specified class, if it belongs to the current package. Visual Basic Syntax findClass (name As String) As RPClass Arguments name The name of the class to find Return Value The RPClass, or NULL if not found C/C++ Prototype HRESULT findClass (BSTR name, IRPClass** pVal) Return Value HRESULT (0 for success, or a signed integer error code) findEvent Read method Description The findEvent method retrieves the specified event, if it belongs to the current package. Visual Basic Syntax findEvent (name As String) As RPEvent Arguments name The name of the event to find 392 API Reference Manual Rhapsody Interfaces Return Value The RPEvent*, or NULL if not found C/C++ Prototype HRESULT findEvent (BSTR name, IRPEvent** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 393 Rhapsody API Interfaces findGlobalFunction Read method Description The findGlobalFunction method retrieves the specified global function, if it belongs to the current package. Visual Basic Syntax findGlobalFunction (name As String) As RPOperation Arguments name The name of the global function to find Return Value The RPOperation, or NULL if not found C/C++ Prototype HRESULT findGlobalFunction (BSTR name, IRPOperation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 394 API Reference Manual Rhapsody Interfaces findGlobalObject Read method Description The findGlobalObject method retrieves the specified global object, if it belongs to the current package. Visual Basic Syntax findGlobalObject (name As String) As RPRelation Arguments name The name of the global object to find Return Value The RPRelation, or NULL if not found C/C++ Prototype HRESULT findGlobalObject (BSTR name, IRPRelation** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 395 Rhapsody API Interfaces findGlobalVariable Read method Description The findGlobalVariable method retrieves the specified global variable, if it belongs to the current package. Visual Basic Syntax findGlobalVariable (name As String) As RPAttribute Arguments name The name of the global variable to look for Return Value The RPAttribute, or NULL if not found C/C++ Prototype HRESULT findGlobalVariable (BSTR name, IRPAttribute** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 396 API Reference Manual Rhapsody Interfaces findNode Read method Description The findNode method retrieves the specified node, if it belongs to the current package. Visual Basic Syntax findNode (name As String) As RPNode Arguments name The name of the node to look for Return Value The RPNode, or NULL if not found C/C++ Prototype HRESULT findNode (BSTR name, IRPNode** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 397 Rhapsody API Interfaces findType Read method Description The findType method retrieves the specified data type, if it belongs to the current package. Visual Basic Syntax findType (name As String) As RPType Arguments name The name of the type to find Return Value The RPType, or NULL if not found C/C++ Prototype HRESULT findType (BSTR name, IRPType** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 398 API Reference Manual Rhapsody Interfaces findUsage Read method Description The findUsage method retrieves the usage of the specified element in the current package. Visual Basic Syntax findUsage (objToFind As IRPModelElement) As RPCollection Arguments objToFind The model element to look for in the current package Return Value The collection of model elements that reference objToFind in this package C/C++ Prototype HRESULT findUsage (IRPModelElement* objToFind, IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 399 Rhapsody API Interfaces findUseCase Read method Description The findUseCase method retrieves the specified use case, if it belongs to the current package. Visual Basic Syntax findUseCase (name As String) As RPUseCase Arguments name The name of the use case to find Return Value The RPUseCase, or NULL if not found C/C++ Prototype HRESULT findUseCase (BSTR name, IRPUseCase** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 400 API Reference Manual Rhapsody Interfaces recalculateEventsBaseId Write method Description The recalculateEventsBaseId method recalculates the events base ID of the package. Visual Basic Syntax recalculateEventsBaseId() As Long Return Value The events base ID C/C++ Prototype HRESULT recalculateEventsBaseId (long *success) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 401 Rhapsody API Interfaces IRPPin Interface The IRPPin interface represents action pins added to actions, or activity parameters added to action blocks, in an activity diagram. It inherits from IRPConnector. To add an action pin to an action, use addConnector, for example: action1.addConnector("InPin") or action1.addConnector("OutPin") VB Properties Name Type Access Description isParameter long RW Indicates whether the element is an action pin or an activity parameter. If this is equal to 1 (as opposed to 0), the element is an activity parameter. pinDirection String RW The possible values for this property are “In”, “Out”, “InOut” pinType RPClassifier RW Represents the pin’s argument type. Sample Code Sub action_pin_sample_IRPPin() Dim currentProject As RPProject Dim newPackage As RPPackage Dim newClass As RPClass Dim newActivityDiagram As RPFlowchart Dim washingAction As RPState Dim pinOnWashing As RPPin Dim intType As RPModelElement On Error GoTo errorHandlingCode Set currentProject = getProject 402 API Reference Manual Rhapsody Interfaces Set newPackage = currentProject.addPackage("Package_One") Set newClass = newPackage.addClass("Class_A") Set newActivityDiagram = newClass.addActivityDiagram ' set to Analysis-only because action pins are only available on analysisonly diagrams newActivityDiagram.isAnalysisOnly = 1 Set washingAction = newActivityDiagram.rootState.addState("Washing") ' create a pin whose direction is out Set pinOnWashing = washingAction.addConnector("OutPin") ' set pin type to int Set intType = currentProject.findNestedElementRecursive("int", "Type") pinOnWashing.pinType = intType Exit Sub errorHandlingCode: MsgBox errorMessage End Sub Rational Rhapsody 403 Rhapsody API Interfaces IRPPort Interface The IRPPort interface represents a Rhapsody port. It inherits from IRPInstance. VB Properties Name Type Access Description contract RPClass RW Specifies the port contract. isBehavioral Long RW Determines whether messages sent to the port are relayed to the owner class. isReversed Long RW If this is equal to 1 (as opposed to 0), the provided interfaces become the required interfaces, and the required interfaces become the provided interfaces. providedInterfaces Collection of RO The collection of provided interfaces for the port. RO The collection of required interfaces for the port. RPClasses requiredInterfaces Collection of RPClasses Method Summary addProvidedInterface Adds the specified interface to the collection of provided interfaces addRequiredInterface Adds the specified interface to the collection of required interfaces removeProvidedInterface Removes the specified interface from the collection of provided interfaces removeRequiredInterface Removes the specified interface from the collection of required interfaces Example The following script converts a black-box analysis block to a white-box analysis block, and vice versa. It simply toggles all the ports of a block to behavioral or non-behavioral. 404 API Reference Manual Rhapsody Interfaces Public Sub ConvertPortsBB() Dim curBlock As RPBlock Dim port As RPPort Set curBlock = getSelectedElement For Each port In curBlock.ObjectAsObjectType.ports port.isBehavioral = 1 Next End Sub Public Sub ConvertPortsWB() Dim curBlock As RPBlock Dim port As RPPort Set curBlock = getSelectedElement For Each port In curBlock.ObjectAsObjectType.ports port.isBehavioral = 0 Next End Sub Rational Rhapsody 405 Rhapsody API Interfaces addProvidedInterface Write method Description The addProvidedInterface method adds the specified interface to the collection of provided interfaces. Visual Basic Syntax addProvidedInterface (newVal As RPClass) Arguments newVal The name of the class to add to the collection of provided interfaces for the port C/C++ Prototype HRESULT addProvidedInterface (IRPClass* newVal) Return Value HRESULT (0 for success, or a signed integer error code) 406 API Reference Manual Rhapsody Interfaces addRequiredInterface Write method Description The addRequiredInterface method adds the specified interface to the collection of required interfaces. Visual Basic Syntax addRequiredInterface (newVal As RPClass) Arguments newVal The name of the class to add to the collection of required interfaces for the port C/C++ Prototype HRESULT addRequiredInterface (IRPClass* newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 407 Rhapsody API Interfaces removeProvidedInterface Write method Description The removeProvidedInterface method removes the specified interface from the collection of provided interfaces. Visual Basic Syntax removeProvidedInterface (newVal As RPClass) Arguments newVal The name of the class to remove from the collection of provided interfaces for the port C/C++ Prototype HRESULT removeProvidedInterface (IRPClass* newVal) Return Value HRESULT (0 for success, or a signed integer error code) 408 API Reference Manual Rhapsody Interfaces removeRequiredInterface Write method Description The removeRequiredInterface method removes the specified interface from the collection of required interfaces. Visual Basic Syntax removeRequiredInterface (newVal As RPClass) Arguments newVal The name of the class to remove from the collection of provided interfaces for the port C/C++ Prototype HRESULT removeRequiredInterface (IRPClass* newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 409 Rhapsody API Interfaces IRPProfile Interface The IRPProfile interface represents a profile. It inherits from IRPPackage. IRPProject Interface The IRPProject interface represents a Rhapsody project (model). Use the Application.openProject() method to obtain a handle to the project. The IRPProject object is a singleton instance that aggregates all other instances. This class inherits from IRPPackage. Project is a concrete interface that inherits from IRPPackage. VB Properties Name Type Access Description activeComponent RPComponent RW The active component in the package. activeConfiguration RPConfiguration RW The active configuration in the active component. The setting must be to a configuration from the active component, otherwise an error is flagged. allStereotypes Collection of RO A collection of all the stereotypes used in the current project. RO A collection of all the components used in this project. RPStereotypes components Collection of RPComponents defaultDirectoryScheme String RW The default directory scheme. profiles Collection of RO The collection of profiles used in this project. RPProfiles Method Summary 410 addComponent Adds the specified component to the current project addPackage Adds the specified package to the current project API Reference Manual Rhapsody Interfaces addProfile Adds the specified profile to the current project checkEventsBaseIdsSolveCollisions Checks the values of the events base IDs for all packages in the model, detects collisions between the IDs, and resolves any incorrect values and collisions close Closes the current project deleteComponent Deletes the specified component from the current project findComponent Retrieves the specified component from the current project GenerateReport Generates a ReporterPLUS report for the model. getNewCollaboration Retrieves the new collaboration for the current project highlightFromCode Takes a filename and line number as arguments and then highlights in the Rhapsody browser the element that is associated with the line of code specified. importPackageFromRose Imports the specified package from Rational Rose importProjectFromRose Imports the specified project from Rational Rose recalculateEventsBaseIds Recalculates the events base IDs used by Rhapsody 6.1 save Saves the current project saveAs Saves the current project to the specified file name and location setActiveComponent Sets the active configuration for the current project setActiveConfiguration Sets the active configuration for the current project Rational Rhapsody 411 Rhapsody API Interfaces addComponent Write method Description The addComponent method adds the specified component to the current project. Visual Basic Syntax addComponent (name As String) As RPComponent Arguments name The name of the component to add Return Value The RPComponent added to the current project C/C++ Prototype HRESULT addComponent (BSTR name, IRPComponent** component) Return Value HRESULT (0 for success, or a signed integer error code) 412 API Reference Manual Rhapsody Interfaces addPackage Write method Description The addPackage method adds the specified package to the current project. Visual Basic Syntax addPackage (name As String) As RPPackage Arguments name The name of the package to add Return Value The RPPackage* added to this project C/C++ Prototype HRESULT addPackage (BSTR name, IRPPackage** package) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 413 Rhapsody API Interfaces addProfile Write method Description The addProfile method adds the specified profile to the current project. Visual Basic Syntax addProfile (name As String) As RPProfile Arguments name The name of the profile to add Return Value The RPProfile added to this project C/C++ Prototype HRESULT addProfile (BSTR name, IRPProfile** profile) Return Value HRESULT (0 for success, or a signed integer error code) 414 API Reference Manual Rhapsody Interfaces checkEventsBaseIdsSolveCollisions Read method Description The checkEventsBaseIdsSolveCollisions method checks the values of the events base IDs for all packages in the model, detects collisions between the IDs, and resolves any incorrect values and collisions. Visual Basic Syntax checkEventsBaseIdsSolveCollisions() C/C++ Prototype HRESULT checkEventsBaseIdsSolveCollisions() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 415 Rhapsody API Interfaces close Read method Description The close method closes the current project. Note that helper applications might not close the current document. Therefore, you should not use close in a VBA macro that you specify as a helper. Visual Basic Syntax close() C/C++ Prototype HRESULT close() Return Value HRESULT (0 for success, or a signed integer error code) 416 API Reference Manual Rhapsody Interfaces deleteComponent Write method Description The deleteComponent method deletes the specified component from the current project. Visual Basic Syntax deleteComponent (component As RPComponent) Arguments component The component to delete C/C++ Prototype HRESULT deleteComponent (IRPComponent* component) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 417 Rhapsody API Interfaces findComponent Read method Description The findComponent method retrieves the specified component from the current project. Visual Basic Syntax findComponent (name As String) As RPComponent Arguments name The name of the component to find Return Value The RPComponent, or NULL if not found C/C++ Prototype HRESULT findComponent (BSTR name, IRPComponent** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 418 API Reference Manual Rhapsody Interfaces GenerateReport GenerateReport(modelscope As String, templatename As String, docType As String, filename As String, showDocument As Long, silentMode As Long) Allows you to generate a ReporterPLUS report for the model. (When this method is used to generate a report, the Rhapsody model is saved before the report is generated.) modelscope—the name of the package for which the report should be generated. If empty, a report is generated for the entire model. (This is similar to the "scope" command-line option for ReporterPLUS.) templatename—the name of the template to use. If empty, then the ReporterPLUS report generation wizard will be launched and it will display the name of the last template used. docType—the type of output to generate (doc, html, ppt, txt). If empty, the ReporterPLUS report generation wizard will be launched and it will display the last output type used. filename—the filename to use for the generated report. If empty, the ReporterPLUS report generation wizard will be displayed and it will display the filename of the last generated report. showDocument—In general, the user will be asked if they want to view the report after generation only if they have requested this by selecting View > Options > Ask to open after generating report from the main menu in ReporterPLUS. However, if the user has specified silent generation mode using the parameter silentMode, this parameter can be used to request that the generated document be displayed. To display the report, set this parameter to 1, otherwise use 0. silentMode—If the template name, document type, or output file name has not been specified using the appropriate parameter, the ReporterPLUS report generation wizard is displayed so the user can provide the missing information. This is the behavior if this parameter is set to 0. If you want to prevent the wizard from being launched in such cases, you can specify silent generation mode by setting this parameter to 1. If set to silent mode, no report will be generated if one or more of the above parameters was not provided. (The report generation status dialog is displayed regardless of the value of this parameter.) Sample code: Dim proj As RPProject Set proj = getProject proj.GenerateReport "", "C:\Rhapsody\reporterplus\Templates\Class.tpl", "html", "C:\testreport.html", 0, 0 Rational Rhapsody 419 Rhapsody API Interfaces getNewCollaboration Read method Description The getNewCollaboration method returns the new collaboration for the current project. Visual Basic Syntax getNewCollaboration() As RPCollaboration Return Value The RPCollaboration C/C++ Prototype HRESULT getNewCollaboration( IRPCollaboration** collaboration) Return Value HRESULT (0 for success, or a signed integer error code) 420 API Reference Manual Rhapsody Interfaces highlightFromCode The method highlightFromCode takes a filename and line number as arguments and then highlights in the Rhapsody browser the element that is associated with the line of code specified. The filename argument should consist of the absolute path for the file. Syntax highlightFromCode(filename As String, lineNumber As Long) As RPModelElement Example Dim proj As RPProject Dim m As RPModelElement Set proj = getProject Set m = proj.highlightFromCode("C:\Temp\P\DefaultComponent\DefaultConfig\C.cpp", 30) Rational Rhapsody 421 Rhapsody API Interfaces importPackageFromRose Write method Description The importPackageFromRose method imports the specified package from Rational Rose into Rhapsody 6.1. Visual Basic Syntax importPackageFromRose (projectName As String, packageName As String, logFileName As String) Arguments projectName The name of the project packageName The name of the package logFileName The name of the log file C/C++ Prototype importPackageFromRose (BSTR projectName, BSTR packageName, BSTR logFileName) Return Value HRESULT (0 for success, or a signed integer error code) 422 API Reference Manual Rhapsody Interfaces importProjectFromRose Write method Description The importProjectFromRose method imports the specified project from Rational Rose into Rhapsody 6.1. Visual Basic Syntax importProjectFromRose (projectName As String, logFileName As String) Arguments projectName The name of the project logFileName The name of the log file C/C++ Prototype HRESULT importProjectFromRose (BSTR projectName, BSTR logFileName) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 423 Rhapsody API Interfaces recalculateEventsBaseIds Write method Description The recalculateEventsBaseIds method recalculates the events base IDs used by the project. Visual Basic Syntax recalculateEventsBaseIds () C/C++ Prototype HRESULT recalculateEventsBaseIds () Return Value HRESULT (0 for success, or a signed integer error code) 424 API Reference Manual Rhapsody Interfaces save Read method Description The save method saves the current project. Note: This method flags an error if one occurs. Visual Basic Syntax save() C/C++ Prototype HRESULT save() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 425 Rhapsody API Interfaces saveAs Read method Description The saveAs method saves the current project to the specified file name and location. Note: This method flags an error if one occurs. Visual Basic Syntax saveAs (filename As String) Arguments filename The name of the file to which to save the project C/C++ Prototype HRESULT saveAs (BSTR filename) Return Value HRESULT (0 for success, or a signed integer error code) 426 API Reference Manual Rhapsody Interfaces setActiveComponent Write method Description The setActiveComponent method sets the active component for the current project. Note: This method flags an error if one occurs. Visual Basic Syntax setActiveComponent (name As String) Arguments name The name of the active component C/C++ Prototype HRESULT setActiveComponent (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 427 Rhapsody API Interfaces setActiveConfiguration Write method Description The setActiveConfiguration method sets the active configuration for the current project. Visual Basic Syntax setActiveConfiguration (name As String) Arguments name The name of the active configuration C/C++ Prototype HRESULT setActiveConfiguration (BSTR name) Return Value HRESULT (0 for success, or a signed integer error code) 428 API Reference Manual Rhapsody Interfaces IRPRelation Interface The IRPRelation interface represents a relationship between two classes (ofClass and otherClass). It inherits from IRPUnit. VB Properties Name Type Access Description inverse RPRelation RO If the relation is symmetric, this is a pointer to the peer relation. isNavigable Long RW A flag indicating whether the relation is navigable. isSymmetric Long RO A flag indicating whether the relation is bidirectional. If this is equal to 1, the Navigability property is set as navigable for both ends. If this is equal to 0, the navigability of the inverse RPRelation is set to None. multiplicity String RW The multiplicity of the relation. ObjectAsObjectType RPClass RO If this relation is a Rhapsody in C object, it is returned as a class. An object (in RiC) plays two roles: as an instance of some class and the class itself. When you get an object (say by querying the package owning it), it comes “wearing” the IRPRelation “hat.” If you want to use it as a class (object_type) invoke this method on it and the return value is the same object “wearing” the IRPClass “hat.” ofClass RPClassifier RW The source class of the relation. otherClass RPClassifier RW The target class of the relation. qualifier String RW The qualifier of the relation, if one exists. Rational Rhapsody 429 Rhapsody API Interfaces Name Type Access Description relationLabel String RW The link name given to the relation. relationLinkName String RW The name of the relation link relationRoleName String RW The name of role of the participating elements in the relation. A relation consists of two designations: a role name and a relation name. For example, two people can be in a relation called “marriage” (relation name) with each person designated by their role within the marriage as “spouse” (role name). For IRPRelation objects, the relation name is mapped to the IRPModelElement property name and the property relationRoleName is provided for the relation’s role name. relationType String RW The relation type (Association, Aggregation, or Composition). visibility String RW The visibility of the relation (Public, Protected, or Private). Method Summary isTypelessObject Tests an object to see if it is defined explicitly or implicitly makeUnidirect Changes the current relation from a unidirectional (symmetric) one to one that is directional from the me of this relation to me’s inverse setInverse Adds or updates the inverse relation isTypelessObject Read method 430 API Reference Manual Rhapsody Interfaces Description The isTypelessObject method tests an object to see if it is defined explicitly (“object of type X”) or implicitly (“typeless” or “unique”). Visual Basic Syntax isTypelessObject() As Long Return Value 1 if the relation is typeless; otherwise 0 C/C++ Prototype HRESULT isTypelessObject (long *pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 431 Rhapsody API Interfaces makeUnidirect Write method Description The makeUnidirect method changes the current relation from a unidirectional (symmetric) one to one that is directional from the me of this relation to me’s inverse. Visual Basic Syntax makeUnidirect() C/C++ Prototype HRESULT makeUnidirect() Return Value HRESULT (0 for success, or a signed integer error code) 432 API Reference Manual Rhapsody Interfaces setInverse Write method Description The setInverse method adds or updates the inverse relation. It provides a means for turning a unidirectional relation into a symmetric one. Visual Basic Syntax setInverse (roleName As String, linkType As String) Arguments roleName The role name for the relation linkType The type of link (unidirectional or symmetric) C/C++ Prototype HRESULT setInverse (BSTR roleName, BSTR linkType) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 433 Rhapsody API Interfaces IRPRequirement Interface The IRPRequirement interface represents a Rhapsody requirement. It inherits from IRPAnnotation. IRPSequenceDiagram Interface The IRPSequenceDiagram interface represents a sequence diagram. It inherits from IRPDiagram. Method Summary getLogicalCollaboration Retrieves the logic behind the collaboration diagram getRelatedUseCases Retrieves use cases related to the current sequence diagram getLogicalCollaboration Read method Description The getLogicalCollaboration method retrieves the logic behind the collaboration diagram. Visual Basic Syntax getLogicalCollaboration() As RPCollaboration Return Value The collaboration diagram C/C++ Prototype HRESULT getLogicalCollaboration ( IRPCollaboration** collaboration) Return Value HRESULT (0 for success, or a signed integer error code) getRelatedUseCases Read method 434 API Reference Manual Rhapsody Interfaces Description The getRelatedUseCases method retrieves use cases related to the current sequence diagram. Visual Basic Syntax getRelatedUseCases() As RPCollection Return Value A collection of use cases related to this sequence diagram C/C++ Prototype HRESULT getRelatedUseCases (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 435 Rhapsody API Interfaces IRPState Interface The IRPState interface represents a state in a statechart. It inherits from IRPStateVertex. VB Properties Name 436 Type Access Description defaultTransition RPTransition* RO The default transition of this state, if there is one. entryAction String RW The actions executed when this state is entered. exitAction String RW The actions executed when this state is exited. isOverridden Long RO If this is equal to 1 (as opposed to 0), the state is overridden. Currently, this property has not been implemented. isReferenceActivity Long RO If this is equal to 1 (as opposed to 0), the state is an activity reference. itsStateChart RPStateChart RO The statechart of this state. itsSwimlane RPSwimlane RW The swimlane of this state. Currently, this property has not been implemented. nestedStateChart RPStateChart RO The statechart nested inside of this state. referenceToActivity RPModelElement RW The referenced activity or activity diagram. API Reference Manual Rhapsody Interfaces Name Type Access Description stateType String RW The type of this state. The possible values are as follows: • Or—state that contains no concurrent states • And—state that contains two or more concurrent states • LocalTermination —termination state element • Block—action block element • Action—action element • SubActivity— subactivity element • ObjectFlow—object node element • ReferenceActivit y—call behavior element • CallOperation— call operation element • EventState—send action element subStateVertices RPCollection of RPStateVertex RO A collection of transitions and states that connect to this state. Method Summary addConnector Adds a connector to the statechart addState Adds a state to the statechart addStaticReaction Adds a static reaction to the statechart addTerminationState Adds a termination state to the statechart createDefaultTransition Creates a default transition in the statechart createNestedStatechart Creates a nested statechart deleteConnector Deletes the specified connector from the statechart deleteStaticReaction Deletes the specified static reaction from the statechart Rational Rhapsody 437 Rhapsody API Interfaces getFullNameInStatechart Returns the full text name of this state within its statecharts getInheritsFrom Returns the base state from which the current state inherits getLogicalStates Retrieves the list of logical states getStaticReactions Returns a collection of static reaction transitions originating from the current state getSubStates Returns a collection of substates belonging to the current state isAnd Determines whether this state is an And state isCompound Determines whether the current state is a compound state isLeaf Determines whether the current state is a leaf state isRoot Determines whether the current state is a root state overrideInheritance Overrides inheritance for the current state resetEntryActionInheritance Resets the inheritance of the entry action of the current state resetExitActionInheritance Resets the inheritance of the exit action of the current state setStaticReaction Sets the static reaction for the current state unoverrideInheritance Removes the override on inheritance for this state addConnector Write method Description The addConnector method adds a connector to the current state. Visual Basic Syntax addConnector (type As String) As RPConnector Arguments type The connector type. The possible values are as follows: Condition 438 API Reference Manual Rhapsody Interfaces Fork History Join Termination Return Value The new connector C/C++ Prototype HRESULT addConnector (BSTR type, IRPConnector** connector) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 439 Rhapsody API Interfaces addState Write method Description The addState method adds a new state to the statechart. Visual Basic Syntax addState (name As String) As RPState Arguments name The name of the new state Return Value The new state added to the statechart C/C++ Prototype HRESULT addState (BSTR name, IRPState** state) Return Value HRESULT (0 for success, or a signed integer error code) 440 API Reference Manual Rhapsody Interfaces addStaticReaction Write method Description The addStaticReaction method adds a static reaction to the state. Visual Basic Syntax addStaticReaction (trigger As RPInterfaceItem) As RPTransition Arguments trigger The trigger to add to the statechart Return Value The new static reaction C/C++ Prototype HRESULT addStaticReaction (IRPInterfaceItem* trigger, IRPTransition** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 441 Rhapsody API Interfaces addTerminationState Write method Description The addTerminationState method adds a termination state to the statechart. Visual Basic Syntax addTerminationState() As RPState Return Value The new termination state C/C++ Prototype HRESULT addTerminationState (IRPState** state) Return Value HRESULT (0 for success, or a signed integer error code) 442 API Reference Manual Rhapsody Interfaces createDefaultTransition Write method Description The createDefaultTransition method creates a default transition. Visual Basic Syntax createDefaultTransition (from As RPState) As RPTransition Arguments from The default state to which the default transition points Return Value The default transition C/C++ Prototype HRESULT createDefaultTransition (IRPState* from, IRPTransition** transition) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 443 Rhapsody API Interfaces createNestedStatechart Write method Description The createNestedStatechart method creates a nested statechart (substatechart). Visual Basic Syntax createNestedStatechart() As RPStatechart Return Value The nested statechart C/C++ Prototype HRESULT createNestedStatechart (IRPStatechart** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 444 API Reference Manual Rhapsody Interfaces deleteConnector Write method Description The deleteConnector method deletes the specified connector from the statechart. Visual Basic Syntax deleteConnector (connector As RPConnector) Arguments connector The connector to delete C/C++ Prototype HRESULT deleteConnector (IRPConnector* connector) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 445 Rhapsody API Interfaces deleteStaticReaction Write method Description The deleteStaticReaction method deletes the specified static reaction. Visual Basic Syntax deleteStaticReaction (pVal As RPTransition) Argument pVal The static reaction to delete C/C++ Prototype HRESULT deleteStaticReaction (IRPTransition *pVal) Return Value HRESULT (0 for success, or a signed integer error code) entryAction Write method Description The entryAction method specifies an entry action for the state. Visual Basic Syntax entryAction(body As String) Arguments body The entry action C/C++ Prototype HRESULT entryAction(BSTR body) 446 API Reference Manual Rhapsody Interfaces Return Value HRESULT (0 for success, or a signed integer error code) exitAction Write method Description The exitAction method defines an exit action for the state. Visual Basic Syntax exitAction(body As String) Arguments body The exit action C/C++ Prototype HRESULT exitAction(BSTR body) Return Value HRESULT (0 for success, or a signed integer error code) getFullNameInStatechart Read method Description The getFullNameInStatechart method returns the full text name of this state within its statecharts. Dot notation is used to indicate statechart nesting. For example, if statechart C is in statechart B, which is in statechart A, the full text name of the C statechart is A.B.C. Visual Basic Syntax getFullNameInStatechart() As String Rational Rhapsody 447 Rhapsody API Interfaces Return Value The full textual name of a state within its statecharts C/C++ Prototype HRESULT getFullNameInStatechart (BSTR* pVal) Return Value HRESULT (0 for success, or a signed integer error code) getInheritsFrom Read method Description The getInheritsFrom method returns the base state from which the current state inherits. Visual Basic Syntax getInheritsFrom() As RPState Return Value The base state that this state inherits from C/C++ Prototype HRESULT getInheritsFrom (IRPState** pVal) Return Value HRESULT (0 for success, or a signed integer error code) getLogicalStates Read method Description The getLogicalStates method retrieves the list of logical states. Visual Basic Syntax getLogicalStates() As RPCollection 448 API Reference Manual Rhapsody Interfaces Return Value The list of logical states C/C++ Prototype HRESULT getLogicalStates (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) getStaticReactions Read method Description The getStaticReactions method returns a collection of static reaction transitions originating from the current state. Given a transition with a trigger T, guard condition G, and static reactions A, if T occurs and G is true, the static reactions (also known as reactions in state) are executed while the object is still in its original state. Visual Basic Syntax getStaticReactions() As RPCollection Return Value A collection of the static reaction transitions originating from the current state C/C++ Prototype HRESULT getStaticReactions (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) getSubStates Read method Description The getSubStates method returns a collection of substates belonging to the current state. Rational Rhapsody 449 Rhapsody API Interfaces Typically, this method retrieves the state members of a state (“substates”), unless the state contains a nested statechart. In this case, to see the substates, you must descend further into the nested statechart. Visual Basic Syntax getSubStates() As RPCollection Return Value A collection of nested substates belonging to this state C/C++ Prototype HRESULT getSubStates (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) isAnd Read method Description The isAnd method determines whether this state is an And state. Visual Basic Syntax isAnd() As Long Return Value 1 if this state is an And state; otherwise 0 C/C++ Prototype HRESULT isAnd (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isCompound Read method 450 API Reference Manual Rhapsody Interfaces Description The isCompound method determines whether the current state is a compound state. Visual Basic Syntax isCompound() As Long Return Value 1 if this state is a compound state; otherwise 0 C/C++ Prototype HRESULT isCompound (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isLeaf Read method Description The isLeaf method determines whether the current state is a leaf state. Visual Basic Syntax isLeaf() As Long Return Value 1 if this state is a leaf state; otherwise 0 C/C++ Prototype HRESULT isLeaf (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isRoot Read method Rational Rhapsody 451 Rhapsody API Interfaces Description The isRoot method determines whether the current state is a root state. Visual Basic Syntax isRoot() As Long Return Value 1 if this state is a root state; otherwise 0 C/C++ Prototype HRESULT isRoot (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) overrideInheritance Note Currently, this method has not been implemented. Write method Description The overrideInheritance method overrides inheritance for the current state. Visual Basic Syntax overrideInheritance() C/C++ Prototype HRESULT overrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) 452 API Reference Manual Rhapsody Interfaces resetEntryActionInheritance Write method Description The resetEntryActionInheritance method resets the inheritance of the entry action of the current state. Visual Basic Syntax resetEntryActionInheritance() As RPState Return Value The updated state C/C++ Prototype HRESULT resetEntryActionInheritance (IRPState** pVal) Return Value HRESULT (0 for success, or a signed integer error code) resetExitActionInheritance Write method Description The resetExitActionInheritance method resets the inheritance of the exit action for the current state. Visual Basic Syntax resetExitActionInheritance() As RPState Return Value The updated state C/C++ Prototype HRESULT resetExitActionInheritance (IRPState** pVal) Rational Rhapsody 453 Rhapsody API Interfaces Return Value HRESULT (0 for success, or a signed integer error code) setStaticReaction Write method Description The setStaticReaction method sets the static reaction for the current state. Visual Basic Syntax setStaticReaction (trigVal As String, guardVal As String, actionVal As String) Arguments trigVal The new value for the trigger guardVal The new value for the guard actionVal The new value for the action C/C++ Prototype HRESULT setStaticReaction (BSTR trigVal, BSTR guardVal, BSTR actionVal) Return Value HRESULT (0 for success, or a signed integer error code) unoverrideInheritance Note Currently, this method has not been implemented. Write method Description The unoverrideInheritance method removes the override on inheritance for the current state. 454 API Reference Manual Rhapsody Interfaces Visual Basic Syntax unoverrideInheritance() C/C++ Prototype HRESULT unoverrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 455 Rhapsody API Interfaces stateType Read method Description The stateType method specifies the state type of the current state. Visual Basic Syntax stateType(type As String) Arguments type The state type. The possible values are as follows: Or—state that contains no concurrent states And—state that contains two or more concurrent states LocalTermination—termination Block—action state element block element Action—action element SubActivity—subactivity ObjectFlow—object node element ReferenceActivity—call CallOperation—call EventState—send element behavior element operation element action element C/C++ Prototype HRESULT stateType(BSTR pVal) Return Value HRESULT (0 for success, or a signed integer error code) 456 API Reference Manual Rhapsody Interfaces IRPStatechart Interface The IRPStatechart interface represents a statechart diagram. It inherits from IRPDiagram. Note: You cannot create a statechart using the APIs. The statechart must already exist for you to use the APIs on it. VB Properties Name Type Access Description isOverridden Long RO If this is equal to 1 (as opposed to 0), the state is overridden. Currently, this property has not been implemented. itsClass RPClass RO The class of this statechart. rootState RPState RO The default (starting) state of this statechart. Method Summary createGraphics Creates graphics in the Rhapsody statechart deleteState Deletes the specified state from the Rhapsody statechart findTrigger Determines whether the current statechart has a trigger for the specified class interface element getAllTriggers Returns a collection of all the triggers for the current statechart getInheritsFrom Returns a pointer to the base statechart from which the current statechart inherits overrideInheritance Overrides inheritance for the current state unoverrideInheritance Removes the override on inheritance for the current state Rational Rhapsody 457 Rhapsody API Interfaces createGraphics Write method Description The createGraphics method creates graphics in the Rhapsody 6.1 statechart using the information in the COM API methods. Visual Basic Syntax createGraphics() C/C++ Prototype HRESULT createGraphics() Return Value HRESULT (0 for success, or a signed integer error code) 458 API Reference Manual Rhapsody Interfaces deleteState Write method Description The deleteState method deletes the specified state from the statechart. Visual Basic Syntax deleteState (state As RPState) Arguments state The state to delete C/C++ Prototype HRESULT deleteState (IRPState* state) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 459 Rhapsody API Interfaces findTrigger Read method Description The findTrigger method determines whether the current statechart has a trigger for the specified class interface element. Visual Basic Syntax findTrigger (item As RPInterfaceItem) As Long Arguments item The state to check Return Value 1 if this statechart has a trigger; otherwise 0 C/C++ Prototype HRESULT findTrigger (IRPInterfaceItem* item, long *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 460 API Reference Manual Rhapsody Interfaces getAllTriggers Read method Description The getAllTriggers method returns a collection of all the triggers for the current statechart. Visual Basic Syntax getAllTriggers() As RPCollection Return Value A collection of all the triggers (RPInterfaceItems) for this statechart C/C++ Prototype HRESULT getAllTriggers (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 461 Rhapsody API Interfaces getInheritsFrom Read method Description The getInheritsFrom method returns a pointer to the base statechart from which the current statechart inherits. Visual Basic Syntax getInheritsFrom() As RPStatechart Return Value The base statechart from which this statechart inherits C/C++ Prototype HRESULT getInheritsFrom (IRPStatechart** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 462 API Reference Manual Rhapsody Interfaces overrideInheritance Note Currently, this method has not been implemented. Write method Description The overrideInheritance method overrides inheritance for the current state. Visual Basic Syntax overrideInheritance() C/C++ Prototype HRESULT overrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 463 Rhapsody API Interfaces unoverrideInheritance Note Currently, this method has not been implemented. Write method Description The unoverrideInheritance method removes the override on inheritance for the current state. Visual Basic Syntax unoverrideInheritance() C/C++ Prototype HRESULT unoverrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) 464 API Reference Manual Rhapsody Interfaces IRPStateVertex Interface The IRPStateVertex interface represents all model elements that can be connectors or states. It is an abstract interface that inherits from IRPModelElement. VB Properties Name parent Type RPState Access RW Description The parent state or connector Method Summary addTransition Creates a transition deleteTransition Deletes a transition getInTransitions Returns a collection of transitions that are directed into the current state or connector getOutTransitions Returns a collection of transitions that are directed out of the current state or connector addTransition Write method Description The addTransition method creates a transition. Visual Basic Syntax addTransition (to As RPStateVertex) As RPTransition Arguments to The “to” state for the transition Return Value The new transition Rational Rhapsody 465 Rhapsody API Interfaces C/C++ Prototype HRESULT addTransition (IRPStateVertex *to, IRPTransition** transition) Return Value HRESULT (0 for success, or a signed integer error code) deleteTransition Write method Description The deleteTransition method deletes the specified transition. Visual Basic Syntax deleteTransition (transition As RPTransition) Arguments transition The transition to delete C/C++ Prototype HRESULT deleteTransition (IRPTransition *transition) Return Value HRESULT (0 for success, or a signed integer error code) getInTransitions Read method Description The getInTransitions method returns a collection of transitions that are directed into the current state or connector. Visual Basic Syntax getInTransitions() As RPCollection 466 API Reference Manual Rhapsody Interfaces Return Value A collection of transitions going into this state or connector C/C++ Prototype HRESULT getInTransitions (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 467 Rhapsody API Interfaces getOutTransitions Read method Description The getOutTransitions method returns a collection of transitions that are directed out of the current state or connector. Visual Basic Syntax getOutTransitions() As RPCollection Return Value A collection of transitions going out of this state or connector C/C++ Prototype HRESULT getOutTransitions (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 468 API Reference Manual Rhapsody Interfaces parent Read method Description The parent method returns the parent state. Visual Basic Syntax parent(newVal As RPState) Arguments newVal The parent state C/C++ Prototype HRESULT parent(IRPState* newVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 469 Rhapsody API Interfaces IRPStereotype Interface The IRPStereotype interface represents a stereotype in the model. It inherits from IRPModelElement. VB Properties Name Type Access Description icon String RO The icon string attached to the stereotype ofMetaClass String RO The metaclass to which the stereotype applies IRPStructureDiagram Interface The IRPStructureDiagram interface represents a Rhapsody structure diagram. It inherits from IRPDiagram. IRPSwimlane Interface The IRPSwimlane interface represents a swimlane in an activity diagram. It inherits from IRPModelElement. VB Properties Name 470 Type Access Description contents RPCollection RO A collection of states in the swimlane represents RPModelElement RW The object that implements the swimlane API Reference Manual Rhapsody Interfaces IRPTag Interface The IRPTag interface represents a tag. It inherits from IRPVariable. VB Properties Name Type Access Description tagMetaClass String RW The metaclass for the tag value String RW The default value for the tag IRPTemplateInstantiation Interface The IRPTemplateInstantiation interface represents a global variable in a Rhapsody model. It inherits from IRPModelElement. VB Properties Name templateInstantiationParameters Type Collection of RPTemplate Instantiation Parameters Rational Rhapsody Access RO Description A collection of parameters used for instantiation 471 Rhapsody API Interfaces IRPTemplateInstantiationParameter Interface The IRPTemplateInstantiationParameter interface represents a parameter used in template instantiation in a Rhapsody model. It inherits from the IRPModelElement. VB Properties Name argValue Type Access RW String Description The argument value for this parameter of a template instantiation IRPTemplateParameter Interface The IRPTemplateParameter interface represents a parameter for a template in a Rhapsody model. It inherits from IRPVariable. VB Properties Name typeName Type RPType Access RW Description The type of this template parameter Method Summary setClassType 472 Sets or changes the current template parameter to a class type parameter API Reference Manual Rhapsody Interfaces setClassType Write method Description The setClassType method sets or changes the current template parameter to a class type parameter. For example, parameter <int X> becomes <class X>. Visual Basic Syntax setClassType() C/C++ Prototype HRESULT setClassType() Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 473 Rhapsody API Interfaces IRPTransition Interface The IRPTransition interface represents a transition in a statechart. It inherits from IRPModelElement. VB Properties Name Type Access Description isOverridden Long RO If this is equal to 1 (as opposed to 0), the transition is overridden. Currently, this property has not been implemented. itsLabel String RO The transition label for this transition. itsSource RPStateVertex RW The source state of this transition. itsStateChart RPStatechart RW The statechart of this transition. itsTarget RPStateVertex RW The target state of this transition. Method Summary 474 getInheritsFrom Returns the base transition from which the current transition inherits getItsAction Returns the action code of the current transition getItsGuard Returns the guard condition of the current transition getItsTrigger Returns the trigger (event or triggered operation) of the current transition getOfState Returns the source state for which this transition is the default transition isDefaultTransition Determines whether the current transition is a default transition isStaticReaction Determines whether this is a static reaction itsCompoundSource Returns a collection of states that act as multiple sources for this single transition overrideInheritance Overrides inheritance for the current transition resetLabelInheritance Resets the label inheritance setItsAction Updates the current transition with a new action API Reference Manual Rhapsody Interfaces setItsGuard Updates the current transition with a new guard setItsLabel Updates this transition with a new label (trigger[guard]/action) setItsTrigger Updates the current transition with a new trigger unoverrideInheritance Removes the override on inheritance for the current transition getInheritsFrom Read method Description The getInheritsFrom method returns the base transition from which the current transition inherits. Visual Basic Syntax getInheritsFrom() As RPTransition Return Value The base transition from which this transition inherits C/C++ Prototype HRESULT getInheritsFrom (IRPTransition** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 475 Rhapsody API Interfaces getItsAction Read method Description The getItsAction method returns the action code of the current transition. Visual Basic Syntax getItsAction() As RPAction Return Value The action code of this transition C/C++ Prototype HRESULT getItsAction (IRPAction** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 476 API Reference Manual Rhapsody Interfaces getItsGuard Read method Description The getItsGuard method returns the guard condition of the current transition. Visual Basic Syntax getItsGuard() As RPGuard Return Value The guard condition of this transition C/C++ Prototype HRESULT getItsGuard (IRPGuard** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 477 Rhapsody API Interfaces getItsTrigger Read method Description The getItsTrigger method returns the trigger (event or triggered operation) of the current transition. Visual Basic Syntax getItsTrigger() As RPTrigger Return Value The trigger of this transition C/C++ Prototype HRESULT getItsTrigger (IRPTrigger** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Example The following macro checks each transition to see if it has a trigger. Sub checkNullTransitions() Dim elem As RPModelElement For Each elem In getProject.getNestedElementsRecursive If elem.metaClass = "Transition" Then Dim trans As RPTransition Set trans = elem If trans.getItsTrigger Is Nothing Then Debug.Print "The trigger in transition '" + trans.getFullPathName + "' is null!" End If End If Next elem End Sub ... 478 API Reference Manual Rhapsody Interfaces getOfState Read method Description The getOfState method returns the source state for which this transition is the default transition. Suppose you want to figure out what event sequences lead to a state A. One way to retrieve those values is to travel backwards from A, looking for all the transitions going into it. If they are normal transitions, you can continue to their source. If they are default transitions, you must find the parent using the method getOfState. Visual Basic Syntax getOfState() As RPState Return Value The parent state for which this transition is the default transition. If this transition is the default transition of its statechart, this method returns the parent; otherwise, it returns a NULL value. C/C++ Prototype HRESULT getOfState (IRPState** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 479 Rhapsody API Interfaces isDefaultTransition Read method Description The isDefaultTransition method determines whether the current transition is a default transition. Visual Basic Syntax isDefaultTransition() As Long Return Value 1 if this transition is a default transition; otherwise 0 C/C++ Prototype HRESULT isDefaultTransition (long *pVal) Return Value HRESULT (0 for success, or a signed integer error code) isStaticReaction Read method Description The isStaticReaction method determines whether this is a static reaction. Visual Basic Syntax isStaticReaction() As Long Return Value 1 if this is a static reaction; otherwise 0 C/C++ Prototype HRESULT isStaticReaction (long *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 480 API Reference Manual Rhapsody Interfaces itsCompoundSource Read method Description The itsCompoundSource method returns a collection of states that act as multiple sources for this single transition. For example, consider a junction connector. There can be many transitions from different states that are resolved into one transition leaving a junction connector. For the transition leaving a junction connector, this method gives all the source states. Visual Basic Syntax itsCompoundSource() As RPCollection Return Value A collection of source states (RPStateVertexes) for this transition C/C++ Prototype HRESULT itsCompoundSource (IRPCollection** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 481 Rhapsody API Interfaces overrideInheritance Note Currently, this method has not been implemented. Write method Description The overrideInheritance method overrides inheritance for the current transition. Visual Basic Syntax overrideInheritance() C/C++ Prototype HRESULT overrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) 482 API Reference Manual Rhapsody Interfaces resetLabelInheritance Write method Description The resetLabelInheritance method resets the label inheritance. Visual Basic Syntax resetLabelInheritance() As RPTransition Return Value The updated RPTransition C/C++ Prototype HRESULT resetLabelInheritance (IRPTransition** pVal) Return Value HRESULT (0 for success, or a signed integer error code) setItsAction Write method Description The setItsAction method updates the current transition with a new action. Visual Basic Syntax setItsAction (action As String) As RPAction Return Value The new action for the transition C/C++ Prototype HRESULT setItsAction (BSTR action, IRPAction** pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 483 Rhapsody API Interfaces setItsGuard Write method Description The setItsGuard method updates the current transition with a new guard. Visual Basic Syntax setItsGuard() As RPGuard Return Value The new guard for this transition C/C++ Prototype HRESULT setItsGuard (BSTR guard, IRPGuard** pVal) Return Value HRESULT (0 for success, or a signed integer error code) setItsLabel Write method Description The setItsLabel method updates this transition with a new label (trigger[guard]/action) Visual Basic Syntax setItsLabel (trigger As String, guard As String, action As String) Arguments trigger The new trigger value for this transition guard The new guard value for this transition action The new action value for this transition 484 API Reference Manual Rhapsody Interfaces C/C++ Prototype HRESULT setItsLabel (BSTR trigger, BSTR guard, BSTR action) Return Value HRESULT (0 for success, or a signed integer error code) setItsTrigger Write method Description The setItsTrigger method updates the current transition with a new trigger. Visual Basic Syntax setItsTrigger (trigger As String) As RPTrigger Return Value The new trigger for this transition C/C++ Prototype HRESULT setItsTrigger (BSTR trigger, IRPTrigger** pVal) Return Value HRESULT (0 for success, or a signed integer error code) unoverrideInheritance Note Currently, this method has not been implemented. Write method Description The unoverrideInheritance method removes the override on inheritance for the current transition. Rational Rhapsody 485 Rhapsody API Interfaces Visual Basic Syntax unoverrideInheritance() C/C++ Prototype HRESULT unoverrideInheritance() Return Value HRESULT (0 for success, or a signed integer error code) 486 API Reference Manual Rhapsody Interfaces IRPTrigger Interface The IRPTrigger interface represents a trigger of a transition in a statechart. It inherits from IRPModelElement. VB Properties Name body Type String Access RW Description The body of this trigger Method Summary getItsOperation Returns the event or triggered operation of the current trigger isOperation Determines whether the current trigger is an operation (event or triggered operation) isTimeout Determines whether the current trigger is a timeout getItsOperation Read method Description The getItsOperation method returns the event or triggered operation of the current trigger. If the current trigger’s transition is labeled E[C]/A (where E is the event (event or triggered operation) the trigger refers to, C is the guard condition, and A is the action), this method returns the event E to which this trigger refers. Visual Basic Syntax getItsOperation() As RPInterfaceItem Return Value The operation of this trigger C/C++ Prototype HRESULT getItsOperation (IRPInterfaceItem** pVal) Rational Rhapsody 487 Rhapsody API Interfaces Return Value HRESULT (0 for success, or a signed integer error code) isOperation Read method Description The isOperation method determines whether the current trigger is an operation (event or triggered operation). Visual Basic Syntax isOperation() As Long Return Value 1 if this trigger is an operation; otherwise 0 C/C++ Prototype HRESULT isOperation (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 488 API Reference Manual Rhapsody Interfaces isTimeout Read method Description The isTimeout method determines whether the current trigger is a timeout. Visual Basic Syntax isTimeout() As Long Return Value 1 if this trigger is a timeout; otherwise 0 C/C++ Prototype HRESULT isTimeout (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 489 Rhapsody API Interfaces IRPType Interface The IRPType interface represents Rhapsody 6.1 data types. It inherits from IRPClassifier. VB Properties Name Type Access Description declaration String RW The type declaration. enumerationLiterals Collection of RO A container that can be manipulated only if the kind of the type is RPEnumeration Literals Enumerated isPredefined Long RO A flag that indicates whether this type is a Rhapsody predefined types. Predefined types are defined in the package unit files: Share\Properties\ Predefined<lang>. sbs 490 isTypedef Long RO A flag that indicates whether this type is defined with a typedef isTypedefConstant Long RW A flag that indicates whether the typedef is defined as a constant (is read-only, such as the const qualifier in C++) isTypedefOrdered Long RW A flag that indicated whether the order of the reference type items is significant isTypedefReference Long RW A flag that indicates whether the typedef is referenced as a reference (such as a pointer (*) or an address (&) in C++) kind String RW Stores the type kind. typedefBaseType RPClassifier RW Specifies the basic type of the typedef typedefMultiplicity String RW Specifies the multiplicity of the typedef API Reference Manual Rhapsody Interfaces Method Summary addEnumerationLiteral Creates an enumeration literal isArray Determines whether the current type is an array isEnum Determines whether the current type is an enumerated type isEqualTo Tests for equality between the type of the type and the type itself isImplicit Determines whether the current type is an implicit type isKindEnumeration Determines whether the current type is an enumeration isKindLanguage Determines whether the current type is a language declaration type isKindStructure Determines whether the current type is a structure isKindTypedef Determines whether the current type is a typedef isKindUnion Determines whether the current type is a union isPointer Determines whether the current type is a pointer isPointerToPointer Determines whether the current type is a pointer to another pointer isReference Determines whether the current type is a reference isReferenceToPointer Determines whether the current type is a reference to a pointer isStruct Determines whether the current type is a struct isTemplate Determines whether the current type is a template isUnion Determines whether the current type is a union Rational Rhapsody 491 Rhapsody API Interfaces addEnumerationLiteral Write method Description The addEnumerationLiteral method creates an enumeration literal. Visual Basic Syntax addEnumerationLiteral (name As String) As RPEnumerationLiteral Arguments name The name of the enumeration literal to create Return Value The new enumeration literal C/C++ Prototype HRESULT addEnumerationLiteral (BSTR name, IRPEnumerationLiteral** pVal) Return Value HRESULT (0 for success, or a signed integer error code) 492 API Reference Manual Rhapsody Interfaces isArray Read method Description The isArray method determines whether the current type is an array. Visual Basic Syntax isArray() As Long Return Value 1 if the type is an array; 0 otherwise C/C++ Prototype HRESULT isArray (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isEnum Read method Description The isEnum method determines whether the current type is an enumerated type. Visual Basic Syntax isEnum() As Long Return Value 1 if the type is an array; 0 otherwise C/C++ Prototype HRESULT isEnum (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 493 Rhapsody API Interfaces isEqualTo Read method Description The isEqualTo method tests for equality between the type of the type and the type itself. Visual Basic Syntax isEqualTo() As Long Return Value The method returns 1 if the “type of the type” is equal to the type depended on, otherwise 0. For example, if the type definition is typedef x, the type is equal to the type it depends on. However, if the type definition is typedef x*, the type of the type is a pointer, and is therefore different from the type itself. C/C++ Prototype HRESULT isEqualTo (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 494 API Reference Manual Rhapsody Interfaces isImplicit Read method Description The isImplicit method determines whether the current type is an implicit type. Visual Basic Syntax isImplicit() As Long Return Value 1 if the type is an implicit type; 0 otherwise C/C++ Prototype HRESULT isImplicit (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isKindEnumeration Read method Description The isKindEnumeration method determines whether the current type is an enumeration. Visual Basic Syntax isKindEnumeration() As Long Return Value 1 if the type is an enumeration; 0 otherwise C/C++ Prototype HRESULT isKindEnumeration (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 495 Rhapsody API Interfaces isKindLanguage Read method Description The isKindLanguage method determines whether the current type is a language declaration type. Visual Basic Syntax isKindLanguage() As Long Return Value 1 if the type is a language declaration type; 0 otherwise C/C++ Prototype HRESULT isKindLanguage (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 496 API Reference Manual Rhapsody Interfaces isKindStructure Read method Description The isKindStructure method determines whether the current type is a structure. Visual Basic Syntax isKindStructure() As Long Return Value 1 if the type is a structure; 0 otherwise C/C++ Prototype HRESULT isKindStructure (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 497 Rhapsody API Interfaces isKindTypedef Read method Description The isKindTypedef method determines whether the current type is a typedef. Visual Basic Syntax isKindTypedef() As Long Return Value 1 if the type is a typedef; 0 otherwise C/C++ Prototype HRESULT isKindTypedef (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 498 API Reference Manual Rhapsody Interfaces isKindUnion Read method Description The isKindUnion method determines whether the current type is a union. Visual Basic Syntax isKindUnion() As Long Return Value 1 if the type is a union; 0 otherwise C/C++ Prototype HRESULT isKindUnion (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) isPointer Read method Description The isPointer method determines whether the current type is a pointer. Visual Basic Syntax isPointer() As Long Return Value 1 if the type is a pointer; 0 otherwise C/C++ Prototype HRESULT isPointer (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 499 Rhapsody API Interfaces isPointerToPointer Read method Description The isPointerToPointer method determines whether the current type is a pointer to another pointer. Visual Basic Syntax isPointerToPointer() As Long Return Value 1 if the type is a pointer to a pointer; 0 otherwise C/C++ Prototype HRESULT isPointerToPointer (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 500 API Reference Manual Rhapsody Interfaces isReference Read method Description The isReference method determines whether the current type is a reference. Visual Basic Syntax isReference() As Long Return Value 1 if the type is a reference; 0 otherwise C/C++ Prototype HRESULT isReference (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 501 Rhapsody API Interfaces isReferenceToPointer Read method Description The isReferenceToPointer method determines whether the current type is a reference to a pointer. Visual Basic Syntax isReferenceToPointer() As Long Return Value 1 if this type is a reference to a pointer; otherwise 0 C/C++ Prototype HRESULT isReferenceToPointer (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 502 API Reference Manual Rhapsody Interfaces isStruct Read method Description The isStruct method determines whether the current type is a struct. Visual Basic Syntax isStruct() As Long Return Value 1 if this type is a struct; otherwise 0 C/C++ Prototype HRESULT isStruct (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 503 Rhapsody API Interfaces isTemplate Write method Description The isTemplate method determines whether the current type is a template. Visual Basic Syntax isTemplate() As Long Return Value 1 if this type is a template; otherwise 0 C/C++ Prototype HRESULT isTemplate (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) 504 API Reference Manual Rhapsody Interfaces isUnion Write method Description The isUnion method determines whether the current type is a union. Visual Basic Syntax isUnion() As Long Return Value 1 if this type is a union; otherwise 0 C/C++ Prototype HRESULT isUnion (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 505 Rhapsody API Interfaces IRPUnit Interface The IRPUnit interface represents all model elements that can be stored as units for configuration management (CM) purposes. It is an abstract interface that inherits from IRPModelElement. VB Properties Name Type Access Description CMHeader String RW The CM header of this unit currentDirectory String RO The current directory filename String RW The name of the file that stores the unit includeInNextLoad Long RW Indicates whether or not the unit should be loaded the next time the model is loaded. isStub Long RO Specifies whether this is a stub structureDiagrams Collection of RO Collection of structure diagrams that can be stored as units RPStructure Diagrams Method Summary 506 isReadOnly Determines whether the current unit is read-only isReferenceUnit Determines whether the current unit was added to the model as a reference isSeparateSaveUnit Determines whether the current unit is saved in its own (separate) file load Loads the specified unit save Saves the specified unit setReadOnly Specifies whether the current unit is read-only setSeparateSaveUnit Sets a unit to be stored to its own file API Reference Manual Rhapsody Interfaces isReadOnly Read method Description The isReadOnly method determines whether the current unit is read-only. Visual Basic Syntax isReadOnly() As Long Return Value 1 if this unit is read-only; otherwise 0 C/C++ Prototype HRESULT isReadOnly (long* pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 507 Rhapsody API Interfaces isReferenceUnit Read method Description The isReferenceUnit method determines whether the current unit was added to the model as a reference. Visual Basic Syntax isReferenceUnit() As Long Return Value 1 if this unit was added to the model as a reference; otherwise 0 C/C++ Prototype HRESULT isReferenceUnit(long* val) Return Value HRESULT (0 for success, or a signed integer error code) isSeparateSaveUnit Read method Description The isSeparateSaveUnit method determines whether the current unit is saved in its own (separate) file. Visual Basic Syntax isSeparateUnit() As Long Return Value 1 if this unit is saved to its own file; otherwise 0 C/C++ Prototype HRESULT isSeparateSaveUnit (long* pVal) 508 API Reference Manual Rhapsody Interfaces Return Value HRESULT (0 for success, or a signed integer error code) load Write method Description The load method loads the specified unit. Visual Basic Syntax load (withSubs As Long) As RPUnit Argument withSubs Set this to 1 to load the unit’s subunits. Otherwise, set this to 0. Return Value The loaded unit C/C++ Prototype HRESULT load (long withSubs, IRPUnit** ret) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 509 Rhapsody API Interfaces save Read method Description The save method saves the current unit. Visual Basic Syntax save (withSubs As Long) Argument withSubs Set this to 1 to load the unit’s subunits. Otherwise, set this to 0. C/C++ Prototype HRESULT save (long withSubs) Return Value HRESULT (0 for success, or a signed integer error code) setReadOnly Write method Description The setReadOnly method specifies whether the current unit is read-only. Visual Basic Syntax setReadOnly (pVal As Long) Arguments pVal Set this argument to 1 to make the unit read-only; set it to 0 to make the unit read/write. C/C++ Prototype HRESULT setReadOnly (long pVal) 510 API Reference Manual Rhapsody Interfaces Return Value HRESULT (0 for success, or a signed integer error code) setSeparateSaveUnit Write method Description The setSeparateSaveUnit method sets a unit to be stored to its own file. Visual Basic Syntax setSeparateSaveUnit (pVal As Long) Arguments pVal Set this argument to 1 to have the unit stored to its own file. Otherwise, set it to 0. C/C++ Prototype HRESULT setSeparateSaveUnit (long pVal) Return Value HRESULT (0 for success, or a signed integer error code) Rational Rhapsody 511 Rhapsody API Interfaces IRPUseCase Interface The IRPUseCase interface represents a Rhapsody use case. It inherits from IRPClassifier. VB Properties Name describingDiagrams Type Access Collection of Description RO A collection of sequence diagrams that describe this use case RPSequenceDiagram entryPoints Collection of strings RO A collection of entry points into this use case extensionPoints RPCollection RO A collection of extension points Method Summary 512 addDescribingDiagram Adds a describing diagram for the current use case addExtensionPoint Adds an extension point to the current use case deleteDescribingDiagram Deletes the describing use case or sequence diagram for the current use case deleteEntryPoint Deletes the entry point of the current use case deleteExtensionPoint Deletes the specified extension point findEntryPoint Deletes the specified entry point findExtensionPoint Retrieves the extension point, given the generalization getDescribingDiagram Retrieves the use case diagram or sequence diagram linked to the current use case API Reference Manual Rhapsody Interfaces addDescribingDiagram Write method Description The addDescribingDiagram method adds a describing diagram for the current use case. Visual Basic Syntax addDescribingDiagram (diagram As RPDiagram) Arguments diagram The name for the new, describing diagram C/C++ Prototype HRESULT addDescribingDiagram (IRPDiagram* diagram) Return Value HRESULT (0 for success, or a signed integer error code) addExtensionPoint Write method Description The addExtensionPoint method adds an extension point to the current use case. Visual Basic Syntax addExtensionPoint (entryPoint As String) Arguments entryPoint The name of the new entry point C/C++ Prototype HRESULT addExtensionPoint (BSTR entryPoint) Rational Rhapsody 513 Rhapsody API Interfaces Return Value HRESULT (0 for success, or a signed integer error code) deleteDescribingDiagram Write method Description The deleteDescribingDiagram method deletes the describing use case or sequence diagram for the current use case. Visual Basic Syntax deleteDescribingDiagram (diagram As RPDiagram) Arguments diagram The use case or sequence diagram that describes the current use case C/C++ Prototype HRESULT deleteDescribingDiagram (IRPDiagram* diagram) Return Value HRESULT (0 for success, or a signed integer error code) 514 API Reference Manual Rhapsody Interfaces deleteEntryPoint Write method Description The deleteEntryPoint method deletes the entry point of the current use case. Visual Basic Syntax deleteEntryPoint (entryPoint As String) Arguments entryPoint The name of the entry point to delete C/C++ Prototype HRESULT deleteEntryPoint (BSTR entryPoint) Return Value HRESULT (0 for success, or a signed integer error code) deleteExtensionPoint Write method Description The deleteExtensionPoint method deletes the specified extension point. Visual Basic Syntax deleteExtensionPoint (point As String) Arguments entryPoint The extension point to delete C/C++ Prototype HRESULT deleteExtensionPoint (BSTR entrypoint) Rational Rhapsody 515 Rhapsody API Interfaces Return Value HRESULT (0 for success, or a signed integer error code) findEntryPoint Read method The findEntryPoint method returns the specified entry point of the current use case, given the generalization. Visual Basic Syntax findEntryPoint (gen As RPGeneralization) As String Arguments gen The generalization Return Value The entry point C/C++ Prototype HRESULT findEntryPoint (IRPGeneralization* gen, BSTR *pVal) Return Value HRESULT (0 for success, or a signed integer error code) 516 API Reference Manual Rhapsody Interfaces findExtensionPoint Read method The findExtensionPoint method returns the specified extension point of the current use case, given the generalization. Visual Basic Syntax findExtensionPoint (gen As RPGeneralization) As String Arguments gen The generalization Return Value The extension point C/C++ Prototype HRESULT findExtensionPoint (IRPGeneralization* gen, BSTR *pVal) Return Value HRESULT (0 for success, or a signed integer error code) getDescribingDiagram Read method Description The getDescribingDiagram method retrieves the use case diagram or sequence diagram linked to the current use case. Visual Basic Syntax getDescribingDiagram (name As String) As RPDiagram Arguments name The name of the use case diagram or sequence diagram that is linked (for descriptive purposes) to the current use case Rational Rhapsody 517 Rhapsody API Interfaces Return Value The diagram of the specified use case C/C++ Prototype HRESULT getDescribingDiagram (BSTR name, IRPDiagram** diagram) Return Value HRESULT (0 for success, or a signed integer error code) 518 API Reference Manual Rhapsody Interfaces IRPUseCaseDiagram Interface The IRPUseCaseDiagram interface represents a use case diagram. It inherits from IRPDiagram. Currently, it does not expose additional functionality to IRPDiagram. IRPInternalOEMPlugin This interface is used for internal purposes only. IRPVariable Interface The IRPVariable interface represents a variable in a Rhapsody 6.1 model. It represents the UML TypedElement. IRPVariable inherits from IRPModelElement. VB Properties Name Type Access Description declaration String RW The declaration statement for the variable defaultValue String RW The default value for the variable type RPClassifier RW The data type of the variable Method Summary setTypeDeclaration Rational Rhapsody Updates the type declaration for the current attribute 519 Rhapsody API Interfaces setTypeDeclaration Write method Description The setTypeDeclaration method updates the type declaration for the current attribute. Visual Basic Syntax setTypeDeclaration (newVal As String) Arguments newVal The type declaration for this attribute C/C++ Prototype HRESULT setTypeDeclaration (BSTR newVal) Return Value HRESULT (0 for success, or a signed integer error code) 520 API Reference Manual The Callback API The Callback API consists of a number of methods that can be used to respond to events that occur in Rhapsody. This response can consist of actions taken by an external application and/or preventing Rhapsody from proceeding with a specific action. Callback API Introduction The Callback API is implemented as a number of COM connection point interfaces.These callback methods can be used by: client applications using the Rhapsody COM or Java APIs, in the following languages: – VB – VBA – C++ – Java client plug-ins to Rhapsody For the methods that have boolean return values, the client application can return a value of True in order to prevent Rhapsody from proceeding with the action connected to the event, for example, preventing a diagram from being opened. Clients can receive event notification by registering the corresponding COM connection point interface using the standard COM mechanism. Multiple clients can register for any given callback, however, there is no guarantee that the clients will be notified in a specific order. In cases where multiple clients have registered, if one client responds by cancelling the associated Rhapsody action, the remaining clients will not be notified of the event. Rhapsody can log all callbacks invoked. For Rhapsody actions that can be cancelled by clients, it also logs the action taken. For details on enabling logging, see Callback Logging. Rational Rhapsody 521 The Callback API Callback notification can be disabled completely, or for specific interfaces by adding appropriate entries to the rhapsody.ini file. For details on complete or partial disabling of callback notification, see Disabling Callback Notification. When callback notification is enabled, you have the option of disabling the ability of a client application to prevent Rhapsody from proceeding with an action. This can be done for all cancellable actions or just for specific cancellable actions. For details, see Disabling Cancellable Actions. Events with Callback Methods The Rhapsody API includes callback methods for the following Rhapsody events: project about to be closed project closed feature dialog about to be opened diagram about to be opened Rhapsody about to perform roundtrip code generation completed Note These events can only be responded to by using the Rhapsody API. They are not available as triggers in the Helpers dialog (Tools > Customize). 522 API Reference Manual API Details API Details This section lists individual Rhapsody APIs with the API format and a description of its uses. IRPApplicationListener The IRPApplicationListener API is called before and after Rhapsody closes a project. BeforeProjectClose BOOL BeforeProjectClose(IRPProject Project) This is called before a project is closed. The argument is the project that is to be closed. If a client returns True, then the project will not be closed. Points to take into consideration: If a client returns True to prevent the closing of the project, other clients that have registered will not be notified of the event. When multiple projects are to be closed, the method is called separately for each project. If a client prevents the closing of a specific project, this does not affect the calling of the method for the remaining projects. AfterProjectClose void AfterProjectClose(BSTR ProjectName) This is called after Rhapsody closes a project. The argument is the name of the project that was closed. Points to take into consideration: When multiple projects are closed, the method is called separately for each project. This method is not available for VBA clients. (This is because the VBA application is part of the Rhapsody project so it cannot be run after the project is closed.) OnDiagramOpen BOOL OnDiagramOpen(IRPDiagram Diagram) This is called before a diagram is opened. The argument is the diagram that Rhapsody is about to open. If a client returns True, then the diagram will not be opened. Rational Rhapsody 523 The Callback API Points to take into consideration: If a client returns True to prevent the opening of the diagram, other clients that have registered will not be notified of the event. The method is only called when a diagram is explicitly opened using the Rhapsody GUI or the Rhapsody API. It is not called when a diagram is opened as part of the restoration of the previous Rhapsody workspace. OnFeaturesOpen BOOL OnFeaturesOpen(IRPModelElement ModelElement) This is called before the Features dialog is opened for a given element. The argument is the model element for which the Features dialog is going to be opened. If a client returns True, then the Features dialog will not be opened for the element. Points to take into consideration: If a client returns True to prevent the opening of the Features dialog, other clients that have registered will not be notified of the event. The method is only called when the Features dialog is explicitly opened using the Rhapsody GUI or the Rhapsody API. It is not called when the Features dialog is opened as part of the restoration of the previous Rhapsody workspace. 524 API Reference Manual API Details IRPRoundTripListener The IRPRoundTripListener is called before the source code files are roundtripped into the model. BeforeRoundtrip void BeforeRoundtrip(IRPCollection fileNames) This is called before source code files are roundtripped into the model. The argument consists of the files that are going to be roundtripped into the model. IRPCodeGeneratorListener The IRPCodeGeneratorListener is called after code generation. CodeGenerationCompleted void CodeGenerationCompleted() This is called after code generation has been completed. Points to take into consideration: Clients should not modify generated code files in the framework of the callback method. This will result in timestamp inconsistency in the model-generated code, creating potential problems. Rational Rhapsody 525 The Callback API Callback Logging By default, Rhapsody does not maintain a log file of callback events. To enable logging of callback events and cancellable actions, add the entry EnableCallbackLogging to a section called [Callback] in the rhapsody.ini file and set it to TRUE. If you enable logging, the events and actions will be logged to a file called callback_log.txt in the system temporary directory. Disabling Callback Notification Callback functionality can be disabled completely, or for specific interfaces by adding one or more of the following entries to a section called [Callback] in the rhapsody.ini file: To disable the callback mechanism for project closing, opening diagrams, and opening the Features dialog, add the entry EnableApplicationEventListening and set it to FALSE. Rhapsody will not notify registered clients of these events. To disable the callback mechanism for roundtripping, add the entry EnableRoundTripEventListening and set it to FALSE. Rhapsody will not notify registered clients of roundtripping events. To disable the callback mechanism for code generation, add the entry and set it to FALSE. Rhapsody will not notify registered clients of code generation events. EnableCodeGenerationEventListening To disable the callback mechanism completely, add the entry EnableEventListening and set it to FALSE. Rhapsody will not notify registered clients of any of the callback events. Disabling Cancellable Actions When callback notification is enabled, you can disable the ability of a client application to prevent Rhapsody from proceeding with an action by adding one or more of the following entries to a section called [Callback] in the rhapsody.ini file: To disable the ability to prevent Rhapsody from closing a project, add the entry CanCancelProjectClose and set it to FALSE. To disable the ability to prevent Rhapsody from opening a diagram, add the entry CanCancelOpenDiagram and set it to FALSE. To disable the ability to prevent Rhapsody from opening the Features dialog for an element, add the entry CanCancelOpenFeaturesDialog and set it to FALSE. 526 API Reference Manual Sample Client Applications If you don’t want to allow clients to prevent any of the cancellable actions, add the entry CanCancelAction and set it to FALSE. Sample Client Applications Sample client applications that use the callback API to respond to Rhapsody events can be found in the Rhapsody samples directory ([installation directory]\Samples\ExtensibilitySamples\ CallbackAPISamples). The samples provided are written in a number of different languages. Rational Rhapsody 527 The Callback API 528 API Reference Manual Quick Reference This section lists the Rhapsody API methods and provides a brief description of each. For ease of use, the methods are presented in alphabetical order. Method Name Description Abort Is invoked when the user selects the Abort option during code generation activeProject Returns a pointer to the active (open) project addActivityDiagram Adds an activity diagram to the current class addActor Adds the specified actor to the current package addAnchor Adds an anchor from the annotation to the specified model element addArgument Adds an argument for the operation to the end of its argument list addArgumentBeforePosition Adds an argument for the operation at the specified position in its argument list addAttribute Adds an attribute to the current class addBlock Adds a block to the current package addClass Adds a class to the current class addClassifierRole Adds a classifier role addClassifierRoleByName Adds a classifier role, given its name addCollaborationDiagram Adds a collaboration diagram to the current package addComponent Adds the specified component to the current project addComponentDiagram Adds a component diagram to the current package addComponentInstance Adds a new component instance addConfiguration Adds a configuration to this component addConnector Adds a connector to the statechart addConstructor Adds a constructor to the current class Rational Rhapsody 529 Quick Reference Method Name 530 Description addConveyed Adds an information element to the conveyed collection addCtor Adds a constructor addDependency Adds a dependency relationship to the specified object addDependencyTo Creates a new dependency between two objects addDeploymentDiagram Adds the specified deployment diagram to the current package addDescribingDiagram Adds a describing diagram for the current use case addDestructor Adds a destructor to the current class addDtor Adds a destructor addElement Adds an element to the current file addEnumerationLiteral Creates an enumeration literal addEvent Adds the specified event to the current package addEventReception Adds an event reception to the current class addExtensionPoint Adds an extension point to the current use case addFile Adds an empty file to the current component addFlowItems Adds the specified flowItem to the collection of flowItems addFlows Adds the specified flow to the collection of flows addFolder Adds an empty folder to the current component addGeneralization Adds a generalization to the current class addGlobalFunction Adds the specified global function to this package addGlobalObject Adds a global object (instance) to the current package addGlobalVariable Adds the specified global variable to the current package addInitialInstance Adds an instance to the list of initial instances for the current configuration addItem Adds an item to the collection addMessage Adds a message addNestedComponent Adds a component to the current component addNestedPackage Adds a nested package to the current package addNewAggr Used to add a new element to the current element, for example, adding a new class to a package addNode Adds the specified node to the current package API Reference Manual Method Name Description addObjectModelDiagram Adds the specified OMD to the current package addOperation Adds an operation to the current class addPackage Adds the specified package to the current project addPackageToInstrumentationScope Adds the specified package to the instrumentation scope, including all its aggregated classes, actors, and nested packages addPackageToScope Adds the specified package to the scope of the file or folder addProperty Adds a new property/value pair for the current element addProvidedInterface Adds the specified interface to the collection of provided interfaces addReferenceActivity Adds a reference activity to the activity diagram addRelation Adds a symmetric relation between the current class and another one addRepresented Adds a flowItem to the represented collection addRequiredInterface Adds the specified interface to the collection of required interfaces addScopeElement Places a model element within the scope of the current component addSequenceDiagram Adds the specified sequence diagram to the current package addState Adds a state to the statechart addStatechart Adds a statechart to the current class addStaticReaction Adds a static reaction to the statechart addStereotype Adds a stereotype relationship to the specified object addSuperclass Adds a superclass to the current class addSwimlane Adds a swimlane to the activity diagram addSystemBorder Adds a system border to the collaboration diagram addTerminationState Adds a termination state to the statechart addTextElement Adds text to the file addTimeInterval Adds a time interval to the diagram addTimeout Adds a timeout addToInstrumentationScope Adds explicit initial instances to the instrumentation scope Rational Rhapsody 531 Quick Reference Method Name 532 Description addToModel Adds a Rhapsody unit located in the specified file to the current model with or without descendant elements addToModelFromURL Adds a Rhapsody unit located at the specified URL to the current model addToScope Places the specified file, classes, and packages within the scope of the current component addTransition Creates a transition addTriggeredOperation Adds a triggered operation to the current class addType Adds a type to the current class addUnidirectionalRelation Adds a directional relation from the current class to another class addUseCase Adds the specified use case to the current package addUseCaseDiagram Adds the specified UCD to the current package allElementsInScope Places all model elements within the scope of the current component arcCheckOut Checks out files from the CM archive into the model becomeTemplateInstantiationOf Creates a template instantiation of another template (of another template class) build Builds the application checkEventsBaseIdsSolveCollisions Checks the values of the events base IDs for all packages in the model, detects collisions between the IDs, and resolves any incorrect values and collisions checkIn Checks in the specified unit within the model into the CM archive you have already connected to (using connectToArchive) checkModel Checks the current model checkOut Refreshes a unit in the model by checking it out from the CM archive clone Clones the element, names it, and adds it to the new owner close Closes a file or project connectToArchive Connects the Rhapsody project to the specified CM archive createDefaultTransition Creates a default transition in the statechart createGraphics Creates graphics in the Rhapsody statechart createNestedStatechart Creates a nested statechart API Reference Manual Method Name Description createNewProject Creates a new project named <projectName> in <projectLocation> deleteActivityDiagram Deletes the specified activity diagram from the current class deleteActor Deletes the specified actor from the current package deleteArgument Deletes an argument from the current operation deleteAttribute Deletes the specified attribute from the current class deleteClass Deletes a class from the current class deleteCollaborationDiagram Deletes the specified collaboration diagram from the current package deleteComponent Deletes the specified component from the current project deleteComponentDiagram Deletes the specified component diagram from the current package deleteComponentInstance Deletes the specified component instance deleteConfiguration Deletes the specified configuration from the current component deleteConnector Deletes the specified connector from the statechart deleteConstructor Deletes a constructor from the current class deleteDependency Deletes a dependency deleteDeploymentDiagram Deletes the specified deployment diagram from the current package deleteDescribingDiagram Deletes the describing use case or sequence diagram for the current use case deleteDestructor Deletes a destructor from the current class deleteEntryPoint Deletes the entry point of the current use case deleteEvent Deletes the specified event from the current package deleteEventReception Deletes the specified event reception from the current class deleteExtensionPoint Deletes the specified extension point deleteFile Deletes the specified file from the current component deleteFlowchart Deletes an activity diagram from the current operation deleteFlowItems Deletes the specified flowItem from the collection of flowItems deleteFlows Deletes the specified flow from the collection of flows Rational Rhapsody 533 Quick Reference Method Name 534 Description deleteFromProject Deletes the current model element from the project open in Rhapsody deleteGeneralization Deletes the specified generalization from the current class deleteGlobalFunction Deletes the specified global function from the current package deleteGlobalObject Deletes the specified global object from the current package deleteGlobalVariable Deletes the specified global variable from the current package deleteInitialInstance Deletes an instance from the list of build instances for the current configuration deleteNode Deletes the specified node from the current package deleteObjectModelDiagram Deletes the specified OMD from the current package deleteOperation Deletes the specified operation from the current class deletePackage Deletes the current package deleteRelation Deletes the specified relation from the current class deleteSequenceDiagram Deletes the specified sequence diagram from the current package deleteState Deletes the specified state from the Rhapsody statechart deleteStatechart Deletes the specified statechart from the current class deleteStaticReaction Deletes the specified static reaction from the statechart deleteSuperclass Deletes a superclass from the current class deleteTransition Deletes a transition deleteType Deletes a type from the current class deleteUseCase Deletes the specified use case from the current package deleteUseCaseDiagram Deletes the specified use case diagram from the current package enterAnimationCommand Specifies the command to begin animation errorMessage Returns the most recent error message Exit Is invoked before Rhapsody exits findActor Retrieves the specified actor, if it belongs to the current package findAllByName Searches all the elements and finds the first element of the specified name and metaclass in the current package API Reference Manual Method Name Description findAttribute Retrieves the specified attribute of the classifier findBaseClassifier Retrieves a base (parent) classifier of a classifier findClass Retrieves the specified class, if it belongs to the current package findComponent Retrieves the specified component from the current project findComponentInstance Retrieves the specified component instance findConfiguration Retrieves the specified configuration in the current component findDerivedClassifier Retrieves the specified derived classifier of a classifier findElementsByFullName Searches for the specified element findEntryPoint Deletes the specified entry point findEvent Retrieves the specified event, if it belongs to the current package findExtensionPoint Retrieves the extension point, given the generalization findGeneralization Retrieves the specified generalization of a classifier findGlobalFunction Retrieves the specified global function, if it belongs to the current package findGlobalObject Retrieves the specified global object, if it belongs to the current package findGlobalVariable Retrieves the specified global variable, if it belongs to the current package findInterfaceItem Retrieves an operation or event reception of the given signature that belongs to a classifier findNestedClassifier Retrieves the specified classifier defined within this object findNestedClassifierRecursive Retrieves the specified classifier defined in this object and in objects defined within this object findNestedElement Retrieves the specified element nested in a model element findNestedElementRecursive Retrieves the specified element from a given model element at any level of nesting within that element findNode Retrieves the specified node, if it belongs to the current package findRelation Retrieves the specified relation that belongs to the current classifier findTrigger Retrieves the specified trigger in the statechart of the current class Rational Rhapsody 535 Quick Reference Method Name 536 Description findType Retrieves the specified data type, if it belongs to the current package findUsage Retrieves the usage of the specified element in the current package findUseCase Retrieves the specified use case, if it belongs to the current package forceRoundtrip Forces a roundtrip of the code back into the Rhapsody model, and vice versa generate Generates code for the active configuration of the active component generateSequence Generates the specified sequence diagram getConcurrentGroup Retrieves the activation messages getAllGraphicalProperties Returns the list of graphical properties for the current diagram getAllTriggers Returns a collection of all the triggers for the current statechart getAttributesIncludingBases Retrieves the attributes defined for this class and the ones inherited from its superclasses getClassifierRole Retrieves the classifier role for this message point getClassifierRoles Returns a collection of IRPClassifierRoles linked by the current association role getConcurrentGroup Retrieves all the messages concurrent with the input message, including the input message itself getDerivedInEdges Retrieves the incoming transitions for the connector getDerivedOutEdge Retrieves the incoming transitions for the connector getDescribingDiagram Retrieves the use case diagram or sequence diagram linked to the current use case getDiagramOfSelectedElement Retrieves the diagram of the current element getDirectory Retrieves the build directory specified for the current configuration getElementsInDiagram Returns a collection of all the model elements in the current diagram getErrorMessage Returns the most recent error message getEvent Returns the event for the current event reception that serves as part of the interface for a class getFile Returns the file in which the specified classifier will be generated API Reference Manual Method Name Description getFileName Retrieves the name of the file to which the specified classifier will be generated in this component getFormalRelations Returns a collection of IRPRelations for the current association role getFullNameInStatechart Returns the full text name of this state within its statecharts getFullPathName Retrieves the full path name of a model element as a string getFullPathNameIn Retrieves the full path name of a model element as a string getGraphicalProperty Returns the specified graphical property for the current diagram getImpName Retrieves the name of the current file’s implementation file, including its extension and, if specified, its relative path getInheritsFrom Returns the base state from which the current state inherits getInLinks Returns the list of links for which the instance is the target instance (identified by the “to” property of the link) getInterfaceItemsIncludingBases Retrieves the operations and event receptions defined for this class and the ones it inherited from its superclasses getInTransitions Returns a collection of transitions that are directed into the current state or connector getItsAction Returns the action code of the current transition getItsComponent Retrieves the component to which the current configuration belongs getItsGuard Returns the guard condition of the current transition getItsOperation Returns the event or triggered operation of the current trigger getItsTrigger Returns the trigger (event or triggered operation) of the current transition getListOfFactoryProperties Returns the list of properties in the <lang>_factory.prp file getListOfInitializerArguments Returns the list of arguments for the initializer, as defined by the user in the instance features dialog box getListOfSelectedElements Returns the collection of model elements getListOfSiteProperties Returns the list of properties in the <lang>_site.prp file getLogicalCollaboration Retrieves the logic behind the collaboration diagram Rational Rhapsody 537 Quick Reference Method Name 538 Description getLogicalStates Retrieves the list of logical states GetMainFileName Is invoked when Rhapsody needs the main file name and path for a configuration getMainName Retrieves the name of the file where the main() routine for the current configuration resides getMakefileName Retrieves the name of the makefile generated for the current configuration getMessagePoints Returns an ordered collection of all messagepoints occurring on this classifier getModelElementFileName Gets the file name of the specified model element getNestedElements Retrieves the elements defined in the current object getNestedElementsRecursive Recursively retrieves the elements defined in the model element for the object and for objects defined in it getNewCollaboration Retrieves the new collaboration for the current project getOfState Returns the state connected to the current connector if it is a history connector getOutLinks Returns the list of links for which the instance is the source instance (identified by the “from” property of the link) getOutTransitions Returns a collection of transitions that are directed out of the current state or connector getOverriddenProperties Retrieves the list of properties whose default values have been overridden getPackageFile Returns the package file getPicture Renders this diagram into the specified extended metafile getPictureAsDividedMetafiles Enables you to split a large diagram into several metafiles when you export it getPredecessor Retrieves the message that precedes the specified message getPropertyValue Returns the value associated with the specified key value getPropertyValueExplicit Returns an explicit value if it has been assigned to the metamodel getRelationsIncludingBases Retrieves the relations defined for this class and the ones it inherited from its superclasses getRelatedUseCases Retrieves use cases related to the current sequence diagram getSelectedElement Retrieves the current model element API Reference Manual Method Name Description getSignature Retrieves the prototype of the IRPMessage getSignatureNoArgNames Retrieves the signature of the current class interface element without argument names getSignatureNoArgTypes Retrieves the signature of the current class interface element without argument types getSpecName Retrieves the name of the current file’s specification file, including its extension and, if specified, its relative path getStaticReactions Returns a collection of static reaction transitions originating from the current state getSubStates Returns a collection of substates belonging to the current state getSuccessor Retrieves the message that follows the specified message GetTargetfileName Is invoked when Rhapsody needs the target name and path for a configuration getTargetName Retrieves the build name of the file to be generated for the current configuration getTheExternalCodeGeneratorInvoker Returns the invoker for the external code generator highlightByHandle Highlights an element, given its handle highLightElement Highlights the specified element importClasses Imports classes according to the reverse engineering setting stored in the current configuration importPackageFromRose Imports the specified package from Rational Rose importProjectFromRose Imports the specified project from Rational Rose isAnd Determines whether this state is an And state isArray Determines whether the current type is an array isCompound Determines whether the current state is a compound state isConditionConnector Determines whether the current connector is a condition connector isDefaultTransition Determines whether the current transition is a default transition isDiagramConnector Determines whether the current connector is a diagram connector isEmpty Determines whether the current file is empty isEnum Determines whether the current type is an enumerated type Rational Rhapsody 539 Quick Reference Method Name 540 Description isEqualTo Tests for equality between the type of the type and the type itself isForkConnector Determines whether the current connector is a fork synch bar connector isHistoryConnector Determines whether the current connector is a history connector isImplicit Determines whether the type is an implicit type isJoinConnector Determines whether the current connector is a join synch bar connector isJunctionConnector Determines whether the current connector is a junction connector isKindEnumeration Determines whether the type is an enumeration isKindLanguage Determines whether the type is a language declaration type isKindStructure Determines whether the type is a structure isKindTypedef Determines whether the type is a typedef isKindUnion Determines whether the type is a union isLeaf Determines whether the current state is a leaf state isOperation Determines whether the current trigger is an operation (event or triggered operation) isPointer Determines whether the current type is a pointer isPointerToPointer Determines whether the current type is a pointer to another pointer isReadOnly Determines whether the current unit is read-only isReference Determines whether the current type is a reference isReferenceToPointer Determines whether the current type is a reference to a pointer isRoot Determines whether the current state is a root state isSeparateSaveUnit Determines whether the current unit is saved in its own (separate) file isStaticReaction Determines whether this is a static reaction isStruct Determines whether the current type is a struct isStubConnector Determines whether the current connector is a stub connector isTemplate Determines whether the current type is a template API Reference Manual Method Name Description isTerminationConnector Determines whether the current connector is a termination connector isTimeout Determines whether the current trigger is a timeout isTypelessObject Tests an object to see if it is defined explicitly or implicitly isUnion Determines whether the current type is a union itsCompoundSource Returns a collection of states that act as multiple sources for this single transition load Loads the specified unit make Builds the current component following the current configuration makeUnidirect Changes the current relation from a unidirectional (symmetric) one to one that is directional from the me of this relation to me’s inverse matchOnSignature Determines whether the signature of the current class interface element matches that of another IRPInterfaceItem notifyGenerationDone Is called by the external code generator after a generation session invoked by the generate event is done open Opens a file openProject Opens a Rhapsody project openProjectFromURL Opens the Rhapsody product at the specified URL openProjectWithLastSession Opens the project using the settings from the previous Rhapsody session openProjectWithoutSubUnits Opens the Rhapsody project without subunits overrideInheritance Overrides inheritance for the current state quit Closes the active Rhapsody project rebuild Rebuilds the application recalculateEventsBaseId Recalculates the events base ID of the package or project refreshAllViews Refreshes all the views regenerate Regenerates the active configuration of the active component removeConveyed Removes an information element from the conveyed collection removeFromInstrumentationScope Removes the classifier from the instrumentation scope Rational Rhapsody 541 Quick Reference 542 Method Name Description removePackageFromInstrumentationSc ope Removes the specified package from the instrumentation scope. including all its aggregated classes, actors, and nested packages removeProperty Removes the property from the model element removeProvidedInterface Removes the specified interface from the collection of required interfaces removeRepresented Removes a flowItem from the represented collection removeRequiredInterface Removes the specified interface from the collection of required interfaces removeScopeElement Deletes a scope element removeStereotype Removes the stereotype from the model element report Generates a report in ASCII or RTF into the specified file resetEntryActionInheritance Resets the inheritance of the entry action of the current state resetExitActionInheritance Resets the inheritance of the exit action of the current state resetLabelInheritance Resets the label inheritance roundtrip Roundtrips code changes back into the open model save Saves the current project saveAs Saves the current project to the specified file name and location setActiveComponent Sets the active configuration for the current project setActiveConfiguration Sets the active configuration for the current project setClassType Sets or changes the current template parameter to a class type parameter setComponent Sets the current component for the open project setConfiguration Sets the current configuration for the open project setDirectory Sets the directory for the current configuration setEnd1ViaPort Connects end1 of the flow to the specified instance via the given port (defined by the instance class) setEnd2ViaPort Connects end2 of the flow to the specified instance via the given port (defined by the instance class) setGraphicalProperty Allows the setting of graphical properties for a diagram element. setInverse Adds or updates the inverse relation setItsAction Updates the current transition with a new action API Reference Manual Method Name Description setItsComponent Sets the owning component for the current configuration setItsGuard Updates the current transition with a new guard setItsLabel Updates this transition with a new label (trigger[guard]/ action) setItsTrigger Updates the current transition with a new trigger setLog Creates a log file that records all the information that is normally displayed in the Rhapsody output window setOfState Updates the source state of the current connector with a new state setPath Sets the path of the application built for this component setPropertyValue Modifies the value of the specified property setReadOnly Specifies whether the current unit is read-only setReturnTypeDeclaration Specifies a new value for the return type declaration setSeparateSaveUnit Sets a unit to be stored to its own file setStaticReaction Sets the static reaction for the current state setTypeDeclaration Sets the C++ type declaration for this argument synchronizeTemplateInstantiation Is used to synchronize between a template and a template instantiation parameter unoverrideInheritance Removes the override inheritance for the current state version Returns the version of Rhapsody that corresponds to the current COM API version WhoAmI Is invoked to identify the external code generator write Writes to the specified file Rational Rhapsody 543 Quick Reference 544 API Reference Manual Index A B Abort event 247 Action entry 446 exit 447 Activities, reference 275 Activity diagram 138 Actors 350 add 353 delete 372 find 390 interface 54 Ada language external code generator 241 addSwimlane 276 Animation enter command 57, 71 API 7 activeProject Method 38 available information 1 basic concepts 7 COM 35 conventions 50 creating applications 41 getNestedElementsRecursive method 40 hierarchy of classes 36 hierarchy of interfaces 2 interfaces 49 loading a project 38, 45 looping over packages 45 methods 529 openProject method 38 reference to application 38 reporting a project 39, 40 reporting on a project 39 Rhapsody reference 35 RHAPSODY.tlb file 35, 43 RPYExplorer example 27 RPYReporter example 26 viewing Rhapsody objects 36 Application, creating VB applications 41 Attributes delete 139 find 146 Base classifier 147 body property, IRPConstraint 232 Rational Rhapsody C C language 429 prototype 50 C++ language 49, 490 COM bindings 25 interfaces 49 isReference 106 prototype 50 setTypeDeclarations 98 visual 12, 13 Callback API 521 Class accessing using VBA 322 find 392 Classifier base 147 derived 148 Close 416 Code 31 Code generation, sample program 245 COM 35 API 7 API interfaces 49 API tools 7 Visual Basic API 7 COM bindings 25 Component delete 417 find 418 Condition connector 224 Configuration delete 194 find 196 Connectors condition 224 diagram 225 fork 226 history 227 join 228 Junction 229 545 Index stub 230 termination 230 constraintsByMe property 232 CountPackages macro used in code example 43 Create macro 42 project element 18 Create EMetaFile from the RPDiagram option 28 CreateObject 38 Custom helpers 24 D declaration property IRPArgument 98 IRPAttribute 106 defaultValue property IRPArgument 98 IRPAttribute 106 deferredAddToModel 70 Delete project element 19 Derived classifier 148 Diagrams 28 connector 225 storing 28 viewing 28 Flows, delete 141, 379 Fork connector 226 Function, CreateObject 38 G Generalization delete 142 find 149 getNestedElementsRecursive used in sample 40 GraphElement 286 H Helpers 24 History connector 227 I Interfaces 49, 50 hierarchy of 2 Rhapsody 7 IRPCollection interface using 45 VB sample 39 IRPModelElement interface VB sample 39 E Element deleting 19 form 31 manipulating project 18 entryAction, method 446 Error codes 23 Error handling 22, 242 Events abort 247 exit 247 Examples findElementsByFullName 322 Radio 42 RPYReporter 26 VB program 8 Exit event 247 exitAction 447 F F8 key 32 File delete 195 RHAPSODY.tlb 35 findElementsByFullName function example 322 Flow items 140 546 J Java language 344 API 5 COM bindings 25 samples 5 Join connectors 228 Junction connector 229 K Keyboard icon 42 L Language property 54 Languages COM API 7 Library, rhapsody.tlb 7 M Macros CountPackages, used in a code example 43 creating sample 42 editing sample 43 running 44 API Reference Manual Index running sample 47 Methods 529 deferredAddToModel 70 entryAction 446 exitAction 447 parent 469 setTypeDeclaration for IRPArgument 99 stateType 456 Model, deferring 70 MS Word 42, 43 O Object model diagram, delete 384 Object, type 32 Operation, delete 143 P Package add 413 delete 385 parent method 469 Press new shortcut key option 42 Private keyword 33 Profile, add 414 Project deleting element 19 element, creating 18 elements, manipulating 18 modifying an element 19 open in VB 29 Properties 20, 31 handling using the API 20 manipulating 21 propagation of default values 20 VB 50 R Radio example 42 Read from the Rhapsody API 13 Reference activity 275 Reference, definition 35 Relation, delete 144 Report, on API project 39 returnType property 345 Rhapsody 25 .tlb file 35 annotations 54 API 35 helpers 24 project 13 properties 20 Radio example 42 references 35 Tools menu 28 Rational Rhapsody Rhapsody API 7 available information 1 callback 521 error handling 22 error handling codes 23 handling properties 20 hierarchy of interfaces 2 interfaces 7 manipulating project elements 18 using with VB 7 VBScript 9 with Visual C++ 12 RHAPSODY.tlb file 35 rhapsody.tlb file 7 RPYReporter code summary, project loading 38 code summary, project reporting 40 example 26 Run Sub/UserForm option 44 S Sample programs 26 API 5 code generator 245 using VB 8 using Visual C++ 13, 15 VBScript 10 Visual C++ reading project 13 Save 425 Save changes in field 42 Sequence diagram, delete 386 setTypeDeclaration IRPArgument 99 Solaris systems, VBScript 9 Start With Full Compile option 41 State, type 456 Statechart 136 delete 145 stateType, method 456 Store macro in field 42 Stub connector 230 Swimlane, add 276 T Termination connector 230 Trigger, find 155 Type delete 387 find 398 setTypeDeclaration for IRPArgument 99 state 456 type property IRPArgument 98 IRPAttribute 106 547 Index U Usage, find 399 Use case diagram, delete 389 V VB catching an error condition 22 VB properties body for IRPConstraint 232 constraintsByMe 232 declaration for IRPArgument 98 declaration for IRPAttribute 106 defaultValue for IRPAttribute 106 Language 54 returnType 345 type for IRPArgument 98 type for IRPAttribute 106 VBScript running 9 sample 10 using 9 writing files from 9 Visual Basic attributes 49 code window 31 compiling 41 CreateObject function 38 creating new projects 41 548 forms 30, 31 IDE 29 loading a project 45 making 41 Menu File Editor option 32 Object Browser option 36 Open Project option 29 Project Explorer window 29 properties 50 Properties window 30 Reference dialog box 35 sample program 8 saving projects 41 stepping through the code 32 stopping execution 35 using with the Rhapsody API 7 Word VB IDE 42 Visual Basic Editor option 29 Visual C++ and the Rhapsody API 12 read sample 13 write sample 15 W Write files from VBScript 9 to the Rhapsody API 15 API Reference Manual