Jazz Library Guidelines for working with multi-stream projects with Rhapsody Model Manager
Author name

Guidelines for working with multi-stream projects with Rhapsody Model Manager

Introduction

Rhapsody Model Manager allows users to integrate and collaborate with OSLC Life Cycle Projects. Rhapsody implements this by adding additional data (RMM index data) to Rhapsody repository files.

When you enable Rhapsody Model Manager for a project, Rhapsody updates all the repository files to include RMM index data. In addition, within the lifecycle of RMM development, Rhapsody will enrich the RMM index data by adding more information for the RMM Server to support additional RMM use cases. For example: 69001: [RMM] Add more modeling information to Reportable REST APIs (stereotypes, tags, dependencies) [7.0].

In most cases, the addition of RMM index data to the repository files is transparent to the user, occurring when model information is updated. We have identified three situations where this is not the case:

  1. User enables Rhapsody Model Manager for a Rhapsody project: all repository files are updated to include RMM index data.
  2. User upgrades to a newer version of Rhapsody: RMM index data may be updated to include additional data. All affected repository files are updated.
  3. User enables Rhapsody Model Manager for a referenced package or profile: relevant references in the RMM index data are updated.

As a result, in these situations, a new change set will be created for many repository files. These change sets represent updates to the RMM index data, without changes to the Rhapsody modeling information. This single change set will cause a dependency between all Rhapsody repository files. If you want to propagate changes from one stream to another, you will have to accept all change sets from the history graph (including the changes which preceded the updates to the index data), or manually resolve the gaps caused by the index data change set.

Prerequisites

User should be familiar with the Engineering Workflow Management Eclipse Client, and its terminology. See more at:

Proposed Solution

To resolve the dependencies between all Rhapsody repository files,you should create individual change sets for each file that contains updates to the RMM index data. Assuming you want to enable Rhapsody Model Manager in all the streams, this will allow you to choose which change sets to propagate between streams, without creating gaps.

Steps to carry out

We’ll use the example of enabling Rhapsody Model Manager for a project, for multiple streams. The steps listed here are also applicable for the other scenarios.

Use case:

  • User has a Rhapsody project called “MyProject” in three variations in stream A, stream B and stream C.
  • User wants to enable Rhapsody Model Manager for all three streams.

Steps:

  1. Create a clean repository workspace “A” for stream A.
  2. Accept/Deliver/Discard all incoming/outgoing change sets to align with stream A.
  3. Open “MyProject” in Rhapsody, version 9.0.
  4. At the project property, set the value of the property ConfigurationManagement::EngineeringWorkflowManagement::UnitAutomaticChangeSetComment to a specific prefix and the GUID key to create a unique identifier for each file. For example: ?<IsConditionalProperty>Rhapsody RMM Index Data updates: $<ProjectName> $<GUID>
  5. In the model browser, open the pop-up menu for the project, and select Enable Rhapsody Model Manager.
  6. Save the model, and Check-In the changes.
  7. In the EWM Eclipse Client, go to the Pending Changes view, and verify that each file was created under its own change set.
  8. At the project level, restore the value of the property ConfigurationManagement::EngineeringWorkflowManagement::UnitAutomaticChangeSetComment to its default value:<IsConditionalProperty>Rhapsody Files Check-In: $<ProjectName>
  9. Save the model, and Check-In the changes.
  10. Deliver the changes.
  11. Create a clean repository workspace “B” for stream B.
  12. Accept/Deliver/Discard all incoming/outgoing change sets to align with stream B.
  13. Change the repository workspace target of workspace B to stream A.
  14. Accept all of the incoming change sets that have the prefix that was used with Prefix used in step 4 and that do not require the inclusion of additional change sets without the prefix.
  15. If there are outgoing change sets in Stream B, auto-merge them with the accepted change sets, specifying a single change set for each file.
  16. Change the repository workspace target of workspace B back to stream B.
  17. Open “MyProject” in Rhapsody, version 9.0.
  18. If Rhapsody asks to update the RMM index data, select Yes to update.
  19. If Rhapsody Model Manager is not enabled for the project (due to the .rpyx file not being accepted in step 14), enable Rhapsody Model Manager for the project.
  20. Repeat step 4.
  21. Repeat steps 6-10.
  22. Create a clean repository workspace “C” for stream C.
  23. Accept/Deliver/Discard all incoming/outgoing change sets to align with stream C.
  24. Change the repository workspace target of workspace C to stream A or stream B, depending on which is more similar.
  25. Repeat steps 14-21.

For more information

70570: Analyze and Define introduction of RMM for multi-streams projects

About the author

David Hirsch leads Rhapsody Model Manager development at Persistent Ltd.
He can be contacted at david_hirsch@persistent.com

Wed, 11 Dec 2019