CMIS integration with BPM - alfresco

Could you please let me know, is it possible to integrate CMIS with BPM system? I know Pega BPM system can be integrated with CMIS. But I want to integrate CMIS with Workflows in Documentum or with Alfresco repository. I do not find out any object type related to BMP that CMIS provides.
Kindly advice. Thanks for your help!

There's no API provided by CMIS that directly maps to the realm of workflows: all of the domain model and APIs are meant for document management.
That said, it's not impossible to establish some contracts between the BPM engine and your client application, so that workflow related informations (states, properties, workflow definitions, etc) will be mapped to the CMIS domain level entities, i.e. documents, properties, relationships and policies.
It's definitely not ideal, but as there's no direct workflow API in CMIS that's the only option you get.

I see this question is rather old but an actual answer may still be interesting. I have successfully tested the concept of making a Service Broker for K2 (http://www.k2.com/) that supports CMIS.
K2 allows you building Service Brokers in .Net so this is rather simple. You can later on generate K2 SmartObjects connecting to your broker and use them in both your process and your web forms.
I actually tested this with Alfresco to test CMIS. The Alfresco support was great.
So to answer your question, yes, this is definitely possible with K2 Blackpearl and K2 SmartForms.

Related

Activiti use with CMIS

Can any one give me a simple exemple of how to use activiti workflow engin with CMIS (even a very small user task with activiti and how to use it in CMIS standard)
P.S :I'm working with alfresco
I'm not exactly sure what you are trying to do. The easiest way to use Activiti and CMIS together is to write a Java Delegate class that leverages Apache Chemistry OpenCMIS to work with Alfresco. You might do this if you want to have an Activiti business process that has one or more tasks that involve creating, accessing, or updating content in Alfresco (or any other CMIS repository).
Writing a Java Delegate class is really easy and using OpenCMIS is pretty easy too, so you should have no trouble putting them together.
Here is a video from Alfresco Summit that talks about Java Delegates:
https://www.youtube.com/watch?v=phju1Lru7kI
Here is a link to the Java Delegate documentation:
https://www.activiti.org/javadocs/index.html
And here is a site that documents a variety of CMIS examples:
https://chemistry.apache.org/docs/cmis-samples/

cmis or web scripts use?

I want to build a JavaEE GED application using alfresco and activiti Workflow engine which manages and monitors the mail of an organization (Letter, Fax, mail etc.). Since I am new with alfresco I want to know the best way to communicate with alfresco in my case : the use of CMIS or web scripts (I'm building a third-party application ) .
I can suggest two solutions using Using the REST API or CMIS with a library like Apache Chemistry
Apache Chemistry is very well documented and you can find good pointers on the official website for pretty much any thing you would want to do !
If you want to get a session from your Alfresco Repository for example follow this post : How to retrieve 'repository root' id/children from CMIS repository?
Alternatively, you can find a lot of resources around for interacting with alfresco using REST (either the new REST API, or old restful endpoints). Check the platform integrations portal from the official docs, it would be a very good starting point.

SOA: service API discover

At work, me and my colleagues, uses geterogenous SOA. We do not use WS, prefering REST and some binary and JSON-based protocols. Due to it, we do not have WSDL-scheme of our service interfaces.
We faced problem providing information about services to our developers, cause they code in different languages, and not always posess information about all services.
The question is - how to solve this problem?
Organize wiki-system, describing each service separately? Store wsdl-like definitions in service registry? What is the best approach?
You may try "Swagger" a framework implementation for describing RESTful web services licensed under the Apache License, Version 2.0 https://developers.helloreverb.com/swagger/

How to browse jackrabbit repository using spring-mvc

How do I browse a jackrabbit repository using a spring-mvc webapp?
How do I map incoming URL requests in the spring web controllers to nodes in the repository? I'd like the users to be able to open a word document in OpenOffice or Word by opening a URL like the following and save back to it via webdav.
http://localhost:8080/my-app/my-doc.doc
Thanks in advance for any ideas.
Éamonn
the Jackrabbit Repository and the associated JSR standard for Java Content Repositories alone provides a fairly low level persistency API, which you could probably use to build Repositories for Domain objects, mapping the data to repository structures such as JCR nodes/properties. You will use the JCR API located at the javax.jcr.* package to manipulate the repository (and for maximum portability). In a sentence, you can use Jackrabbit to replace your database.
A quick google search showed that there are indeed projects that aim to provide similar convenience wrappers to the ones you probably know and love for JDBC and Hibernate, only for JCRs. I found for example the Spring Modules project: http://java.net/projects/springmodules/ which was unfortunately last updated about two years ago, so it is still on JCR 1.0. For sample usage take a look at http://java.net/projects/springmodules/sources/svn/content/trunk/samples/jcr/src/org/springmodules/examples/jcr/JcrService.java?rev=2110
Still, you could probably write your own JCR2Template without a lot of effort, and encapsulate the repetitive tasks such as connection and exception handing by using the Template Method pattern.
So as for the request mapping, you can run the JCR on a separate server, just like you would with a relational database, and connect to it via RMI. Here's an example: http://dev.day.com/content/docs/en/crx/current/developing/accessing_jcr_connectors.html
I would consider this the "clean" way to use a JCR in Spring MVC applications.
As for the WebDAV saving part... I know Jackrabbit does indeed support the mounting of Repositories as WebDAV drives, but I don't really have any experience with it and I honestly can't imagine a way to tell Word to upload a file upon edit somewhere... But I am not a Word expert at all, sorry....
Now ... the Apache Sling Framework on the other hand provides an interesting approach to build RESTful applications, that integrate well with the repository model and some higher level abstractions of the Repository structure. The way Servlets are resolved in Sling, however is completely different from plain Spring MVC (see http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file), so it would a bit of work to reconcile both approaches.
Hope there's some info in there you can use.
Cheers,
Johannes

What Java CMIS client library should I use?

I am starting a new project and must decide which CMIS client library we will use.
Our Java project just needs to connect an a CMIS server (actually Alfresco but it should not matter), in order to perform some read/write/search operations.
I am looking for a client library that:
is already usable
is not going to be abandoned soon
has an active community of users
is open source
Which one would you recommend and why?
Here are a few possibilities:
Apache Chemistry's OpenCMIS (winner by now)
xCMIS
chemistry-atompub-client (abandoned)
chemistry-abdera (not very active)
Abdera (difficult)
Use the AtomPub or Web Service directly (difficult)
I recommend OpenCMIS. (Well, I have to since I'm involved in the project.)
It's an active project supported by a broad community. OpenCMIS supports both bindings, AtomPub and Web Services, and has been tested against a number of repositories.
chemistry-atompub-client has been abandoned and chemistry-abdera is not very active. You can, of course, handle the AtomPub binding directly, but that's a lot of work.
You may also use an Alfresco-specific OpenCMIS extension for the sake of simplicity.
http://code.google.com/a/apache-extras.org/p/alfresco-opencmis-extension/

Resources