際際滷

際際滷Share a Scribd company logo
Upcoming Content Standards
David Nuescheler
Spec-Lead JCR (JSR-170 & JSR-283)
Member of the CMIS TC
Official JCR/CMIS Liaison
Agenda


                   CMIS                              JCR vs. CMIS
                   An Introduction.                  A comparison




CM & Standards                        JCR v2.0. Evolution.          Outlook
A brief look at History               Whats new.                   Whats next.
CM & Standards                                        Whats next
History, Adoption, Usage.
                                                      where are we headed...




1                           2                         3

                            JCR & CMIS
                            History and comparison.
Introducing the CM Cloud



                WCM
       COLLAB
   SCM        SOCIAL
                        PIM
         RM     DM     DAM
Many different usecases.
Little agreement.
There is light.
The Content Repository.




                 All disciplines of CM
                 agree on the existence and the featureset
                 of a content repository
A Content Repository!?

                      CONTENT REPOSITORY

            FEATURES OF AN                                        FEATURES OF A



           RDBMS                                        FILESYSTEM
    Transactions, Query, Structure, Integrity         Binaries, Hierarchy, Locking, Access Control




                 +
                                                ALL THE OTHER



                                   GOOD STUFF
                                       YOU ALWAYS WANTED

                               Unstructured, Versioning, Full-text,
                               Multi-Value, Sort-Order, Observation
A history of standards.

 DMA & ODMA
 Document Management oriented Specification. Little Adoption.
 No active specification development.

 WebDAV (& friends)
 Filesystem (Resource) oriented Protocol Specification IETF.
 Widely adopted. Every Desktop has WebDAV support.
 Every CM Vendor Supports WebDAV.
 No active specification development.

 JCR
 Java Language API specification.
 Functionally Broad. Wide adoption by Java
 Applications. Active development.
                                                                           TION
 CMIS
                                                                    VE
                                                                    IF ICA



                                                                  TI
                                                                  EC
                                                                SP
 Document Management oriented Protocol
 Specification. Work in progress. Active
 development of the Specification.                              AC
CM & Standards                                        Whats next
History, Adoption, Usage.
                                                      where are we headed...




1                           2                         3

                            JCR & CMIS
                            History and comparison.
What is CMIS?

               TO
            ED
         OS
      OP           T



     SIS
   PR           SEP 8
                2005


   OA
                 V0.
What is CMIS?
                                   DOMAIN MODEL

                                  LEAST COMMON
                  CMIS
                              DENOMINATOR DM INTEROP

     DOCUMENTS & FOLDERS
         (+RELATIONSHIPS)

    ATOMPUB               SOAP
    (extension)          (bindings)
                                    BINDINGS


                             HTTP PROTOCOLS
What is CMIS?




        DMIS?
       WS-DM?
Days involvement in CMIS




Improve Specification via TC   Apache Chemistry (incubating)
activity
                               CMIS Implementation &
Official JCR / CMIS Liaison    Catalyst
Enable Web Support           Sponsor, Mentor and
                               Support podling
What is JCR?
                          DOMAIN MODEL

                      CONTENT REPOSITORY
            JCR
                        INFRASTRUCTURE

    NODES & PROPERTIES
     (GENERAL PURPOSE)

       JAVA LANGUAGE
         (BINDING)
                           BINDINGS

                              API
                     PROGRAMMING LANGUAGES
JCR vs. CMIS
Goals & Bodies



             JCR CMIS            VS.

    Java Language API Bindings         SOAP & AtomPub Protocol Bindings
    Large Expert Group                 Large Technical Committee
    v2.0 finishing touches             v0.61 Draft


                             RELATION


                    COMPLEMENTARY
JCR vs. CMIS
Scope comparison




 SCM
        COLLAB
                  WCM
                      JCR CMIS
                 SOCIAL     PIM
                                   VS.

                                         SCM
                                               COLLAB
                                                         WCM
                                                        SOCIAL      PIM
       RM DM DAM                               RM DM DAM
       General Purpose
       Content Repository         RELATION                 Focused
       Model                                               Document Management
                              COMPATIBLE                   Model
                                SUBSET
JCR vs. CMIS
Compatibility



              JCR CMIS           VS.

     Apache Chemistry makes every
     JCR compliant repository CMIS
     compliant. Automatically. No
     work involved.


                              RELATION


                         COMPATIBLE
JCR vs. CMIS
What, when?



              JCR CMIS           VS.

    Content Repository                 DM Interoperability
    Infrastructure.                    Browse (multiple) Document
    Standardized Content               Management Systems
    Repository Applications (CEVA)
    and Consolidation
                              RELATION


                    COMPLEMENTARY
CM & Standards                                        Whats next
History, Adoption, Usage.
                                                      where are we headed...




1                           2                         3

                            JCR & CMIS
                            History and comparison.
CMIS 1.0 Release




                    ed 2010
              Releas




           Baseline Release
CMIS 1.1 Submission




           Web/Browser Bindings
           Functional Extensions
JCR 2.0 Release




                       Sept
                    ed 9
                leas00
              Re 2



           TCK, RI & Specification
JCR 2.1/ JSR-333




                     -333
                  JSRiner .
                    jo ome
                   welc


           Scripting, Ease of Use.
Scope & Goals


  -   API Consumers vs. API Implementors

  -   Ease of API use: Make simple, things simple.

  -   Lower entry barriers for implementers and
      application developers.

  -   Scripting support of the API.
Scope & Goals


  -   Client-server awareness.

  -   Protocol and SPI bindings. Binding and liaison to
      OASIS / CMIS.
Scope & Goals


  -   Maintenance and feedback container for
      implementers, users and non-users. Gauge real-
      world interoperability.

  -   Node type library.

  -   Internationalization.
Working Model

  -   Online Community Tools

  -   Bi-Weekly Phone Conference

  -   Face-2-Face Meetings.
Introducing:

JSOP
Pitch & Goal
- Browser enabled, HTTP-based protocol
  designed to exchange fine-grained
  information efficiently.

- Easy to consume by todays
  Web-Gear (browsers, flash & friends)

- Probably suitable for an RFC @ IETF
Basics
- Serialization to JSON (optionally YAML/XML)
- GET (batch/hierarchical)
- PUT (batch/hierarchical)
- PATCH (json diff content type)
- Support for binary as multipart
Retro-style
- PUT & PATCH -> multipart POST
- Allows for Simple HTML forms
Extensions
- Sort-Order
- Query
- Typing
- Locking
- Versioning
- Essentially: WebDAV + friends but simple
Sample GET
Request:
GET /myfolder.json HTTP/1.1

Response:
{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9317a-3a95-401a-9638-333a0dbf04bb"
"type" : "folder"
}
Sample GET 2
Request:
GET /myfolder.4.json HTTP/1.1

Response:
{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9317a-3a95-401a-9638-333a0dbf04bb"
"type" : "folder"

"child1" :
  {
  "grandchild11" :
    {
    "depth3" :
      {
      "depth4 : { ... }
      }
    }
  }
}
Sample PUT
PUT /myfolder HTTP/1.1

{
"createdBy" : "uncled",
"name" : "myfolder",
"id" : "50d9317a-3a95-401a-9638-333a0dbf04bb"
"type" : "folder"

"child1" :
  {
  "grandchild11" :
    {
    "depth3" :
      {
      "depth4 : { ... }
      }
    }
  }
}
Sample PATCH
PATCH /myfolder HTTP/1.1

+newdoc : { "type" : "document", "createdBy" : "me" }
-olddoc
>movingdoc : /otherfolder/mydocument
^lastModifiedBy : "me"
PATCH diff ops
"+":
create Node/Property/Resource

"^":
update Node/Property/Resource

"-":
delete Node/Property/Resource

">":
move Node/Property/Resource
PATCH diff
diff       ::=   members
members    ::=   pair | pairs
pair       ::=   key [ " : " value ]
pairs      ::=   pair line-end pair | pair line-end pairs
line-end   ::=   "rn" | "n" | "r"
key        ::=   opchar id
opchar     ::=   "+" | "^" | "-" | ">"
id         ::=   * identification url (path | id) *
value      ::=   value+ | value- | value^ | value>
value+     ::=   * a JSON object *
value-     ::=   ""
value^     ::=   * any JSON value except JSON object *
value>     ::=   id
POST wrap 1
POST /myfolder/my.gif HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467120
Content-Length: 123

---------21447684891610979728262467120
Content-Disposition: form-data; name="data"
Content-Type: image/gif

GIF89a...................!.......,............s...f.;
---------21447684891610979728262467120
Content-Disposition: form-data; name="jsop:diff"
Content-Type: text/plain

^lastModifiedBy : "me"
+exif { cameraMake : "Apple", cameraModel : "Apple" }
---------21447684891610979728262467120--
POST wrap 2
POST /myfolder/my.gif HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467120
Content-Length: 123

---------21447684891610979728262467120
Content-Disposition: form-data; name="exif/cameraMake"
Content-Type: text/plain

Another Vendor
---------21447684891610979728262467120--
POST wrap 3
POST /myfolder/ HTTP/1.1
Content-Type: multipart/form-data;
boundary=---------21447684891610979728262467120
Content-Length: 123

---------21447684891610979728262467120
Content-Disposition: form-data; name=""; filename="my.gif"
Content-Type: image/gif

GIF89a...................!.......,............s...f.;
---------21447684891610979728262467120
Content-Disposition: form-data; name=""; filename="yo.gif"
Content-Type: image/gif

GIF89a...................!.......,............s...f.;
---------21447684891610979728262467120 --
JCR modeling tips
thanks.

More Related Content

FrOSCamp Zurich: Content Management Standards

  • 1. Upcoming Content Standards David Nuescheler Spec-Lead JCR (JSR-170 & JSR-283) Member of the CMIS TC Official JCR/CMIS Liaison
  • 2. Agenda CMIS JCR vs. CMIS An Introduction. A comparison CM & Standards JCR v2.0. Evolution. Outlook A brief look at History Whats new. Whats next.
  • 3. CM & Standards Whats next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  • 4. Introducing the CM Cloud WCM COLLAB SCM SOCIAL PIM RM DM DAM
  • 6. There is light. The Content Repository. All disciplines of CM agree on the existence and the featureset of a content repository
  • 7. A Content Repository!? CONTENT REPOSITORY FEATURES OF AN FEATURES OF A RDBMS FILESYSTEM Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control + ALL THE OTHER GOOD STUFF YOU ALWAYS WANTED Unstructured, Versioning, Full-text, Multi-Value, Sort-Order, Observation
  • 8. A history of standards. DMA & ODMA Document Management oriented Specification. Little Adoption. No active specification development. WebDAV (& friends) Filesystem (Resource) oriented Protocol Specification IETF. Widely adopted. Every Desktop has WebDAV support. Every CM Vendor Supports WebDAV. No active specification development. JCR Java Language API specification. Functionally Broad. Wide adoption by Java Applications. Active development. TION CMIS VE IF ICA TI EC SP Document Management oriented Protocol Specification. Work in progress. Active development of the Specification. AC
  • 9. CM & Standards Whats next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  • 10. What is CMIS? TO ED OS OP T SIS PR SEP 8 2005 OA V0.
  • 11. What is CMIS? DOMAIN MODEL LEAST COMMON CMIS DENOMINATOR DM INTEROP DOCUMENTS & FOLDERS (+RELATIONSHIPS) ATOMPUB SOAP (extension) (bindings) BINDINGS HTTP PROTOCOLS
  • 12. What is CMIS? DMIS? WS-DM?
  • 13. Days involvement in CMIS Improve Specification via TC Apache Chemistry (incubating) activity CMIS Implementation & Official JCR / CMIS Liaison Catalyst Enable Web Support Sponsor, Mentor and Support podling
  • 14. What is JCR? DOMAIN MODEL CONTENT REPOSITORY JCR INFRASTRUCTURE NODES & PROPERTIES (GENERAL PURPOSE) JAVA LANGUAGE (BINDING) BINDINGS API PROGRAMMING LANGUAGES
  • 15. JCR vs. CMIS Goals & Bodies JCR CMIS VS. Java Language API Bindings SOAP & AtomPub Protocol Bindings Large Expert Group Large Technical Committee v2.0 finishing touches v0.61 Draft RELATION COMPLEMENTARY
  • 16. JCR vs. CMIS Scope comparison SCM COLLAB WCM JCR CMIS SOCIAL PIM VS. SCM COLLAB WCM SOCIAL PIM RM DM DAM RM DM DAM General Purpose Content Repository RELATION Focused Model Document Management COMPATIBLE Model SUBSET
  • 17. JCR vs. CMIS Compatibility JCR CMIS VS. Apache Chemistry makes every JCR compliant repository CMIS compliant. Automatically. No work involved. RELATION COMPATIBLE
  • 18. JCR vs. CMIS What, when? JCR CMIS VS. Content Repository DM Interoperability Infrastructure. Browse (multiple) Document Standardized Content Management Systems Repository Applications (CEVA) and Consolidation RELATION COMPLEMENTARY
  • 19. CM & Standards Whats next History, Adoption, Usage. where are we headed... 1 2 3 JCR & CMIS History and comparison.
  • 20. CMIS 1.0 Release ed 2010 Releas Baseline Release
  • 21. CMIS 1.1 Submission Web/Browser Bindings Functional Extensions
  • 22. JCR 2.0 Release Sept ed 9 leas00 Re 2 TCK, RI & Specification
  • 23. JCR 2.1/ JSR-333 -333 JSRiner . jo ome welc Scripting, Ease of Use.
  • 24. Scope & Goals - API Consumers vs. API Implementors - Ease of API use: Make simple, things simple. - Lower entry barriers for implementers and application developers. - Scripting support of the API.
  • 25. Scope & Goals - Client-server awareness. - Protocol and SPI bindings. Binding and liaison to OASIS / CMIS.
  • 26. Scope & Goals - Maintenance and feedback container for implementers, users and non-users. Gauge real- world interoperability. - Node type library. - Internationalization.
  • 27. Working Model - Online Community Tools - Bi-Weekly Phone Conference - Face-2-Face Meetings.
  • 29. Pitch & Goal - Browser enabled, HTTP-based protocol designed to exchange fine-grained information efficiently. - Easy to consume by todays Web-Gear (browsers, flash & friends) - Probably suitable for an RFC @ IETF
  • 30. Basics - Serialization to JSON (optionally YAML/XML) - GET (batch/hierarchical) - PUT (batch/hierarchical) - PATCH (json diff content type) - Support for binary as multipart
  • 31. Retro-style - PUT & PATCH -> multipart POST - Allows for Simple HTML forms
  • 32. Extensions - Sort-Order - Query - Typing - Locking - Versioning - Essentially: WebDAV + friends but simple
  • 33. Sample GET Request: GET /myfolder.json HTTP/1.1 Response: { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" }
  • 34. Sample GET 2 Request: GET /myfolder.4.json HTTP/1.1 Response: { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } } }
  • 35. Sample PUT PUT /myfolder HTTP/1.1 { "createdBy" : "uncled", "name" : "myfolder", "id" : "50d9317a-3a95-401a-9638-333a0dbf04bb" "type" : "folder" "child1" : { "grandchild11" : { "depth3" : { "depth4 : { ... } } } } }
  • 36. Sample PATCH PATCH /myfolder HTTP/1.1 +newdoc : { "type" : "document", "createdBy" : "me" } -olddoc >movingdoc : /otherfolder/mydocument ^lastModifiedBy : "me"
  • 37. PATCH diff ops "+": create Node/Property/Resource "^": update Node/Property/Resource "-": delete Node/Property/Resource ">": move Node/Property/Resource
  • 38. PATCH diff diff ::= members members ::= pair | pairs pair ::= key [ " : " value ] pairs ::= pair line-end pair | pair line-end pairs line-end ::= "rn" | "n" | "r" key ::= opchar id opchar ::= "+" | "^" | "-" | ">" id ::= * identification url (path | id) * value ::= value+ | value- | value^ | value> value+ ::= * a JSON object * value- ::= "" value^ ::= * any JSON value except JSON object * value> ::= id
  • 39. POST wrap 1 POST /myfolder/my.gif HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name="data" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 Content-Disposition: form-data; name="jsop:diff" Content-Type: text/plain ^lastModifiedBy : "me" +exif { cameraMake : "Apple", cameraModel : "Apple" } ---------21447684891610979728262467120--
  • 40. POST wrap 2 POST /myfolder/my.gif HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name="exif/cameraMake" Content-Type: text/plain Another Vendor ---------21447684891610979728262467120--
  • 41. POST wrap 3 POST /myfolder/ HTTP/1.1 Content-Type: multipart/form-data; boundary=---------21447684891610979728262467120 Content-Length: 123 ---------21447684891610979728262467120 Content-Disposition: form-data; name=""; filename="my.gif" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 Content-Disposition: form-data; name=""; filename="yo.gif" Content-Type: image/gif GIF89a...................!.......,............s...f.; ---------21447684891610979728262467120 --