Skip to content

Data Dictionary Plugin

lfronc edited this page Nov 26, 2014 · 19 revisions

The Data Dictionary

The Data Dictionary contain information from the SRS that should be shared between all created modeling artifacts. A way to make such shared data available is to create a SysML package which contains all the information of the Data Dictionary. A SysML Model could import such a package and then reuse all the contents of the Data Dictionary.

This approach is already used in Eclipse to make primitive types of Java, Ecore, SysML, and XML available.

Pros

  • Use of standard UML mechanisms makes it easier to use the artifacts with other tools e.g. other UML Modeler
  • Checks can be easily written to ensure for example that only data types from the Data Dictionary are used
  • Editor for the Data Dictionary already exists (Papyrus) and new entries can easily be added (Project members have already experience with Papyrus modelling)

Cons

  • Probably not every aspect can be described with plain SysML, however a profile or comments could be used, which adds missing information (e.g. value range)

Data dictionary model and general flow

The initial model is automatically generated from Bitwalker version of subsets 26-7, 26-8 of the specification. The transformation is provide as standalone plugins. This is a one-shot transformation, once the model is used in production replacing it may result in many manual rewiring in user models. Regenerating this model often is bad practice.

Moreover, user should add their own types to the data dictionary we recommend to use a distinct package in case regeneration has to be performed. This way we can easily extract user defined types from generated ones.

For more detailed workflow refer to this page

The Plugin (Not used)

This plugin contains the data dictionary plugin which contains data stuctures, variables, messages, etc. from the ETCS System Requirements Specificaiton (SRS). The plugin registers a SysML model, which contains the information from the SRS. After import, the SysML model is available as a SysML library.

The plugin consists of the following parts:

org.openetcs.datadictionary
org.openetcs.datadictionary.feature

Usage (Not used)

To use the plugin, right click on the SysML model from the Papyrus model explorer and select Import > Import Registered Package. The select openETCSDataDictionary.

Transformation

There are standalone plugins that generate a Papyrus project containing the data dictionary SysML model file from the Bitwalker XML files. The tools are

  • org.openetcs.datadictionary.transform which implements the transformation;
  • org.openetcs.datadictionary.transform.ui which provides a UI to select models and run the transformation.

These plugins can be found in the standalone folder of this repository. To generate the Project add the plugins to org.openetcs.datadictionary.feature, launch the OpenETCS tool, then:

  1. use the tool bar button or data dictionary menu:

  2. select subsets to transform:

  3. inspect produced model:

Links

Transformation feedback: inconsistencies

The following warnings were generated during the transformation of subset 26-7.

Missing units

[W] L_MESSAGE min val has no unit ( 0 )
[W] L_MESSAGE max val has no unit ( 1023 )
[W] L_PACKET min val has no unit ( 0 )
[W] L_PACKET max val has no unit ( 8191 )
[W] L_TEXT min val has no unit ( 0 )
[W] L_TEXT max val has no unit ( 255 )
[W] M_NVAVADH min val has no unit ( 0 )
[W] M_NVAVADH max val has no unit ( 1.00 )
[W] M_NVKRINT min val has no unit ( 0 )
[W] M_NVKRINT max val has no unit ( 1.55 )
[W] M_NVKTINT min val has no unit ( 0 )
[W] M_NVKTINT max val has no unit ( 1.55 )
[W] M_NVKVINT min val has no unit ( 0 )
[W] M_NVKVINT max val has no unit ( 2.54 )
[W] N_AXLE min val has no unit ( 0 )
[W] N_AXLE max val has no unit ( 1022 )
[W] N_ITER min val has no unit ( 0 )
[W] N_ITER max val has no unit ( 31 )
[W] NID_BG min val has no unit ( 0 )
[W] NID_BG max val has no unit ( 16382 )
[W] NID_C min val has no unit ( 0 )
[W] NID_C max val has no unit ( 1023 )
[W] NID_CTRACTION min val has no unit ( 0 )
[W] NID_CTRACTION max val has no unit ( 1023 )
[W] NID_LOOP min val has no unit ( 0 )
[W] NID_LOOP max val has no unit ( 16383 )
[W] NID_MESSAGE min val has no unit ( 0 )
[W] NID_MESSAGE max val has no unit ( 255 )
[W] NID_PACKET min val has no unit ( 0 )
[W] NID_PACKET max val has no unit ( 255 )
[W] NID_RBC min val has no unit ( 0 )
[W] NID_RBC max val has no unit ( 16382 )
[W] NID_RIU min val has no unit ( 0 )
[W] NID_RIU max val has no unit ( 16383 )
[W] NID_TEXTMESSAGE min val has no unit ( 0 )
[W] NID_TEXTMESSAGE max val has no unit ( 255 )
[W] NID_VBCMK min val has no unit ( 0 )
[W] NID_VBCMK max val has no unit ( 63 )
[W] NID_XUSER min val has no unit ( 0 )
[W] NID_XUSER max val has no unit ( 511 )
[W] T_ENDTIMER min val has no unit ( 0 )
[W] T_ENDTIMER max val has no unit ( 1022 )
[W] T_LOA min val has no unit ( 0 )
[W] T_LOA max val has no unit ( 1022 )
[W] T_MAR min val has no unit ( 0 )
[W] T_MAR max val has no unit ( 254 )
[W] T_SECTIONTIMER min val has no unit ( 0 )
[W] T_SECTIONTIMER max val has no unit ( 1022 )
[W] T_TIMEOUTRQST min val has no unit ( 0 )
[W] T_TIMEOUTRQST max val has no unit ( 1022 )

Harmless inconsistencies resolved by the tool

[W] inconsistency in units for variable D_ADHESION casting 0 form cm to km
[W] inconsistency in units for variable D_AXLELOAD casting 0 form m to km
[W] inconsistency in units for variable D_CURRENT casting 0 form cm to km
[W] inconsistency in units for variable D_CYCLOC casting 0 form cm to km
[W] inconsistency in units for variable D_DP casting 0 form cm to km
[W] inconsistency in units for variable D_EMERGENCYSTOP casting 0 form cm to km
[W] inconsistency in units for variable D_ENDTIMERSTARTLOC casting 0 form cm to km
[W] inconsistency in units for variable D_GRADIENT casting 0 form cm to km
[W] inconsistency in units for variable D_INFILL casting 0 form cm to km
[W] inconsistency in units for variable D_LEVELTR casting 0 form cm to km
[W] inconsistency in units for variable D_LINK casting 0 form cm to km
[W] inconsistency in units for variable D_LOC casting 0 form cm to km
[W] inconsistency in units for variable D_LOOP casting 0 form cm to km
[W] inconsistency in units for variable D_LRBG casting 0 form cm to km
[W] inconsistency in units for variable D_LX casting 0 form cm to km
[W] inconsistency in units for variable D_MAMODE casting 0 form cm to km
[W] inconsistency in units for variable D_NVOVTRP casting 0 form cm to km
[W] inconsistency in units for variable D_NVPOTRP casting 0 form cm to km
[W] inconsistency in units for variable D_NVROLL casting 0 form cm to km
[W] inconsistency in units for variable D_NVSTFF casting 0 form cm to km
[W] inconsistency in units for variable D_OL casting 0 form cm to km
[W] inconsistency in units for variable D_PBD casting 0 form cm to km
[W] inconsistency in units for variable D_PBDSR casting 0 form cm to km
[W] inconsistency in units for variable D_POSOFF casting 0 form m to km
[W] inconsistency in units for variable D_RBCTR casting 0 form cm to km
[W] inconsistency in units for variable D_REVERSE casting 0 form cm to km
[W] inconsistency in units for variable D_SECTIONTIMERSTOPLOC casting 0 form cm to km
[W] inconsistency in units for variable D_SR casting 0 form cm to km
[W] inconsistency in units for variable D_STARTOL casting 0 form cm to km
[W] inconsistency in units for variable D_STARTREVERSE casting 0 form cm to km
[W] inconsistency in units for variable D_STATIC casting 0 form cm to km
[W] inconsistency in units for variable D_SUITABILITY casting 0 form m to km
[W] inconsistency in units for variable D_TAFDISPLAY casting 0 form cm to km
[W] inconsistency in units for variable D_TEXTDISPLAY casting 0 form cm to km
[W] inconsistency in units for variable D_TRACKINIT casting 0 form m to km
[W] inconsistency in units for variable D_TRACKCOND casting 0 form m to km
[W] inconsistency in units for variable D_TRACTION casting 0 form m to km
[W] inconsistency in units for variable D_TSR casting 0 form cm to km
[W] inconsistency in units for variable D_VALIDNV casting 0 form cm to km
[W] inconsistency in units for variable G_A casting 0 form null to per mil
[W] inconsistency in units for variable G_PBDSR casting 0 form null to per mil
[W] inconsistency in units for variable G_TSR casting 0 form null to per mil
[W] inconsistency in units for variable L_ACKLEVELTR casting 0 form cm to km
[W] inconsistency in units for variable L_ACKMAMODE casting 0 form cm to km
[W] inconsistency in units for variable L_ADHESION casting 0 form cm to km
[W] inconsistency in units for variable L_AXLELOAD casting 0 form m to km
[W] inconsistency in units for variable L_DOUBTOVER casting 0 form cm to km
[W] inconsistency in units for variable L_DOUBTUNDER casting 0 form cm to km
[W] inconsistency in units for variable L_ENDSECTION casting 0 form cm to km
[W] inconsistency in units for variable L_LOOP casting 0 form cm to km
[W] inconsistency in units for variable L_LX casting 0 form cm to km
[W] inconsistency in units for variable L_MAMODE casting 0 form m to km
[W] inconsistency in units for variable L_PBDSR casting 0 form cm to km
[W] inconsistency in units for variable L_REVERSEAREA casting 0 form cm to km
[W] inconsistency in units for variable L_SECTION casting 0 form cm to km
[W] inconsistency in units for variable L_STOPLX casting 0 form cm to km
[W] inconsistency in units for variable L_TAFDISPLAY casting 0 form cm to km
[W] inconsistency in units for variable L_TEXTDISPLAY casting 0 form cm to km
[W] inconsistency in units for variable L_TRACKCOND casting 0 form m to km
[W] inconsistency in units for variable L_TSR casting 0 form cm to km
[W] inconsistency in units for variable T_OL casting 0 form null to s
[W] inconsistency in units for variable T_TEXTDISPLAY casting 0 form null to s
[W] inconsistency in units for variable T_TRAIN casting 0 form null to s
[W] inconsistency in units for variable T_VBC casting 0 form null to days
[W] inconsistency in units for variable V_MAXTRAIN casting 0 form null to km/h
[W] inconsistency in units for variable V_TRAIN casting 0 form null to km/h
Clone this wiki locally