• Save
Yes It Can: Leverage Workflow in Plone to Bring Business Process Online
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 939 views

One of the aspects of Plone that sets it above most other Content Management Systems is the DC Workflow package. We've all seen it in use as we publish content, but have we thought about how it can ...

One of the aspects of Plone that sets it above most other Content Management Systems is the DC Workflow package. We've all seen it in use as we publish content, but have we thought about how it can help us to implement business practices and policies as online systems?

Statistics

Views

Total Views
939
Views on SlideShare
935
Embed Views
4

Actions

Likes
1
Downloads
0
Comments
0

3 Embeds 4

http://www.linkedin.com 2
http://www.lmodules.com 1
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • 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. <br />
  • Each of those doors has a specific key that allows someone to open it and perform the action inside. <br />
  • 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: <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Unfortunately, this wide array of permissions isn&#x2019;t really very well documented. So what can you do? <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Or, if you happen to be community-minded (and if you&#x2019;re using Plone, the chances are good that you are), you can pitch in to help the documentation team fix the problem. <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • Roles are like neatly labelled key chains that hold all the keys required to perform a well-defined set of tasks. <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • remember that guards can also include groups and permissions <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

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

  • 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
  • • 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/
  • 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
  • • 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
  • • 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
  • Local Roles
  • 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