Workflow Initiative
https://www.drupal.org/node/2721129
The session formally known as “Drupal is a CMS, So how can we better manage content?”
TimMillwoodd.o: timmillwood
DickOlssond.o: dixon_
AndreiJechiud.o: jeqq
Multiversion
Replication
Workspace
RELAXed Web Services
Deploy
Revisions enabled by default
https://www.drupal.org/node/2490136
We have revisions in core for Nodes and Block Content, but we don’t use them by default.
Phase 1
Needs
Review
All Content entity baseFieldDefinitions should inherit from
parentshttps://www.drupal.org/node/2707255
Most fields are manually duplicated, to reuse code and make things more flexible we should
inherit fields.Phase 1
DONE
NodeInterface should implement
RevisionLogInterface https://www.drupal.org/node/2705433
8.1.0 introduced RevisionLogInterface. It’d be great to get revisionable entity types using it.
Phase 1
DONE
BlockContent should have a revision_user and revision_created
field and implement RevisionLogInterface
https://www.drupal.org/node/2716081
BlockContent can’t use RevisionLogInterface until it gets revision_user and revision_created
fields.Phase 1
Needs
Review
Migrate entities between entity type
schemashttps://www.drupal.org/node/2721313
We can’t change any entity schemas until we have an upgrade path for all content within
those entities.Phase 1
Make all content entities revisionable
https://www.drupal.org/node/2705389
Update the following entities to extend RevisionableContentEntityBase
and have a revision id entity key:
Comment, Feed, File, Item, MenuLinkContent, Message, Shortcut, Term, User
Phase 1
Revision UUID and/or hash
http://www.drupal.org/node/1812202
Using a revision hash has the most advantages, but having both would also be ok.
Phase 2
Parent revisions
Each revision can have one or more parents. This is so we can know where it stemmed
from.Phase 2
Deleted flag
Don’t delete any entities, just create a new revision marking them as deleted.
Phase 3
Purging revisions
Now that entities aren’t deleted we need a way to purge whole entities and individual
revisions.Phase 3
Trash
Provide a UI for restoring and purging deleted entities.
Phase 4
Moderation API
Underlying API to moderate revisions of content entities.
Phase 5
Workspace API
All content entities, except the user entity type, belong to a workspace.
Think of workspaces like branches in git.Phase 5
UUID Index
https://www.drupal.org/node/2690747
An index of UUIDs mapped to related entity information.
Phase 6
Revision UUID / hash Index
An index of revision UUIDs / hashes mapped to related revision information.
Phase 6
Sequence Index
Each entity update will increment a sequence ID. Here we map this to the entity and revision
information of the update.Phase 6
Replication services
Changes – Fetch changes since a given sequence ID.
RevisionsDiff – Compare what revisions are missing between workspaces.
Phase 7
Replication API
Replicate content between two workspaces.Phase 7
Conflict management API
Now entities can exist in multiple workspace we need a way to resolve conflicts between them.
Phase 7
Experimental UI
Most of the basic APIs will now be in place so we can implement an initial UI for it all.
Phase 7
Conflict management UI
This is a complex step and feature a lot of UX work.
Phase 8
Workspace UI
Create, manage, and switch between workspaces.Phase 8
Revision moderation module
This will be a new core module using the moderation API to moderation individual entities
within a workspace.Phase 8
Workspace moderation module
This will be a new core module using the moderation API to moderation a workspace as a
whole.Phase 8
Cross site content staging
REST API based on CouchDB for cross site content staging.
Phase X
Autosave
Automatically save entities while editing.Could use the REST API.
Phase XI
So How Was It?Evaluate this session - ht tps: / /events.drupal.org/node/9192
Thanks!