Part 2: Mobile App Development with MCS
In Part 1, we explored using Oracle’s Mobile Cloud Service as tool to provide the backend services needed to retrieve data from an Oracle EBS Pricing and Availability form. With our mobile backend and custom API’s created, the actual app development can now begin!
Creating a Native App
For the next step of my POC, I’ll be creating a simple iOS application that allows me to lookup a Pricing and Availability item and view its properties and warehouse locations. Before firing up Xcode, I need to click the “SDK Downloads” from the MCS Applications page and download the iOS SDK.
As I mentioned earlier, the SDK will allow me to make MCS API calls with one or two lines of code. In order to take advantage of it I need to add the static libraries and header files from the downloaded SDK to my project in Xcode and properly link them.
The SDK download also includes an “OMC.plist” file that will need to be added to my project. The OMC.plist will hold the settings that are needed to connect to our Pricing and Availability mobile backend. The Settings tab of the Pricing and Availability backend in MCS has several of the items we need. Since we’re using basic authentication, we need to get the Mobile Backend ID, Anonymous Key, and the Base URL of our MCS environment.
We’ll also need the application key we were provided earlier after creating our mobile client. After adding these items to the OCM.plist, the initial MCS setup of our project is complete.
When a user runs my app, the first thing they will need to do is login. I put together a basic login screen with username and password fields.
When a user taps the Login button I simply need to authenticate against my mobile backend with these three lines of code:
If no error is returned then the authentication is successful and I can dismiss my login screen. My user will then be presented with my search screen which simply contains a table view with a search bar at the top.
This is the point where we utilize the Pricing and Availability custom API that we previously configured. When a user enters a Pricing and Availability Item’s ID and taps the search button I’ll need to make a GET call to the /pricingandavailabilityitem/{id} endpoint in order to return the matching item. Once again, this can be handled with a few lines of code:
The response is then parsed and a result row is added to my table view.
Tapping on the result row will bring the user to my item details screen where the Pricing and Availability item’s properties are displayed. I also want to display the warehouse locations for my item on the details screen so I make a similar second call to the pricingandavailabilityitem/{id}/pricingandavailabilityitemlocation endpoint and populate the results in another table view.
At this point I have successfully achieved the goal of displaying EBS form information on a mobile device! As you can see, the amount of effort required to authenticate and retrieve the data was minimal, whereas without MCS those tasks would have consumed a large percentage of my time.
Creating a MAX App
While the iOS SDK may have made my app development seem fairly effortless, MCS actually provides an easier way for me to achieve my goal. On the MCS Applications page, there is a Mobile Apps section that takes you to the Mobile Application Accelerator (MAX) application.
With the MAX application, it is possible to quickly put together a mobile app with absolutely no coding involved. With its drag-and-drop web interface, non-technical business users can easily login and build their own mobile apps in minutes.
Let’s take a look at building the same POC as a MAX application. Clicking the “New Application” button will take you through a simple app creation wizard.
After providing your app name and choosing your screen layout you will be presented with a blank home screen where you can drag and drop UI elements onto various content areas. Just like the native app, my MAX app will first present the user with a search screen that will display Pricing and Availability Item search results. To handle this, I’ll be adding a list element onto my home screen and enabling its search option which will automatically add a search field to the top of it.
Next we’ll need to indicate what data will be populated in our list element. Clicking “Add Data” will allow you to map any UI element to a data source. Choosing a data source is as simple as selecting the Pricing and Availability Item resource from our custom API. Our MAX app will automatically use the appropriate API calls to retrieve our data. We can then drag and drop properties from our Pricing and Availability resource onto each of the four available search result row labels to be displayed. I chose to use the Item Description, Item Type, Unit Pricing, and Pricing currency fields.
Since our Pricing and Availability Item API call requires an ID parameter we indicate that the list element’s search field will be the source.
Our search page now has what it needs to lookup a Pricing and Availability Item.
In order to see the details of a Pricing and Availability item, we will need to provide an action on the list element’s action tab. After clicking the Actions tab, another drag and drop interface allows us to indicate that when a list item is tapped, we will be taken to a new Pricing and Availability item detail screen.
In addition to displaying the Pricing and Availability item properties, I also want the new Pricing Item Detail page to display the warehouse locations. To handle this, when creating my details screen I choose the “Screen with Top Tabs and Summary” page template and specify three separate tabs: Overview, Quantities, and Warehouses. For each of the tabs, I follow the same process of dragging UI elements onto the content areas and mapping a data source to them. My Overview tab gets a form UI element that displays my Pricing and Availability Item’s properties. The Warehouses tab gets a list element that displays a list of all warehouse locations for the pricing item.
For the Quantities tab, I wanted to demonstrate a nice feature of MCS with the use of a bar chart to easily view the item quantities at each warehouse. I simply drag a bar chart UI element onto the tab and map the data source to my Pricing and Availability Item Locations resource with the warehouses along the X-Axis and the quantities along the Y-axis.
With our app complete, testing it out is as easy as hitting the test button. An iOS or Android simulator will run right in your browser.
Testing on or publishing to a mobile device isn’t that much more complicated. Once you install Oracle’s Mobile Application Accelerator client app on your device, you can easily add your MAX apps as “apps within an app” via a QR code. Avoiding time consuming app publishing processes means business users can get the tools they need with a few clicks.
Compared to native app development, the MAX app was created in a fraction of the time, and as you can see, no coding was involved. As easy as it was to build my POC, MAX has its limitations. Screens can be easily setup to search, view, add, edit, and delete business objects, but beyond that, you might need to get creative. Developing the right custom API for my Pricing and Availability app could make it possible to submit an item purchase, but the overall user experience will be limited. For more flexibility, native and hybrid apps will still have their place.
Conclusion
Overall, my POC just scratches the surface of what MCS can do. With the platform API’s providing database & content storage capabilities, push notifications, offline syncing, and built-in analytics, most of the things mobile apps require are readily available without having to worry about backend hardware and software. Having the ability quickly to assemble these platform API calls into custom API’s that can be reused across many mobile backends means that MCS has the potential to easily bring many aspects of a business to mobile devices.
By utilizing the MCS SDK’s, many of the common tasks of mobile app development that had previously been significant technical hurdles now become minor steps handled with a few lines of code. Considering the amount of effort that some of these common tasks required in my previous mobile projects, I believe MCS could have cut my development time in half. Realistically, organizations could have a mobile app in production use within a matter of hours. Being able to realize such quick time to value with a mobile app is definitely a key value proposition of MCS, so if that is important to your organization I recommend you give MCS a try.