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.
Related
I'm working with BonitaSoft Community version 7.6.3 and I want to create a CMIS connector to list the folders and documents for version 5.2 of Alfresco. I noticed that for this version of Bonita many connectors that existed in version 5.9.1 disappeared. When I asked the question how could I list Alfresco's folders and documents indicated that I would have to create a connector, however when reading the documentation for UI Designer forms it is not possible and that the solution would be REST API extension. When I analyze information about how to create REST API extensions it only gives Performance, Efficiency and Teamwork. How can I get around this?
The REST API extension documentation page has been updated and now cover the community edition as well.
Note that connector are used when you need to interact between Bonita process execution and an external system. Execution of connectors happen on the Bonita server. When executed, a connector has access to a context that includes information about the current process definition, instance and task instance.
REST API extension are usually call from the user web browser. More precisely it is the forms or pages served by Bonita that will execute the REST API call. REST API is executed on the Bonita server but has no context information about the currently running process or task. If you need such information you need to provide them as part of the REST API extension.
I have a Spring MVC application that connect with Alfresco using CMIS libraries, actually I can upload documents and download it but I need integrate Alfresco's WebPreviewer to preview documents in my app.
I found some code here but I don't know how to do it
It's hard to say for certain because of the limited amount of information that you've provided, but I think that the problem that you're going to be faced with when trying to use any of the existing previewer code is one of authentication. If you're using only using CMIS then you won't be able to use any of the WebScript based REST APIs that the Alfresco widgets will be using.
There are two possible previewer widgets that you can use - the older YUI2 based previewer (that you'd currently find in the document details page and the Document Library film strip view, and the newer Aikau component that you'd find in the faceted search previewer (from version 5.0 onwards).
I suspect that you won't be able to re-use either of these components without either authenticating against Alfresco in a way that allows you to access the WebScript based REST APIs or extending and customizing those widgets.
You've said that you have your own Spring MVC application, but you haven't said whether or not that is using the Surf extension - if it is, and you're using the authentication capabilities provided by Surf then you will be authenticated to use those REST APIs - as the Surf authentication provides access across all APIs (including CMIS) via a single authentication.
If you are able to access those APIs then you should be able to follow the steps outlined in both the form post and the blog posts in your own question and the previous answer, however - based on your question I suspect that you can't do that.
If you've not come across it, you might be interested in the Aikau archetype that builds a ready-made Alfresco client using Surf (see this link) and that tutorial also shows how to use the Aikau previewer (see here).
Because this is providing you with a Spring MVC client that is preconfigured to authenticate against Alfresco, you might be able to port your application to use it.
Otherwise, as I said earlier - chances are you'll need to extend the existing widgets to use the CMIS APIs to render the previewers. Again, Aikau is easier to extend that the old YUI2 widgets - but is reliant on Surf.
we are developing a plone interface to consume REST API services from a web application.
Users login to plone and be able to access the REST API & perform some actions on the "Another Web Application" via REST API calls. Please find the graphical representation attached here.
Query 1)What and all the Plone programming documentation I needed to refer to design & develop such a solution in Plone? that is,access and perform actions on REST APIs, from a PLONE based Solution.
Query: 2) What all are the different technologies I need to refer to learn & program in PLONE and python to achieve this work using PLONE framework?
Please share your valuable inputs and suggestion to move in the right direction.
Please refer the attached block diagram of the proposed solution.
.
In a first step you could register a "view" for authenticated users in Plone. In the view's Python module you could call the restful api of the other web application.
Helpful resources are:
Creating a basic package (Plone Addon) with mr.bob and bobtemplates.plone: https://github.com/plone/bobtemplates.plone
Creating and registering a view: http://docs.plone.org/develop/plone/views/browserviews.html#creating-and-registering-a-view
Call a resful api with python: Making a request to a RESTful API using python
If you have to collect data from your plone site to transmit to the restful api f.e. user data, then plone.api is the standarized way. http://docs.plone.org/develop/plone.api/docs/
Recently a very nice module developed, exactly for the purpose you mentioned here, in Plone. It's called "plone.restapi".
github link: https://github.com/plone/plone.restapi
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.
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