Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Workflow Initiative


Published on

Slides from DrupalCon NOLA.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Workflow Initiative

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