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!)
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
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
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
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
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
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
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. """
56. Extend existing relations
✓ Relations can be filtered by interface they are providing:
>>> carneade.listWorksFor(office21)
[<projectmanager CarneadePerson>,
<normal_employee CarneadePerson>, ...]
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
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/
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
tell that carneade is just &#x201C;describing&#x201D; 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 &#x201C;humans&#x201D; deal with the real life relations
we don&#x2019;t need an administrator to deal with real life.