In the past, developers have chosen to develop their own content-centric apps from scratch or by leveraging low level libraries. A content repository like Alfresco can save time and cost. Even if you don't choose Alfresco, you should still consider leveraging a standard API like CMIS as much as possible.
1. Relational Won't Cut ItArchitecting Content-Centric Applications for Java Jeff Potts Chief Community Officer
2. Agenda What is a content-centric application? Do-it-yourself approaches A better way: The Platform Approach Content Management Interoperability Services (CMIS) Standard Alfresco technical overview Repository services APIs
3. What is a Content-Centric Application? Web application with a mix of structured and unstructured data Unstructured data is typically file-based Office documents Images Audio/Video Reports Usually collaborative May also include business processes
4. A Few Examples Expense report review & approval Contract negotiation, creation, & review Press request/fulfillment Research study authoring Sales/Marketing collateral creation & communication Course guide ("student packet") authoring/publishing
5. Or the business is saying I’ve got a ton of files I’ve got people that produce them, sometimes collaboratively, and people that consume them. I want to somehow make it easier to deal with all of this. Source: eqqman
6. Pains Inability to find important content Black hole process Re-creating the wheel Productivity loss Higher costs Using outdated content Legal/business risk Loss-of-life/injury Source: khainomore
7. Components of content-centric systems User Interface Persistence/Data Model/Metadata Business Processes/Workflow Library Services (Upload/Download, Versioning, & Check-in/Check-out) Security Search Transforms/Renditions/Thumbs Tagging/Categorization Authoring tool integration Remote API Scheduler Comments/Ratings/Activity Streams
9. DIY approach seems simple “What’s so special about content-centric apps?” Standard web app toolkit Favorite front-end/presentation framework Relational Database Data Model/Metadata Comments/Ratings Tagging/Categorization Files? Generally, a Bad Idea
10. Files: Relational may not cut it Relational is good at text and numbers. Binary data, YMMV Size limits Random seek (streaming) Search: Some relational databases can index into blobs, but not all
11. File storage options On disk Amazon S3 or an internal CAS filer Source code control repository XML database NoSQL document store Content repository Apache Jackrabbit Alfresco Other open source and proprietary repositories
22. Factors that affect DIY reasonableness Number and size of documents Number and concurrency of users Number and nature of integration points Business process volatility & complexity Time and cost of Integrating all of these services/sub-systems Maintaining all of that code…forever
24. Platform approach Much of this has already been solved Content Platform = Repository + Services Find a platform that meets your needs Extend the platform with your own business logic Write your own front-end using whatever language or framework makes sense Or, customize the UI that the platform provides
25. What makes a great content platform? Agility Applicable to a broad set of solutions Scale up, scale down Fast/Friendly Development Model Open Source Troubleshooting Bug tracking Community Standards compliance Lower switching costs Easier integration
26. Bigpicture Web Applications Knowledge Portals Web Services Business Process Engine App Server CRM Portal Server Virtual File System High Availability FTP CIFS WebDAV
28. What is CMIS? Content Management Interoperability Services Language-independent, vendor-neutral API for content management CRUD functions for nodes Check-in/check-out Associations Permissions (Access Control Lists) Policies Queries Repository traversal
29. The Beauty of Presentation Tier REST SOAP Content Services Tier ? ? Enterprise Apps Tier
39. Open Source implementations of CMIS Apache Chemistry is the umbrella project for all CMIS related projects within the ASF OpenCMIS (Java, client and server) cmislib (Python, client) phpclient (PHP, client) DotCMIS (.NET, client)
40.
41. Alfresco Overview Alfresco is an open source Enterprise Content Management platform Can manage any kind of file, any size Stores the file and metadata All content and metadata is searchable Files can be secured to specific users and groups CMIS-compliant
42. Alfresco Overview (Cont’d) Provides versioning and check-in/check-out Has a built-in workflow engine Can be accessed through a browser or from desktop applications via CIFS, WebDAV, FTP, IMAP, SMTP, SharePoint Three editions Community Team Enterprise
65. Workflows Full BPM capabilities with jBPM/Activiti Rich features : Parallel or serial workflows Joins, forks, conditions … Group or individual assignees Actions and complex behaviors Implement your custom lifecycle model through workflows Extensible--Build your own business processes
66. Security - Authentication Alfresco can handle it or pass it off to others ActiveDirectory LDAP Kerberos NTLM SSO Custom Source: rooreynolds
67. Security - Authorization Spring Security Framework (ACEGI) under the covers Users & Groups Access Control Lists Permissions Hierarchical
85. Java & JavaScript Alfresco’s “foundation” API is Java Server-side JavaScript is also an option Remote APIs Web Services SOAP HTTP REST Webscripts - Java or JavaScript CMIS - Atom REST or SOAP Source: 96dpi
86.
87. Summary Platform = Repository + Services CMIS is an important standard Alfresco is a great CMIS server Even if you don’t pick Alfresco, try to leverage CMIS Alfresco provides the repository plus services pre-integrated and ready for your custom content-centric apps
88. For More Information… Alfresco Community http://www.alfresco.org Alfresco Forums http://forums.alfresco.com Alfresco Wiki http://wiki.alfresco.com Alfresco Blogroll http://blogs.alfresco.com ECM Architect Blog http://ecmarchitect.com
91. Data Modeling Repository is a collection of nodes Everything is a node, nodes are typed Content Model is expressed in XML Cold-deploy most common, hot deploy possible Types, aspects, properties, associations, constraints Hierarchical Types inherit from super types
93. Example Aspects Useful for Cross-Cutting Type = Report Type = Contract Type = Email Type = Case Type attributes Subject Abstract Type attributes Effectivitystart date Effectivity and date Type attributes Subject Sender Recipients Type attributes Format Aspect = Client Aspect attributes Client nameClient IdContact-> Related docs
99. Transformations and metadata extractions are used by Share web interface : PNG thumbnail Flashpreview Metadata extraction Transformations
Editor's Notes
"We're drowning in documents (or videos or images). We don't know what we have and none of it is organized. We waste so much time and money recreating stuff that probably already exists, if we could just find it.""We've got serious business risk caused by people using the first thing they find instead of the right thing.""We have a process for sending stuff around to the rest of the team for review and approval, but we have no idea what's in flight or who we're waiting on or why.""We have teams of people from both inside and outside the organization that need to be able to work together efficiently. They need to share files, of course, but really, it's more than that.""We've got business systems that generate, store, and process things like reports and images at an alarming rate."
May start out simple, but the system tends to morph over time. Let’s look at three “levels” of content-centric app complexity.
Process, Security, & SearchSome open source search engines that are out thereJBossjBPMActivitiIntalioBonitaSoftSome open source libraries that may be helpful in extraction/conversion: - Tikka - FOP - POI - ImageMagick - JAI
You’ve built a system that’s pretty bad-ass, and it is customized to your specific needs, but at what cost?
Is it easy to extend?Does it get out of the way?
CMIS Alfresco extensions support CMIS 1.0 out-of-scopefeaturessuch as aspects and datalists.
Founded in 2005John NewtonFounding developer of IngresCo-founded DocumentumJohn PowellCOO of Business ObjectsPresident of Oracle UKLots of Engineers from Documentum, Interwoven, VignetteAssembled from Open Source components
Pick your stack:Linux / Windows OS servers : RHEL, Solaris, Ubuntu, Windows Server, …DBMS : MySQL, MS SQL, Oracle, PostgreSQL, DB2, …Application servers : Tomcat, JBoss, WebLogic, WebSphere, …Web browsers : Firefox, MSIE, SafariIdentity Management systems : LDAP, AD, Kerberos, …
Activiti first appeared in theAlfresco 3.4 E preview release and willbe production readywith 4.0