Bug 493353 - Representation persistence improvements
Summary: Representation persistence improvements
Status: CLOSED FIXED
Alias: None
Product: Sirius
Classification: Modeling
Component: Core (show other bugs)
Version: 3.1.0   Edit
Hardware: PC Mac OS X
: P3 enhancement (vote)
Target Milestone: 5.0.0   Edit
Assignee: Maxime Porhel CLA
QA Contact: Laurent Fasani CLA
URL:
Whiteboard:
Keywords: noteworthy, triaged
Depends on: 491604 493367 494766
Blocks: 516669
  Show dependency tree
 
Reported: 2016-05-10 10:50 EDT by Maxime Porhel CLA
Modified: 2017-06-29 03:31 EDT (History)
4 users (show)

See Also:


Attachments
Aird - current state (534.13 KB, image/png)
2016-05-10 10:53 EDT, Maxime Porhel CLA
no flags Details
Aird - current state (144.50 KB, image/png)
2016-05-10 11:12 EDT, Maxime Porhel CLA
no flags Details
Aird - PoC (114.56 KB, image/png)
2016-05-10 11:26 EDT, Maxime Porhel CLA
no flags Details
Aird - phase 1 (169.55 KB, image/png)
2016-05-10 11:40 EDT, Maxime Porhel CLA
no flags Details
Aird - phase 2 (208.33 KB, image/png)
2016-05-10 11:40 EDT, Maxime Porhel CLA
no flags Details
Aird - phase 2 experimental mode (112.32 KB, image/png)
2016-05-10 11:41 EDT, Maxime Porhel CLA
no flags Details
Aird - phase 3 (121.51 KB, image/png)
2016-05-10 11:43 EDT, Maxime Porhel CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Maxime Porhel CLA 2016-05-10 10:50:53 EDT
.aird files currently contain both session/model information and representation information.
Those different aspects are completely mixed in the files.
Opening a Sirius session will load all representation information. 
And there is no current way to simply and directly extract information like number/name/description of representations or targeted elements without parsing the whole file.

The current targeted solution is to separate the persistence for session/model and representation data with one file/resource per representation and one proxy/descriptor for each of them.
The goal of this evolution is to be able to load the representation data as late as possible (ie editor opening, representation copy, export, ..), so the descriptor will have to be aware of:
 . the name
 . the description
 . the target (semantic elements)
 . the representation path/uri
    . we must avoid to let EMF load the representation data during resolveAll 
    . see work done in Bug 456351 in which models links have been replaced by semantic resources datatype on DAnalysis.
 . we will also analyse the need of a mechanism to detect a desynchronization or compare the diagrams (modification time stamp for example)

To achieve this target, we have to define several phases, in each of them Sirius must continue to behave in a consistent way.

"repfile" will be used to reference the new kind of file which will contain the representations until the file extension is chosen.
Comment 1 Maxime Porhel CLA 2016-05-10 10:53:59 EDT
Created attachment 261602 [details]
Aird - current state
Comment 2 Maxime Porhel CLA 2016-05-10 11:12:49 EDT
Created attachment 261604 [details]
Aird - current state
Comment 3 Maxime Porhel CLA 2016-05-10 11:22:40 EDT
Proof of Concept: 

It is currently possible to dispatch representations in several aird. When the user controls its semantic model, the semantic element is still contained by the previous container but it is serialized in its own resource but Sirius creates a new .aird file with a new plain DAnalysis which is referenced from the main DAnalysis of the current session. The sub aird could allow to open a plain/isolated session on the fragment (legacy mode), but the modeling project prevents the user to open it as only one session is allowed in a
ModelingProject and Sirius is aware of the DAnalysis structure. In Capella, those sub aird are created with the airdfragment file extension.

We could have tested the automatic creation of such sub aird using a specific DAnalysis selector but this would be insufficient as this kind of split does not allow to differ the load of the graphical data as all the analyses are loaded to detect the full set of semantic resources, controlled resources, activated viewpoints.

A POC has been implemented to test the ability of Sirius to deal with fragmented representations. It mainly consisted in the auto-control of all created representations and the implementation of the corresponding migration action to split every aird file from the integration test data. The POC result allowed to identify several impacts or known issues, but also to identify several phases leading to the final goal of the current spec.
Comment 4 Maxime Porhel CLA 2016-05-10 11:26:30 EDT
Created attachment 261606 [details]
Aird - PoC
Comment 5 Maxime Porhel CLA 2016-05-10 11:40:01 EDT
Created attachment 261607 [details]
Aird - phase 1
Comment 6 Maxime Porhel CLA 2016-05-10 11:40:25 EDT
Created attachment 261608 [details]
Aird - phase 2
Comment 7 Maxime Porhel CLA 2016-05-10 11:41:30 EDT
Created attachment 261609 [details]
Aird - phase 2 experimental mode
Comment 8 Maxime Porhel CLA 2016-05-10 11:43:37 EDT
Created attachment 261610 [details]
Aird - phase 3
Comment 9 Maxime Porhel CLA 2016-05-10 11:50:42 EDT
I have attached several images showing the step we currently have in mind for this evolution. 
I will explain them in separated bugzillas.
Comment 10 Maxime Porhel CLA 2016-05-10 15:19:03 EDT
During the analysis phase, several draft commit have been pushed to gerrit.
Some of them contain draft corrections and/or workarounds for the first observed regressions corresponding to the POC behavior:
 . https://git.eclipse.org/r/#/c/65561
 . https://git.eclipse.org/r/#/c/65562
 . https://git.eclipse.org/r/#/c/65705
 . https://git.eclipse.org/r/#/c/65706
 . https://git.eclipse.org/r/#/c/65707
 . https://git.eclipse.org/r/#/c/66626
 . https://git.eclipse.org/r/#/c/66627

The following patch set have been used to launch the tests suite on the migrated date (local or our internal test_drive job)
 . https://git.eclipse.org/r/#/c/66628: Migrate all action for debug plugin
 . https://git.eclipse.org/r/#/c/66629: Result of the migrate action on the repo test data
 . https://git.eclipse.org/r/#/c/66630: Control representations step in migrate all action and add capability to copy all fragments in test set up phase.
 . https://git.eclipse.org/r/#/c/66631: Result of the control of all representation on the repo test data
Comment 11 Maxime Porhel CLA 2016-05-27 10:54:56 EDT
Impact on the referenced DAnalysis

The current evolution is not intended to change the ability to define fragmented/referenced DAnalysis
structures.
This capability might impact the file management choices (hidden folder(s), export/copy behavior).
Comment 12 Pierre-Charles David CLA 2016-10-04 08:51:48 EDT
Most of the preparation work is done for 4.1 (see bugs #491604, #493367, #494766). Moving the 5.0 for now (with now guarantee it will indeed be done in that timeframe) for the remaining work.
Comment 13 Eclipse Genie CLA 2017-01-24 08:36:32 EST
New Gerrit change created: https://git.eclipse.org/r/89430
Comment 14 Eclipse Genie CLA 2017-01-24 08:36:35 EST
New Gerrit change created: https://git.eclipse.org/r/89429
Comment 15 Eclipse Genie CLA 2017-03-31 10:01:19 EDT
New Gerrit change created: https://git.eclipse.org/r/92884
Comment 16 Eclipse Genie CLA 2017-04-03 12:20:22 EDT
New Gerrit change created: https://git.eclipse.org/r/94316
Comment 17 Eclipse Genie CLA 2017-04-11 03:51:37 EDT
New Gerrit change created: https://git.eclipse.org/r/94794
Comment 18 Eclipse Genie CLA 2017-04-11 03:51:38 EDT
New Gerrit change created: https://git.eclipse.org/r/94794
Comment 19 Eclipse Genie CLA 2017-04-12 05:00:39 EDT
New Gerrit change created: https://git.eclipse.org/r/94898
Comment 20 Eclipse Genie CLA 2017-04-12 05:00:41 EDT
New Gerrit change created: https://git.eclipse.org/r/94899
Comment 21 Eclipse Genie CLA 2017-04-12 08:47:55 EDT
New Gerrit change created: https://git.eclipse.org/r/94922
Comment 22 Eclipse Genie CLA 2017-04-13 05:13:51 EDT
New Gerrit change created: https://git.eclipse.org/r/94974
Comment 36 Eclipse Genie CLA 2017-04-14 11:28:25 EDT
New Gerrit change created: https://git.eclipse.org/r/95073
Comment 37 Eclipse Genie CLA 2017-04-18 09:36:43 EDT
New Gerrit change created: https://git.eclipse.org/r/95174
Comment 38 Eclipse Genie CLA 2017-04-19 05:26:41 EDT
New Gerrit change created: https://git.eclipse.org/r/95249
Comment 39 Eclipse Genie CLA 2017-04-20 11:35:21 EDT
New Gerrit change created: https://git.eclipse.org/r/95397
Comment 40 Eclipse Genie CLA 2017-04-21 10:05:59 EDT
New Gerrit change created: https://git.eclipse.org/r/95472
Comment 41 Eclipse Genie CLA 2017-04-21 12:13:58 EDT
New Gerrit change created: https://git.eclipse.org/r/95490
Comment 42 Eclipse Genie CLA 2017-04-21 12:13:59 EDT
New Gerrit change created: https://git.eclipse.org/r/95489
Comment 43 Eclipse Genie CLA 2017-04-26 05:13:41 EDT
New Gerrit change created: https://git.eclipse.org/r/95756
Comment 44 Eclipse Genie CLA 2017-04-27 10:48:10 EDT
New Gerrit change created: https://git.eclipse.org/r/95919
Comment 45 Eclipse Genie CLA 2017-04-27 12:40:22 EDT
New Gerrit change created: https://git.eclipse.org/r/95927
Comment 46 Eclipse Genie CLA 2017-04-28 10:07:25 EDT
New Gerrit change created: https://git.eclipse.org/r/96031
Comment 58 Eclipse Genie CLA 2017-05-02 12:26:25 EDT
New Gerrit change created: https://git.eclipse.org/r/96232
Comment 59 Eclipse Genie CLA 2017-05-03 12:09:05 EDT
New Gerrit change created: https://git.eclipse.org/r/96325
Comment 60 Eclipse Genie CLA 2017-05-04 11:50:38 EDT
New Gerrit change created: https://git.eclipse.org/r/96414
Comment 61 Eclipse Genie CLA 2017-05-04 11:50:40 EDT
New Gerrit change created: https://git.eclipse.org/r/96415
Comment 66 Eclipse Genie CLA 2017-05-11 04:03:56 EDT
New Gerrit change created: https://git.eclipse.org/r/96788
Comment 67 Eclipse Genie CLA 2017-05-11 09:22:52 EDT
New Gerrit change created: https://git.eclipse.org/r/96838
Comment 68 Eclipse Genie CLA 2017-05-11 09:22:54 EDT
New Gerrit change created: https://git.eclipse.org/r/96837
Comment 70 Eclipse Genie CLA 2017-05-15 08:54:58 EDT
New Gerrit change created: https://git.eclipse.org/r/97097
Comment 71 Eclipse Genie CLA 2017-05-15 08:55:00 EDT
New Gerrit change created: https://git.eclipse.org/r/97096
Comment 72 Florian Barbin CLA 2017-05-15 11:57:35 EDT
The first steps introducing the ability to split representations into different resources, the DRepresentationDescriptor.repPath attribute and making derived, transient and volatile the feature DRepresentationDescriptor.representation is over for Sirius 5.0.
Comment 73 Florian Barbin CLA 2017-05-15 12:07:37 EDT
See bug 516669 for the next steps
Comment 74 Eclipse Genie CLA 2017-05-19 06:11:26 EDT
New Gerrit change created: https://git.eclipse.org/r/97547
Comment 76 Laurent Fasani CLA 2017-05-19 11:33:13 EDT
technical issue. The validation is the whole Sirius suites.
Comment 77 Pierre-Charles David CLA 2017-06-29 03:31:42 EDT
Available in Sirius 5.0.0, see https://wiki.eclipse.org/Sirius/5.0.0 for details.