Here are some common examples of where an API layer would be used:
- You need to connect to a legacy application that does not have a REST API. For example you have a custom CRM or HR system that you want employees to be able to access through a portal.
- You want to publish an API that enables your partners to communicate with your systems through a well-defined interface. Typically a Web services API is created for this.
- You want to connect to multiple applications or data sources, combine the data, and send the results to your mobile application. For example, you might want to enrich HR or customer information with data available on social networks like Facebook or LinkedIn. In another common scenario, you might have multiple CRM systems but want to provide a unified view to anyone accessing customer data on the road.
Let's expand on a mobile use case that interacts with an enterprise application.
Mobile application integration
Once you have made the decision to develop either a native (iOS/Android) or HTML-based application for your mobile device, the next major challenge is how to integrate this application to your backend applications such as your CRM or ERP system.
The unique presentation challenges faced by mobile application developers have fundamentally changed the way we create web applications. Previously HTML would be requested from a central server and rendered in "browsers" at the client side. The new "mobile app" model involves the delivery of dynamic content using HTTP and AJAX, with communication taking the form of JSON data being passed over HTTP using REST services.
Consequently the integration challenge becomes how to quickly expose your existing infrastructure to this new "mobile delivery channel," while minimizing changes to your backend infrastructure. Organizations that are able to achieve this quickly will be able to expose their traditional business models to entirely new devices and demographics. Mule provides significant value here by providing a simple mechanism, or mediation layer, between existing SOAP/XML based Web services and REST/JSON applications. Additionally, you can easily orchestrate sophisticated composite applications from multiple backend services, both REST and non-REST services, without the need to expose your internal object model to your external consumers.
In this use case, we will show how easy it is using Mule to "RESTify" an existing application. By "RESTify" we mean creating a REST Web service frontend to an existing application.
Let's say you wanted to enable your sales team to create a new sales opportunity from their mobile devices that:
- Is synchronized with your SalesForce CRM implementation, and
- Sends an email notification to a manager if the opportunity is over a certain dollar value.
Integration core principles
Applying our five core integration principles, a mobile application integration use case typically involves the following:
|Transformation||Since we are going to consume this interface from a mobile application, the best choice for the data format is JSON, which is a protocol that is very easy to work with both in a mobile application and in Mule. In this case the challenge will be to transform the JSON data being received from our mobile device into a format that can be loaded in SFDC. A simple JSON data object is presented below, which indicates the type of data being received from our mobile application.|
|Transportation||Transport protocol negotiation between a REST-based service that interacts with our mobile application and in our use case, with the SFDC system over HTTP and an additional email connection that uses the SMTP protocol.|
|Orchestration||Composing several underlying components into a single higher order composite service. In this use case we are aggregating an update with SFDC with a simple email service and presenting it as a REST-based mobile application using a simple Mule integration flow to wire everything together.|
|Mediation||Mediation will be useful here over time as it becomes necessary to support multiple versions of this service for a wide range of consumers. Additionally it is possible (if required) to provide an additional SOAP interface for this REST-based service by simply adding the mediation components to marshal between SOAP/XML & JSON.|
|Non-functional consistency||These requirements are by nature generic and include providing a common implementation of security, logging, deployment, management of run-time components, and more. Mule provides functionality to cater to each of these requirements (for more details please refer to the following documentation: http://www.mulesoft.org/documentation/display/MULE3USER/Home)|
Mule integration components
Mule provides a simple graphical interface for composing these types of applications. The first step in communicating with a mobile application would be to use an HTTP endpoint coupled with a REST component. This step takes care of most of the complexity associated with communicating with your mobile apps and consuming JSON objects. Mule also simplifies the process of communicating with the Salesforce CRM system by providing a "pre-built" cloud connector. You simply drag the connector into your project, specify your user name and token, select the function that you want to call and you're done. Likewise the process of adding filtering logic and communicating with an SMTP server for sending email is also greatly simplified.
The following project has been built using Mule Studio.
So what have we accomplished? Using Mule we've illustrated how easy it can be to leverage your existing applications and compose them into higher level REST services, which makes integrating with mobile applications easy.
Further than that we've also shown how simple it is using the pre-built connector provided by Mule to integrate between mobile applications and Salesforce. This is a significant achievement when you consider that integration is one of the primary challenges faced by companies adopting cloud technologies such as SFDC.
Mobile devices have opened up delivery channels to much wider audiences and demographics. Mule allows you to respond to the new interaction models required by these devices and easily integrates with your existing systems in a simple, scalable and reliable manner.