ImportMappingRule modeling

A M2MImportRuleset is composed by multiple ImportMappingRule elements. The ImportMappingRules can be created, either via the Add New menus when right-click on a model element in the Rhapsody Browser, or via a ImportMappingRulesTable.


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

    MappingRuleElement


    "Add model element" create a new ImportMappingRule element and display a new line in the ImportMappingRulesTable:

    ImportMappingRulesTable


  6. To design your ImportMappingRule, you need first to indicate the Source EClass and the Target metaclass (and/or Stereotype).
    The Source Owner EClass and Source Owner EFeature can be optionally used to add conditions to execute the rule:
    - if the Source Owner EClass is defined, then the element will be imported only if it is owned by a source owner element of type "source owner eClass" defined by this dependency.
    - if the Source Owner EFeature is defined, then the element will be imported only if it has a containing feature with the same name as the "source owner eFeature" defined by this dependency.
    The "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 AbstractRhpTargetMappingRule.targetMetaclass.
    The "Source EClass" and "Target Stereotype" columns, can be filled by selecting a Stereotype or an EClass model element in the model via a drop-down box. It will create a eClassRef Dependency and a targetStereotype Dependency

    Source and Target


    The selected target Stereotype must be applicable to only one metaclass to avoid ambiguity, otherwise, the M2M Engine will not be able to create the target element. If the Stereotype is not applicable to one metaclass, the Target metaclass column must be filled in.


  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 ImportMappingRule element:
    - right-click in the browser on the ImportMappingRule element, and then Add new | M2MIE | 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 Tag AbstractRhpTargetMappingRule.targetMetaclass. To proceed,
    - Open Features dialog of the ImportMappingRule 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 ImportMappingRules, it is possible to follow a "Specification phase". Given that a ImportMappingRule Stereotype is applicable to the Requirement metaclass, Requirement ID and specification description can be completed. These fields can be displayed in the ImportMappingRulesTable:

    ImportMappingRule Specification

    These fields have no effects to the transformation itself.

  11. It is possible to enable or disable a ImportMappingRule, by changing the value of the Tag AbstractMappingRule.activation via the drop-down box:

    ImportMappingRule activation

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

    ImportMappingRule priority

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

    ImportMappingRule inheritance

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

    select JSNewContextmodel element selector