Bug 509735 - Add experimental support for workflow
Summary: Add experimental support for workflow
Status: CLOSED FIXED
Alias: None
Product: Sirius
Classification: Modeling
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P1 enhancement (vote)
Target Milestone: 6.0.0   Edit
Assignee: Pierre-Charles David CLA
QA Contact:
URL:
Whiteboard:
Keywords: triaged
Depends on:
Blocks:
 
Reported: 2016-12-28 04:07 EST by Pierre-Charles David CLA
Modified: 2018-07-27 03:56 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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