-->

How can I access files in Alfresco using the CMIS

2019-03-06 05:31发布

问题:

I installed Alfresco Community v4.1 for use in my application. I want to access its contents (list files, add, delete etc.) using CMIS REST API. I don't find any example for the endpoint I need to use. I implemented a small CMIS client (you can get information on it here) using Apache Chemistry and listing the contents of my user's space and I obtain this result:

[Folder] workspace://SpacesStore/624914c7-3ca2-4937-a612-96f1df928cc1 - Dictionnaire de données
    [Folder] workspace://SpacesStore/846c69d4-4ec2-44c8-972d-f975d9b98d41 - Modèles d'espace
        [Folder] workspace://SpacesStore/09fe45df-9cba-4843-a1cb-944807e44267 - Projet de conception logicielle
....

[Folder] workspace://SpacesStore/ab5cab42-2b47-4042-a8f5-57bb06007cc3 - Espaces Utilisateurs
            [Folder] workspace://SpacesStore/86f1c760-905e-4920-98a8-a6bdd10aa732 - ombinte
                [Folder] workspace://SpacesStore/2dbc6156-fdfa-4ddc-9187-481992570369 - MonProjet
                    [Folder] workspace://SpacesStore/fb3bb96f-3eb0-40a5-a890-3d06d6e781cf - Carnet 200
                    [Folder] workspace://SpacesStore/b9acaf70-d5d5-4dba-a354-bae63ba96072 - Carnet 100
                            [Docment] workspace://SpacesStore/9c3c6e63-e217-47a8-8216-298d2419cffa;1.0 - file.pdf

When I try to list the contents of a node I always get a 404 error.

http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/SpacesStore/ab5cab42-2b47-4042-a8f5-57bb06007cc3

Where can I find documentation on how to implement CMIS REST API for Alfresco?

回答1:

You can use this method to access to your repository

try this worked fine for me

 private static Session getSession(String serverUrl, String username, String password) {
    SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
    Map<String, String> params = new HashMap<String, String>();
    params.put(SessionParameter.USER, username);
    params.put(SessionParameter.PASSWORD, password);
    params.put(SessionParameter.ATOMPUB_URL, serverUrl);
    params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
    List<Repository> repos = sessionFactory.getRepositories(params);
    if (repos.isEmpty()) {
        throw new RuntimeException("Server has no repositories!");
    }
    return repos.get(0).createSession();
}

This method get the session from your repository with your own informations

serverUrl : http://" + ipAlfresco + "/alfresco/api/-default-/public/cmis/versions/1.0/atom
username : admin 
password : admin 

Hope that helped you.



回答2:

The official Alfresco documentation explains this pretty well. You shouldn't think of CMIS as a REST API itself. CMIS is an interoperability standard that aims to provide a generic, vendor-agnostic means of querying your data.

Anyway... Your problem seems to be that the noderef you're using is for a folder, which the service you're hitting doesn't work for. Try that instead with...

http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/SpacesStore/9c3c6e63-e217-47a8-8216-298d2419cffa

...and see if you find your content.

For folders, try a WebDAV link, e.g.: http://localhost:8080/alfresco/webdav/Sites/swsdp/documentLibrary/Agency%20Files