Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 509735

Summary: Add experimental support for workflow
Product: [Modeling] Sirius Reporter: Pierre-Charles David <pierre-charles.david>
Component: CoreAssignee: Pierre-Charles David <pierre-charles.david>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P1 CC: matthieu.helleboid
Version: unspecifiedKeywords: triaged
Target Milestone: 6.0.0   
Hardware: All   
OS: All   
See Also: https://git.eclipse.org/r/93901
https://git.eclipse.org/r/93900
https://git.eclipse.org/r/93905
https://git.eclipse.org/r/93904
https://git.eclipse.org/r/93902
https://git.eclipse.org/r/93903
https://git.eclipse.org/r/93910
https://git.eclipse.org/r/93908
https://git.eclipse.org/r/93906
https://git.eclipse.org/r/93907
https://git.eclipse.org/r/93909
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=6812d85e0f0e472c01003e521e204eb3ce896936
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=6cd1635ee435dc4081a4da599dc906a9dbb481a6
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=78943fcfaf24b5ee7514cdaadbf0f88578c320c9
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=c1868beffc32d6b36098cf35c74cee5ed954323b
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=d01f7023be370fe022c00464ef20eb913bf6bfae
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=b4052069c5622f976cf70dc0ffc754d32fb22a64
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=423cc487a7b805a6125681379095789121e0f5c6
https://git.eclipse.org/r/102321
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=a434a1609dc9cba43003d99aac1ab6dbace62759
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=4fe0e20fcc7f0cfc5b6f62e4979e40c93999edc6
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=0090a9a4b4ce19d6a60282eadc9c520eb45404ca
https://git.eclipse.org/r/102703
https://git.eclipse.org/r/102701
https://git.eclipse.org/r/103228
https://git.eclipse.org/r/103227
https://git.eclipse.org/r/103601
https://git.eclipse.org/r/103600
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=7f0cfdc126a0d9e5289913a51ab65ea27b1eb199
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=b314dac1423b93fcd7060c64c41e787fda320491
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=81fa98edefcc5f2441b4c342cf0a60a13fe22137
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=c5d0c7dac0b9233666d74511861d1c73f0a4bde2
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=87ea675af5108bf0ed8db6edfa2fe946847288ef
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=8eaad9253d1b8020fd9389232d43a95359e33c41
https://git.eclipse.org/r/104959
https://git.eclipse.org/r/104958
https://git.eclipse.org/r/104963
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=3bfe39f2db35235c67077d4282de86c8df7a8231
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=a333578f65f15228334b5a7500c851b04608b124
https://git.eclipse.org/c/amalgam/org.eclipse.amalgam.git/commit/?id=49e04be599afc297f1e399f802ede599433507ae
https://git.eclipse.org/r/118505
https://git.eclipse.org/r/118506
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=ae43d6371b2a53599d4bddf8c845d26d55b319c8
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=511ed44bc94cf9eefb53c456255351a6838fc611
https://git.eclipse.org/r/118631
https://git.eclipse.org/r/118692
https://git.eclipse.org/r/119016
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=fc2386caf5c8954a146b6cc0917be2ac08c78621
https://git.eclipse.org/r/121391
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=aa052272035c2d439cb4499a1f51f770858c8ed6
https://git.eclipse.org/r/121777
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=ac159571b706654a93b79a74821dc5c25249e5bc
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=3d6de26c22af876d9061e0152cabab89cc4f1914
https://git.eclipse.org/r/122163
https://git.eclipse.org/r/122694
https://git.eclipse.org/r/122693
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=bc76ec0b5b386e791afcac15ee5ea5aca665b2c7
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=634ca0d8c3ad0f1e8087ec27b2ec8646b5299b8f
https://git.eclipse.org/r/122768
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=52a7f361286bc8e5e918313b84576ef1e417343a
https://git.eclipse.org/r/123065
https://git.eclipse.org/r/123073
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=d7651f3dc1246623c252e0f342bb7f94ae1df9b0
https://git.eclipse.org/r/123225
https://git.eclipse.org/r/123226
https://git.eclipse.org/r/123227
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=26c8fe0dacb847cf7ab64be71c834f6aa2f2aced
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=ceb11f758365ceb98b4b8fb816bdbfc8bd7bed48
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=a9de3742c427de4cc28e434ea9f7a0852cacd8ee
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=b82fdf585de90f18fa2c8b4599d778889d3d71c9
https://git.eclipse.org/r/123607
https://git.eclipse.org/r/124003
https://bugs.eclipse.org/bugs/show_bug.cgi?id=536066
https://bugs.eclipse.org/bugs/show_bug.cgi?id=536063
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=8a9d068ae67d693435f677bf033799a169888b68
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=dfc57bc57addc6ece0b99fed0c173c908654d803
Whiteboard:

Description Pierre-Charles David CLA 2016-12-28 04:07:12 EST
The Activity Explorer which originated in Capella and was contributed to Amalgam last year provides a nice way for complex modelling workbenches to guide their users and avoid the "blank slate" syndrome when starting with the tool.

The objective here is to allow specifiers to configure the Activity Explorer directly from the VSM (with all the nice properties this implies, like high-configurability with expression, dynamic behaviour etc.), and to integrate the resulting explorer/editor nicely in the Sirius usage workflow.
Comment 2 Pierre-Charles David CLA 2017-01-02 05:25:50 EST
FWIW, a quick grep on the current source code of KitAlpha and Capella shows the following classes imported:

org.eclipse.amalgam.explorer.activity.ui.ActivityExplorerActivator
org.eclipse.amalgam.explorer.activity.ui.IImageKeys
org.eclipse.amalgam.explorer.activity.ui.api.editor.ActivityExplorerEditor
org.eclipse.amalgam.explorer.activity.ui.api.editor.input.ActivityExplorerEditorInput
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.BasicSessionActivityExplorerPage
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.CommonActivityExplorerPage
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.OverviewActivityExplorerPage
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.helper.SelectionHelper
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.viewers.AbstractActivityExplorerViewer
org.eclipse.amalgam.explorer.activity.ui.api.editor.pages.viewers.DiagramViewer
org.eclipse.amalgam.explorer.activity.ui.api.editor.predicates.IPredicate
org.eclipse.amalgam.explorer.activity.ui.api.hyperlinkadapter.AbstractHyperlinkAdapter
org.eclipse.amalgam.explorer.activity.ui.api.hyperlinkadapter.AbstractNewDiagramHyperlinkAdapter
org.eclipse.amalgam.explorer.activity.ui.api.hyperlinkadapter.PopupMenuLinkAdapter
org.eclipse.amalgam.explorer.activity.ui.api.manager.ActivityExplorerManager
org.eclipse.amalgam.explorer.activity.ui.api.preferences.PreferenceConstants

This is juste grepping for "import org.eclipse.amalgam.explorer.activity.ui", so there might be others which are referenced indirectly. Anyway, this gives a first very rough idea of the "API surface" that KitAlpha and Capella explictly depend on right now.
Comment 3 Pierre-Charles David CLA 2017-01-10 06:18:15 EST
Continuing the high-level review of code dependencies, here are all the Java classes which seem to depend on static configuration information defined in the plugin.xml files:

% git grep -E 'import org.eclipse.core.runtime.(IConfigurationElement|IContributor|IExecutableExtension|IExtension|IExtensionPoint)' -- '**/*.java' | sort
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/activities/ExplorerActivity.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/ActivityExplorerPage.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/BasicSessionActivityExplorerPage.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/pages/CommonActivityExplorerPage.java:import org.eclipse.core.runtime.IExecutableExtension;
src/org/eclipse/amalgam/explorer/activity/ui/api/editor/sections/ActivityExplorerSection.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java:import org.eclipse.core.runtime.IContributor;
src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java:import org.eclipse.core.runtime.IExecutableExtension;
src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java:import org.eclipse.core.runtime.IExtension;
src/org/eclipse/amalgam/explorer/activity/ui/internal/extension/point/manager/ActivityExplorerExtensionManager.java:import org.eclipse.core.runtime.IExtensionPoint;
src/org/eclipse/amalgam/explorer/activity/ui/internal/preferences/ActivityExplorerManagementPreferencePage.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/internal/preferences/ActivityExplorerSelectionBlock.java:import org.eclipse.core.runtime.IConfigurationElement;
src/org/eclipse/amalgam/explorer/activity/ui/internal/preferences/ActivityExplorerSelectionBlock.java:import org.eclipse.core.runtime.IExtension;
src/org/eclipse/amalgam/explorer/activity/ui/internal/preferences/ActivityExplorerSelectionBlock.java:import org.eclipse.core.runtime.IExtensionPoint;
src/org/eclipse/amalgam/explorer/activity/ui/internal/preferences/DefaultPreferenceInitializer.java:import org.eclipse.core.runtime.IConfigurationElement;

Most of these dependencies should probably be removed, or more precisely isolated in a single place as an implementation detail. Given its name, ActivityExplorerExtensionManager sounds like a good candidate. The information it provides should be exposed using an abstract API that can then be implemented in a different way.

Note that this change will technically break APIs, as all the page implementation classes actually "implement IExecutableExtension" and read their configuration by a call to IExecutableExtension#setInitializationData(IConfigurationElement, String, Object). A different mechanism will be required to provide pages their configuration data which does not assume that information comes from plugin.xml configuration elements.

This only covers (part of) the code dependencies that can be detected easily by grepping the code, but does not cover the fact the the current page implementations probably assume this configuration data, wherever it comes from, can be considered static. If we want the Sirius integration to feel "Sirius-native", page configuration will almost certainly contain dynamic information (e.g. interpreted expressions), and itself be dynamic (e.g. appearing/disappearing when viewpoints are enables/disabled, or in development mode when a VSM is modified by the specifier and then reloaded).
Comment 4 Eclipse Genie CLA 2017-03-27 09:37:33 EDT
New Gerrit change created: https://git.eclipse.org/r/93901
Comment 5 Eclipse Genie CLA 2017-03-27 09:37:35 EDT
New Gerrit change created: https://git.eclipse.org/r/93900
Comment 6 Eclipse Genie CLA 2017-03-27 09:37:37 EDT
New Gerrit change created: https://git.eclipse.org/r/93905
Comment 7 Eclipse Genie CLA 2017-03-27 09:37:38 EDT
New Gerrit change created: https://git.eclipse.org/r/93904
Comment 8 Eclipse Genie CLA 2017-03-27 09:37:40 EDT
New Gerrit change created: https://git.eclipse.org/r/93902
Comment 9 Eclipse Genie CLA 2017-03-27 09:37:42 EDT
New Gerrit change created: https://git.eclipse.org/r/93903
Comment 10 Eclipse Genie CLA 2017-03-27 09:37:43 EDT
New Gerrit change created: https://git.eclipse.org/r/93910
Comment 11 Eclipse Genie CLA 2017-03-27 09:37:45 EDT
New Gerrit change created: https://git.eclipse.org/r/93908
Comment 12 Eclipse Genie CLA 2017-03-27 09:37:46 EDT
New Gerrit change created: https://git.eclipse.org/r/93906
Comment 13 Eclipse Genie CLA 2017-03-27 09:37:48 EDT
New Gerrit change created: https://git.eclipse.org/r/93907
Comment 14 Eclipse Genie CLA 2017-03-27 09:37:59 EDT
New Gerrit change created: https://git.eclipse.org/r/93909
Comment 22 Eclipse Genie CLA 2017-08-01 11:51:58 EDT
New Gerrit change created: https://git.eclipse.org/r/102321
Comment 26 Eclipse Genie CLA 2017-08-08 10:58:40 EDT
New Gerrit change created: https://git.eclipse.org/r/102703
Comment 27 Eclipse Genie CLA 2017-08-08 10:58:42 EDT
New Gerrit change created: https://git.eclipse.org/r/102701
Comment 28 Eclipse Genie CLA 2017-08-17 09:29:26 EDT
New Gerrit change created: https://git.eclipse.org/r/103228
Comment 29 Eclipse Genie CLA 2017-08-17 09:29:28 EDT
New Gerrit change created: https://git.eclipse.org/r/103227
Comment 30 Eclipse Genie CLA 2017-08-24 04:11:13 EDT
New Gerrit change created: https://git.eclipse.org/r/103601
Comment 31 Eclipse Genie CLA 2017-08-24 04:11:14 EDT
New Gerrit change created: https://git.eclipse.org/r/103600
Comment 38 Eclipse Genie CLA 2017-09-12 09:28:37 EDT
New Gerrit change created: https://git.eclipse.org/r/104959
Comment 39 Eclipse Genie CLA 2017-09-12 09:28:38 EDT
New Gerrit change created: https://git.eclipse.org/r/104958
Comment 40 Eclipse Genie CLA 2017-09-12 09:28:39 EDT
New Gerrit change created: https://git.eclipse.org/r/104963
Comment 44 Pierre-Charles David CLA 2018-01-15 03:11:25 EST
Changing the title to reflect the updated scope. Instead of trying to modify the existing Activity Explorer runtime (which is more complex and risky than initially thought), we will create a new implementation with similar concepts but maybe more oriented towards workflow definition, with:
* a way for specifiers to define and organize global "actions" that apply to a session/project, which may depend on the current state. This is similar in scope to the pages/sections/activities supported by the Activity Explorer, but maybe a little more dynamic (at least that's the idea);
* at runtime, the presentation of these actions inside the aird editor (as a new page). Instead of reusing the Activity Explorer runtime (which is not a good match), we'll use an embedded browser widget with dynamically rendered HTML/CSS/JS.
Comment 45 Eclipse Genie CLA 2018-03-02 04:33:43 EST
New Gerrit change created: https://git.eclipse.org/r/118505
Comment 46 Eclipse Genie CLA 2018-03-02 04:33:44 EST
New Gerrit change created: https://git.eclipse.org/r/118506
Comment 49 Eclipse Genie CLA 2018-03-05 02:57:50 EST
New Gerrit change created: https://git.eclipse.org/r/118631
Comment 50 Eclipse Genie CLA 2018-03-05 11:37:57 EST
New Gerrit change created: https://git.eclipse.org/r/118692
Comment 51 Eclipse Genie CLA 2018-03-08 11:10:26 EST
New Gerrit change created: https://git.eclipse.org/r/119016
Comment 53 Eclipse Genie CLA 2018-04-19 04:23:54 EDT
New Gerrit change created: https://git.eclipse.org/r/121391
Comment 55 Eclipse Genie CLA 2018-04-26 04:47:03 EDT
New Gerrit change created: https://git.eclipse.org/r/121777
Comment 58 Eclipse Genie CLA 2018-05-04 04:26:49 EDT
New Gerrit change created: https://git.eclipse.org/r/122163
Comment 59 Eclipse Genie CLA 2018-05-15 12:05:03 EDT
New Gerrit change created: https://git.eclipse.org/r/122694
Comment 60 Eclipse Genie CLA 2018-05-15 12:05:05 EDT
New Gerrit change created: https://git.eclipse.org/r/122693
Comment 63 Eclipse Genie CLA 2018-05-16 07:52:26 EDT
New Gerrit change created: https://git.eclipse.org/r/122768
Comment 65 Eclipse Genie CLA 2018-05-22 09:14:40 EDT
New Gerrit change created: https://git.eclipse.org/r/123065
Comment 66 Eclipse Genie CLA 2018-05-22 10:40:11 EDT
New Gerrit change created: https://git.eclipse.org/r/123073
Comment 68 Eclipse Genie CLA 2018-05-24 03:12:23 EDT
New Gerrit change created: https://git.eclipse.org/r/123225
Comment 69 Eclipse Genie CLA 2018-05-24 03:18:36 EDT
New Gerrit change created: https://git.eclipse.org/r/123226
Comment 70 Eclipse Genie CLA 2018-05-24 03:37:01 EDT
New Gerrit change created: https://git.eclipse.org/r/123227
Comment 75 Eclipse Genie CLA 2018-05-30 05:27:00 EDT
New Gerrit change created: https://git.eclipse.org/r/123607
Comment 76 Eclipse Genie CLA 2018-06-05 08:54:17 EDT
New Gerrit change created: https://git.eclipse.org/r/124003
Comment 77 Pierre-Charles David CLA 2018-06-18 04:53:09 EDT
Closing for the first version for 6.0.0, which should be considered experimental. We'll try to fix the most glaring bugs for 6.0.1 and provide a more stable a functional version for 6.1.0.
Comment 78 Laurent Redor CLA 2018-06-27 11:55:42 EDT
Available in Sirius 6.0.0, see https://wiki.eclipse.org/Sirius/6.0.0 for details