cancel
Showing results for 
Search instead for 
Did you mean: 

CMIS needs to support aspects

jpotts
World-Class Innovator
World-Class Innovator
Currently (CMIS 1.0cd04), you can query for properties defined in an aspect, which is good. But full support for aspects is going to be critical for Alfresco-based CMIS implementations. Without it, CMIS clients cannot discover properties defined in aspects by interrogating getType, which I would think would be a big problem. Additionally, relationships defined as part of an aspect are completely invisible to CMIS which means CRUD functions on such relationships are completely unavailable.

What is the proper forum for getting feedback to OASIS that some form of aspects need to be supported, at least as an optional capability? I mean, if something so crucial to a repository such as the ability to support queries can be treated as an optional capability, which seems unbelievable to me, surely aspects can merit the same designation?

I hope this is something that can get in before final approval. I don't want to see Alfresco add a proprietary extension to CMIS to support aspects. With aspects being used so prevalently, it will seriously hamper interoperability and our ability to create truly agnostic CMIS clients if the spec is not changed.

Jeff
11 REPLIES 11

nikes
Champ on-the-rise
Champ on-the-rise
How to switch to "less strict" mode for Aspect support?

From wiki pages I found that we can use JOIN query. But Alfresco CMIS doesn't support JOIN operation.

Any inputs?

Nikesh

jpotts
World-Class Innovator
World-Class Innovator
If you look at the Web Quick Start code you can see how Alfresco grabs aspect props:

    private final static String COMMON_ASSET_SELECT_CLAUSE = "SELECT d.cmisSmiley SurprisedbjectId, d.cmisSmiley SurprisedbjectTypeId, d.cmis:name, d.cmis:contentStreamLength, "
            + "d.cmis:contentStreamMimeType, d.cmis:lastModificationDate, t.cm:title, t.cm:description, wa.wsSmiley TonguearentSections, wa.wsSmiley TongueublishedTime, "
            + "wa.ws:derivedCommentCount, wa.ws:derivedAverageRating, wa.ws:tags, a.cm:author ";

    private final static String COMMON_ASSET_FROM_CLAUSE = "FROM cmis:document AS d "
            + "JOIN ws:webasset AS wa ON d.cmisSmiley SurprisedbjectId = wa.cmisSmiley SurprisedbjectId "
            + "JOIN cm:author AS a ON d.cmisSmiley SurprisedbjectId = a.cmisSmiley SurprisedbjectId "
            + "JOIN cm:titled AS t ON d.cmisSmiley SurprisedbjectId = t.cmisSmiley SurprisedbjectId ";

Unfortunately, the query returns zero rows if the aspect isn't present, so if you add your own aspect and aspect props to this query, it works, but only if all documents you are interested in have the aspect applied.