Attribute or Data Type Conversion
No edit summary
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Evolving from one data type to another is not automatically available in Mdriven due to the side effects of conversions.  
Evolving from one data type to another is not automatically available in MDriven due to the side effects of conversions.  


Mdriven provides different options for converting data types,
MDriven provides different options for converting data types:


# Using FormerNames property setting.
# Using the FormerNames property setting.
# Using a method.
# Using a method.
# Using derived attributes (Recommended).
# Using derived attributes.
# Using [[Documentation:OCLOperators safeCast|SafeCast]].
# Using [[Documentation:OCLOperators safeCast|SafeCast]].


=== Important to know before performing a conversion ===
=== Important to know before performing a conversion ===


* Data conversions have to be done meticulously as they can result in data loss. Backup your database before performing any conversions.
* Data conversions have to be done meticulously as they can result in data loss. <u>Backup your database</u> before performing any conversions.


=== Using FormerNames property setting ===
=== Using the FormerNames Property Setting ===
This solutions involves renaming the attribute.
This solution involves renaming the attribute.


1. Set new type on attribute.  
# Set new type on attribute.
# Rename the attribute to a new name and make sure to check Set Former Name checkbox.
#* When you rename an attribute, the previous attribute will be dropped or destroyed when the attribute with a new name is created. Checking the Set Former Name checkbox will add the previous attribute name in the Database property setting FormerNames.
# Upload model. The MDriven evolver will try to transform and transfer the transformed data from the old attribute to the new attribute.
# After checking and making sure the data has been successfully transformed, repeat step 2 and step 3, renaming the attribute to its previous name.


2. Rename the attribute to a new name and make sure to check Set Former Name checkbox
<br />Example showing conversion of a '''Price''' attribute from '''Integer''' to '''Decimal'''.   [[File:Using-former-names-property.png|alt=Using FormerNames Property|none|thumb|785x785px]]
 
   When you rename an attribute, the previous attribute will be dropped or destroyed and attribute with new name is created.
 
   Checking the Set Former Name checkbox will add the previous attribute name in the Database property setting FormerNames.
 
3. Upload model.
 
MDriven evolver will try to transform and transfer the transformed data from the old attribute to the new attribute.
 
4. After checking and making sure the data has been successfully transformed, repeat step 2 and step 3 renaming the attribute to its previous name.  
[[File:Using-former-names-property.png|alt=Using FormerNames Property|none|thumb|785x785px]]
[[File:rename-attribute-window.png|alt=Rename Attribute Window Settings|none|thumb|789x789px]]  
[[File:rename-attribute-window.png|alt=Rename Attribute Window Settings|none|thumb|789x789px]]  


=== Using a Method ===
=== Using a Method ===
Using a method can be more useful in scenarios where you want to be more explicit about your conversion or want to combine data of two attributes into one.  
Using a method can be more useful in scenarios where you want to be more explicit about your conversion or want to combine the data of two attributes into one.
 
# Create new attribute and set new type on attribute
# Add a method to the class, go to method body and use [[Documentation:EAL – ExtendedActionLanguage.|EAL expressions]] for your transformation for the new attribute.
# While the Turnkey and Server applications are running, open the [[Documentation:Ocl debugger|debugger]].
# Run method in Action mode for the instances you would like to perform transformations on.
# Don't forget to save after executing the expression.
# The new attribute with the new type can now be used within the ViewModels. Or, the current attribute can be renamed to something else using method 1 of the FormerNames property setting and the new attribute with preferred type can use the name available in the ViewModels. This eliminates the need to make changes to ViewModels.


1. Set new type on attribute
For example - below, after preforming the transformations, set the '''Price''' attribute to maybe '''OldPrice''' and set new attribute '''xPrice''' to '''Price'''.


2. Add a method to the class go to method body, use [[Documentation:EAL – ExtendedActionLanguage.|EAL expressions]] for your transformation.
<br />Example showing how to convert a '''Price''' attribute from '''Integer''' to '''Decimal''' type and increment price by 1000


3. While the TurnKey and Server applications are running, open debugger.
[[File:using-a-method-for-data-conversion.png|alt=Using a Method for Data Conversion|none|thumb|700x700px]]
[[File:using-ocl-debugger-to-run-method-transformation.png|alt=Using OCL debugger to run method transformations|none|thumb|734x734px]]


4. Run method in Action mode for the instances you would like to perform transformations on.
=== Using Derived Attributes ===
Using [[Training:Derived attributes & associations|derived attributes]] ensures there are no side effects on your data. With this option, current data is retained and you can try other data conversions and transformations without affecting the data. Derived attributes provide a simpler way to test and use new data types and transformations. They are easy to create and remove.  


5. Don't forget to save after executing the expression.
You can use the new data attributes with the old data type attributes, incase you change your mind. Just delete the new derived attribute and continue using your old data type attribute.


=== Using Derived Attributes (Recommended) ===
* Deleting a derived attribute will not have any effect on your data in the database.
Using derived attributes ensures there are no side effects on your data. With this option current data is retained and you can try other data conversions and transformations without affecting the data.  
* Derived attributes ensure that current data is retained in  its state of truthfulness and the new type is also available.
* Derived attributes can also be used for complex transformations.


You can use the new data attributes with the old data type attributes, incase you change your mind, just delete the new derived attribute and continue using your old data type attribute.
<br />Example showing how to convert '''Price''' attribute from '''Integer''' to '''Decimal''' type and increment price by 1000[[File:using-derived-attributes.png|alt=Using Derived Attributes|none|thumb|744x744px]]


Deleting a derived attribute will not have any effect on your data in the database.
=== Summary ===


Use derived attributes to also test out other transformations or combination of attributes with out side effects.
* Use derived attributes to test new data types or new attributes and tranformations.
* Use methods for more explicit conversions like combining the data of two attributes or other computations.
* Use the FormerNames property setting after testing to make the new attributes and types changes permanent.


Derived attributes ensures that current data is retained in  its state of truthfulness and new type is also available
==== See also: ====


Derived attributes can also be used for complex transformations.
* [[Training:Derived attributes & associations|Derived attributes & associations]]
* [[Documentation:EAL – ExtendedActionLanguage.|EAL – ExtendedActionLanguage.]]
* [[Documentation:Learn OCL|Learn OCL]]
* [[Documentation:Ocl debugger|Ocl debugger]]

Latest revision as of 05:37, 26 July 2024

Evolving from one data type to another is not automatically available in MDriven due to the side effects of conversions.

MDriven provides different options for converting data types:

  1. Using the FormerNames property setting.
  2. Using a method.
  3. Using derived attributes.
  4. Using SafeCast.

Important to know before performing a conversion

  • Data conversions have to be done meticulously as they can result in data loss. Backup your database before performing any conversions.

Using the FormerNames Property Setting

This solution involves renaming the attribute.

  1. Set new type on attribute.
  2. Rename the attribute to a new name and make sure to check Set Former Name checkbox.
    • When you rename an attribute, the previous attribute will be dropped or destroyed when the attribute with a new name is created. Checking the Set Former Name checkbox will add the previous attribute name in the Database property setting FormerNames.
  3. Upload model. The MDriven evolver will try to transform and transfer the transformed data from the old attribute to the new attribute.
  4. After checking and making sure the data has been successfully transformed, repeat step 2 and step 3, renaming the attribute to its previous name.


Example showing conversion of a Price attribute from Integer to Decimal.

Using FormerNames Property
Rename Attribute Window Settings

Using a Method

Using a method can be more useful in scenarios where you want to be more explicit about your conversion or want to combine the data of two attributes into one.

  1. Create new attribute and set new type on attribute
  2. Add a method to the class, go to method body and use EAL expressions for your transformation for the new attribute.
  3. While the Turnkey and Server applications are running, open the debugger.
  4. Run method in Action mode for the instances you would like to perform transformations on.
  5. Don't forget to save after executing the expression.
  6. The new attribute with the new type can now be used within the ViewModels. Or, the current attribute can be renamed to something else using method 1 of the FormerNames property setting and the new attribute with preferred type can use the name available in the ViewModels. This eliminates the need to make changes to ViewModels.

For example - below, after preforming the transformations, set the Price attribute to maybe OldPrice and set new attribute xPrice to Price.


Example showing how to convert a Price attribute from Integer to Decimal type and increment price by 1000

Using a Method for Data Conversion
Using OCL debugger to run method transformations

Using Derived Attributes

Using derived attributes ensures there are no side effects on your data. With this option, current data is retained and you can try other data conversions and transformations without affecting the data. Derived attributes provide a simpler way to test and use new data types and transformations. They are easy to create and remove.

You can use the new data attributes with the old data type attributes, incase you change your mind. Just delete the new derived attribute and continue using your old data type attribute.

  • Deleting a derived attribute will not have any effect on your data in the database.
  • Derived attributes ensure that current data is retained in its state of truthfulness and the new type is also available.
  • Derived attributes can also be used for complex transformations.


Example showing how to convert Price attribute from Integer to Decimal type and increment price by 1000

Using Derived Attributes

Summary

  • Use derived attributes to test new data types or new attributes and tranformations.
  • Use methods for more explicit conversions like combining the data of two attributes or other computations.
  • Use the FormerNames property setting after testing to make the new attributes and types changes permanent.

See also:

This page was edited 52 days ago on 07/26/2024. What links here