|
|
Find Unresolved |
This helper provides a more sophisticated way to find unresolved elements.
|
Applicable To |
Project,
Package |
|
Menu
Entry |
Power
Pack Navigation Tools Find Unresolved |
|
Demonstration |
There are many reasons for an element to become unresolved. The most common is some form of ‘Add to Model’ operation whereby an element such as a package is added to a model from another model, but there are elements under it that use other elements in that other model and those are not added to this one. Rhapsody’s search function has a special filter to show only unresolved elements. Double-clicking an element in that list will navigate to it, however that navigation can only navigate to the first available ‘parent’ in the model browser, leaving you with no idea what the problem is. This helper goes further by checking known scenarios and presenting the reasons for the unresolved elements.
When launched, the helper first executes a query using Rhapsody’s own search/query API. The criterion for the query is “Only Unresolved Elements”. The scope of the query is taken from the package / project from which the helper was launched. The results of that query are displayed in a table.

Some elements are simply unresolved, for example:
![]()
Others are not so easy to track down in Rhapsody natively. For example, if a table layout uses a tag and that tag gets deleted in a way that is not detectable to the table layout then Rhapsody reports the Tag as unresolved if an Unresolved Elements query is run in its own UI. Navigating to it from the query result navigates to the model element that used to own the Tag. There is no way in Rhapsody to find the table layout (or even know that the table layout is the issue).
This helper instead attempts to find the possible reason for the unresolved element based on known scenarios and displays it in the Reference column (which is also navigable) allowing the user to find the issue in a way that is not possible directly in Rhapsody. Note that there may be multiple reports for an element (for example if a tag is unresolved and it is used in multiple tables, Rhapsody’s’ query reports it once – but this helper reports each table that uses that tag)
Clicking a row in the table will navigate to the referenced model element (if there is one) or the unresolved element (as reported by Rhapsody). A context menu is available to navigate to either as well as an option to report the full path of the unresolved element

As mentioned above, a very common scenario is referencing a tag in a table layout. If the tag subsequently gets deleted or moved, then the tag is detected as unresolved. Another example is a tag has been removed from a Stereotype.
Model elements may have been the target (or source if the dependency is at package level) of a model element that is no longer in the model.
These model elements may reference events that are no longer in the model.
Ports may reference interfaces/interface blocks and if those become unavailable, Rhapsody reports the interface/interface block as unresolved, but the problem is that a diagram shows a port which uses the interface
If a model element uses a diagram as its Main Diagram and that diagram becomes unavailable, Rhapsody reports the diagram as unresolved, not the model element that references it. Unfortunately, even though Rhapsody displays this in the UI, there is no way to detect it even through the API. This helper simply reports this a “Referenced By”

Some elements are reported as unresolved because the element that owned them is no longer in the model (this can be recursive so A owned B owned C and A is no longer in the model). Rhapsody’s own navigation highlights the owner that is still in the model (which is often the project itself if a root level element has been deleted). This helper reports the full path to these elements. An easy fix for such cases is to recreate the ‘root’ element and then delete it – causing Rhapsody to detect that it has been removed along with all of its children.
![]()
If a model element is referenced in a property (typically this is in the owner) and that model element becomes unavailable, Rhapsody reports the model element as unresolved, not the owner which has the property:

On the options menu you will find a menu entry to Delete All Unresolved. If activated, a confirmation dialog is presented and if you click Yes then the helper calls an internal Rhapsody function to delete all unresolved elements recursively, starting at the element from which the helper was launched. This internal function provides no feedback as to which elements have been deleted or whether the operation was successful or not. This menu is provided for convenience as you can always run an Unresolved Elements query in Rhapsody and manually delete the unresolved elements from the query results window.
The operation is placed into the Rhapsody Undo buffer so it should be possible to undo it.
The helper only processes known scenarios. It also only reports the first instance of a known scenario, so if an element is used multiple times for example only the first usage is reported. The helper is not intended to be exhaustive but instead to provide more information that Rhapsody does on tracking down unresolved elements.