IBM Support

Migration to IBM Rational Rhapsody

Product Documentation


Abstract

This document contains information about issues that you might encounter when you migrate existing IBM Rational Rhapsody projects to particular versions of the product.

Content

Review the relevant migration issue sections in ascending product version order. For example, if you have Rational Rhapsody 7.6.1.4 and are migrating to version 8.0.3, review the migration issues for 7.6.1.5 on the 7.6 tab and then all the migration issues on the 8.0 tab up to and including version 8.0.3.

Tab navigation

IBM Rational Software Support Communities
  • Visit the IBM Support Portal to configure your support portal experience and review FAQs, lists of known problems, fixes, and a wealth of important support information.
  • Visit developerWorks to access an online collection of tutorials, sample code, standards, forums and other resources provided by experts at IBM to assist software developers using Rational tools including access to the IBM RFE Community.
  • Visit the Jazz Community if you use a Rational product created using the Jazz platform to interact directly with the Jazz development team and other community members, download product trials and betas and track development progress.

Helpful Hints For Obtaining Technical Assistance:

Before you contact IBM Rational Software Support, gather the background information that you need to describe the problem. When you describe a problem to an IBM software support specialist, be as specific as possible and include all relevant background information so that the specialist can help you solve the problem efficiently. To save time, know the answers to these questions:

  • What software versions were you running when the problem occurred?
  • Do you have logs, traces, or messages that are related to the problem?
  • Can you reproduce the problem? If so, what steps do you take to reproduce it?
  • Is there a workaround for the problem? If so, be prepared to describe the workaround.

If you have helpful information to diagnose or identify the problem on your system, you can provide this data by following the instructions to exchange information with IBM Technical Support.

Follow IBM Rational Client Support on Twitter | Facebook | YouTube | devWorks Blog

Table of Contents


Rational Rhapsody 7.5.3.3

As of the release date for Rational Rhapsody 7.5.3.3, there were no known issues for the migration of existing Rational Rhapsody projects to version 7.5.3.3.

Rational Rhapsody 7.5.3.2

Frameworks

In the OXF C++ framework, changes were made to the OMTimerManager.cpp file in order to correct a problem whereby scheduled timeouts were being cancelled.

Table of Contents


Rational Rhapsody 7.6.1.5

ReporterPLUS reports

Prior to release 7.6.1.5, the reports generated by Rational Rhapsody ReporterPLUS were not always displayed correctly on computers with Java 7 or later versions of Java 6.

This issue has been corrected in release 7.6.1.5.

If you run Rational Rhapsody 7.6.1.5 on a computer with a relatively old version of Java, you might find that the fixes included in the current release negatively impact the appearance of ReporterPLUS reports.

If you experience such problems, you can have ReporterPLUS generate reports in the previous format by adding the following text to your rhapsody.ini file:

[ReporterPLUS]
UseJavaPre7=TRUE
Rational Rhapsody 7.6.1.4

Changes to OXF C++ framework - getGuard operations

To solve a problem related to generated code when multiple inheritance is used in conjunction with guarded operations, changes were made to a number of getGuard operations.

Specifically, the following operations were changed to virtual:

  • OMProtected::getGuard
  • OMThread::getGuard
  • the getGuard function in the OMDECLARE_GUARDED macro

Rational Rhapsody 7.6.1.3

As of the release date for Rational Rhapsody 7.6.1.3, there were no known issues for the migration of existing Rational Rhapsody projects to version 7.6.1.3.


Rational Rhapsody 7.6.1.2

Code Generation

Prior to version 7.6.1.2, there were cases where Rational Rhapsody did not properly sort attributes and types that depended on one another. This problem has been corrected in this release. As a result, when you generate code for an existing model, you might see changes relative to the code generated with previous versions.

If you want to restore the previous code generation behavior, you can add the CG::Configuration::SortAttributesAndTypesDependencies property to your site.prp file with a value of False.


Using double-byte characters in element names

For certain model elements, such as use cases and actors, Rational Rhapsody allows a more flexible name format. The purpose of this flexibility is to allow the use of spaces and a number of other ASCII characters that cannot be used in the names of elements that are included in the generated code.

Due to a defect, this flexibility unintentionally allowed the inclusion of double-byte characters (such as Japanese) in the names of these elements. This is causing a set of issues that the system was not designed to deal with. By design, double-byte characters are only allowed in the Label field, not in the Name field.

To prevent these problems, beginning in version 7.6.1.2, Rational Rhapsody enforces the design that double-byte characters are only allowed in the Label field, not in the Name field.


Rational Rhapsody 7.6.1.1

Backward compatibility profile for C models

Rational Rhapsody 7.6.1 included an empty backward-compatibility settings file for C models. This settings file was removed in version 7.6.1.1.

If you opened an older model and saved it in version 7.6.1, this backward-compatibility settings file was added to your model. When you open the updated model in version 7.6.1.1, you get a search window to find this settings file. You can safely select the option to ignore this file. You will not see this question again.


Rational Rhapsody 7.6.1

Browser

Beginning in version 7.6.1, model elements that are part of the current scope are displayed in bold in the Rational Rhapsody browser. To turn off this feature, set the value of the General::Model::HighlightElementsInActiveComponentScope property to False.


Diagram behavior

In version 7.6.1, for token-based activity diagrams, Rational Rhapsody now displays the number of tokens. This feature is enabled by default. To preserve the previous diagram behavior for pre-7.6.1 models, the Animation::Activity::ShowFlowToken property was added to the backward compatibility settings for C++ models with a value of False.


Code generation
C
  • In the code generated for C projects, casting is now used for the destroyMethod member of the RiCReactive_Vtbl struct when its value is NULL.
  • Prior to version 7.6.1, if your Rhapsody in C model had a class that contained a part whose type had the Singleton stereotype applied to it, the following warning was issued: "Singleton stereotype ignored: matching instance is not owned by a package", and the code generated would result in compilation errors. Now, if you have such a situation in your model, it will be reported as an error ("A part cannot be a singleton").
C++
  • For C++ applications, the code for timeout cancellation has been replaced by a single function. In order to maintain the previous code generation behavior for pre-7.6.1 models, the CPP_CG::Statechart::UsePreviousTimeoutCancellationCode property has been added to the C++ backward compatibility settings with a value of True.
  • Prior to version 7.6.1, there were situations where the declaration of the "send" operation for classes derived from OMReactive was missing the "virtual" keyword. This problem has been corrected in this release.
Java

In version 7.6.1, a new property, JAVA_CG::Relation::InitializationStyle, was added to control how relations are initialized in the generated code. The default behavior now is for relations to be initialized when they are declared. Previously, relations were initialized in the constructor by default. To maintain the previous behavior for pre-7.6.1 models, this property is set to "InConstructor" in the Java backward compatibility settings.

Makefiles
  • For C++ projects, the generated makefile now references an additional library in order to allow tracing of activities.
  • In general, the makefiles generated by Rational Rhapsody use relative paths to reference files. Prior to version 7.6.1, there were a number of situations where files were referenced with absolute paths. These have been corrected in this release.
  • For C and C++ applications developed for a Linux target, the generated makefile now includes a reference to the librt library.
CORBA

Prior to version 7.6.1, there were situations where code generated for CORBA projects contained unnecessary include directives and forward declarations. Beginning with this release of Rational Rhapsody, this unnecessary code is no longer generated.

MISRA C++ profile
  • When using the MISRA C++ profile, there were situations where the "virtual" keyword was erroneously used in declarations of inheritance from OMReactive. This issue has been corrected.
  • As a result of the effort to improve MISRA compliance of C++ code generated by Rational Rhapsody, you might find changes in the code generated for your model if the code generated previously included code where the right hand operand of a logical && or || operator contained side effects.
  • Beginning in version 7.6, the code generated for ports included initialization of the _p_ attribute in the port's constructor, however, this was not done in the code generated with the MISRA C++ profile. Now, this initialization is also included for MISRA-compliant code.
  • When using the MISRA C++ profile, the isTypeOf() operation is no longer generated if there is no event hierarchy. In cases where there is event inheritance, the method is generated and a message is included to point out that this code is not MISRA-compliant. For cases where this method is no longer generated, the calls to the method have been replaced by alternative code that performs the same actions.
  • When using the MISRA C++ profile, there are cases where the code generated for statecharts includes empty "else" blocks. In such cases, a comment is now generated to explain this deviance from the standard.
  • In the MISRA C++ profile, the value of the CPP_CG::Configuration::GenIndexTypeAs property has been changed from RhpInteger to Rhp_int32_t. In the generated code, you will see this change reflected in the parameter type used for the getAt operation generated for relations.
Activities and statecharts
  • Beginning in version 7.6.1, the text specified for guards in token-based activity diagrams is included in the generated code. Before this change, guards could contain any text, and this could result in compilation problems if the new behavior was used for pre-7.6.1 models. To prevent any such problems, the CPP_CG::Activity::MeaningfulGuards property was added to the backward compatibility settings for C++ projects with a value of False.
  • Prior to version 7.6.1, a bug prevented code from being generated for transition actions between a junction connector and the next state if one of the transitions entering the junction connector was the default transition. This problem has been corrected in version 7.6.1. To preserve the previous code generation behavior for pre-7.6.1 models, the CG::Statechart::GenerateActionsAfterJunctionForDefaultTransition property was added to the backward compatibility settings for C++ and Java with a value of False.

SysML

Beginning in version 7.6.1, when constraints are displayed in a compartment, both the name and specification are displayed, as opposed to just the specification, as was the case previously. This change was made to increase compliance with the SysML specification.

When constraints are displayed as individual elements on a diagram, if you select "Box Style" as the Notation Style, the specification of the constraint is now displayed in addition to the name.

The Display Options window now allows you to display stereotypes assigned to Flow Ports, Action Pins, and Activity Parameters.


Rational Rhapsody 7.6.0.1

Using Rational Rhapsody with Rational Rhapsody Design Manager

If you plan to use Rational Rhapsody 7.6.0.1 with Rational Rhapsody Design Manager, you must install version 3.0.0.1 of Rational Rhapsody Design Manager.


Using the Parametric Constraint Evaluator (PCE) with Matlab

Beginning in version 7.6.0.1, there is no need to perform the path setup procedure in Matlab in order to use it with the PCE. Therefore, Rational Rhapsody no longer displays the instructions dialog.


Code generation when using the AR3x_BMT profile

Beginning in version 7.6.0.1, the signatures of the sender/receiver/caller/handler functions are generated differently than they were previously. The argument declarations of these functions are now taken from the values of the In, Out, and InOut properties for the argument type.


C++ code generation - improved MISRA compliance

As a result of the effort to improve MISRA compliance of C++ code generated by Rational Rhapsody, you might find changes in the code generated for your model if the code generated previously included code where the right hand operand of a logical && or || operator contained side effects.


DDS profile

In release 7.6.0.1, changes were made to the "topic" and "topicStruct" stereotypes in the DDS profile, in terms of which elements they can be applied to. If you open an older model in 7.6.0.1 and generate code, Rational Rhapsody checks for the use of these stereotypes and flags any such use as a Check Model error. To automatically update your model for these changes, select the model conversion menu item that is included in the pop-up menu for DDS projects.


Log files - default filenames

In release 7.6.0.1, the logging feature was enhanced to allow the inclusion of a number of variables in the names of log files, for example, the date or process ID. By default, the names of the log files created by Rational Rhapsody now include the process ID as part of the name. This means you will end up with multiple log files for each type of log file created by Rational Rhapsody, rather than a single file for each type, as was the case before this release. If you do not want the filenames to include the process ID, modify the values of the fileHandler.fileName variables in the file [installation directory]\Share\Log\rhapsody.properties.


Rational Rhapsody 7.6

Diagrams

When running token-based simulation for activities, the text for the relevant item in the context menu for instances is now "Open Main Activity Diagram".


SysML

When using the SysML profile, the Attributes compartment for blocks is now labeled Values, in accordance with the SysML standard.

Beginning in version 7.6, a pin of type Block is a pointer to an object (rather than passing by value, which was previously the case). If an existing model has actions with code that accesses such pins, you will encounter compilation errors when you try to build the application, and you will have to modify this code accordingly.


Modeling
Change in the behavior of the PropertyFile property

Prior to version 7.6, property values from the file specified by the PropertyFile property would be applied to all relevant model elements regardless of the value of the Model::Profile::GloballyApplied property. Beginning with version 7.6, if you set the value of GloballyApplied to False, then the property values from the file specified by PropertyFile will only be applied to model elements for which an AppliedProfile dependency has been created between the element and the profile.

Flows in browser

When you add a flow to a model, the browser now displays the flow beneath its source element rather than beneath the common parent of the source and target elements.


Code generation
State and transition descriptions

Beginning in version 7.6, descriptions entered for states and transitions are generated as comments in the code generated for statecharts. (C, C++, Java)

Activities
  • Previously, when the ID of an activity parameter appeared in generated code, the prefixes InParameter or OutParameter were added to it. This is no longer the case.
  • For action pins, activity parameters, and object nodes, if you set the type to be a class, a pointer is now generated rather than a reference. As a result of this change, you may find compilation errors in your code.
  • When using Call Operation elements, the pin used for paasing the retun value was previously generated in the code as returnPin. In order to prevent a possible conflict with other model elements, this has now been changed to RETURN (upper-case characters). If you generate code for pre-7.6 models, you will receive a message that the pins are not synchronized. To solve this, open the context menu for the Call Operation element, and select Update/Create Activity Pins.
  • The code generated for activities now always includes the startBehavior method.
  • If a class has a statechart which is defined as the main behavior, and there are also activities under individual operations, the code generated for the class will contain differences relative to the code generated with previous versions of Rational Rhapsody, but these changes do not affect behavior.
  • Additional model checks have been added for token-based simulation for activities. For some pre-7.6 models, this may prevent code generation until the model is modified to satisfy the new criteria.
MultiWin32, Multi4Win32 environments

The MultiWin32 and Multi4Win32 environments are no longer supported. The MULTI IDE can still be used for targets other than Windows.

Forward declarations and #include directives

Previously, there were situations where forward declarations were generated even when there was already an #include directive that made this unnecessary. This has been corrected in version 7.6.

Previously, there were situations where #include directives were generated in implementation files even though the same #include directive was already generated in the specification file. This has been corrected in version 7.6.

Forward declarations for triggered operations now appear earlier in generated files.

Initializer lists for derived classes

Previously, in the initializer list for a derived class, there were cases where initialization of attributes preceded the call to the constructor of the base class. Now, the call to the constructor of the base class is always first in the list.

Event argument initialization (C++)

Event arguments are now initialized in the initialization list rather than by assignment in the body of the constructor. In the backward compatibility profile for C++, the CPP_CG::Event::InitializationStyle property is set to ByAssignment in order to maintain the previous behavior for pre-7.6 models.

Event argument annotations

The text that appears in the annotations generated for event arguments has changed.

Events - isTypeOf method

All events have a method called isTypeOf. Beginning in version 7.6, this methods includes the virtual keyword, and the parameter of the method is declared as const. (C++).

Friend classes

In this release, changes have been made to the way friend relationships are depicted in diagrams. Now, a friend is defined by drawing a dependency from the class whose data will be made available to the class that needs to access this data. Previously, the dependency was drawn in the other direction. The backward compatibility profile for C++ contains a property named CPP_CG::General::< >ImplementationScheme in order to maintain the previous behavior for pre-7.6 models. If you remove this property for existing models that include friend relationships, the code generated will be the reverse of what you intended.

Specifying a template as a friend

Prior to version 7.6, incorrect code was generated when a template was specified as a friend. This issue has been fixed.

Statecharts with history connectors

In the code generated for statecharts with history connectors, the code no longer contains a print statement for an error message.

Animation code for C models containing S-functions

When using animation for C models that contain S-functions, the cleanup code that is generated now contains a call to a macro called ANIMATION_CLEANUP.

Port code

The _p_ attribute for ports is now initialized in the port's constructor.

Now, there are no longer situations where the attribute that represents the port is declared as a pointer. This is reflected in a number of places in the code generated for ports, for example in the body of getter methods.

CPU argument in properties InvokeMake and buildFrameworkCommand

To facilitate the generation of applications for 64-bit systems, the properties InvokeMake and buildFrameworkCommand for the MSVC9 environments now include an argument that represents the target CPU. These arguments are passed to the batch file msvc9make.bat.

If you have overridden the values of either of these properties in an existing model, the values you specified will be used when the model is opened in Rational Rhapsody 7.6. If you have specified additional arguments in addition to those contained in the default property value, these arguments will now conflict with the arguments used by the batch file msvc9make.bat. Compilation errors will result.

To prevent such conflicts, add $CPU as the third argument for the properties InvokeMake and buildFrameworkCommand.

Rhapsody in Ada

Before building an application in Ada, you must now select Code > Build Framework from the main menu in order to build the required Ada frameworks.

Retirement of "classic" code generation

Over the past few releases of Rational Rhapsody, "classic" code generation (as oppposed to "advanced") has gradually been phased out. This move has been completed in this release. Now, even if your site.prp file sets the value of [lang]_CG::Configuration::CodeGeneratorTool to Classic, the code generation will reflect the Advanced setting.

There are a number of differences between "classic" and "advanced" code generation. If you experience any trouble with this change, contact Support for assistance.

Note that this applies only to C and C++.

The differences between "classic" and "advanced" code generation are as follows:

  • In advanced CG, the generated code no longer includes the following:
    • A comment for the name of the file
    • Reference to the macro DECLARE_META_PACKAGE in files generated for packages
    • #define NAMESPACE_PREFIX for non-animated packages
  • In classic CG, the property CG::Operation::Generate affected the generation of auto-generated operations as well. In advanced CG, even if you set the value of this property to False, the auto-generated operations, such as the constructor, are generated.
  • In advanced CG, annotations are now generated for elements such as auto-generated includes, forward declarations, and port inner elements.
  • The path separator used for the framework include statement is generated differently. The generated code is now #include <oxf\oxf.h>, rather than #include <oxf/oxf.h>. This applies only to Windows.
  • In classic CG, code indentation was 8 spaces. In advanced CG, the default indentation is 4 spaces, and this can be changed using the Indentation property.
  • The format of the annotation for implicit includes is different.
  • The order in which auto-generated elements appear in the code has changed.
  • In advanced CG, elements are grouped by visibility wherever possible.
  • In advanced CG, annotations such as "ignore" are applied to groups of elements wherever possible instead of having the annotation generated once for each element.
  • In advanced CG, constructors appear before destructors, by default, regardless of visibility.
  • In classic CG, static global attributes were declared in the header file for the package. In advanced CG, they are declared external and defined in the implementation file for the package.
  • In advanced CG, for classes, the content of the properties ImplementationEpilog and ImplementationProlog are generated inside namespaces, rather than outside as was the case in classic CG.
  • In advanced CG, the content of the property SpecificationProlog is generated on the line before the class declaration. If you want to keep the old behavior of generating this content on the same line as the declaration, you can add the property AddNewLineAfterProlog and set it to False.
  • In advanced CG, for dependencies, the content of the properties ImplementationProlog and SpecificationProlog is generated on the same line as the dependency. To have the content generated on a separate line, add a new line character to the end of the property value.

MicroC profile
Static initialization

Previously, if you provided an initial value for an attribute by using the Initial Value field in the Features windows for attributes, the code generated would erroneously include braces around the value for certain types such as char. This has been corrected in the current release.

Structure of mxf directory

New subdirectories have been added under the mxf directory, and certain files have been moved to these subdirectories. If you have created your own makefiles for models, you may have to update the paths in the makefiles to reflect the new directory structure.

Comments for initialization of class attributes

Changes were made to the way that comments are generated for the initialization of class attributes.

Makefiles

Generated makefiles now include a reference to the file RiCOSTargetServices.


MISRA

IS_IN macro

If you use the MISRA C++ profile, any calls to the IS_IN macro are now replaced by calls to a function named (state name)_IN. This was done because the IS_IN macro contains the # character which violates a MISRA rule. (C++)

Event argument visibility with MISRAC++ settings

Previously, when generating code with the MISRAC++ settings, event arguments were generated as public, as they are when generating code without these settings. Now, when you use the MISRAC++ settings, arguments are generated as private (controlled by a property called GenerateArgumentsAsPrivate). This means that you must access these arguments via the getter and setter methods that are generated. If your existing code accessed these arguments directly, you will now encounter compilation errors.


Reverse Engineering, Roundtripping

Header guards (C, C++)

When reverse engineering code that contains header guards, Rational Rhapsody no longer creates attributes in the model to represent the header guards. There is no change in the code generation behavior for header guards.

Eclipse projects

Rhapsody now roundtrips changes made to source files that are part of Eclipse projects associated with Rhapsody projects even if the file modified does not belong to the active Rhapsody configuration. A boolean property named Eclipse::Project::AllowRoundtripForAllFiles is included in the backward compatibility profiles (C, C++) with a value of False to maintain the previous behavior for pre-7.6 projects.


Rhapsody API

Any applications that use the Rhapsody API (including plugins and add-ons), must be rebuilt using the libraries/jar files included with 7.6.


Other changes

Load on demand

The "load on demand" feature introduced in release 7.6 cannot be used with older models in which the General::Model::DefaultDirectoryScheme property is set to PackageAsDirectory unless you save your older model in 7.6 format.
If you choose to save the model in 7.6 format, change the value of the property UseIncrementalSave to False before saving the model in the new format.

Working with the Android profile

While the previous version of Rational Rhapsody supported development with version 2.2 of the Android SDK, the current version supports only version 2.3 of the Android SDK.

If you have models that use version 2.2 of the Android SDK and you want to use these models with version 7.6 of Rational Rhapsody, you must copy the directory that contains the Android22 profile from your previous Rational Rhapsody installation to your new installation location. The profile can be found under [installation directory]\Share\Profiles\Android. Copy the entire Android22 directory.

If you have models that use version 2.2 of the Android SDK and you would like to migrate these models to use version 2.3 of the Android SDK, follow these steps:

  1. Open the existing model.
  2. Select the Android22 profile in the browser and select Delete from Model from the pop-up menu.
  3. Add the Android23 profile to your model (File > Add to Model). The file to add is [installation directory]\Share\Profiles\Android\Android23\Android23.sbs. In the Add to Model window, select the Add Dependents and As Reference options.

Table of Contents


Rational Rhapsody 8.0.6

Notation for inherited features

Beginning in release 8.0.6, in SysML models, inherited features are displayed with the relevant UML 2.5 notation (^). To turn off the use of this notation, set the value of the General::Graphics::ShowInheritedNotation property to False. (For UML-based models, this notation is turned off by default.)


Code Generation
Generation of comments for actions, transitions, and requirements in flowcharts

Beginning in release 8.0.6, when code is generated for flowcharts, comments are generated to represent the descriptions entered for actions and transitions. To preserve the previous code generation behavior for pre-8.0.6 models, the [lang]_CG::Operation::GenerateDescriptionForFlowchartActions and [lang]_CG::Operation::GenerateDescriptionForFlowchartFlows properties were added to the backward compatibility settings for C and C++ with a value of False. If you want to use the new code generation behavior with pre-8.0.6 models, change the value of these properties to True and reload the model.

In release 8.0.6, the feature that generates comments for requirements has been expanded to include requirements in flowcharts. If you open an existing model with flowcharts in release 8.0.6 and generate code, you might find additional comments in the code compared to the code generated with previous releases of Rational Rhapsody.

Initializer lists

In release 8.0.6, the order of items included in a constructor's initialization list has been improved to prevent potential compiler warnings. To preserve the previous code generation behavior for pre-8.0.6 models, the property CPP_CG::Operation::OrderedConstructorInitializer was added to the backward compatibility settings for C++ with a value of False. If you want to use the new code generation behavior with pre-8.0.6 models, change the value of this property to True and reload the model.

Initial values for associations (C++)

In release 8.0.6, a number of changes were made with regard to the code generated for associations with initial values:

  1. Prior to 8.0.6, if you specified an initial value for an association in the constructor initializer, it would still be set to NULL in the body of the constructor. This defect was corrected in 8.0.6.
  2. Prior to 8.0.6, it was not possible to set an initial value for an association unless it was marked as static or reference. Beginning in 8.0.6, it is possible to set initial values for both compositions and aggregations, even if they are not marked as static or reference. (This is true only for associations where multiplicity is set to "1".) The initial value is generated in the constructor initializer or the constructor body, depending on the value of the CG::Relation::InitializationStyle property.

To preserve the previous code generation behavior for pre-8.0.6 models, the CG::Relation::UsePre806AssociationCG property was added to the backward compatibility settings for C++ with a value of True. If you want to use the new code generation behavior with pre-8.0.6 models, change the value of this property to False and reload the model.

Note that with regard to associations that are not static or reference, if the value of UsePre806AssociationCG is set to True, you will be able to set an initial value in the Features window, but the generated code will not reflect the initial value that was set.

Code generated for qualified STL containers

In release 8.0.6, improvements were made to the code generated for qualified STL containers. To preserve the previous code generation behavior for pre-8.0.6 models, the STLContainers::Qualified::GetKey property was added to the backward compatibility settings for C++ with a value representing the code that was generated for qualified STL containers in previous versions. If you want to use the new code generation behavior with pre-8.0.6 models, locate the property in the CGCompatibilityPre806Cpp settings in your project and select the Un-override option for the property.

Code generated when Statechart Implementation is set to Reusable (C++)

Prior to release 8.0.6, if you were using a configuration where the Statechart Implementation setting was set to Reusable, the use of certain macros could result in compilation errors. This issue was fixed in 8.0.6. As a result, you might encounter the following differences in the code generated in 8.0.6, compared to the code generated for the same model in earlier versions:

  • Addition of a member named "concept" in certain classes
  • The assignment of the value "this" to the "concept" member in the initStatechart operation

Check model - check for multiple history connectors

In release 8.0.6, a model check has been added to identify diagrams that contain two history connectors of the same kind (shallow or deep), and report such situations as errors. To prevent this check from being carried out on pre-8.0.6 models, the CG::Statechart::CheckForMultipleHistoryConnectors property was added to the backward compatibility settings for C, C++, and Java with a value of False.


Rhapsody API

Due to changes made to the Rhapsody API, any scripts that use the API must be recompiled with the new version of the API before they can be used with release 8.0.6.


Boolean values in AUTOSAR models

Beginning in release 8.0.6, Rational Rhapsody stores boolean values in AUTOSAR models as "true" or "false" (in accordance with the AUTOSAR metamodel) instead of "True" or "False".

As a result of this change, you might encounter the following issues when working with pre-8.0.6 models.

  • If you export ARXML for an existing model in release 8.0.6 and compare it with the ARXML exported from earlier releases, you will find differences for the boolean values.
  • If you open an existing model in release 8.0.6, and then import ARXML that contains unnamed elements, you might end up with duplicate elements in your model for the unnamed elements.

If you detect such duplicate elements, you can use the following steps to remove them:

  1. Discard the merged model, and open the existing model again.
  2. Export the entire model to ARXML.
  3. Import the resulting ARXML back into an empty Rational Rhapsody project.
  4. After exporting and importing the original model, take the ARXML file that you originally tried to merge and import it again.

After you carry out the above steps, the merged model will not contain duplicates for unnamed elements.

Obviously, if your model contains non-AUTOSAR elements such as diagrams or requirements, you cannot use the approach of exporting and then importing your entire model. In such cases, you can use the following steps to manually remove the duplicate elements:

  1. For duplicate elements, copy the value of the AUTOSAR::ARXML::UnNamedCalculatedName property from the new element that was created during the import (the one with lower case "true" or "false") to the existing element in the model.
  2. Delete the new duplicate element that was created.

Using existing Rational Publishing Engine templates

The following changes were made to the REST schemas in Rational Rhapsody release 8.0.6:

  • In the UPDM2pre805 profile, the following changes were made to term names:
    • "EnterpriseVision___pre805__" was changed to "EnterpriseVisions___deprecated__"
    • "EnterpriseGoals___pre805__" was changed to "EnterpriseGoals___deprecated__"
    • "ResourceConnectors___pre805__" was changed to "ResourceConnectors___deprecated__"
  • In the UPDM2* profiles, "Implementses" was changed to "Implements".

As a result of these changes, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the relevant schema with the new schema provided with Rational Rhapsody 8.0.6.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.
Rational Rhapsody 8.0.5

Internal Block Diagram elements - structured view

Beginning in release 8.0.5, when you add elements to an Internal Block Diagram, they are displayed in Structured view (no compartments) by default, rather than Specification view, as was the case previously.


Default Type for elements such as attributes

Prior to release 8.0.5, when you added model elements such as attributes, the default Type for the element reflected the value of the General::Model::DefaultType property at the project level. This was the case even if you created a stereotype for which this property was overridden.

This behavior has been changed in release 8.0.5. Now, if you create a "new term" stereotype applicable to a model element such as Class, and modify the value of the General::Model::DefaultType property for this "new term", the default Type for new attributes is taken from the value set for the DefaultType property for the "new term".

You can see an example of this change if you use the DDS profile in a model and add an attribute to a topicStruct.

To preserve the previous modeling behavior for pre-8.0.5 models, the General::Model::TakeDefaultTypeValueFromProject property was added to the backward compatibility settings for C++ with a value of True. If you want to use the new behavior with pre-8.0.5 models, change the value of TakeDefaultTypeValueFromProject to False and reload the model.


Linking to static versions of run-time libraries

Release 8.0.5 includes the ability to link to static versions of run-time libraries. This feature is controlled by the new UseLIBCMT property, which has been added to the various Microsoft environments. The value of this property is then included in a number of conditional statements in the makefiles generated for these environments. So if you open an existing pre-8.0.5 model in the current release and generate code for one of these environments, you will see a number of differences in the generated makefile.


ReporterPLUS reports

Prior to release 8.0.5, the reports generated by Rational Rhapsody ReporterPLUS were not always displayed correctly on computers with Java 7 or later versions of Java 6. This issue has been corrected in release 8.0.5.

If you run Rational Rhapsody 8.0.5 on a computer with a relatively old version of Java, you might find that the fixes included in the current release negatively impact the appearance of ReporterPLUS reports. If you experience such problems, you can have ReporterPLUS generate reports in the previous format by adding the following text to your rhapsody.ini file:

[ReporterPLUS]
UseJavaPre7=TRUE

Changes to Frameworks
"New" operator that does not throw exceptions

The OXF framework now contains additional pairs of new/delete operators that can be used to prevent an exception from being thrown if an object is not allocated.

The implementations of the GEN, GEN_BY_GUI and GEN_BY_X macros have been modified to take into account a variable called OM_USE_NOTHROW_GEN. To use the "no throw" approach, you define the variable OM_USE_NOTHROW_GEN.

This addition to the framework entailed changes to the following files in the C++ OXF:

  • OXFGenMacros.h
  • OXFMemoryManagerMacros.h
  • OXFMemoryPoolsMacros.h
Linking to static versions of run-time libraries

As mentioned above, release 8.0.5 includes the ability to link to static versions of run-time libraries. The addition of this feature entailed changes to all the ms*.mak files in the C and C++ frameworks.

Removal of compilation warning

A compilation warning was removed from the OMSFunctionTimer file in the C++ OXF.


Profiles
Location of the ModelSynchronization profile

In release 8.0.5, the ModelSynchronization profile was moved from the <product installation path>\Profiles\AUTOSAR directory to the <product installation path>\Profiles\ModelSynchronization directory. When you open existing models that include a reference to this profile, Rational Rhapsody prompts you to specify the new location of the profile.

Changes for the DDS profile

Beginning in release 8.0.5, Rational Rhapsody uses different properties in order to generate code for DDS keys. To ensure that the correct code is generated for existing DDS (Data Distribution Service for Real-Time Systems) models, the CPP_CG::Configuration::UsePre805DdsCG property was added to the backward compatibility settings for C++ with a value of True.

Rational Rhapsody 8.0.4

Code generation

Prior to release 8.0.4, there were cases where an #include directive was generated for an implicit dependency but the annotation preceding the #include directive just said "auto_generated" rather than indicating the actual reason that the directive was generated. This issue was fixed in 8.0.4.

To preserve the previous code generation behavior for pre-8.0.4 models, the CG::Dependency::AutoGenAnnotationsForImplicitDependencies property was added to the backward compatibility settings for C++ with a value of False.


Changes to frameworks
OXF C++ framework
  • In OMProtected, the method getGuard is now defined as virtual.
  • The signature of the delete operator was modified in order to fix a compilation error that occurred when using the latest versions of gcc.
  • The OMDELETE macro was modified in order to prevent a compilation warning.
SMXF C framework
  • An adaptor for QNX was added.
  • Two macros were added: RiCOSFailure and RiCOSSuccess.
  • In the RiCTaskEM_init method, one of the parameters was removed.

Using existing Rational Publishing Engine templates

The following change was made to the REST schemas in Rational Rhapsody release 8.0.4:
AllUseCasees was changed to AllUseCases. Notice the difference in spelling.

As a result of this change, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody 8.0.4.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.

AUTOSAR
Importing ARXML that contains unnamed elements

Prior to Rational Rhapsody 8.0.4, if you imported ARXML into an existing model (in merge mode), there were cases where the resulting model had duplicate entries for unnamed elements (for elements that can have multiplicity greater than 1). To resolve this problem, in release 8.0.4, a change was made to the way that unnamed elements are stored in the model. This change resolves this issue for new models created with 8.0.4.

However, if you try to import ARXML into an existing pre-8.0.4 model (in merge mode), you might still encounter this problem. To work around this issue, use the following steps:

  1. Discard the merged model, and open the existing model again.
  2. Export the entire model to ARXML.
  3. Import the resulting ARXML back into an empty Rational Rhapsody project.
  4. After exporting and importing the original model, take the ARXML file that you originally tried to merge and import it again.

After you carry out the above steps, the merged model does not contain duplicates for unnamed elements.

Obviously, if your model contains non-AUTOSAR elements such as diagrams or requirements, you cannot use the approach of exporting and then importing your entire model. In such cases, you can use the following steps to manually remove the duplicate elements:

  1. Copy the value of the AUTOSAR::ARXML::UnNamedCalculatedName property from the new element to the existing element.
  2. Delete the new duplicate element that was created.

Instance references belonging to RTEEvent elements (relevant for AUTOSAR 3 only)

Beginning in release 8.0.4, the instance references belonging to RTEEvent elements are represented by context tags rather than dependencies.

If you import ARXML containing RTEEvent elements into an existing pre-8.0.4 model that already contains these elements, the existing RTEEvent elements in the model then has both the original dependency and the new context tag. When you export such a model to ARXML, Rational Rhapsody exports only the context tags for these elements and ignores the dependencies (because they are redundant). If you want to "clean up" the model, you can manually delete these redundant dependencies.

For elements of type RTEEvent, this change is relevant for "modeDependency" instance references.

For the elements derived from RTEEvent, this change is relevant for the following instance references:

  • "mode" instance references for ModeSwitchEvent
  • "data" instance references for DataReceivedEvent
  • "data" instance references for DataReceiveErrorEvent
  • "operation" instance references for OperationInvokedEvent
Rational Rhapsody 8.0.3

Saving older models in Rational Rhapsody 8.0.3

If you open an existing model in version 8.0.3 and then save the model, you can no longer open the model in version 8.0.2 of Rational Rhapsody. If you have a situation where people will be using both version 8.0.2 and version 8.0.3 to work on a model, use the Save as Rhapsody 8.0.2 option when you are working with the model in version 8.0.3.


Data Distribution Service (DDS) models
Multiple IDL files

Beginning in version 8.0.3, a separate IDL file is generated for each package that contains DDS elements. To preserve the previous code generation behavior for pre-8.0.3 models, the CPP_CG::Configuration::GenerateSingleIDLFile property was added to the backward compatibility settings for C++ with a value of True.

Elements with bounded multiplicity

For elements with bounded multiplicity, Rational Rhapsody now generates arrays by default, rather than sequences.

For existing models, if you want to restore the previous code generation behavior, set the CG::Attribute::Implementation property to Fixed for attributes, and set the CG::Type::Implementation property to Fixed for typedefs. If you want to make these change for all such elements in the model, right-click the model in the browser and select Convert pre-8.0.3 DDS model.

If you want to use the new code generation behavior for an existing model, but do not want to see a warning about the change each time you generate code, change the value of the CPP_CG::DDS::Pre803MultiplicityWarning property to False. (This property is from the CGCompatibilityPre803Cpp.sbs settings file.)


Browser behavior when in flat mode

Prior to version 8.0.3, if you were using the Flat browser view (meaning, no category names such as Classes or Events), the model elements were displayed alphabetically. Beginning in version 8.0.3, when you use the Flat view, the elements are organized by metaclass, and alphabetically within each metaclass. This behavior is controlled by the new Browser::Settings::SortingPolicy property. If you want to restore the previous behavior, you can change the value of SortingPolicy to "ByBrowserSettings." Note that this property does not affect the display of elements if you have selected the Enable Ordering option.


Renaming of schema files for AUTOSAR profiles

To prevent any confusion about the nature of the schema (.xsd) files provided with the various AUTOSAR profiles, these files have been renamed to indicate that they are REST-related. For example, the AUTOSAR_40.xsd file is now the AUTOSAR_40_REST.xsd file.


Message text for AUTOSAR checks

Prior to version 8.0.3, the following generic message was used in cases where an element did not contain the correct number of items of a certain type:

"(GL-3) <element-name> does not contain enough <<role>> of one of the following types: <type-list>. "

Beginning in version 8.0.3, this message has been replaced by three messages that provide more specific information regarding the problem. The new messages are:

  • "(GL-8) <element-name> must have at least <lower-limit> <<role>>. "
  • "(GL-9) <element-name> must have exactly <lower-limit> <<role>>. "
  • "(GL-10) <element-name> must have between <lower-limit> to <upper-limit> of <<role>>. "

Changes to frameworks
Changes to OMReactive (OXF and SXF)

Changes were made to OMReactive in order to reduce the amount of memory used by objects based on OMReactive. These changes included reordering the members as well as removing the following two members:

  • frameworkInstance boolean attribute
  • theTerminationEvent object

In addition, theStartBehaviorEvent was renamed to theStartOrTerminationEvent.

Use of theStartOrTerminationEvent for both startBehavior and Termination event sending (OXF)

To allow for the removal of theTerminationEvent from OMReactive, theStartOrTerminationEvent is now used for both startBehavior and Termination event sending.

The following operations now use theStartOrTerminationEvent instead of theStartBehaviorEvent and theTerminateEvent objects:

  • OMReactive::OMReactive
  • OMReactive::startBehavior
  • OMReactive::handleEventUnderDestruction

In order to use the same event instance for both startBehavior and Termination event sending, the following changes were made to OMStartBehaviorEvent:

 bool OMStartBehaviorEvent::isTypeOf(const IOxfEvent::ID id) const {
    //#[ operation isTypeOf(ID) const
    return (lId==id);
    //#]
}
 void OMStartBehaviorEvent::reincarnateAsTerminationEvent(void) {
    //#[ operation reincarnateAsTerminationEvent()
    setId(OMReactiveTerminationEventId);
    setFrameworkEvent(true);
    //#]
}
  • The isTypeOf operation was modified to return the correct answer in all cases. Prior to this change, it did not use the lId attribute for comparison. Rather, it always compared the id argument with the OMStartBehaviorEventId constant, and this would have resulted in the incorrect behavior after the reincarnation of the event. Now, the implementation of isTypeOf is:
  • A new operation named reincarnateAsTerminationEvent was added to OMStartBehaviorEvent. This operation is called in OMReactive::destroy() before theStartOrTerminationEvent is sent as a termination event.
Additional "new" and "delete" operations (SXF)

Prior to version 8.0.3, if you used the SXF framework to create an application for certain targets such as QNX 6.5, memory faults would occur if the number of events generated exceeded the value set for the BaseNumberOfInstances property. This was due to an exception being thrown rather than "null" being returned in cases where "new" was used and the pool was already full.

To correct this problem, the values of a number of properties were modified in order to generate additional "new" and "delete" operations that include std::nothrow as a parameter. These are the properties that were modified:

  • CPP_CG::Framework::StaticMemoryPoolDeclaration
  • CPP_CG::Framework::StaticMemoryPoolImplementation
  • CPP_CG::Framework::HeaderFile

As a result of this change, if you use version 8.0.3 to generate code for existing SXF-based models, you will find differences in the code generated for packages that contain events, relative to the code generated previously.

Rational Rhapsody 8.0.2

Code generation - MicroC projects

Prior to version 8.0.2, there were situations where Rational Rhapsody did not generate the struct mxfGlobals, which is necessary for MicroC-based applications. This problem has been corrected in the current version. As a result, you might find differences in the code generated with Rational Rhapsody 8.0.2, relative to the code generated with previous versions.

Rational Rhapsody 8.0.1

SMXF framework

In release 8.0.1, the following redundant operations were removed from the SMXF framework:

  • RiCReactive::setShouldTerminate (performed same action as RiCReactive::terminate)
  • RiCReactive::inNullConfig (performed same action as RiCReactive::shouldCompleteRun)

SysML profile
Naming elements

Prior to release 8.0.1, when you used the SysML profile, Rational Rhapsody allowed you to enter element names that contained characters that cannot be used in generated code, for example, blank spaces. Beginning in 8.0.1, you can only use such characters if you are working in Label mode (View > Label Mode). The SysML profile for 8.0.1 includes values compatible with earlier versions for the relevant property in order to prevent problems with existing models.

Change of "block" to "Block"

Prior to release 8.0, the SysML profile contained a "new term" called block (with a lowercase b). In release 8.0, the name of this "new term" stereotype was changed to Block (with an uppercase b). This change has implications for scripts that use the IRPModelElement.getUserDefinedMetaClass method in the Rhapsody API. Beginning in release 8.0, this method returns "Block" rather than "block". If your script code includes a comparison of the returned value to the string "block", the comparison will yield a different result.

To alleviate the need to make changes to such scripts, release 8.0.1 allows you to use a property called UseOldMetaClassNameInComAPI to specify that the old name is to be used instead of "Block". To use this mechanism, add the General::Model::UseOldMetaClassNameInComAPI property to your site.prp file with a value of "Block".

The UseOldMetaClassNameInComAPI property works in conjunction with a second property called Model::Stereotype::OldName, which has been included in the SysML profile for 8.0.1 with a value of "block".


AUTOSAR 4.0.x profiles

In 8.0.1, the underlying metaclass of a number of "new terms" was changed from Comment to Object. As a result, when you open existing models in release 8.0.1, any elements of these types appear as a simple Comment.

For each such element in your existing model:

  1. Create a new element of that type by using the Add new item in the pop-up menu. (You can find the name of the original type in the Stereotype field of the Features window for the old element.)
  2. Move any owned elements from the old element to the new element you created.
  3. Copy all tag values from the old element to the new element.
  4. Delete the old element.

The following list shows the element types that are affected by this change:

  • choice
  • EcucAddInfoParamDef
  • EcucBooleanParamDef
  • EcucChoiceContainerDef
  • EcucChoiceReferenceDef
  • EcucEnumerationParamDef
  • EcucFloatParamDef
  • EcucForeignReferenceDef
  • EcucFunctionNameDef
  • EcucInstanceReferenceDef
  • EcucIntegerParamDef
  • EcucLinkerSymbolDef
  • EcucModuleDef
  • EcucMultilineStringParamDef
  • EcucParamConfContainerDef
  • EcucReferenceDef
  • EcucStringParamDef
  • EcucSymbolicNameReferenceDef

Using existing Rational Publishing Engine templates

In release 8.0.1, the following change was made to the REST schemas in Rational Rhapsody:

  • The Files container under Classifier is now called ComponentFiles

As a result of this change, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody version 8.0.1.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.
Rational Rhapsody 8.0

Code generation
Statechart code

In version 8.0, the following changes were made in the code generated for statecharts:

  • Prior to version 8.0, in cases where orthogonal states exited to a join connector that was followed by a termination connector, the code that was generated always used the exit action of the first state regardless of which of the orthogonal states the system was in. This problem has been corrected in version 8.0.
  • Prior to version 8.0, in cases where a single trigger triggered multiple transitions, the code that was generated ignored any guards that appeared after a junction connector that followed any of the transitions. This problem has been corrected in version 8.0.
  • Prior to version 8.0, in cases where a junction connector followed a condition that exited a condition connector, the code that was generated for the else part of the condition also included the action that followed the junction connector. This problem has been corrected in version 8.0.
  • Prior to version 8.0, in cases where two states had transitions entering a join sync bar, and one of the states had a second transition that used a guard, the system proceeded past the join sync bar without waiting for the completion of the transition from the other state. This problem has been corrected in version 8.0.

To preserve the previous code generation behavior for pre-8.0 models, the CG::Statechart::UsePre80StatechartCG property was added to the backward compatibility settings for C, C++, and Java with a value of True.

Statechart event-processing code

In version 8.0, changes were made to the statechart event-processing code in order to increase the compliance of the code with MISRA. To preserve the previous code generation behavior for pre-8.0 models, the CG::Statechart::GenerateMisraCompliantEventProcessingCode property was added to the backward compatibility settings for C and C++ with a value of False.

Application of MISRA profiles (C and C++)

The way in which the MISRA profiles are applied to projects has been changed in version 8.0. The profiles are no longer globally applied. If you want to have a MISRA profile applied to your entire project, add a dependency from the project to the profile. If you only want to apply the profile to specific packages, add a dependency from each such package to the profile. This change applies to both the C and C++ MISRA profiles.

Generation of S-functions

Prior to version 8.0, Rational Rhapsody would generate an *.mdl file containing the S-function block and a MexOpts.txt file. Beginning in this version, an *.m file is generated (create_sfunction_model.m) instead of an *.mdl file. Once this *.m file is generated, all you have to do is open MATLAB, go to the generated folder, and type create_sfunction_model in the command window. This creates the *.mdl file and carries out the compilation as well.

Projects that use Microsoft Visual Studio 6.0

Beginning in version 8.0, Rational Rhapsody no longer works with Microsoft Visual Studio 6.0 without manual configuration. The following entries are no longer included in the list of available environments: Microsoft, MicrosoftDLL, and MSStandardLibrary. If you want to use a pre-8.0 model in version 8.0 and continue working with Visual Studio 6.0, there are a number of manual steps that you must carry out. For detailed instructions, see Using Microsoft Visual Studio 6 with IBM Rational Rhapsody.

Using Rational Rhapsody with Microsoft Visual Studio 2008 and Microsoft Visual Studio 2010

Beginning in version 8.0, Rational Rhapsody uses a single environment called MSVC for projects that use Microsoft Visual Studio 2008 and projects that use Microsoft Visual Studio 2010.

To indicate which version of Visual Studio you are using, you must use the MSVC::IDEVersion property.

The value of this property is passed as a parameter to the Build Framework command, and to the command that is used to build your application. The value of the property is also used in properties that affect the content of the generated makefile.

The default value of the MSVC::IDEVersion property is VC10:

  • If you are using Visual Studio 2010, you do not have to modify the value of the property.
  • If you are using Visual Studio 2008, you must change the value of the property to VC9.


Changes to names of metaclasses

In version 8.0, the names of two metaclasses were changed:

  • CollaborationDiagram is now CommunicationDiagram
  • PrimitiveOperation is now Operation

If you have scripts that use the old metaclass names, update them to use the new metaclass names. Similarly, if you have used the old metaclass names in the values of overridden properties, update the properties to use the new metaclass names.


Models containing double-byte characters in element names

For certain model elements, such as use cases and actors, Rational Rhapsody allows a more flexible name format. The purpose of this flexibility is to allow the use of spaces and a number of other ASCII characters that cannot be used in the names of elements that are included in the generated code.

Due to a defect, this flexibility unintentionally allowed the inclusion of double-byte characters (such as Japanese) in the names of these elements. This is causing a set of issues that the system was not designed to deal with. By design, double-byte characters are only allowed in the Label field, not in the Name field.

To prevent these problems, in version 7.6.1.2 Rational Rhapsody began enforcing the design that double-byte characters are only allowed in the Label field, not in the Name field.

In the 8.0 release, if you open an existing model that contains such multi-byte names, all multi-byte names in the model are automatically changed to the default Rational Rhapsody names (for example, class_0). The original names are copied to be the labels of the elements. In order to view the original names, switch to Label Mode (View > Label Mode).


Data Distribution Service for Real-Time Systems (DDS) modeling - Quality of Service dependencies

Prior to version 8.0, dependencies with the <<qualityOfService>> stereotype were drawn from the quality of service entity to the DDS entity. Beginning with this release, dependencies with the <<qualityOfService>> stereotype are drawn from the DDS entity (such as DataWriter) to the quality of service entity.

To allow correct code generation for existing models that use the pre-8.0 approach for such dependencies, the CPP_CG::Configuration::UsePre80DdsCG property was added to the backward compatibility settings for C++ with a value of True.

Note, however, that even with this property, the correct code will be generated only if you turn off the "load on demand" and "parallel code generation" options. If you want to use one of these options, you must reverse the direction of the <<qualityOfService>> dependencies in your older model.

To have Rational Rhapsody make the necessary model changes automatically, select Convert pre-8.0 DDS model from the pop-up menu that is displayed for DDS models.


Opening 8.0 AUTOSAR models in previous versions of Rational Rhapsody

If you create an AUTOSAR model in version 8.0 and then want to open the model in an older version of Rational Rhapsody, you must copy the relevant AUTOSAR profile from 8.0 to your older installation.


Using existing Rational Publishing Engine templates

As a result of changes made to the REST schemas in Rational Rhapsody, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody version 8.0.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.

Table of Contents


Rational Rhapsody 8.1.5

Display of tags in model browser

Prior to release 8.1.5, the default information displayed for tags in the browser was the tag name. Beginning in this release, both the tag name and the tag value are displayed by default. You can restore the previous behavior by modifying the value of the property Browser::Settings::ShowTagValueFormat.


Code generation (C++) - keyword expansion in properties for defining standard operations

Prior to release 8.1.5, when you used properties to define standard operations, the keywords $Name and $NameWithTemplateParams would both result in the generation of the class name together with the template parameters of a template class. This issue was corrected in this release. In order to preserve the previous code generation behavior for pre-8.1.5 models, the property CPP_CG::Class::ExpandNameKeywordWithTemplateParameters was added to the backward compatibility settings for C++, with a value of True.


Text formatting improvements

In release 8.1.5, a number of improvements were made to the text formatting capabilities. This includes a number of changes to the way that formatting was handled previously:

  • The Formal Painter tool is now located on the Format toolbar.
  • The Description tab of the Features window now has its own formatting controls. If you want to format the Description text, you must use the controls on the Description tab; the tools on the Format toolbar are disabled when the Description tab has focus.

Advanced options for table columns

The Columns tab of the Features window for table layouts now contains an "Advanced Options..." button that takes you to a new windows titled "Advanced Table Options". This new window presents a number of options that previously could only be accessed via properties.

As part of this enhancement, the option for collapsing the first table column was moved from the Columns tab to the "Advanced Table Options" window.


Opening Rhapsody 8.1.5 models that contain editable units not copied into the model

Beginning in release 8.1.5, your models can contain editable units located outside the directory of your Rhapsody project. If you want to use release 8.1.4 to open a model that contains such units, you must use 8.1.4 iFix.001 or later. Using one of the required iFixes will allow you to open such models, however, the units outside the project directory will be read-only.


DiffMerge - comparing project components

Prior to release 8.1.5, when components were compared in DiffMerge, the elements in the component scope were listed without the names of the packages that they belong to. Beginning in this release, full paths are displayed for elements in the component scope.


Design Manager - location of update site for Eclipse

In this release, the Eclipse update site for Design Manager has been moved from [Rhapsody installation]\DesignManager\Eclipse to [Rhapsody installation]\Share\DesignManager\Eclipse.

Rational Rhapsody 8.1.4

Diagrams
Drawing associations

When you draw an association, aggregation, or composition, the text for the target role is now highlighted for editing by default. Prior to release 8.1.4, the association name was highlighted for editing by default. In order to preserve the previous behavior for pre-8.1.4 models, the value of the property DefaultLabel is set to "Association" in the backward compatibility settings.

When you draw an association, aggregation, or composition, the names of the association ends are now displayed by default. Prior to release 8.1.4, the association ends were hidden by default. In order to preserve the previous behavior for pre-8.1.4 models, the values of the properties ShowSourceRole and ShowTargetRole are set to False in the backward compatibility settings.

Sequence diagrams - adding free text to messages

Prior to release 8.1.4, it was possible to add free text to messages in sequence diagrams, following the name of the operation, for example "printReport() - this prints the report". Beginning in this release, you can no longer include text that is not part of the operation name or operation arguments. In order to maintain the pre-8.1.4 behavior for older models, the property SupportFreeText was added to the backward compatibility settings for 8.1.4 with a value of True.


Code Generation
Use of triggered operations in interfaces (C)

Prior to release 8.1.4, Rhapsody's C code generation did not support the use of triggered operations in interfaces. Support for triggered operations was added in this release. In order to preserve the previous code generation behavior for pre-8.1.4 models, the property SupportTriggeredOperations was added to the backward compatibility settings for C, with a value of False.

Order of #include statements in code generated for File elements (C)

Prior to release 8.1.4, the order of #include statements in C code generated for File elements depended upon whether or not the File element had a statechart. This issue was resolved in release 8.1.4. In order to preserve the previous code generation behavior for pre-8.1.4 models, a property named C_CG::File::UsePreviousIncludeOrder was added to the C backward compatibility settings for 8.1.4 with a value of True.

Code generated for flowchart actions

In release 8.1.4, a number of defects related to the code generated for flowchart actions were fixed. These defects involved whitespace issues and the generation of redundant block brackets. As a result, you may find some changes in the code generated for flowcharts in your model, relative to the code generated in previous releases.

Code generated for single block in models that contain Simulink blocks

Prior to release 8.1.4, if you generated code for a single animated reactive block in models that contain Simulink blocks, incorrect code was generated, resulting in compilation errors. This problem was fixed in release 8.1.4. As a result, you may find some changes in the code generated for such models, relative to the code generated in previous releases.

Label mode - character replacement

When element labels contain characters that cannot be included in the generated code, Rhapsody replaces these character with underscores before copying the label to the element name. Beginning in release 8.1.4, if such replacement results in a name that consists of only underscores and numbers, then the name of the element will be based on the default naming scheme, for example "class_1", rather than being based on the label. In order to preserve the previous behavior for pre-8.1.4 models, a property named General::Model::AllowNameContainingOnlyUnderscoresAndDigits was added to the backward compatibility settings for 8.1.4 with a value of True.


Frameworks
OXF

To make the 64-bit adapter for VxWorks 6.9 applicable to VxWorks6gnu_RTP as well, changes were made to the file ..\Share\LangCpp\oxf\Vxos.cpp.

SMXF

To correct a number of code generation issues, changes were made to a number of files in the SMXF framework.

OXF, SXF, and SMXF

The OXF, SXF, and SMXF frameworks for C and C++ now include a predefined type called "Untyped" (based on int).


Roundtripping
Rhapsody scripts that include roundtripping

When running a command-line script that includes roundtripping commands, Rhapsody must make choices for questions that are posed to the user in certain situations when performing roundtripping via the Rhapsody UI. A number of changes were made in this regard in release 8.1.4. Now, Rhapsody assumes that the answer is "yes" for each of these questions. This may change the way your script is executed, relative to previous releases.

The questions are:

  1. Rhapsody has found parsing errors as a result of your changes. These errors can be viewed in the Output window. Would you like Rhapsody to integrate your code changes into the model anyway?
  2. The model may have been changed after the last code generation. Roundtrip may revert the changes. Do you want to continue?
Rational Rhapsody 8.1.3

AUTOSAR profiles - changes to profile names and locations

Prior to release 8.1.3, some AUTOSAR profiles were contained in subdirectories that reflected the version of AUTOSAR that the profile represented, and some AUTOSAR profiles were stored in the root AUTOSAR directory. Also, some of the AUTOSAR profiles used two-digit prefixes in the filename, rather than the three-digit numbers corresponding to the exact version of AUTOSAR that they represented.

In release 8.1.3, all of the AUTOSAR profiles were given filenames that use a three-digit prefix, and were moved to subdirectories whose names indicate the exact version of AUTOSAR that they represent.

In addition, in release 8.1.3, a number of AUTOSAR profile versions were removed.

If you try to open an existing model that contains a reference to an AUTOSAR profile that was renamed and/or relocated, you will be asked whether you would like to update the path saved in your model.

  • Removed: 2.1, 2.1.4
  • Renamed and Relocated: 3.1 (now 3.1.5), 3.2 (now 3.2.3), 4.0 (now 4.0.2)
  • Relocated: 4.1.1, 4.2.1

Code generation - generation of descriptions of actions in flowcharts

Ordinarily, when you specify the text to use as the value of the property DescriptionTemplate for a type of element, it is your responsibility to specify the comment symbols to use at the beginning and end of the text by providing values for the configuration-level properties DescriptionBeginLine and DescriptionEndLine. Prior to release 8.1.3, the descriptions for actions in flowcharts were an exception to this rule - comment symbols were added automatically by Rhapsody. This behavior was changed in 8.1.3 to align with the behavior for other types of elements.

To make it possible for users to restore the previous code generation behavior for actions in flowcharts, the property EncloseFlowchartActionDescriptonTemplate was added in release 8.1.3 with a default value of False (value is True in the backward compatibility settings).


OXF Framework - changes to allow development of applications for 64-bit VxWorks systems

To make it possible to develop applications for 64-bit VxWorks systems, a number of changes were made to the OXF frameworks. These changes include:

  • the addition of a number of new types
  • use of these new types for a number of variables and operation arguments that previously used other types

Using existing Rational Publishing Engine templates

In this release, a number of changes were made to the REST schemas for AUTOSAR.

As a result of these changes, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the relevant schema with the new schema provided with Rational Rhapsody 8.1.3.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.
Rational Rhapsody 8.1.2.1

OXF and MXF C Frameworks

In the OXF and MXF C frameworks, in the file RiCReactive.c, there were a number of event-handling method calls where the wrong reactive owner was provided as an argument. This was fixed in the current release.


OXF C++ Framework

A fix was made to correct a problem of premature timeout expiration in applications developed for Linux. If you are developing applications for Linux and have encountered this problem, you can resolve the issue by uncommenting the OM_USE_TIMEOUT_LATENCY_CORRECTION compilation setting and recompiling the framework.


SXF C++ Framework

In this release, a number of enhancements were made to the SXF C++ framework:

  • The timeout heap implementation was changed to allow setting its size in the application model. Timeout heap array is now generated in the application's main function.
  • A number of functions were modified (this includes defect fixes, removal of redundant functions, and declaration of some functions as static).
  • Cleanup and a number of enhancements to the requirements package
  • Validation suite - new tests added, code coverage improved
Rational Rhapsody 8.1.2

Use of relative paths in code-centric mode

Prior to release 8.1.2, for models that use code-centric mode, all paths to the code files were saved as absolute paths. This created problems for teams where users had different local paths for files under source control.
Beginning in release 8.1.2, in code-centric models, the paths to code files are saved as relative paths. This behavior is controlled by the (lang)_ReverseEngineering::Main::useCodeCentricAbsolutePath property.
To preserve the previous behavior for pre-8.1.2 models, the useCodeCentricAbsolutePath property was added to the backward compatibility settings for C and C++ with a value of True.


Change to name of AUTOSAR profile

In release 8.1.2, the AUTOSAR_41 profile was renamed to AUTOSAR_411.

If you open an existing model that uses the AUTOSAR_41 profile, a message will be displayed indicating that the path could not be found and you will be asked whether you want to specify a new path.

  1. Answer "No" to this question.
  2. After the model has been opened, select the "Add Profile to Model..." option and choose the file "$OMROOT\Profiles\AUTOSAR\AUTOSAR_411.sbs".
  3. Save the model and then close it.
  4. Reopen the model.

TableLayout elements - changes to column types and their behavior

In release 8.1.2, the following changes were made to the column types available when defining a TableLayout element:

  • Tag (Edit) no longer appears as a possible column type, however the Tag type now includes the additional capabilities that were previously associated with the Tag (Edit) column type.
  • For purposes of consistency, the column type "Tag (Edit Strict)" was renamed to "Tag (Strict)", but there is no associated change in behavior.

When opening an existing model that contains TableLayout elements, there is no need to perform any manual actions. Rational Rhapsody makes the necessary changes automatically.

Rational Rhapsody 8.1.1

Code generation
Order of attributes and associations in constructor initialization list

Prior to release 8.1.1, in certain situations, the order of attributes and associations in a constructor initialization list was not correct. This issue has been fixed in the current release. As as result, you might find differences in the code generated for existing models, relative to the code generated in previous versions.

Generation of redundant forward declarations

Prior to release 8.1.1, in certain situations, code generation resulted in an include statement as well as a redundant forward declaration. This issue has been fixed in the current release. Now the redundant forward declaration is no longer generated. As as result, you might find differences in the code generated for existing models, relative to the code generated in previous versions.

Generation of redundant keyword: typename

Prior to release 8.1.1, there were situations where the generated code included the keyword "typename" before a template attribute or before an argument in a template operation even where the keyword was not necessary. This issue has been fixed in the current release. As as result, you might find differences in the code generated for existing models, relative to the code generated in previous versions.


Changes in names of New Terms in AUTOSAR profiles

In release 8.1.1, the following changes were made to the names of New Terms in AUTOSAR profiles, relative to the previous release.

AUTOSAR 4.0.3 / 3.2
Old name New name
AR_SWCPortBindingTable SWCPortBindingTable
AR_SenderReceiverToSignalMappingTable SenderReceiverToSignalMappingTable
AR_SwcToEcuMappingTable SwcToEcuMappingTable
AR_IB_AsynchronousServerCallReturnsEventsTable IB_AsynchronousServerCallReturnsEventsTable
AR_IB_BackgroundEventsTable IB_BackgroundEventsTable
AR_IB_DataReceivedEventsTable IB_DataReceivedEventsTable
AR_IB_DataReceiveErrorEventsTable IB_DataReceiveErrorEventsTable
AR_IB_DataSendCompletedEventsTable IB_DataSendCompletedEventsTable
AR_IB_DataWriteCompletedEventsTable IB_DataWriteCompletedEventsTable
AR_IB_ExternalTriggerOccurredEventsTable IB_ExternalTriggerOccurredEventsTable
AR_IB_InternalTriggerOccurredEventsTable IB_InternalTriggerOccurredEventsTable
AR_IB_ModeSwitchedAckEventsTable IB_ModeSwitchedAckEventsTable
AR_IB_OperationInvokedEventsTable IB_OperationInvokedEventsTable
AR_IB_TimingEventsTable IB_TimingEventsTable
AR_IB_SwcModeSwitchEventsTable IB_SwcModeSwitchEventsTable
AR_CompuMethodTable CompuMethodTable
AR_SWCPortBindingLayout SWCPortBindingLayout
AR_SenderReceiverToSignalMappingLayout SenderReceiverToSignalMappingLayout
AR_SwcToEcuMappingTableLayout SwcToEcuMappingTableLayout
AUTOSAR 3.1
Old name New name
AR_SWCPortBindingTable SWCPortBindingTable
AR_SenderReceiverToSignalMappingTable SenderReceiverToSignalMappingTable
AR_SwcToEcuMappingTable SwcToEcuMappingTable
AR_IB_AsynchronousServerCallReturnsEventsTable IB_AsynchronousServerCallReturnsEventsTable
AR_IB_DataReceivedEventsTable IB_DataReceivedEventsTable
AR_IB_DataReceiveErrorEventsTable IB_DataReceiveErrorEventsTable
AR_IB_DataSendCompletedEventsTable IB_DataSendCompletedEventsTable
AR_IB_ModeSwitchedAckEventsTable IB_ModeSwitchedAckEventsTable
AR_IB_OperationInvokedEventsTable IB_OperationInvokedEventsTable
AR_IB_SwcModeSwitchEventsTable IB_SwcModeSwitchEventsTable
AR_IB_TimingEventsTable IB_TimingEventsTable
AR_SWCPortBindingLayout SWCPortBindingLayout
AR_SenderReceiverToSignalMappingLayout SenderReceiverToSignalMappingLayout
AR_SwcToEcuMappingTableLayout SwcToEcuMappingTableLayout
Rational Rhapsody 8.1

Creation and destruction messages in sequence diagrams

In order to increase compliance with the SysML and UML standards, creation and destruction messages in sequence diagrams now have open arrowheads.


Notation for deep history connectors in statecharts

In release 8.1, the notation for deep history connectors was modified to increase compliance with the UML standard.

To preserve the previous appearance of deep history connectors for pre-8.1 models, the StatechartDiagram::HistoryConnector::UseUMLNotation property was added to the backward compatibility settings for C, C++, and Java with a value of False.


Using the Cygwin compiler with the 64-bit version of Rational Rhapsody

To provide support for the 64-bit version of the Cygwin compiler, the following properties were added in release 8.1:

  • CPP_CG::Cygwin::CPU
  • C_CG::Cygwin::CPU

If you are using the 64-bit version of Rational Rhapsody, the default value of this property is set to "x64," which indicates to Rational Rhapsody that you are also using the 64-bit version of the Cygwin compiler.

If you are using the 64-bit version of Rational Rhapsody with the 32-bit version of the Cygwin compiler, you must change the default value of the CPU property to an empty string to avoid build errors when you try to build the application.


Changes to generated makefiles

In release 8.1, a change was made to the names used for the Rational Rhapsody framework libraries. In order to allow the 32-bit and 64-bit libraries to coexist side by side, these filenames now include an indication of whether the library is 32-bit or 64-bit, for example, MSVC10x86oxf.lib. As a result, you might find changes in the references to these library files in the makefiles generated by Rational Rhapsody, compared to the makefiles generated in previous releases.


Roundtripping of operation arguments that are user-defined types

Prior to version 8.0.3 of Rational Rhapsody, operation arguments whose type was a type defined in the model were imported into the model as "on-the-fly" types. Beginning in version 8.0.3, for C++ and Java code, if the type of the argument was a class defined in the model, the argument type was identified correctly when imported into the model. However, this was not the case for "types" such as structs. Beginning in version 8.1, for C++, also for arguments that are "types", the argument type is identified correctly when imported into the model.

To preserve the previous code generation behavior for pre-8.1 models, the RoundtripArgumentTypeAsType property was added to the backward compatibility settings for C++ with a value of False.


Roundtripping of operation return types that are user-defined types

Prior to version 8.0.5 of Rational Rhapsody, operation return types that were types defined in the model were imported into the model as "on-the-fly" types. Beginning in version 8.0.5, for C++ and Java code, if the return type was a class defined in the model, the return type was identified correctly when imported into the model. However, this was not the case for "types" such as structs. Beginning in version 8.1, also for return types that are "types", the return type is identified correctly when imported into the model.

To preserve the previous code generation behavior for pre-8.1 models, the RoundtripOperationReturnTypeAsType property was added to the backward compatibility settings for C++ with a value of False.


Rational Rhapsody 8.2.1

Diagrams
Menu options

In release 8.2.1, the following changes were made to diagram-related menu options:

  • the ReArrange option is now called Layout
  • the Reroute option is now called Reroute lines
Back and forward navigation buttons

In release 8.2.1, a change was made to the behavior of the back/forward diagram navigation buttons. Now, when you press the back button, you will be taken to the diagram that you last visited.

Highlighting of elements in diagrams

In release 8.2.1, a minor change has been made to the way that elements are highlighted in diagrams, for example, when you select the Locate on Diagram option. The highlighted object now blinks, and then remains selected but without the highlight color. There are a number of properties that can be used to: 1)customize the color used for highlighting 2)control how many times the element flashes 3)control the frequency of the flashing. You can find these properties by searching for LocateInDiagram on the Properties tab of the Features window.


Code Generation
Generation of operation description in implementation (C, C++)

Prior to release 8.2.1, if you used the property DescriptionInImplementation to define a description to be generated in the implementation of an operation, and you also modified the value of the property TemplateDescription (for the specification description), the comment for the implementation description was not generated correctly. This issue was corrected in 8.2.1. To preserve the previous code generation behavior for pre-8.2.1 models, the property [lang]_CG::Operation::UsePre821DescriptionInImplementation was added to the backward compatibility settings for C and CPP with a value of True.

Descriptions for guarded operations in C code

Prior to release 8.2., when C code was generated, the descriptions for guarded operations were generated in the implementation file rather than in the specification file. This issue was corrected in 8.2, however, the parts of the description that are taken from arguments and requirements were not included in the fix for the problem. In release 8.2.1, this remaining issue was corrected. To preserve the previous code generation behavior for pre-8.2.1 models, the property C_CG::Operation::UsePre821GuardedOperationDescriptionLocation was added to the backward compatibility settings for C with a value of True.

Initialization code for associations in pre-806 models

Prior to release 8.0.6, if you specified code to initialize an association in the initializer of the constructor, the body of the constructor would still assign a value of NULL to the association. This issue was fixed in 8.0.6. At the time, the property CG::Relation::UsePre806AssociationCG was added to the backward compatibility settings for C++ in order to preserve the previous code generation behavior for pre-8.0.6 models.

However, this property did not work correctly. In release 8.2.1, this problem was fixed, and now the backward-compatibility property works as planned.

So if you open a pre-8.0.6 model with version 8.2.1 and generate code, you may find differences in the code relative to the code that was generated for the model in previous versions.


Rhapsody API
errorMessage() and getErrorMessage() - change in behavior

Prior to release 8.2.1, the errorMessage() and getErrorMessage() methods would return the most recent error. So if a method call resulted in an exception, and you called additional methods afterwards, you could still get the original error, provided that the additional calls were all successful.

Beginning in this release, the most recent error is cleared when a method is called successfully. So in order to get the error message, getErrorMessage() must be called immediately after the method that failed. This applies to:

  • IRPApplication.errorMessage()
  • IRPApplication.getErrorMessage()
  • IRPModelElement.errorMessage()
  • IRPModelElement.getErrorMessage()
IRPCollection.setString

Prior to release 8.2.1, if you provided null as an argument for IRPCollection.setString, and then retrieved that item from the collection, you would get an empty string, not null. This has been corrected in this release - now, when you call getItem to retrieve the item in the collection, null is returned.

Notifications regarding model element changes

If you have an application that extends the RPApplicationListener class, Rhapsody notifies the application when model elements are changed. Similarly, if you have added an OnElementsChanged method to a Rhapsody plug-in, the plugin will be notified when model elements are changed. Because these notifications results in a large degree of overhead, the property NotifyPluginOnElementChange is set by default to False.

Prior to release 8.2.1, your application or plug-in would be notified of element changes if you changed the value of NotifyPluginOnElementChange to True.

Beginning in release 8.2.1, for plugins (which don't extend the RPApplicationListener class), you must also modify the value of a second property that was added, NotifyPluginOnElementChangeForApplicationListenerOnly. By default, this property is set to True. To have notifications sent also to plugins, change the value of NotifyPluginOnElementChangeForApplicationListenerOnly to False.

For both of these properties, if you modify the property value, you must reload the model in order to have the new value take effect.

Methods that cannot accept NULL as parameter

Prior to this release, when a NULL value was passed to an API method that expects a non-NULL parameter, the message Element Deleted was displayed. Beginning with this release, the error message that is displayed in such cases is Invalid parameter.

New methods in RPApplicationListener

Two new methods - activeProjectAboutToChange and activeProjectHasChanged - were added to RPApplicationListener. If you run existing applications that use RPApplicationListener, and are using a log file, the log file will indicate that these events occurred and there were no methods defined to respond to them.

COM version of API - objects of type rpProject and rpProfile

Prior to release 8.2.1, if you used the rhapsody.tlb file when writing an application for use with the COM version of the Rhapsody API, it referred to classes named rpProject and rpPRofile rather than RPProject and RPProfile. This issue was corrected in release 8.2.1.

If you have an application that was written in a case-sensitive language, and the application includes code that used objects of type rpProject or rpProfile, the code will have to be updated accordingly.


AUTOSAR
Changes to icons

A number of AUTOSAR icons were modified to make it easier to differentiate between element icons and diagram icons in the browser when modeling with the AUTOSAR profile.

ECU extraction log

When ECU extraction is carried out, a log file named ECUExtract.log is now created.


Other changes
Code-centric mode in Rational Rhapsody Architect for Software (32-bit version)

Prior to release 8.2.1, when you created a model in the 32-bit version of Rational Rhapsody Architect for Software, code-centric mode was used by default. This has been changed in 8.2.1. Now, if you want to use code-centric mode for a new model, you must select the code-centric settings in the New Project dialog.

Repository changes for references to predefined types

If your model contains units with references to one or more of the predefined types, and you save changes to the model in version 8.2.1, the contents of the _filename field in the unit's file will differ from the contents of the field in previous versions. Beginning in 8.2.1, the _filename field is empty for these types of references.


Rational Rhapsody 8.2

Diagrams
Connector points

Beginning in release 8.2 of Rhapsody, for rectilinear connectors in diagrams, the connection points to elements stay fixed when the elements are moved. To restore the pre-8.2 behavior, set the value of the property General::Graphics::KeepEndPoints to False.

Search in diagrams

Prior to release 8.2, if the focus was on a diagram and you pressed Ctrl+F, the Search in Diagram box would be displayed. Beginning in 8.2., when you press Ctrl+F, the main Search window is opened, no matter where the focus was previously. To search in a diagram, you have to press Ctrl+Shift+F. If you would like to restore the pre-8.2 behavior, change the value of the property General::Graphics::SearchInDiagramShortcut to Ctrl+F.


Code Generation
Code generated for flowcharts

Prior to release 8.2, in cases where an "else" guard contained blank spaces, code was not generated correctly for flowcharts. This issue was corrected in 8.2. To preserve the previous code generation behavior for pre-8.2 models, the property [lang]_CG::Operation::UsePre82Flowchart was added to the backward compatibility settings for C and C++ with a value of True.

C code generated for class that realizes interface

Prior to release 8.2, the C code generated for classes that realize interfaces included an annotation that caused the roundtripping process to mistakenly identify an auto-generated function ( _gen) as a user-defined function. This issue was corrected in release 8.2. As a result, when you generate code for an existing model, you might see changes in the relevant annotation, relative to the code generated with previous versions.

Descriptions for guarded operations in C code

Prior to release 8.2, when C code was generated, the descriptions for guarded operations were generated in the implementation file rather than in the specification file. This issue was corrected in 8.2. To preserve the previous code generation behavior for pre-8.2 models, the property C_CG::Operation::UsePre82GuardedOperationDescriptionLocation was added to the backward compatibility settings for C with a value of True.

Code generated for connecting links

Prior to release 8.2, certain code for connecting links was generated in the [package name]_initRelations operation. In order to ensure that this code is run even when the initRelations operation is not used, in 8.2 this code was moved to the [package name]_OMConnectRelations operation. To preserve the previous code generation behavior for pre-8.2 models, the property CG::Relation::UsePre82RelationsCG was added to the backward compatibility settings for C, C++, and Java with a value of True.

Code generated for proxy ports

Prior to release 8.2, there were situations where Proxy Port internal links were not initialized correctly. This issue was corrected in 8.2. In order to preserve the previous code generation behavior for pre-8.2 models, the property CPP_CG::Port::UsePre82PortsCG was added to the backward compatibility settings for C++, with a value of True.

CORBA code generation: interfaces and exceptions

Prior to release 8.2, when CORBA .idl files were generated, there were situations where interfaces referred to exceptions before the exceptions were declared, resulting in compilation errors. This situation was corrected in 8.2. To preserve the previous code generation behavior for pre-8.2 models, the property CORBA::Class::GenerateInterfacesAfterExceptions was added to the backward compatibility settings for C++ with a value of False.

CORBA code generation: order of interfaces and exceptions

Prior to release 8.2, there were cases of generated .idl files where CORBA interfaces and exceptions were used before they were declared. This issue was corrected in release 8.2. In order to preserve the previous code generation behavior for pre-8.2 models, the property CORBA::Configuration::UsePre82InterfaceOrder was added to the backward compatibility settings for C++, with a value of True.

Descriptions for statechart elements in generated Java code

Prior to release 8.2, comment symbols were not generated correctly for descriptions of statechart elements (states, transitions, entry/exit actions) and associated requirements, resulting in compilation errors. This issue was corrected in 8.2. To preserve the previous code generation behavior for pre-8.2 models, the property JAVA_CG::Configuration::MarkStatechartDescriptionAsComment was added to the backward compatibility settings for Java with a value of False.


Using the Cygwin compiler

If you have projects that use the Cygwin environment, the version of Cygwin that you are using may be different than the version used to build Rhapsody's framework libraries for Cygwin. To avoid any problems, use the rebuild framework option (Code > Build Framework) before you try to build your project.


Frameworks

In order to improve support for building 64-bit applications, numerous changes were made to the C and C++ versions of all of the frameworks provided.


Metrics

In release 8.2, the Metrics feature was removed. For a demonstration of how to use the Rhapsody API in conjunction with JFreeChart in order to depict model metrics graphically, see the new sample located in [Rhapsody installation directory]\Samples\JavaApi\Metrics_using_query_and_API.


Refactoring

The refactor (rename) feature uses a regular expression that is defined with the property General::Model::RefactorRenameRegExp. In the framework of the redesign of the search feature in this release, changes were also made to refactoring. This included a change to the default value of the property RefactorRenameRegExp. If you have models where the value of this property has been overridden, or you have overridden the value of the property in your site.prp file, the refactor feature will not work correctly in Rational Rhapsody 8.2.


Rhapsody API

In order to improve the stability of the 64-bit version of Rhapsody, changes were made to the arguments and return types of a number of methods in the Rhapsody API.

For C and CPP applications, these methods now return __int64 instead of long, and accept __int64* arguments instead of long* arguments. For Java applications, these methods now return long instead of int, and accept arguments of type long instead of arguments of type int.

If you use any of the following methods in your code, check to see whether your code requires changes as a result of the modifications that were made. This includes both potential compilation problems and potential run-time problems.

  • IRPAXViewCtrl.doCommand
  • IRPApplication.getRhapsodyHandleErrorFunction
  • IRPApplication.getRhapsodyHandleErrorFunctionLong
  • IRPDiagSynthAPI.addInstance
  • IRPDiagSynthAPI.addSynthSDToModel2
  • IRPDiagSynthAPI.createSD2
  • IRPDiagSynthAPI.receiveMessage
  • IRPDiagSynthAPI.sDAddConditionMark
  • IRPDiagSynthAPI.sendMessage
  • IRPPlugInWindow.getWindowHandle

Rational Rhapsody 8.3.1

Diagrams
Bridges for intersecting lines

Beginning in release 8.3.1, if the line_style property is set to "rectilinear_arrows" or "rounded_rectilinear_arrows", Rational Rhapsody displays bridges when lines intersect in a diagram. This feature can be turned off by setting the value of the property General::Graphics::RectilinearBridgeDrawing to False. To maintain the previous behavior for pre-8.3.1 models, the property RectilinearBridgeDrawing is set to False in the backward compatibility settings for 8.3.1.

Indentation of code displayed for Action elements in diagrams

In release 8.3.1, the property General::Graphics::TabIndentation was added to control how many spaces are used to represent tabs in the code that is displayed in Action elements on a diagram. To maintain the appearance of diagrams in pre-8.3.1 models, the property TabIndentation is set to 0 in the backward compatibility settings for 8.3.1.

Statecharts: popup menu for Join Sync Bars and Fork Sync Bars

In the popup menu for Join Sync Bars and Fork Sync Bars, the "flip" options are now called "rotate".

Drag-and-drop of model elements

Prior to release 8.3.1, there were a number of drag-and-drop features that required you to hold down the Ctrl button while dragging. For example, if you held down the Ctrl button while dragging a requirement to another model element, you were presented with the option of creating a dependency from that model element to the requirement.

Beginning in 8.3.1, these features are available through a regular drag-and-drop action. There is no need to hold down the Ctrl button. If you do not want this group of drag-and-drop operations to be available, change the value of the property Browser::Settings::EnhancedDragAndDrop to Disable.

To restore the pre-8.3.1 behavior, set the value of EnhancedDragAndDrop to With Ctrl.

Tag values in requirement diagrams

Prior to release 8.3.1, if requirements on requirement diagrams included a compartment for displaying tags, the tag value was not shown in the compartment when working in Label mode. This issue has been corrected in release 8.3.1. As a result, these diagrams may look different when opened with Rational Rhapsody 8.3.1

Animated sequence diagrams in models that use variation points

Prior to release 8.3.1, when variants were included in animated sequence diagrams, the relevant instance line reflected the name of the class that serves as the variation point, rather than the variant. In this release, this has been corrected so that the instance line reflects the name of the specific variant. As a result, these diagrams may look different when opened with Rational Rhapsody 8.3.1.

Label Mode enhancements

Prior to release 8.3.1, there were a number of situations where the labels for various types of elements were not displayed when you changed to Label Mode. These issues have been corrected in 8.3.1, so certain diagrams may look slightly different when viewed in Label Mode in Rational Rhapsody 8.3.1.


Code Generation
Code generated for Send Action elements

Prior to release 8.3.1, the code generated for Send Action elements did not automatically add an #include for the event specified in the Send Action element. Beginning in 8.3.1, an #include is automatically generated for the event. To preserve the previous code generation behavior for pre-8.3.1 models, the value of the property GenerateDependencyForEventInSendAction is set to False in the backward compatibility settings for C and C++.

File elements with statecharts (C code)

Prior to release 8.3.1, the C code that was generated for File elements with statecharts included Rhapsody annotations that erroneously included the name of the element twice. This issue was corrected in release 8.3.1. As a result, when you generate code for an existing model, you might see changes in these annotations, relative to the code that was generated with previous versions.

Inclusion of files in makefile when AddToMakefile set to False

Prior to release 8.3.1, there were certain situations where the property AddToMakefile was set to False for an element, but the generated makefile included a reference to the relevant file nonetheless. This issue was fixed in 8.3.1. As a result, when you generate code for an existing model, you might see changes in the generated makefile, relative to the makefile that was generated with previous versions.


Integration with configuration management tools
Integration with Rational Team Concert: UnitAutomaticChangeSetComment property

The property UnitAutomaticChangeSetComment, which is used to define a default comment for change sets that are automatically checked-in to Rational Team Concert after files are modified in Rhapsody, was changed to a volatile property in release 8.3.1. This means that the value of the property is no longer saved in the model, but rather in the user's Rhapsody workspace.

Configuration management (SCC mode) - new dialog when fetching files that were checked-out

In release 8.3.1, when using SCC mode for configuration management, if you try to fetch files that you have already checked-out, a new dialog is displayed to give you greater control in terms of how the operation should be performed.


Rhapsody API

In release 8.3.1, significant changes were made to the COM infrastructure underlying the Rhapsody API. These changes bring the COM infrastructure in line with the Microsoft best practices for COM usage.

These changes have limited implications for users of the Java version of the Rhapsody API, and more extensive implications for users who write applications that use the COM version of the Rhapsody API.

Implications for users of the Java version of the Rhapsody API
  • For applications that use the Rhapsody API to communicate with a running instance of Rhapsody 8.3.1, the library path and classpath must reference the 8.3.1 versions of rhapsody.dll and rhapsody.jar.
  • To allow you to connect to a specific instance of Rhapsody, the Java version of the Rhapsody API includes the method RhapsodyAppServer::getActiveRhapsodyApplicationIDList, and you can then select one of the values returned to use with the method getActiveRhapsodyApplicationByID. Beginning in 8.3.1, the prefix used for Rhapsody instances in the ROT (Running Object Table) is RHAPSODY2.
Implications for users of the COM version of the Rhapsody API
  • In release 8.3.1, the rhapsody.tlb file has been renamed to rhapsody2.tlb. For applications that will be using the COM API to communicate with a running instance of Rhapsody 8.3.1, you must change your import statements to point to rhapsody2.tlb instead of rhapsody.tlb, and then recompile the application.
    In addition, in VB, the call to get the Rhapsody application should now be GetObject(,”Rhapsody2.Application”). And in .NET projects, such as C#, the reference to the type library should point to Rhapsody2.
  • Applications that have been compiled using rhapsody2.tlb can communicate only with running instances of Rhapsody 8.3.1.
  • If you want to access a specific instance of Rhapsody in the ROT (Running Object Table), note that beginning in 8.3.1, the prefix used for Rhapsody instances in the ROT is RHAPSODY2.
  • Any new API methods added from 8.3.1 onward will belong to interfaces with a 2 appended to the interface name, for example, IRPDiagram2.CreateDiagramView. These methods are accessed by querying the relevant interface.

    For example, you would access the new methods in IRPDiagram2 by querying the IRPDiagram2 interface:

      
    // pDiagram is an instance of IRPDiagram
    IRPDiagram2* pIRPDiagram = NULL;
    hr = pDiagram->QueryInterface(IID_IRPDiagram2, (void**)&pIRPDiagram);
    if(SUCCEEDED(hr))
    	pIRPDiagram->CreateDiagramView(…
    	 

    Another example, in this case accessing a new method added to IRPModelElement2:

      
    // pClass is an instance of IRPClass
    IRPModelElement2* pIRPModelElement = NULL;
    hr = pClass->QueryInterface(IID_IRPModelElement2, (void**)&pIRPModelElement);
    if(SUCCEEDED(hr))
    	pIRPModelElement->getRmmUrl(…
    	 

Reporting
Rational Publishing Engine reports generated from Rational Rhapsody (.doc and .pdf output)

Changes were made to the way that Rational Publishing Engine handles links to elements that don't have names, in .doc and .pdf output. Previously, the report displayed empty strings for such elements. Now, you will see the text "Unnamed" instead. As a result, if you compare a report generated with release 8.3 of Rhapsody to a report on the same model generated with release 8.3.1, you may find differences.

Using existing Rational Publishing Engine templates

As a result of changes made to the REST schemas in Rational Rhapsody, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody version 8.3.1.
  3. If Rational Publishing Engine reports a missing query error, use the "Specify valid replacement" option to select the relevant term from the new schema. In the Specify Valid Replacement window, select the "Apply parent element changes to child elements" option so that all sub-elements are handled as well. Repeat this process until no more errors are reported.

Rational Rhapsody 8.3

Diagrams
Formatting properties on stereotypes and "new term" stereotypes

Ordinarily, if you have an element based on a "new term" stereotype and the element has an additional stereotype applied to it, the property values for the "new term" stereotype take precedence over the property values for the stereotype.

However, beginning in release 8.3, if a stereotype includes formatting properties, these property values take precedence over the values defined for these properties for the "new term" stereotype.


Code Generation
Explicit dependency from class to the package that contains it

Prior to release 8.3, Rhapsody did not generate code for explicit "usage" dependencies from a class to the package that contains it, in order to prevent circular dependencies. This has been changed in this release. So if you open a pre-8.3 model that contains such dependencies with version 8.3 and generate code, you may find differences in the code relative to the code generated for the model in previous versions (additional #include statements for these dependencies).


Frameworks
OXF framework for C - reactive objects - custom methods for handling unconsumed events and triggered operations

In release 8.3, changes were made in the methods RiCReactive_takeEvent and RiCReactive_takeTrigger in RiCReactive.c. These changes may result in a change of behavior for active reactive objects in your application if you used the properties ReactiveHandleEventNotConsumed and/or ReactiveHandleTONotConsumed to define custom methods for handling unconsumed events and unconsumed triggered operations.


Using existing Rational Publishing Engine templates

As a result of changes made to the REST schemas in Rational Rhapsody, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody version 8.3.
  3. If Rational Publishing Engine reports a missing query error, remove the problematic sections of your template. Repeat this process until no more errors are reported.
  4. Use the terms from the new schema to replace the items that you removed from your template.

Other Changes
Rhapsody repository files: move to XML format

Beginning in release 8.3, the files used to save Rhapsody models are in XML format. To help differentiate between the new repository files and the repository files used in previous releases, the letter x has been added to the various file extensions. For example, the main file for the project now uses the extension .rpyx instead of .rpy.

File fileTable.dat no longer used

The file fileTable.dat was used prior to this release to facilitate the "add .rpy to model" feature. Since this feature has been removed in release 8.3, the file is no longer used when saving a model. Note that if you use Rhapsody 8.3 to open a model that already contains this file, and then use the "save as" function to save the model as an older version, the file will remain.

Paths in hyperlinks to main file and makefile

Beginning in release 8.3, relative paths are used in the generated hyperlinks to the main file and makefile, rather than absolute paths.


Rational Rhapsody 8.4

Diagrams
Hierarchical diagram layout

For flowcharts, the Hierarchical layout has been changed so that by default the layout is top-to-bottom and not bottom-to-top as was the case prior to this release.


Code Generation
Event ID numbers

In this release, changes were made to correct possible problems of event ID conflicts. As a result, when you generate code for existing models in Rhapsody 8.4, there are situations where you may see changes in the ID numbers allocated, relative to the code generated in previous versions.

Template operations in non-template class

Prior to this release, the inline keyword was always generated for template operations in non-template classes, regardless of the value of the property CPP_CG::Operation::Inline. This issue was corrected in Rhapsody 8.4. As a result, when you generate code for existing models in Rhapsody 8.4, you may see code changes relative to the code generated in previous versions.

#Include statements for external files

Prior to this release, if the value of the property CG::File::IncludeScheme was set to LocalOnly for an external file, the generated #include statement still used a path relative to the configuration directory. This issue was corrected in Rhapsody 8.4. As a result, when you generate code for existing models in Rhapsody 8.4, there are situations where you may see changes in the #include statements for external elements, relative to the code generated in previous versions.

Code generated for wrapper of guarded operation

Prior to this release, if you set certain properties, such as PostDeclarationModifier, for an argument of a guarded operation, it had no effect on the code generated for the argument in the operation wrapper. This issue was corrected in Rhapsody 8.4. As a result, when you generate code for existing models in Rhapsody 8.4, you may see code changes relative to the code generated in previous versions.


Integration with configuration management tools
RTC actions for delete, move, and store in separate directory

In release 8.4, the following properties were removed for the integration with Rational Team Concert: DeleteActivation, MoveActivation, and StoreInSeparateDirectoryActivation. Now, when you delete or move a unit, or specify that a package should be saved in a separate directory, the action is carried out automatically in RTC as well.

RTC plugin folders

In this release, the names of the folders that contain the plugins for integration with Rational Team Concert were changed.

Previous names:

  • [Rhapsody installation folder]\RTCIntegration\32bit
  • [Rhapsody installation folder]\RTCIntegration\64bit

New names:

  • [Rhapsody installation folder]\RTCIntegration\RTCEclipseClient32bitPlugins
  • [Rhapsody installation folder]\RTCIntegration\RTCEclipseClient64bitPlugins

Rhapsody API
Creation of instance slots

A number of internal checks have been added for the creation of instance slots. As a result, when you call the method IRPInstanceSlot.setSlotProperty, exceptions may be thrown in situations where no exception was throws in earlier versions of Rhapsody.

IRPPort.Contract

Beginning with 8.3.1 iFix002, for applications that use the COM version of the Rhapsody API, if your code includes references to IRPPort.Contract, these must be replaced with references to IRPPort.PortContract.

IRPApplication.endUndoTransaction - throwing of exceptions

Beginning in release 8.4, the method IRPApplication.endUndoTransaction throws exceptions in additional situations, for example, if the user did not first call the method IRPApplication.startUndoTransaction.


Automotive
AUTOSAR constraints

A number of existing AUTOSAR model checks have been expanded to include additional constraints from the AUTOSAR standard. As a result, problems may be reported when you check existing AUTOSAR models in Rhapsody 8.4.

Using tags for initial value structures

Beginning in Rhapsody 8.4, for certain AUTOSAR elements that represent initial values, such as NumericalValueSpecification, you can add the information to the model using a tag, rather than the corresponding complex structure. When exported from the model, the tag content is converted to the relevant AUTOSAR XML content. This enhancement has been applied to the import of AUTOSAR XML as well. So when importing information into AUTOSAR models, there are cases where you may see that information for initial values of this type is stored in a tag rather than in the relevant structure that was used prior to Rhapsody 8.4.


Saving models in older Rhapsody formats

The property General::Model::SavePolicy was introduced in Rhapsody 8.3.1 to make it possible to specify that an older Rhapsody format should be used when you use the Save option to save changes to a model. The possible values for this property were CurrentVersion, Version-1, and Version-2.

In release 8.4, the values for older formats were changed from generic values to strings representing actual releases (8.3.1, 8.3, 8.2.1).

If you have models where you overrode the value of SavePolicy, the property will not have have the intended effect, and you will have to set the property to one of the new values provided if you want to use an older format.


Rhapsody Model Manager projects
Client-server compatibility

Version 6.0.6.1 of the Rhapsody Model Manager server requires the RMM client included in release 8.3.1 or release 8.4 of Rhapsody. If you were using Rhapsody 8.3 to work with RMM models, you will have to upgrade to a newer version of Rhapsody if you want to use version 6.0.6.1 of the RMM server.


Reporting
Menu items for generating reports

The Tools menu has been reorganized so that all report-related options are in the same area of the menu.

Using existing Rational Publishing Engine templates

As a result of changes made to the REST schemas in Rational Rhapsody, you might have to make some adjustments to any existing Rational Publishing Engine templates that you use for generating reports for models.

To update such templates:

  1. Open the template in Rational Publishing Engine Document Studio.
  2. Replace the schema with the new schema provided with Rational Rhapsody version 8.4.
  3. If Rational Publishing Engine reports a missing query error, use the "Specify valid replacement" option to select the relevant term from the new schema. In the Specify Valid Replacement window, select the "Apply parent element changes to child elements" option so that all sub-elements are handled as well. Repeat this process until no more errors are reported.

TestConductor
ReactiveConsumeEventOperationName property

When running tests on models in C, there are cases where TestConductor needs to temporarily override the the value of the property C_CG::Framework::ReactiveConsumeEventOperationName. In earlier releases, user-modifications to the property were disregarded. Beginning in this release, TestConductor takes such changes into account, and restores the value set by the user upon 'Clean TestPackage'.

For new text architectures, TestConductor checks for user-modifications to this property and keeps track of these changes so that the value can be restored upon 'Clean TestPackage'. However, if you are using existing test architectures in Rhapsody 8.4 (meaning TestArchitectures for which earlier releases of TestConductor already ignored the user-modified property), you will have to 'Clean TestPackage' and manually restore the value of the property before running tests for the first time on the model.


Related information

Upgrading Rational Rhapsody

Document information

More support for: Rational Rhapsody

Component: Installation

Software version: 7.5, 7.5.0.1, 7.5.1, 7.5.1.1, 7.5.2, 7.5.2.1, 7.5.3, 7.5.3.1, 7.5.3.2, 7.5.3.3, 7.6, 7.6.0.1, 7.6.1, 7.6.1.1, 7.6.1.2, 7.6.1.3, 7.6.1.4, 7.6.1.5, 8.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.0.5, 8.0.6, 8.1, 8.1.1, 8.1.2, 8.1.2.1, 8.1.3, 8.1.4, 8.1.5, 8.2, 8.2.1, 8.3, 8.3.1, 8.4

Operating system(s): Linux, Windows

Reference #: 7041015

Modified date: 23 April 2019