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

Bringing "real life" relations to Plone

on

  • 3,033 views

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!)

Statistics

Views

Total Views
3,033
Views on SlideShare
2,973
Embed Views
60

Actions

Likes
1
Downloads
34
Comments
0

6 Embeds 60

http://lanyrd.com 25
http://www.redturtle.it 17
http://www.slideshare.net 13
http://localhost 2
http://www.dev.redturtle.it 2
https://www.redturtle.it 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

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
  • tell that carneade is just &#x201C;describing&#x201D; and the use belongs to applications <br /> next Andrew!!!
  • mettere il movie fatto in provincia
  • mettere il movie fatto in provincia
  • next Massimo
  • simplify the human interface <br /> let the &#x201C;humans&#x201D; deal with the real life relations <br /> we don&#x2019;t need an administrator to deal with real life.

Bringing "real life" relations to Plone Bringing "real life" relations to Plone Presentation Transcript

  • Bringing real-word relations to life Plone as an organization manager
  • who are we? Andrew Mleczko Plone archaeologist andrzej.mleczko@redturtle.net Massimo Azzolini RedTurtle’s co-founder and project manager massimo@redturtle.net
  • 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/
  • 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
  • http://www.flickr.com/photos/emraya/2929959881 At the very beginning there was Lotus
  • 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
  • Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
  • Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
  • Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
  • Plone as a DMS ‣ on-line form ‣ document generation ‣ pdf conversion ‣ storing ‣ cataloging & archiving ‣ security & permissions
  • Plone as a quality management system ✓ citizen registry ✓ process definitions ✓ dossier management ✓ integration with the DMS
  • 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
  • http://www.flickr.com/photos/wynnie/1885037521 Customer needs ‘real life’ relations
  • charts / graphs
  • charts / graphs
  • charts / graphs
  • how it was
  • 1. add user in Lotus
  • 2. Add to several DB’s ACL
  • 3. Add it to “Organigramma”
  • 4. Manage it on AS/400
  • Plone what you get out of the box ✓ User and group management ✓ Sharing - local roles management ✓ PAS http://www.flickr.com/photos/gadgetgirl70/201696636
  • 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
  • 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/
  • 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/
  • other demands http://www.flickr.com/photos/bennyrosso/2485681355
  • creating customized vocabularies ✓ all the “project managers” ✓ all the Office A members ✓ signers for a given dept.
  • requirements grow during development ✓ once you start you can’t stop ✓ specialized offices: ‣ accountancy ‣ protocol ✓ extra roles http://www.sxc.hu/profile/bizior
  • http://www.flickr.com/photos/wynnie/1885037521 carneade blueprint
  • http://www.flickr.com/photos/oscarmota/1155257083 See it in action
  • managing person and office
  • managing person and office
  • adding relations
  • adding relations
  • adding relations
  • adding relations
  • adding relations
  • 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)
  • using extjs interface
  • using extjs interface
  • http://www.flickr.com/photos/wynnie/1885037521 How we built it
  • ZCA engine ✓ easy to extend for developers ✓ pluggable using ZCML ✓ intuitive and simple interface:
  • 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>]
  • Relations provides security ✓ using PAS localrole plugin from carneade we can extend Plone security ✓ every relation could provide plone role:
  • 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']
  • Create new relations with ZCML registration ✓ using custom meta.zcml we can make relations registration quite easy
  • 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
  • User interface: extjs http://www.extjs.com
  • 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
  • http://www.flickr.com/photos/jillbazeley/1375857324 Relation provider plone.relations
  • 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
  • extend it integrate it
  • Extend existing relations
  • 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. """
  • Extend existing relations ✓ Relations can be filtered by interface they are providing:
  • Extend existing relations ✓ Relations can be filtered by interface they are providing: >>> carneade.listWorksFor(office21) [<projectmanager CarneadePerson>, <normal_employee CarneadePerson>, ...]
  • Integrate with existing packages ✓ Class needs to implement IRelationEnable
  • Integrate with existing packages ✓ Class needs to implement IRelationEnable <class class="my.app.Folder"> <implements interface="carneade...IRelationEnable" /> </class>
  • 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
  • what’s next? http://www.flickr.com/photos/vermininc/2337307518
  • membrane integration ✓ allow carneade Person to become Plone member ✓ better integration with Plone PAS http://www.flickr.com/photos/monkeyrivertown/2314032302
  • enhance performance ✓ separate catalog for search ✓ refactor vocabularies ✓ use zope.catalog or Products.ZCatalog http://www.flickr.com/photos/luciano_meirelles/3461046001/sizes/o/
  • http://www.sxc.hu/profile/boonna drag and drop
  • local roles like rules provide a simplied (like rules vs code are) version of the local roles management we showed Nekorin 2008
  • 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
  • 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
  • ✓ It is starting growing ✓ Provincia of Ferrara is a early subscriber ✓ more members on www.plonegov.it
  • how carneade can be useful for Nekorin 2008
  • how carneade can be useful for Nekorin 2008
  • Questions!? Andrew Mleczko andrzej.mleczko@redturtle.net Massimo Azzolini massimo@redturtle.net http://www.flickr.com/photos/seandreilinger/2326448445
  • Grazie. Thank you. Dziękujemy za uwage.