SlideShare a Scribd company logo
Yes It Can!
Learning to Leverage Plone’s Workflow
  to Bring Business Practices Online

               Cris Ewing
         UW Radiology Web Services
                 PSE2010
Plone’s Greatest Strength
Often Overlooked
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
• Permissions & Roles
• Permissions & Roles
• Inheritance of Rights
• Permissions & Roles
• Inheritance of Rights
• Workflow: States & Transitions
• Permissions & Roles
• Inheritance of Rights
• Workflow: States & Transitions
• Advanced Techniques
• Permissions & Roles
• Inheritance of Rights
• Workflow: States & Transitions
• Advanced Techniques
Image Credit: femaletrumpet02
http://www.flickr.com/photos/femaletrumpet02/3862031267/
Image Credit: ul_Marga
http://www.flickr.com/photos/ul_marga/755378645/
Image Credit: gossamerpromise
http://www.flickr.com/photos/gossamerpromise/432902183/
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
what do they open?
what do they open?

how can I find the right one?
what do they open?

how can I find the right one?
lots of permissions
CMFEditions: Save new version
                                                       CMFEditions: Access previous versions
CMFEditions: Apply version control            Content rules: Manage rules
                         View Management Screens                              Request review
                                              List portal members
                 FTP Access
set own properties               iterate: check out content          Use external editor
                                                      Review portal content
      Allow sendto
                               List undoable changes

              lots of permissions
                                                                      Delete Objects
  Portlets: manage portlets

Modify view template          List folder contentsManage properties
                                                                               Undo changes
         iterate: check in content
                                                        Add portal member
                                     Set own password
                                                         CMFEditions: Checkout to location
   CMFEditions: Revert to previous versions
                                          Add portal folders
                         Add portal content
                                                        View Groups
      Reply to item                   Portlets: manage own portlets
(and that’s a good thing)
(and that’s a good thing)
      ((take my word for it))
not so well documented


Image Credit: The empty Book (http://www.flickr.com/photos/hirok/4404405566),
a Creative Commons Attribution (2.0) image from hirok's photostream
Use The Source
Use The Source
Products.CMFCore.permissions
  AccessControl.permissions
Products.Five / permissions.zcml
zope.security / permissions.zcml
help the doc team


Image Credit: http://www.flickr.com/photos/soldiersmediacenter/2570460662/,
a Creative Commons Attribution (2.0) image from soldiersmediacenter's photostream
Permissions Manual
Permissions Manual
http://plone.293351.n2.nabble.com/plone-permissions-manual-td3666469.html
Permissions Manual
http://plone.293351.n2.nabble.com/plone-permissions-manual-td3666469.html


http://www.coactivate.org/projects/plone-documentation/permissions-manual
what do they open?

how can I find the right one?
Roles
Image Credit: ul_Marga
http://www.flickr.com/photos/ul_marga/755378645/
built-in roles from Plone
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
• Manager
• Manager
 -   Like Superman, can do anything
• Manager
 -   Like Superman, can do anything


• Owner
• Manager
 -   Like Superman, can do anything


• Owner
 -   All content management rights
• Manager
 -   Like Superman, can do anything


• Owner
 -   All content management rights


• Editor
• Manager
 -   Like Superman, can do anything


• Owner
 -   All content management rights


• Editor
 -   Can change existing, but not create new
• Manager
 -   Like Superman, can do anything


• Owner
 -   All content management rights


• Editor
 -   Can change existing, but not create new


• Reviewer
• Manager
 -   Like Superman, can do anything


• Owner
 -   All content management rights


• Editor
 -   Can change existing, but not create new


• Reviewer
 -   Can change workflow state
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
• Contributor
• Contributor
 -   Can add new content, but not edit existing
• Contributor
 -   Can add new content, but not edit existing


• Reader
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way


• Member
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way


• Member
 -   No significant special rights
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way


• Member
 -   No significant special rights


• Authenticated
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way


• Member
 -   No significant special rights


• Authenticated
• Anonymous
• Contributor
 -   Can add new content, but not edit existing


• Reader
 -   Can view an object, but not manage it in any way


• Member
 -   No significant special rights


• Authenticated           distinguish folks who are logged in
                          from folks who are not
• Anonymous
you can create new ones
you can create new ones
       but be cautious . . .
• Too many roles can be confusing
• Too many roles can be confusing
• Too many roles clutter the user interface
Image Credit: yin yang (http://www.flickr.com/photos/csb13/4577840509/),
a Creative Commons by-nc-nd (2.0) image from csb13's photostream
• Permissions & Roles
• Inheritance of Rights
• Workflow: States & Transitions
• Advanced Techniques
Roles can be ‘global’ or ‘local’
Global Roles
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
Local Roles
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
so what’s the difference?
Plone Site



    Folder 1         Folder 2


        Folder 1.1      Folder 2.1




        Folder 1.2      Folder 2.2




         X               X
Assign a Local Role on a Folder
Plone Site



    Folder 1                           Folder 2


        Folder 1.1                        Folder 2.1




        Folder 1.2                        Folder 2.2




         X                                 X
Inheritance can be blocked
Plone Site



    Folder 1                         Folder 2


        Folder 1.1                      Folder 2.1




        Folder 1.2                      Folder 2.2




         X                               X
Plone Site
                Grant A Global Role (say ‘Editor’)
    Folder 1                        Folder 2


        Folder 1.1                     Folder 2.1




        Folder 1.2                     Folder 2.2




         X                              X
Global Roles CANNOT Be Blocked!!!
Plone Site



    Folder 1                    Folder 2


        Folder 1.1                 Folder 2.1




        Folder 1.2                 Folder 2.2




         X                          X
so what do we do?
Assign a ‘Global’ Local Role (use sharing)
Plone Site



    Folder 1                    Folder 2


        Folder 1.1                 Folder 2.1




        Folder 1.2                 Folder 2.2




         X                          X
Inheritance Blocking is Respected
Plone Site



    Folder 1                       Folder 2


        Folder 1.1                    Folder 2.1




        Folder 1.2                    Folder 2.2




         X                             X
• Permissions & Roles
• Inheritance of Rights
• Workflow: States & Transitions
• Advanced Techniques
states
Image Credit: Visits to Taiwan 2005 (http://www.flickr.com/photos/midpath/300465658/,
a Creative Commons by-nc-nd (2.0) image from midpath's photostream
states can:
states can:


• Assign permissions to roles
states can:


• Assign permissions to roles
• Control available transitions
states can:


• Assign permissions to roles
• Control available transitions
• and, less well known:
assign roles to groups!
transitions
Image Credit: A walk into the bamboo paths (http://www.flickr.com/photos/fotopakismo/2390882485/)
a Creative Commons by-nc-nd (2.0) image from fotopakismo's photostream
transitions control:
transitions control:
• Where you end up
transitions control:
• Where you end up
• How you start the journey
transitions control:
• Where you end up
• How you start the journey
 • user-initiated or automatic
transitions control:
• Where you end up
• How you start the journey
 • user-initiated or automatic
• Who can make the trip
transitions control:
• Where you end up
• How you start the journey
 • user-initiated or automatic
• Who can make the trip
 • permission(s), role(s) or membership in
    group(s)
the rubber meets the road


Image Credit: Transformers (http://www.flickr.com/photos/hoffarth/4506050669/),
a Creative Commons by-nc-nd (2.0) image from hoffarth's photostream
A simple workflow app
A simple workflow app

• User submits a request for travel expenses
A simple workflow app

• User submits a request for travel expenses
• Approver approves or denies the request
A simple workflow app

• User submits a request for travel expenses
• Approver approves or denies the request
 • If denied, the user can edit and re-submit
A simple workflow app

• User submits a request for travel expenses
• Approver approves or denies the request
 • If denied, the user can edit and re-submit
• Accountant issues a reimbursement check
A simple workflow app

• User submits a request for travel expenses
• Approver approves or denies the request
 • If denied, the user can edit and re-submit
• Accountant issues a reimbursement check
• Request is closed
What do we need?
What do we need?
• A Simple Content Type
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
• A Workflow
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
• A Workflow
 • New Request, Awaiting Approval,
    Approved, Denied, Closed
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
• A Workflow
 • New Request, Awaiting Approval,
    Approved, Denied, Closed
• A Pair of Roles
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
• A Workflow
 • New Request, Awaiting Approval,
    Approved, Denied, Closed
• A Pair of Roles
 • Approver, Accountant
What do we need?
• A Simple Content Type
 • Title, Description, Amount and Receipt
• A Workflow
 • New Request, Awaiting Approval,
    Approved, Denied, Closed
• A Pair of Roles
 • Approver, Accountant
 • or do we?
What Tools to Use?
What Tools to Use?
For the Content Type: ZopeSkel?? AGX??
What Tools to Use?
        For the Content Type: ZopeSkel?? AGX??

For the Workflow: collective.wtf ?? ZMI & portal_setup???
or, perhaps . . .
dexterity & uwosh.northstar
start with a buildout
start with a buildout
start up instance
fresh plone site
fresh plone site
(it works in plone 3, too)
you’ll install two products
you’ll install two products
they’ll install dependencies
they’ll install dependencies
new control panels
new control panels
we need a simple
 content type
make a content type
make a content type
set up type basics
add fields
add fields
add fields
add fields
amount field (float)
receipt field (file)
add behaviors
(basic capabilities)
we also need a workflow
create new workflow
create new workflow
create new workflow
edit existing states
edit existing states
edit existing states
edit existing states
add new state(s)
add transition(s)
add transition(s)
add transition(s)
add transition(s)
add transition(s)
add transition(s)
add transition(s)
add transition(s)
assign workflow to type
assign workflow to type
and that’s it!
a quick live demo
• Permissions & Roles
• Inheritance of Rights
• Workflow: States and Transitions
• Advanced Techniques
content rules
content rules
no programming needed
per-field permissions
• Show different aspects of a type to different
  users
• Show different aspects of a type to different
  users

• Show different aspects of a type to the same
  user in different states
• Show different aspects of a type to different
  users

• Show different aspects of a type to the same
  user in different states

• Allow users to edit only certain fields
• Show different aspects of a type to different
  users

• Show different aspects of a type to the same
  user in different states

• Allow users to edit only certain fields
• Change which fields can be edited by state
• Show different aspects of a type to different
  users

• Show different aspects of a type to the same
  user in different states

• Allow users to edit only certain fields
• Change which fields can be edited by state
• and so on . . .
Image Credit: Mona Lisa (http://www.flickr.com/photos/caribb/2355878576/"),
a Creative Commons by-nc-nd (2.0) image from caribb's photostream
Image Credit: Les Demoiselles d'Avignon(http://www.flickr.com/photos/webtweakers/2511681891/),
a Creative Commons by-nc-nd (2.0) image from webtweakers's photostream
transition actions
     script (before)

     script (after)
filesystem python scripts
filesystem python scripts
      cannot be overridden
workflow events
  IBeforeTransitionEvent

  IAfterTransitionEvent
• which workflow was used
• which workflow was used
• old and new workflow states
• which workflow was used
• old and new workflow states
• which transition is happening (has happened)
• which workflow was used
• old and new workflow states
• which transition is happening (has happened)
• status of the object
• which workflow was used
• old and new workflow states
• which transition is happening (has happened)
• status of the object
• the object itself
imagine the possibilities



Image Credit: I'm So Excited (http://www.flickr.com/photos/expo86/1907930897/),
a Creative Commons Attribution Non-Commercial No-Derivative-Works (2.0) image from expo86's photostream
Thanks to:
WebLion
the Penn State University
cewing@uw.edu

More Related Content

PDF
Joomla 2.5 ACL @ Dutch Joomla!Days #jd12nl
PDF
Joomla! ACL - Joomla!Day Germany
PPTX
Using real-time dashboards to improve student engagement in virtual learning ...
PPTX
XAPI and Machine Learning for Patient / Learner
PDF
Make Learning Big Data Work For You
PDF
How to Grow Your Business with VisCa (#xAPI)
PPTX
Nine applications of the Tin Can API (xAPI)
PDF
xAPI (Experience API):Potential for Open Educational Resources
Joomla 2.5 ACL @ Dutch Joomla!Days #jd12nl
Joomla! ACL - Joomla!Day Germany
Using real-time dashboards to improve student engagement in virtual learning ...
XAPI and Machine Learning for Patient / Learner
Make Learning Big Data Work For You
How to Grow Your Business with VisCa (#xAPI)
Nine applications of the Tin Can API (xAPI)
xAPI (Experience API):Potential for Open Educational Resources

Similar to Yes It Can: Leverage Workflow in Plone to Bring Business Process Online (20)

PDF
Joomla ACL introduction, limit site access
PDF
Make your extension more powerful by implementing Joomla ACL - J and Beyond 2014
PDF
Enrich your extensions with Joomla! ACL support
PDF
Joomla ACL & ACL Manager @ JUG Breda
KEY
Eric Steele – World Plone Day 2010 – Plone 4 Overview
PDF
Joomla 1.6 ACL - J and Beyond 2011 #jab11
PPTX
10 necto administration_ready
PDF
Web Sphere Portal Security
PDF
Joomla Access Control List (ACL) at JoomlaDay London, UK #jduk11
PDF
WordPress Workflows Expanded
PDF
Comparing Joomla CCKs
PPT
Proteus Navigation and Project Management
PDF
The Nuts and Bolts of Migrating Quickr Domino to CCM
PPTX
CQ Provisionning & Authoring
PPTX
Into the Abyss: Evaluating Active Directory SMB Shares on Scale (Secure360)
PPT
Synapse india reviews on drupal intro
PDF
Drupal Presentation for CapitalCamp 2011: Features Driven Development
PDF
Introduction to Subversion
PDF
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
PDF
Git basics with notes
Joomla ACL introduction, limit site access
Make your extension more powerful by implementing Joomla ACL - J and Beyond 2014
Enrich your extensions with Joomla! ACL support
Joomla ACL & ACL Manager @ JUG Breda
Eric Steele – World Plone Day 2010 – Plone 4 Overview
Joomla 1.6 ACL - J and Beyond 2011 #jab11
10 necto administration_ready
Web Sphere Portal Security
Joomla Access Control List (ACL) at JoomlaDay London, UK #jduk11
WordPress Workflows Expanded
Comparing Joomla CCKs
Proteus Navigation and Project Management
The Nuts and Bolts of Migrating Quickr Domino to CCM
CQ Provisionning & Authoring
Into the Abyss: Evaluating Active Directory SMB Shares on Scale (Secure360)
Synapse india reviews on drupal intro
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Introduction to Subversion
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
Git basics with notes
Ad

More from Cristopher Ewing (8)

PDF
Getting Things Done with Content Rules
PDF
Speaking at PyCon: The how and why
PDF
Adaptation in Open Source Software, PyCon 2016 Keynote
PDF
Plone for Education: Bibliographies
KEY
Jumpstart Your Development with ZopeSkel
KEY
ZopeSkel: The past, present and future
KEY
Transmogrifier: Beyond the Magic Box
PDF
We All Stand Together
Getting Things Done with Content Rules
Speaking at PyCon: The how and why
Adaptation in Open Source Software, PyCon 2016 Keynote
Plone for Education: Bibliographies
Jumpstart Your Development with ZopeSkel
ZopeSkel: The past, present and future
Transmogrifier: Beyond the Magic Box
We All Stand Together
Ad

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
1. Introduction to Computer Programming.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Getting Started with Data Integration: FME Form 101
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Digital-Transformation-Roadmap-for-Companies.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
Big Data Technologies - Introduction.pptx
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
1. Introduction to Computer Programming.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
SOPHOS-XG Firewall Administrator PPT.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Spectroscopy.pptx food analysis technology
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Getting Started with Data Integration: FME Form 101
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Yes It Can: Leverage Workflow in Plone to Bring Business Process Online

Editor's Notes

  • #10: There are many things you can do in Plone, each is controlled by a permission. You can think of it like a series of control rooms, each of which has a locked door.
  • #11: Each of those doors has a specific key that allows someone to open it and perform the action inside.
  • #12: But with all the actions one can perform, the number of keys can get overwhelming. And managing permissions can be like digging through one of those junk drawers filled with random keys. Two question become important quickly:
  • #47: Unfortunately, this wide array of permissions isn’t really very well documented. So what can you do?
  • #52: Or, if you happen to be community-minded (and if you’re using Plone, the chances are good that you are), you can pitch in to help the documentation team fix the problem.
  • #57: Roles are like neatly labelled key chains that hold all the keys required to perform a well-defined set of tasks.
  • #157: remember that guards can also include groups and permissions
  • #158: remember that guards can also include groups and permissions
  • #159: remember that guards can also include groups and permissions
  • #160: remember that guards can also include groups and permissions
  • #161: remember that guards can also include groups and permissions
  • #162: remember that guards can also include groups and permissions
  • #163: remember that guards can also include groups and permissions
  • #164: remember that guards can also include groups and permissions
  • #165: remember that guards can also include groups and permissions
  • #166: remember that guards can also include groups and permissions
  • #167: remember that guards can also include groups and permissions
  • #168: remember that guards can also include groups and permissions
  • #169: remember that guards can also include groups and permissions