Your SlideShare is downloading. ×
Bringing "real life" relations to Plone
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Bringing "real life" relations to Plone

1,895
views

Published on

How often did you need to profile company's users, and relations among them, relying just on groups and local roles? Right now you can design, manage and query you entire organization in Plone, using …

How often did you need to profile company's users, and relations among them, relying just on groups and local roles? Right now you can design, manage and query you entire organization in Plone, using new, rich user interface and integrate it with your existing add-ons.

(all slides has been "grafically refactored" by nekorin, thanks for that!)

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,895
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
35
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • tell that carneade is just “describing” and the use belongs to applications
    next Andrew!!!
  • mettere il movie fatto in provincia
  • mettere il movie fatto in provincia
  • next Massimo
  • simplify the human interface
    let the “humans” deal with the real life relations
    we don’t need an administrator to deal with real life.
  • Transcript

    • 1. Bringing real-word relations to life Plone as an organization manager
    • 2. who are we? Andrew Mleczko Plone archaeologist andrzej.mleczko@redturtle.net Massimo Azzolini RedTurtle’s co-founder and project manager massimo@redturtle.net
    • 3. The general picture ✓ This talk is about “Carneade” ✓ It’s the core of a DMS Plone based: Ercole ✓ Customer: Provincia of Ferrara http://www.flickr.com/photos/mleczko/3518027412/
    • 4. Ercole project Ercole I d'Este Duke of Ferrara (26 October 1431 – 15 June 1505) http://it.wikipedia.org/wiki/File:Ercole_I_d’Este.jpg
    • 5. http://www.flickr.com/photos/emraya/2929959881 At the very beginning there was Lotus
    • 6. At the beginning there was Lotus ✓ in 2003 RedTurtle developed a first release of this DMS using Lotus Domino ✓ in 2005 the quality management part was added ✓ in 2007 the project needed a more “open source” soul ✓ in 2008 the Plone age started
    • 7. Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
    • 8. Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
    • 9. Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
    • 10. Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
    • 11. Plone as a quality management system ✓ citizen registry ✓ process definitions ✓ dossier management ✓ integration with the DMS
    • 12. Plone as an enterprise intranet ‣ 800 authenticated users (editors) ‣ >200 000 documents ‣ 2 Data.fs separated ‣ Yearly growth ca 30.000 documents ‣ Peak traffic: 20 concurrent write transactions per second
    • 13. http://www.flickr.com/photos/wynnie/1885037521 Customer needs ‘real life’ relations
    • 14. charts / graphs
    • 15. charts / graphs
    • 16. charts / graphs
    • 17. how it was
    • 18. 1. add user in Lotus
    • 19. 2. Add to several DB’s ACL
    • 20. 3. Add it to “Organigramma”
    • 21. 4. Manage it on AS/400
    • 22. Plone what you get out of the box ✓ User and group management ✓ Sharing - local roles management ✓ PAS http://www.flickr.com/photos/gadgetgirl70/201696636
    • 23. Plone what you get with add-ons ✓ Membrane supports Members as content types in Plone ✓ plone.app.memberschema extend default memberdata with custom schema ✓ plone.relations define and query complex relationships between objects http://www.flickr.com/photos/phploveme/3375142156
    • 24. Plone what we missed ✓ relation should provide additional metadata and security ✓ easy way for developers to register new relations http://www.flickr.com/photos/freddy/69234689/
    • 25. Plone what we missed ✓ relation should provide additional metadata and security ✓ easy way for developers to register new relations ✓ user friendly interface for managing them http://www.flickr.com/photos/freddy/69234689/
    • 26. other demands http://www.flickr.com/photos/bennyrosso/2485681355
    • 27. creating customized vocabularies ✓ all the “project managers” ✓ all the Office A members ✓ signers for a given dept.
    • 28. requirements grow during development ✓ once you start you can’t stop ✓ specialized offices: ‣ accountancy ‣ protocol ✓ extra roles http://www.sxc.hu/profile/bizior
    • 29. http://www.flickr.com/photos/wynnie/1885037521 carneade blueprint
    • 30. http://www.flickr.com/photos/oscarmota/1155257083 See it in action
    • 31. managing person and office
    • 32. managing person and office
    • 33. adding relations
    • 34. adding relations
    • 35. adding relations
    • 36. adding relations
    • 37. adding relations
    • 38. adding relations class ISalesOffer(Interface): """ Sales offer. """ first_discount = schema.Int( title=u'First level discount', readonly=False, required=False) second_discount = schema.Int( title=u'Second level discount', readonly=False, required=False) total_amount = schema.Int( title=u'Total amount', readonly=False, required=True)
    • 39. using extjs interface
    • 40. using extjs interface
    • 41. http://www.flickr.com/photos/wynnie/1885037521 How we built it
    • 42. ZCA engine ✓ easy to extend for developers ✓ pluggable using ZCML ✓ intuitive and simple interface:
    • 43. ZCA engine ✓ easy to extend for developers ✓ pluggable using ZCML ✓ intuitive and simple interface: >>> carneade = getUtility(ICarneade) >>> carneade.belongTo(office2, office1) >>> carneade.addEmployee(john, office2) >>> carneade.listEmployees(office1) [<john CarneadePerson>]
    • 44. Relations provides security ✓ using PAS localrole plugin from carneade we can extend Plone security ✓ every relation could provide plone role:
    • 45. Relations provides security ✓ using PAS localrole plugin from carneade we can extend Plone security ✓ every relation could provide plone role: >>> member = getAuthenticatedMember() >>> member.getRolesInContext(office1) ['Member'] >>> carneade.addBoss(member, office1) >>> member.getRolesInContext(office1) ['Member','Manager']
    • 46. Create new relations with ZCML registration ✓ using custom meta.zcml we can make relations registration quite easy
    • 47. Create new relations with ZCML registration ✓ using custom meta.zcml we can make relations registration quite easy <carnede:relation for=".interfaces.ISimpleRelation" name="office_manager" relation_title="Office manager" plone_role="Manager" /> ✓ and help separate core engine from customer specific implementation
    • 48. User interface: extjs http://www.extjs.com
    • 49. User interface: extjs ✓ cross-browser JavaScript library for building rich internet applications ✓ redturtle.extjs (http://pypi.python.org/pypi/redturtle.extjs) to easily use it in Plone ✓ JSON-RPC to integrate with Plone
    • 50. http://www.flickr.com/photos/jillbazeley/1375857324 Relation provider plone.relations
    • 51. Relation provider: plone.relations ✓ build on zc.relationship and five.intid ✓ highly optimized for simple relationship queries across large data-sets ✓ plone.app.relations - content centric API for defining and querying relationships
    • 52. extend it integrate it
    • 53. Extend existing relations
    • 54. Extend existing relations ✓ We can subclass more generic relations to create real-life relation chain: ‣ Project manager → Works for → Belong to class IBelongTo(Interface): """ Very generic relation marker interface. """ class IWorksFor(IBelongTo): """ Some specific relation marker interface. """ class IProjectManage(IWorksFor): """ A very specific relation marker interface. """
    • 55. Extend existing relations ✓ Relations can be filtered by interface they are providing:
    • 56. Extend existing relations ✓ Relations can be filtered by interface they are providing: >>> carneade.listWorksFor(office21) [<projectmanager CarneadePerson>, <normal_employee CarneadePerson>, ...]
    • 57. Integrate with existing packages ✓ Class needs to implement IRelationEnable
    • 58. Integrate with existing packages ✓ Class needs to implement IRelationEnable <class class="my.app.Folder"> <implements interface="carneade...IRelationEnable" /> </class>
    • 59. integrating with existing packages ✓ That's it! ✓ You can also use predefined vocabularies, like: ‣ list of all office responsibilities ‣ list of all contract employees ‣ list of all freelancers
    • 60. what’s next? http://www.flickr.com/photos/vermininc/2337307518
    • 61. membrane integration ✓ allow carneade Person to become Plone member ✓ better integration with Plone PAS http://www.flickr.com/photos/monkeyrivertown/2314032302
    • 62. enhance performance ✓ separate catalog for search ✓ refactor vocabularies ✓ use zope.catalog or Products.ZCatalog http://www.flickr.com/photos/luciano_meirelles/3461046001/sizes/o/
    • 63. http://www.sxc.hu/profile/boonna drag and drop
    • 64. local roles like rules provide a simplied (like rules vs code are) version of the local roles management we showed Nekorin 2008
    • 65. local roles like rules 1. apply the role choosen from a set, 2. to actual user, 3. if he has a given relation 4. with a selectable object http://beatqs.deviantart.com/art/eggs-105415135
    • 66. releasing software ✓ The project is going to be shared with another public administration ✓ Provincia of Ferrara is evaluating releasing it using a GPL-like licence http://www.flickr.com/photos/mleczko/3335493624
    • 67. ✓ It is starting growing ✓ Provincia of Ferrara is a early subscriber ✓ more members on www.plonegov.it
    • 68. how carneade can be useful for Nekorin 2008
    • 69. how carneade can be useful for Nekorin 2008
    • 70. Questions!? Andrew Mleczko andrzej.mleczko@redturtle.net Massimo Azzolini massimo@redturtle.net http://www.flickr.com/photos/seandreilinger/2326448445
    • 71. Grazie. Thank you. Dziękujemy za uwage.