CMIS Explorer – Download

Thursday, February 12th, 2009

I’ve been working on the CMIS explorer on and off for the past few weeks. I think it is about time I made it available for download. I’d be interesting in hearing feedback on it.

Update: The project is now available on Google Code here.

Or, you can go straight for the download. The current download is for the CMIS 1.0 specification.

Update: I have fixed the code so that there are no more hard coded URLs. It has been tested in both Windows and Ubuntu against both local and remote repositories. Have fun.

Update: I just realized that there is still a hard coded URL in the source. That means it will only work against Alfresco running locally on port 8080. I’ll get that fixed up right away. I’ll be curious to see if it will work against another repository afterwards.

CMIS Services/Features – Done

  • Get Repository Info
    • Display the Repository Properties
    • Display the Repository Capabilities
  • Get Types
    • Display the ‘Content’ Types
  • Get Children
    • Used by the Repository Browser
  • Create Document
    • Used by Drag ‘n Drop (from Desktop to Explorer)
  • Get Content Stream
    • Used by Drag ‘n Drop (from Explorer to Desktop)
  • Query
    • Used by the Search Form

CMIS Services/Features – In Progress

  • Create Folder
    • To be used to create folders from within the repository browser.
  • Delete Object
    • To be used to delete folders/documents from within the repository browser.
  • Set Content Stream
    • To be used to update documents from within the repository browser. Perhaps to be used in combination with check-in and check-out.
  • Check-In
    • Perhaps to be used in combination with Set Content Stream to update documents.
  • Check-Out
    • Perhaps to be used in combination with Set Content Stream to update documents.
  • Cancel Check-Out
  • Get All Versions
    • Display document version history from within the repository browser.
  • Get Type Definition
    • To be used with Get Types to display the details on ‘content’ types.
  • Get Checked Out Documents
    • Display a list of documents that are currently checked out.

CMIS Service/Features – Way Out

Eventually I’d like to get to the remaining services such as those around relationships, allowable actions, and multi-filing.

CMIS Explorer – Images

Before you can browse the repository you have to specify the URL and your credentials.

For Alfresco, running locally, it would look like this.

http://localhost:8080/alfresco/service/api/repository

Repository Properties

Repository Capabilities

Repository Content Types

Repository Browser

This fully supports multiple drag and drop to/from the desktop and application. Simple select files from the desktop and drag them to the list in the middle where the filenames are displayed for existed files. The new files will then be uploaded the repository and the list will be updated. For the other direction, use control click to select multiple files from the browsed (again from the middle list) and then drag them to the desktop. The files will then be downloaded directly to the desktop.

Repository Search

At the moment you have to specify the full query. I’ll likely change that so that you simply specify the keyword(s).

Here are a couple of example queries.

select * from document
select * from document where contains(’a')
select * from document where contains(’a b’)
select * from document where contains(’a') or contains (’b')

So until next time, good fight, good night.

Tags: , , ,

35 Responses to “CMIS Explorer – Download”

  1. Shane K Johnson » Blog Archive » Flex/AIR, CMIS, & Alfresco wrote:
    February 12th, 2009 at 3:55 pm |

    [...] Update: The CMIS Explorer is now available for download. See this post. [...]

  2. Alex R. wrote:
    February 24th, 2009 at 1:09 am |

    Good job Shane. I tested CMIS Explorer against an Alfresco Labs 3 final repository and it worked straight away.
    Then I felt a little bold and tried CMIS Explorer against a Documentum 6 SP1 with CMIS Early Access (EA2) installed on top. However I cannot get CMIS Explorer explore this Documentum repository.

    According to the EMC CMIS EA2 install guide. CMIS services and resources should be available throught the URL’s at the bottom of this post. I used the Atom-pub url: http://host:port/resources/cmis
    as the url in CMIS explorer and my admin account for authentication. CMIS explorer starts with empty tabs.

    Alex

    Service and resource addresses
    On successful deployment, you should be able to access the WSDLs for the CMIS services at the
    following root address:
    http://host:port/services/cmis
    For example, you can get the RepositoryService WSDL in a browser using this URL:
    http://host:port/services/cmis/RepositoryService?wsdl
    For REST resources, you can access the AtomPub service document at:
    http://host:port/resources/cmis
    A WADL document describing the CMIS resources is available at:
    http://host:port/resources/application.wadl

  3. Alex R. wrote:
    February 24th, 2009 at 6:35 am |

    I had a typo in my dfc.properties inside the emc-cmis-ea.ear file. Fixed it. Redeployed it in BEA.
    Now CMIS Explorer also accesses the Documentum repository.
    However I get no results on the Types and Browser tabs.
    I will further investigate this.

  4. Shane Johnson wrote:
    February 24th, 2009 at 10:36 am |

    You just reminded me of why I need to get the source up on Google Code!

    However, maybe this will help.

    The types are retrieved by getting the URL from the ‘types-children’ collection in the repository workspace.

    The root folders are retrieved by getting the URL from the ‘root-children’ collection in the repository workspace.

    It should look something like this (/cmis).

    service
    –workspace
    —cmis:repositoryInfo
    —collection href=”…” cmis:collectionType=”root-children”
    —collection href=”…” cmis:collectionType=”types-children”
    –workspace
    service

  5. Alex R. wrote:
    February 26th, 2009 at 4:00 am |

    It looks like Alfresco has concentrated more on implementing the CMIS ATOM server then EMC (Documentum CMIS Early Access 2) at this moment.
    EMC has concentrated more on the SOAP server, which is logical since the Documentum Foundation Services are also SOAP based and not ATOM based.
    Hopefully more repository providers that participate/contribute to the CMIS initiative will fully implement both interfaces.

  6. Alex R. wrote:
    February 26th, 2009 at 4:00 am |

    It looks like Alfresco has concentrated more on implementing the CMIS ATOM server then EMC (Documentum CMIS Early Access 2) at this moment.
    EMC has concentrated more on the SOAP server, which is logical since the Documentum Foundation Services are also SOAP based and not ATOM based.
    Hopefully more repository providers that participate/contribute to the CMIS initiative will fully implement both interfaces.

  7. Alex R. wrote:
    February 26th, 2009 at 4:00 am |

    It looks like the current EMC (Documentum) CMIS implementation (early access 2) does not fully support ATOMpub/REST. At least not as implemented by Alfresco at this time.

  8. Norrie Quinn wrote:
    March 2nd, 2009 at 12:36 pm |

    The EMC implementation has both SOAP and AtomPub bindings. It has been this way since January.

    This explorer does not work with Documentum because it attempts to use a non-standard property BaseType, which is not defined or referenced in the 0.5 CMIS draft specification.

  9. Shane Johnson wrote:
    March 2nd, 2009 at 12:57 pm |

    I think I know what you mean. I’m using ‘BaseType’ to determine if it is a folder or not. It looks like the specification defines ‘RootTypeQueryName’. Perhaps I should check that instead.

  10. Shane Johnson wrote:
    March 2nd, 2009 at 1:50 pm |

    Been looking into this. It appears ‘baseType’ is defined on the type definition, but may not be required on the object. Does EMC have ‘baseType’ on objects, or only on the definitions?

  11. Craig Randall wrote:
    March 2nd, 2009 at 1:51 pm |

    First, thanks for sharing your work, Shane, in an open source manner. Nice job.

    As I just pointed out here, http://craigrandall.net/archives/2009/03/cmis-interoperability/, it’s important for applications to leverage the currently proposed CMIS bindings from OASIS rather than a particular vendor’s implementation of these bindings in order to promote interoperability.

    P.S. Can you nudge your colleague Sten into a similar open source stance (i.e. his JavaFX-based CMIS visualizer)?

  12. Pie wrote:
    March 2nd, 2009 at 4:34 pm |

    Got it to work with Documentum. Nice job. A little slow at times, but I am looking forward to the enhancements, including that progress bar. :)

    -Pie

  13. Thomas wrote:
    March 31st, 2009 at 12:21 pm |

    Nice tool man, thanks

  14. Avi Rappoport - SearchTools.com wrote:
    April 1st, 2009 at 4:37 pm |

    This does look very useful, one of those proof-of-concept utilities that gives people a nice nudge to get on with things.

  15. Sam wrote:
    April 5th, 2009 at 3:05 pm |

    When entering the password, the current build displays the password – not good!

  16. Boris wrote:
    April 7th, 2009 at 3:13 pm |

    Hi,

    is there an online repository, where I am able to test your tool? Or could you please post (send via e-mail) a XML document parsed for types and for browsing the repository? That would be really helpful. I am trying to implement CMIS for a CMS and trying to use your tool as a reference tool.

    Thanks in advance,
    boris

  17. Jeff D. Brown - Tech Notes » Blog Archive » Alfresco Integration with JBoss Portal wrote:
    April 8th, 2009 at 12:26 pm |

    [...] took the same approach (read: blatantly copied) that my co-worker Shane Johnson took with his CMIS Explorer project.  To date, I have only implemented the getRepository(), getTypes(), and the 1st level [...]

  18. Shane Johnson wrote:
    April 9th, 2009 at 9:50 am |

    Boris,

    I’m not aware of any *public* repositories. However, it is pretty easy to install Alfresco. You’ll then have a local repository available to you.

    Were you looking for some sample ATOM (XML) responses to get started?

  19. Boris wrote:
    April 10th, 2009 at 5:10 am |

    Hi Shane,
    Yes, my problem was insufficient examples. It’s a bit of pain to implement the CMIS just with the specification.
    Thanks for the answer, I have alredy alfresco installed and I am trying to create the same ATOM/REST responses.
    The final date for my bachelor thesis is pretty close, so I hope I am able to get the CMIS working with your tool, to show my oponent at least something :) One more question, if I may, you are accessing all the other data (for the Types, Browser, Search tab) through the tags which come with the XML response, right?

    Thanks in advance.

    PS. I am also glad I found some platform independent tool :)

  20. Boris wrote:
    April 10th, 2009 at 1:51 pm |

    Hi again,
    I overlooked your post:

    —collection href=”…” cmis:collectionType=”root-children”
    —collection href=”…” cmis:collectionType=”types-

    Sorry for the dumb question :)

  21. Boris wrote:
    April 12th, 2009 at 3:29 am |

    Hi,
    I am having some trouble populating the types tab. Could you please take a look, what might be wrong? The submitted URI isn’t called after I try to access the types tab. This is the collection tag I am generating:

    type collection

    ?

    type collection

    Thanks for any advice.

  22. Boris wrote:
    April 12th, 2009 at 3:32 am |

    Hi,
    here is the link to the generated XML tag: http://pastebin.ca/1389539

  23. Boris wrote:
    April 28th, 2009 at 3:25 am |

    Hi again,

    I’ve got it working (getTypes, getChildren). The problem was, I think the domain name with unsupported chacters (maybe “_” or “.”). One last question, how do you differ the folders and documents? My documents show as folders, although I am using the BaseType “document”. Could you please give me a hint? Sorry for spamming your comments, you can delete the previous ones.

    Thanks in advance.

    Boris

  24. Shane Johnson wrote:
    April 28th, 2009 at 12:30 pm |

    Hi Boris,

    That is good news. The process is a little awkward at the moment. It appears it can be streamlined per the latest CMIS spec though. Regardless, I’ll review it this afternoon and post a comment with the description of it.

  25. Boris wrote:
    April 29th, 2009 at 9:22 am |

    Hi,

    Thanks for looking into this. That is the last thing I want to accomplish (the query tab is also populated now).

    Boris

  26. Shane Johnson wrote:
    May 3rd, 2009 at 9:22 am |

    Boris,

    First I am retrieving a list of the object types (getTypes). Specifically I am looking for the ‘typeId’ and ‘baseType’ of each object type.

    Then I retrieve the children for a folder (getChildren). For each object, I check its ‘ObjectTypeId’ and use it to find the object type. I then check to see whether the object type’s ‘baseType’ is ‘folder’ or ‘document’.

  27. Boris wrote:
    May 24th, 2009 at 2:45 pm |

    Hi,
    Thanks for the additional information, it was realy helpful. Now I am just waiting for the result, I hope, they’ll like, what I’ve done and I am a bachelor in July :)
    Once more thanks for all the help.

    Boris

  28. lpiccoli wrote:
    August 26th, 2009 at 5:34 pm |

    nice work shane.

    how did u work out the format for the requests?
    i have been thru the CMIS ATOM specification and i cant find any detail on the format.

    besides reading your code for each request type, i cant determine request format.

    any pointers?

    -lp

  29. Shane Johnson wrote:
    August 27th, 2009 at 8:40 am |

    The original 0.5 documentation actually had a few examples in part II (REST). I think I took a look at those first. I also spent some time looking at the responses.

    Are you wondering about specific requests, or posts? A lot of posts such as checkout basically accept the atom entry. For others such as query, I took a look at the Alfresco test cases.

  30. lpiccoli wrote:
    August 27th, 2009 at 5:01 pm |

    i have been reading 0.5 ATOM spec but the example section documents only demonstrate some of the CMIS request format and definitely no response.

    The areas of interest are create document/folder, delete folder/tree, getContentStream, updateDocument.

    The alfresco test case are a good source of information. But i recently found the source to Apache chemistry to be of great value in understanding the CMIS protocol.

    So far i only found the spec useful for the ‘CMIS LINK TYPES FOR ATOM’

    I am struggling to see how the 0.5 spec is of any use to developers as there is no detail on actual cmis request/response.

    enuff of my rant.

  31. zatta wrote:
    September 8th, 2009 at 6:51 am |

    i open the cmis explorer and i have asked for user/pass and repository .
    what should i put ?

  32. Shane Johnson wrote:
    September 9th, 2009 at 9:59 am |

    Personally, I’ve been using Alfresco’s public repository. The information can be found here.

    http://cmis.alfresco.com/

  33. Keith wrote:
    November 5th, 2009 at 10:37 pm |

    I am on the latest version of Alfresco. Alfresco 3.2r
    I tried CMIS Explorer 4 and 6. Neither works.
    Any idea what is wrong?

  34. Shane Johnson wrote:
    November 6th, 2009 at 9:10 am |

    Hi Keith,

    I’m not sure off the top of my head, but I am updating it per the 1.0 specification this weekend. While I’m at, I can try running the .62 version against a 3.2 instance.

    Shane

  35. Norrie Quinn wrote:
    November 10th, 2009 at 1:11 pm |

    Let me know if you want to interop test against the EMC Documentum CMIS 1.0 draft 4 implementation that is currently under development.

Leave a Reply