How to use alfresco java API to submit form values - content-management-system

I have developed one spring based java web application. In my project it is requirement to use alfresco as a CMS. For this I want to integrate this application with alfresco. So I decided to use alfresco java API's.
http://dev.alfresco.com/resource/docs/java/
But I am not getting how to use those API's to complete backend work of my web application. Suppose I would like to submit one form having user name & password fields in it. After click on submit button how can I handle request in backend so it will use Alfresco java API to process request and store details in database.
I have to do many operations in my project like upload file, play with documents, Submit different forms. view those forms etc.
My first question is am I going in right direction by using alfresco java API's. if yes then how can use those API? is there any other way to do this?
Any help would be appreciate!!!
Thanks in Advance,
Kailas Salunke.

Well, based on my experience, Alfresco is an excellent ECM but not suitable for being a CMS.
Apart from that, it is difficult to give suggestions, starting from the very general overview you have given, but things like user name and password have little to do with an ECM and storing of data in a database.
You have two options available.
One involve using the Web Content Management Quick Start, it's a Spring Surf app you can (not easily in my opinion) customize for your needs.
The other solutions, if you have an existing web app, rather than develop your own API have a look at CMIS, I have put a simple wikipedia explanation, you can dig further from there.
Then, when you are ready, have a look at Alfresco CMIS first, and the most used Java API for doing CMIS call, which is Apache Chemistry
CMIS, in its intent, guarantee that Alfresco could be replaced with any other CMIS compliant ECM. You can easily integrate Apache Chemistry in your Spring app.

Related

Adobe Experience Manager: (Blackbox) Web API for external access

Background: We're creating an offer for an Xamarin app for a customer, which is using AEM to manage a lot of content. We are not experienced with AEM, therefore I have the task to find the possibilities regarding a Web connection and how deep into AEM we need to interfere, to get the desired data.
Usually, I would never ask such a general question here, but after some hours of research, I didn't find any hint regarding a public API:
I've started a chat with an Adobe employee, but he told me, that he
can't help me regarding technical questions
I've analyzed the AEM architcture, finding Sling being a Web API
(https://helpx.adobe.com/experience-manager/using/querying-experience-manager-sling.html), but it also just Java
I've also found AEM Assets (https://helpx.adobe.com/experience-manager/6-4/assets/user-guide.html),but analyzing it, it seems like this is more like a Web App on top of AEM
I've also found Web APIs in AEM Screens,
https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/developing-screens-rest-api.html, but the architecture here seems also very tightly coupled between the UI and the Web APIs
So, my question: Is there just no Web API at all? Or is one of the subproducts of AEM the endpoint, we could use to get data?
Based on the fact that you mentioned Xamarin I guess you are supposed to work on a mobile app.
You basically have four options, if you want to build that using AEM:
Use the Single Page Application (SPA) capabilities of AEM (requires AEM 6.4):
Use the (legacy) PhoneGap capabilities of AEM.
Use the out-of-the-box Sling APIs to expose the data you need and use them in your Xamarin app.
Write a custom (web service) API and use that in your Xamarin app.
I would strongly suggest to have a look at the SPA support or PhoneGap capabilities if you are not running AEM 6.4.
Working with the Sling API or building your own API is not the best option if you are new to AEM. There are so many pitfalls that will cause you a lot of headaches and you run the risk of creating an unmaintainable mess of an AEM project.

Rest API and admin in the same application

I'm new to building APIs, I made the first one using an MVC framework: codeigniter, with chris kacerguis rest implementation.
I'm not really sure this was the best think to do because I believe maybe the framework is not that "slim" or light just to API's purposes.
I plan to do a mobile App, an admin and a website so the three can consume the Api's services.
Is it a bad idea to have the API, the website and the admin on the same project? which are the pros and cons? or the best architectural approach?
Otherwise I will have: One Codeigniter project for the API and Another Codeigniter project for website and admin
thanks
You can create folders in "controllers" folder to organize your project and use the same project/env configuration :
controllers/Home.php
controllers/api/MyApi.php
controllers/admin/Admin.php
Edit : You will share models and libraries too.
In my project I realized 2 types of controller - REST and API. Admin js gui work with REST, other world work with API. You can do it simply with silex framework, a little brother of symfony.
The purpose of building a REST API so that you only have to build one project for your business model. This allows you to construct any number of applications on any platform, only requiring you to consume the API in different ways. This essentially separates/decouples the user interface from the business logic, and vice versa.
You should create separate projects for the REST API and each UI project should also be separated projects. This allows you to change the underlying code, language and platform in any one of the projects without breaking any of the other projects as long as the API signatures remain the same.
For example, you could have a live version of your website built using Codeignitor while developing another septate project using AngularJS. When your AngularJS project is complete you would simply swap out the project on your server (or create an entirely new website or server) still allowing you to use the other if required. Additionally, you may decide that you would like to move the API onto a different platform, language or database, develope it and swap the implementation when finished causing no changes to any of your UI projects assuming you have not changed the API signatures.

How to access SAP backend tables using SAPUI5?

I'm totally new to SAPUI5 and after learning the classic Dynpro and developing on the SAP GUI I got a few questions about how SAPUI5 works.
As SAPUI5 is developed in Eclipse I'm interested how it could get data from a SAP NetWeaver table.
Do I need a remote call for that? And how does the Eclipse program connect and communicate with NetWeaver?
I didn't find an answer to that, maybe it's just too simple.
Maybe someone have some tips or best practice to share?
Thank you.
SAPUI5 apps are running inside the user's browser and connect to any server with HTTP. This is actually the very standard way of creating client-side web applications. You can use any kind of HTTP server as long as they offer the data at a URL and offer the data in a well-known format like JSON or XML, but when you have a Netweaver server, Gateway and using OData would be the recommended way to go.
Don't think too much about Eclipse. It is not at all required to develop SAPUI5 applications, it just used to be a well-supported editor with additional plugins in the past. Actually SAP WebIDE would be the best-integrated editor now, but you can still use anything from vim to Notepad.
There are plenty of Gateway/SAPUI5 guides on the web, also the official UI5 documentation contains chapters about getting data from the server with OData. I'd recommend doing the entire walkthrough to any beginner!
You have to write a service (as far as I know preferably using SAP NetWeaver Gateway) to expose whatever data and operations you wish to access from the back-end system.

Implementation API for mobile APP

I am programming a Symfony2 App. The structure of my Symfony2 app like:
Login (username / password)
Get Survey for this Login / for this User
User input / click answers. After each click a Ajax request save the answer
User submit survey after answering every question
I have no experience with mobile apps like IOS, Android or Windows. The mobile will created by an other team. The question ist quite common, but which steps i must realize? Are there any literature that you can recommend me?
What was the right way to create an API?
How far Symfony2 supports to create an API for this use cases?
Unfortunately I have no experience on REST, but i suspect this is necessary, right?
I look forward to each answer.
Let me state the obvious first, if you start building a project with technologies you don't know enough about, it WILL be a nightmare. So by all means take your time to learn what you need.
REST is the reccomended standard to build an API since it's native http native and it's quite simple and flexible at the same time. There are tons of simple tutorials on REST, starting from Wikipedia, so I won't link them here.
But I'll tell you a secret, a web service can simply be any web page that reply to your requests with structured data. I.e. even a non-REST series of "webpages" the reply with JSON data can be defined a web service.
By now you see that you can easily do that with Symfony. If you already know how to do stuff and show pages with Symfony, only add JSONResponse to the mix , and also the _format routing parameter, and you should be on a good way.
You just create a path (i.e. an action) for whatever the mobile application needs to do. Of course later on you will learn the beauty of REST and refactor your API accordingly, but first thing you build a working system.
Reading this blog post is a good start. Now if your application will only serve API responses there is the very good Symfony REST Edition which already includes all bundles and tools needed to create an API centric application with Symfony2.
You also have the Lionframe framework but I didn't tested it yet.

Complete GWT based sign-up system

have anyone come across a complete GWT app with registration/sign-up page to start with--unlike with PHP. Until now I haven't find such app that have the ability to register user, have the user a 'user page' and so on. With integration to MySQL and other db to persist user data. Does anyone know such code to start with.
A GWT app is quite useless without an appropriate backend (Java, PHP, Python, etc).
In the end GWT code is only compiled to client-side javascript code. With client-side javascript you can't access any database on the server and thus any GWT app also requires a backend in order to access a database like MySQL.
So in order to create a registration/sign-up app you have to write both backend and frontend code.
For the frontend and the UI respectively you can use GWT. For the backend you can use any server side technology. The tightest integration with GWT can be achieved with a Java backend but you can also use non-java backends like PHP, Ruby, Python, etc.
GWT will communicate either via RPC/RequestFactory (Java) or RequestBuilder (non-java backends). Fore more information refer to the GWT docs.
So I recommend following steps:
Decide which backend technology you are going to use. Java offers the tightest integration (RPC,RequestFactory, etc). However for small/simple apps sometimes it is easier to use non-java backends like Python or PHP because they can be setup/implemented faster/easier.
Implement the business logic on the server-side. In your case this includes among others "adding new users to the database", "signing up users", "retrieving user information", etc
Design and implement the UI with GWT. In your case this will be the user-page and the form to fill in details for signing up, etc.
Write the communication part between frontend and backend in GWT using RequestFactory/RPC (Java) or RequestBuilder (non-Java)
What kind of application are you going to develop? If your project is a public website and you plan to run it on GAE, you could use Google App Engine User Service.
http://code.google.com/appengine/docs/java/users/
For enterprise apps this is probably not a valid option...