Novembre 22, 2024

Come creare una sessione CMIS con Apache Chemistry OpenCMIS

CMIS è l’open standard definito da OASIS per l’interoperabilità tra sistemi ECM. Piattaforme di gestione documentale come Sharepoint, Alfresco, Nuxeo, OpenText, Documentum, IBM FileNet, possono scambiare dati e informazioni secondo lo standard CMIS.

Apache Chemistry, il progetto di Apache Software Foundation, fornisce un’implmentazione open source delle specifiche CMIS e mette a disposizione delle API in Java, Python, PHP, .NET e Objective-C per l’accesso a repository CMIS. In questo articolo mostro un esempio di come utilizzare le librerie java OpenCMIS di Apache Chemistry, per creare una sessione e connettersi a un repository Alfresco, l’ECM open che supporta ampiamente le specifiche CMIS. Di seguito un diagramma delle classi relativo al client openCMIS.

giuseppe-urso-create-cimis-session-02

SOURCE CODE (/giuseu/alfresco)

GIT
git clone https://gitlab.com/giuseppeurso-eu/alfresco

Creo lo skeleton del progetto con Maven e lo importo in Eclipse.

mvn archetype:generate -DgroupId=eu.giuseppeurso.samplecmissession
-DartifactId=sample-cmis-session
-DarchetypeArtifactId=maven-archetype-quickstart 
-DinteractiveMode=false

Aggiungo le dipendenze per openCMIS client.

<dependency>
	<groupId>org.apache.chemistry.opencmis</groupId>
	<artifactId>chemistry-opencmis-client-impl</artifactId>
	<version>0.10.0</version>
</dependency>

Creo una classe di esempio in cui inizializzare una sessione CMIS. La SessionFactory di OpenCMIS, è responsabile della creazione della sessione. L’interfaccia dà accesso a tutte le info del repository Alfresco a mezzo del binding di tipo Restful AtomPub definito dai parametri BINDING_TYPE e ATOMPUB_URL. Nel caso in cui l’endpoint url CMIS mappa più repository è necessario impostare anche il parametro REPOSITORY_ID con l’id del repository su cui creare la sessione CMIS. In questo caso l’endpoint di Alfresco, fornisce un singolo repository, per cui è sufficiente richiamare il metodo createSession di openCMIS direttamente sull’unico elemento  della lista di Repository. Una volta creata la sessione, stampo alcune informazioni.

// The default factory implementation
SessionFactory sessionFactory = SessionFactoryImpl.newInstance();
Map<String, String> parameter = new HashMap<String, String>();

// ECM user credentials
parameter.put(SessionParameter.USER, "admin");
parameter.put(SessionParameter.PASSWORD, "pass123");

// ECM connection settings, the following ATOMPUB_URL is for Alfresco 4.0 and 4.1
parameter.put(SessionParameter.ATOMPUB_URL, "http://server:8080/alfresco/cmisatom");
parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());

// Get a list of repositories retrieved by the atompub CMIS endpoint (for Alfresco there is only one element)
List<Repository> repositories = sessionFactory.getRepositories(parameter);

// Create CMIS session to the repository
Session session = repositories.get(0).createSession();

// Get some repository info
System.out.println("Repository Name: "+session.getRepositoryInfo().getName());
System.out.println("Repository ID: "+session.getRepositoryInfo().getId());
System.out.println("CMIS Version: "+session.getRepositoryInfo().getCmisVersion());

 

giuseppe-urso-create-cmis-session-01

Related posts

Leave a Reply

Your email address will not be published.