MappingRule modeling

A M2MRuleset is composed by multiple MappingRule elements. The MappingRules can be created, either via the Add New menus when right-click on a model element in the Rhapsody Browser, or via a MappingRulesTable.


Here are the instructions to complete a MappingRule:
  1. You can now start to design your MappingRules. It is recommended to create first a MappingRulesTable, either directly in the M2MRuleset, or in a M2MPackage of your choice.
  2. To proceed, right-click on the M2MRuleset or on the M2MPackage, and click on Add new | M2M | MappingRulesTable
  3. Once the MappingRulesTable is created, double-click on it, it will open an empty table with several columns like 'Source Stereotype' and the 'Target Stereotype'.
  4. Select in the scope of the TableView, the M2MPackage where you want to create your MappingRules.
  5. Click on “Add model element” on the right:

    MappingRuleElement


    “Add model element” create a new MappingRule element and display a new line in the MappingRulesTable:

    MappingRulesTable

  6. To design your MappingRule, you need first to indicate the source metaclass (and/or Stereotype) and the target metaclass (and/or Stereotype).
    The "Source" and "Target Metaclass" columns can be filled in by typing the name of a Rhapsody metaclass (e.g. Class, Package...). It will override the values of Tag MappingRule.sourceMetaclass and Tag MappingRule.targetMetaclass.
    The "Source" and "Target Stereotype" columns, can be filled by selecting a Stereotype in the model via a drop-down box. It will create a sourceStereotype Dependency and a targetStereotype Dependency

    Source and Target


    If the selected source Stereotype is applicable to at least one metaclass, the source metaclass column will not be used by the M2M Engine. It supports Stereotypes which are New-Term or not, and applicable to 0..* Rhapsody metaclasses.
    On target side, the target metaclass is mandatory. Either the metaclass is in the field "Applicable To"" of the selected target Stereotype, or in the column "Target Metaclass". Selecting a target Stereotype applicable to multiple metaclass is not allowed.

  7. By default, the drop-down boxes in Rhapsody can not display more than 500 elements. In the case there are more than 500 Stereotypes in the project, add the dedicated property in rhapsody.ini. Before editing rhapsody.ini, make sure Rhapsody is closed. Then open rhapsody.ini with a text file editor, go to the section [General], and add the line MaxComboBoxSize=5000. The value 0 means unlimited. 5000 is enough to manage AUTOSAR profiles which contains thousands of Stereotypes.
  8. Drop-down boxes in Rhapsody tables are not always comfortable, especially when there are thousands of elements in the list. In this case, it is recommended to use the "Add New" menu on the MappingRule element:
    - right-click in the browser on the MappingRule element, and then Add new | M2M | targetStereotype (targetStereotype Dependency)
    - a dialog window will show up, and you will be able to search your Stereotype by typing its name in the "Depends On" field:

    Stereotype Drop-down box

  9. Filling in the source or target metaclass by hand in the table can lead to typing mistakes. To avoid this, the metaclass can be selected in the drow-down box of the Tags MappingRule.sourceMetaclass and MappingRule.targetMetaclass. To proceed,
    - Open Features dialog of the MappingRule by right-clicking on the model element, and click on "Features..."
    - Click on "Tags" tab
    - Click on the Tag value field, and select the metaclass in the drop-down box:

    Metaclass Drop-down box

  10. Before implementing the MappingRules, it is possible to follow a "Specification phase". Given that a MappingRule Stereotype is applicable to the Requirement metaclass, Requirement ID and specification description can be completed. These fields can be displayed in the MappingRulesTable:

    MappingRule Specification

    These fields have no effects to the transformation itself.
  11. It is possible to enable or disable a MappingRule, by changing the value of the Tag MappingRule.activation via the drop-down box:

    MappingRule activation

  12. If it is needed to sort the execution of the MappingRule by the M2M Engine, the column “Priority” must be completed with a number. It will overrides the Tag MappingRule.priority. At runtime, the M2M Engine will order all the Mapping Rules and follow this order when executing the transformation rules:

    MappingRule priority

  13. The column "Inheritance", is used to enable the source Stereotype inheritance. Selecting the value 'activated' or 'desactivated', overrides the Tag MappingRule.inheritance.

    MappingRule inheritance

  14. The columns "Condition Function", "New context Function", and "Post-process Function" are used to extend the MappingRules with Rhapsody API requests. These extensions are described in the section JavaScript elements modeling.
    Those can be selected in the MappingRulesTable via the model element selector:

    select JSNewContextmodel element selector

  15. The column "Strict matching" can be used to require or not a strict matching of the elements with the MappingRule to allow the transformation:

    Strict matching
    When enabled (activated), the M2M Engine will check if there is a strict matching between an element and the MappingRule before transforming it.
    For example, if the MappingRule has the metaclass "Package" as source metaclass, without selected Stereotype, and if the option "Strict matching" is activated, "Package" elements witch a Stereotype applied will not be transformed. Only new-term "Package" will be transformed.